Skip to content

ipc: support compound messages #1185

@lgirdwood

Description

@lgirdwood

Firmware should be able to support compound IPC whereby multiple IPC commands are send as one (using one doorbell IRQ). This allows a speed up in initialization and reduced latency switching use cases.

We need to categorize which types we can categorize and how we handle failure for each. I can think of :-

  1. Topology construction. Whole topology is rewound on failure on any component. e.g. if we send 20 cmds and cmd 7 fails then we rewind and delete cmds 0 - 6.

  2. kcontrol updates. For mixers and volumes, not sure is applicable to binary for size constraints. I would be tempted to keep going on any unlikely failure (since all volume/mute/enum values should be within bounds).

  3. Stream trigger ops. e.g. for simultaneous stream ops. Any failure here would reset all streams.

The tricky part is knowing when to enable compound mode for 2, we could speculatively enable it for any kcontrol update and only send when we timeout of further kcontrol IO. Enabling for 1 is simple enough and 3 could be based on linked PCMs in ALSA.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Critical bugs or normal featuresenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions