Sound Open Firmware
Loading...
Searching...
No Matches
IPC3 Host-DSP Protocol

Legacy IPC3 protocol definitions, commands, and stream controls. More...

Data Structures

struct  sof_ipc_ctrl_value_chan
 Generic channel mapped value data. More...
 
struct  sof_ipc_ctrl_value_comp
 Generic component mapped value data. More...
 
struct  sof_ipc_ctrl_data
 Generic control data. More...
 
struct  sof_ipc_comp_event
 Generic notification data. More...
 
struct  sof_ipc_hdr
 Structure Header - Header for all IPC structures except command structs. More...
 
struct  sof_ipc_cmd_hdr
 Command Header - Header for all IPC commands. More...
 
struct  sof_ipc_reply
 Generic reply message. More...
 
struct  sof_ipc_compound_hdr
 Compound commands - SOF_IPC_GLB_COMPOUND. More...
 
struct  sof_ipc_dsp_oops_arch_hdr
 OOPS header architecture specific data. More...
 
struct  sof_ipc_dsp_oops_plat_hdr
 OOPS header platform specific data. More...
 

Component Mixers and Controls

enum  sof_ipc_chmap {
  SOF_CHMAP_UNKNOWN = 0 , SOF_CHMAP_NA , SOF_CHMAP_MONO , SOF_CHMAP_FL ,
  SOF_CHMAP_FR , SOF_CHMAP_RL , SOF_CHMAP_RR , SOF_CHMAP_FC ,
  SOF_CHMAP_LFE , SOF_CHMAP_SL , SOF_CHMAP_SR , SOF_CHMAP_RC ,
  SOF_CHMAP_FLC , SOF_CHMAP_FRC , SOF_CHMAP_RLC , SOF_CHMAP_RRC ,
  SOF_CHMAP_FLW , SOF_CHMAP_FRW , SOF_CHMAP_FLH , SOF_CHMAP_FCH ,
  SOF_CHMAP_FRH , SOF_CHMAP_TC , SOF_CHMAP_TFL , SOF_CHMAP_TFR ,
  SOF_CHMAP_TFC , SOF_CHMAP_TRL , SOF_CHMAP_TRR , SOF_CHMAP_TRC ,
  SOF_CHMAP_TFLC , SOF_CHMAP_TFRC , SOF_CHMAP_TSL , SOF_CHMAP_TSR ,
  SOF_CHMAP_LLFE , SOF_CHMAP_RLFE , SOF_CHMAP_BC , SOF_CHMAP_BLC ,
  SOF_CHMAP_BRC , SOF_CHMAP_LAST = SOF_CHMAP_BRC
}
 Channel positions - uses same values as ALSA. More...
 
enum  sof_ipc_ctrl_type {
  SOF_CTRL_TYPE_VALUE_CHAN_GET = 0 , SOF_CTRL_TYPE_VALUE_CHAN_SET , SOF_CTRL_TYPE_VALUE_COMP_GET , SOF_CTRL_TYPE_VALUE_COMP_SET ,
  SOF_CTRL_TYPE_DATA_GET , SOF_CTRL_TYPE_DATA_SET
}
 Control data type and direction. More...
 
enum  sof_ipc_ctrl_cmd { SOF_CTRL_CMD_VOLUME = 0 , SOF_CTRL_CMD_ENUM , SOF_CTRL_CMD_SWITCH , SOF_CTRL_CMD_BINARY }
 Control command type. More...
 
enum  sof_ipc_ctrl_event_type { SOF_CTRL_EVENT_GENERIC = 0 , SOF_CTRL_EVENT_GENERIC_METADATA , SOF_CTRL_EVENT_KD , SOF_CTRL_EVENT_VAD }
 Event type. More...
 

Global Message - Generic

#define SOF_GLB_TYPE_SHIFT   28
 Shift-left bits to extract the global cmd type.
 
#define SOF_GLB_TYPE_MASK   (0xfUL << SOF_GLB_TYPE_SHIFT)
 
#define SOF_GLB_TYPE(x)   ((x) << SOF_GLB_TYPE_SHIFT)
 

Command Message - Generic

#define SOF_CMD_TYPE_SHIFT   16
 Shift-left bits to extract the command type.
 
#define SOF_CMD_TYPE_MASK   (0xfffL << SOF_CMD_TYPE_SHIFT)
 
#define SOF_CMD_TYPE(x)   ((x) << SOF_CMD_TYPE_SHIFT)
 

Global Message Types

#define SOF_IPC_GLB_REPLY   SOF_GLB_TYPE(0x1U)
 
#define SOF_IPC_GLB_COMPOUND   SOF_GLB_TYPE(0x2U)
 
#define SOF_IPC_GLB_TPLG_MSG   SOF_GLB_TYPE(0x3U)
 
#define SOF_IPC_GLB_PM_MSG   SOF_GLB_TYPE(0x4U)
 
#define SOF_IPC_GLB_COMP_MSG   SOF_GLB_TYPE(0x5U)
 
#define SOF_IPC_GLB_STREAM_MSG   SOF_GLB_TYPE(0x6U)
 
#define SOF_IPC_FW_READY   SOF_GLB_TYPE(0x7U)
 
#define SOF_IPC_GLB_DAI_MSG   SOF_GLB_TYPE(0x8U)
 
#define SOF_IPC_GLB_TRACE_MSG   SOF_GLB_TYPE(0x9U)
 
#define SOF_IPC_GLB_GDB_DEBUG   SOF_GLB_TYPE(0xAU)
 
#define SOF_IPC_GLB_TEST   SOF_GLB_TYPE(0xBU)
 
#define SOF_IPC_GLB_PROBE   SOF_GLB_TYPE(0xCU)
 
#define SOF_IPC_GLB_DEBUG   SOF_GLB_TYPE(0xDU)
 

DSP Command: Topology

#define SOF_IPC_TPLG_COMP_NEW   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_TPLG_COMP_FREE   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_TPLG_COMP_CONNECT   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_TPLG_PIPE_NEW   SOF_CMD_TYPE(0x010)
 
#define SOF_IPC_TPLG_PIPE_FREE   SOF_CMD_TYPE(0x011)
 
#define SOF_IPC_TPLG_PIPE_CONNECT   SOF_CMD_TYPE(0x012)
 
#define SOF_IPC_TPLG_PIPE_COMPLETE   SOF_CMD_TYPE(0x013)
 
#define SOF_IPC_TPLG_BUFFER_NEW   SOF_CMD_TYPE(0x020)
 
#define SOF_IPC_TPLG_BUFFER_FREE   SOF_CMD_TYPE(0x021)
 

DSP Command: PM

#define SOF_IPC_PM_CTX_SAVE   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_PM_CTX_RESTORE   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_PM_CTX_SIZE   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_PM_CLK_SET   SOF_CMD_TYPE(0x004)
 
#define SOF_IPC_PM_CLK_GET   SOF_CMD_TYPE(0x005)
 
#define SOF_IPC_PM_CLK_REQ   SOF_CMD_TYPE(0x006)
 
#define SOF_IPC_PM_CORE_ENABLE   SOF_CMD_TYPE(0x007)
 
#define SOF_IPC_PM_GATE   SOF_CMD_TYPE(0x008)
 

DSP Command: Component runtime config - multiple different types

#define SOF_IPC_COMP_SET_VALUE   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_COMP_GET_VALUE   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_COMP_SET_DATA   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_COMP_GET_DATA   SOF_CMD_TYPE(0x004)
 
#define SOF_IPC_COMP_NOTIFICATION   SOF_CMD_TYPE(0x005)
 

DSP Command: DAI messages

#define SOF_IPC_DAI_CONFIG   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_DAI_LOOPBACK   SOF_CMD_TYPE(0x002)
 

DSP Command: Stream

#define SOF_IPC_STREAM_PCM_PARAMS   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_STREAM_PCM_PARAMS_REPLY   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_STREAM_PCM_FREE   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_STREAM_TRIG_START   SOF_CMD_TYPE(0x004)
 
#define SOF_IPC_STREAM_TRIG_STOP   SOF_CMD_TYPE(0x005)
 
#define SOF_IPC_STREAM_TRIG_PAUSE   SOF_CMD_TYPE(0x006)
 
#define SOF_IPC_STREAM_TRIG_RELEASE   SOF_CMD_TYPE(0x007)
 
#define SOF_IPC_STREAM_TRIG_DRAIN   SOF_CMD_TYPE(0x008)
 
#define SOF_IPC_STREAM_TRIG_XRUN   SOF_CMD_TYPE(0x009)
 
#define SOF_IPC_STREAM_POSITION   SOF_CMD_TYPE(0x00a)
 
#define SOF_IPC_STREAM_VORBIS_PARAMS   SOF_CMD_TYPE(0x010)
 
#define SOF_IPC_STREAM_VORBIS_FREE   SOF_CMD_TYPE(0x011)
 

DSP Command: Trace and debug

#define SOF_IPC_TRACE_DMA_PARAMS   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_TRACE_DMA_POSITION   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_TRACE_DMA_PARAMS_EXT   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_TRACE_FILTER_UPDATE   SOF_CMD_TYPE(0x004)
 ABI3.17.
 
#define SOF_IPC_TRACE_DMA_FREE   SOF_CMD_TYPE(0x005)
 ABI3.20.
 

DSP Command: Probes

#define SOF_IPC_PROBE_INIT   SOF_CMD_TYPE(0x001)
 
#define SOF_IPC_PROBE_DEINIT   SOF_CMD_TYPE(0x002)
 
#define SOF_IPC_PROBE_DMA_ADD   SOF_CMD_TYPE(0x003)
 
#define SOF_IPC_PROBE_DMA_INFO   SOF_CMD_TYPE(0x004)
 
#define SOF_IPC_PROBE_DMA_REMOVE   SOF_CMD_TYPE(0x005)
 
#define SOF_IPC_PROBE_POINT_ADD   SOF_CMD_TYPE(0x006)
 
#define SOF_IPC_PROBE_POINT_INFO   SOF_CMD_TYPE(0x007)
 
#define SOF_IPC_PROBE_POINT_REMOVE   SOF_CMD_TYPE(0x008)
 

DSP Command: Debug - additional services

#define SOF_IPC_DEBUG_MEM_USAGE   SOF_CMD_TYPE(0x001)
 

DSP Command: Test - Debug build only

#define SOF_IPC_TEST_IPC_FLOOD   SOF_CMD_TYPE(0x001)
 

IPC Message Definitions

#define SOF_IPC_MESSAGE_ID(x)   ((x) & 0xffff)
 Get message component id.
 
#define SOF_IPC_MSG_MAX_SIZE   0x1000
 Maximum message size for mailbox Tx/Rx.
 

Detailed Description

Legacy IPC3 protocol definitions, commands, and stream controls.

SOF IPC3 protocol specification.

SOF IPC3 component controls.

Overview

The SOF Audio DSP firmware defines an Inter-Process Communication (IPC) interface to facilitate communication with the host.

The SOF IPC is bi-directional. Messages can be initiated by the host and acknowledged by the DSP. Similarly, they can be initiated by the DSP and acknowledged by the host.

IPC messages are divided into several groups: global, topology, power management, component, stream, DAI, trace, and a separate "firmware ready" message. Multiple messages can also be grouped into a message that belong to a compound group. Most messages are sent by the host to the DSP; only the following messages are sent by the DSP to the host:

Message encoding

All multi-byte protocol fields are encoded with little-endian byte-order.

Message structure

IPC messages have a fixed header and variable length payload.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Size                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Command                                                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The header contains size of the IPC message and a 32bit Command identifier with following structure:

0xGCCCNNNN is little-endian value where

The Global and Command Types together define the structure of the payload. E.g. for topology IPC message COMP_NEW structure is (ABI 3.17.0 example):

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Size (Total size including Extended Data)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Command (G=TPLG_MSG, C=COMP_NEW)                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Component ID                                                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pipeline ID                                                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Core                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Extended Data size                                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type specific payload, size varies based on Component ID.     |
| Ends at: Total size - Extended Data size                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| extended data, including e.g. UUID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
See also
sof_ipc_comp

Reply Messages

Reply messages are defined per Command. The response IPC messages have a common layout, but some Commands have extended fields defined. The common format is:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Size                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Command (G=REPLY, C=0)                                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
See also
sof_ipc_reply

IPC ABI version compatibility rules

  1. FW binaries will only support one MAJOR ABI version which is advertised to host at FW boot.
  2. Host drivers will support the current and older MAJOR ABI versions of the IPC ABI (up to a certain age to be determined by market information).
  3. MINOR and PATCH ABI versions can differ between host and FW but must be backwards compatible on both host and FW.

    IPC messages sizes can be different for sender and receiver if MINOR or PATCH ABI versions differ as new fields can be added to the end of messages.

    i) SenderVersion > ReceiverVersion: Receiver only copies its own ABI structure size.

    ii) ReceiverVersion > SenderVersion: Receiver copies its own ABI size and zero pads new fields. i.e. new structure fields must be non zero to be activated.

Guidelines for extending ABI compatible messages :-

Macro Definition Documentation

◆ SOF_CMD_TYPE

#define SOF_CMD_TYPE (   x)    ((x) << SOF_CMD_TYPE_SHIFT)

◆ SOF_CMD_TYPE_MASK

#define SOF_CMD_TYPE_MASK   (0xfffL << SOF_CMD_TYPE_SHIFT)

◆ SOF_CMD_TYPE_SHIFT

#define SOF_CMD_TYPE_SHIFT   16

Shift-left bits to extract the command type.

◆ SOF_GLB_TYPE

#define SOF_GLB_TYPE (   x)    ((x) << SOF_GLB_TYPE_SHIFT)

◆ SOF_GLB_TYPE_MASK

#define SOF_GLB_TYPE_MASK   (0xfUL << SOF_GLB_TYPE_SHIFT)

◆ SOF_GLB_TYPE_SHIFT

#define SOF_GLB_TYPE_SHIFT   28

Shift-left bits to extract the global cmd type.

◆ SOF_IPC_COMP_GET_DATA

#define SOF_IPC_COMP_GET_DATA   SOF_CMD_TYPE(0x004)

◆ SOF_IPC_COMP_GET_VALUE

#define SOF_IPC_COMP_GET_VALUE   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_COMP_NOTIFICATION

#define SOF_IPC_COMP_NOTIFICATION   SOF_CMD_TYPE(0x005)

◆ SOF_IPC_COMP_SET_DATA

#define SOF_IPC_COMP_SET_DATA   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_COMP_SET_VALUE

#define SOF_IPC_COMP_SET_VALUE   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_DAI_CONFIG

#define SOF_IPC_DAI_CONFIG   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_DAI_LOOPBACK

#define SOF_IPC_DAI_LOOPBACK   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_DEBUG_MEM_USAGE

#define SOF_IPC_DEBUG_MEM_USAGE   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_FW_READY

#define SOF_IPC_FW_READY   SOF_GLB_TYPE(0x7U)

◆ SOF_IPC_GLB_COMP_MSG

#define SOF_IPC_GLB_COMP_MSG   SOF_GLB_TYPE(0x5U)

◆ SOF_IPC_GLB_COMPOUND

#define SOF_IPC_GLB_COMPOUND   SOF_GLB_TYPE(0x2U)

◆ SOF_IPC_GLB_DAI_MSG

#define SOF_IPC_GLB_DAI_MSG   SOF_GLB_TYPE(0x8U)

◆ SOF_IPC_GLB_DEBUG

#define SOF_IPC_GLB_DEBUG   SOF_GLB_TYPE(0xDU)

◆ SOF_IPC_GLB_GDB_DEBUG

#define SOF_IPC_GLB_GDB_DEBUG   SOF_GLB_TYPE(0xAU)

◆ SOF_IPC_GLB_PM_MSG

#define SOF_IPC_GLB_PM_MSG   SOF_GLB_TYPE(0x4U)

◆ SOF_IPC_GLB_PROBE

#define SOF_IPC_GLB_PROBE   SOF_GLB_TYPE(0xCU)

◆ SOF_IPC_GLB_REPLY

#define SOF_IPC_GLB_REPLY   SOF_GLB_TYPE(0x1U)

◆ SOF_IPC_GLB_STREAM_MSG

#define SOF_IPC_GLB_STREAM_MSG   SOF_GLB_TYPE(0x6U)

◆ SOF_IPC_GLB_TEST

#define SOF_IPC_GLB_TEST   SOF_GLB_TYPE(0xBU)

◆ SOF_IPC_GLB_TPLG_MSG

#define SOF_IPC_GLB_TPLG_MSG   SOF_GLB_TYPE(0x3U)

◆ SOF_IPC_GLB_TRACE_MSG

#define SOF_IPC_GLB_TRACE_MSG   SOF_GLB_TYPE(0x9U)

◆ SOF_IPC_MESSAGE_ID

#define SOF_IPC_MESSAGE_ID (   x)    ((x) & 0xffff)

Get message component id.

◆ SOF_IPC_MSG_MAX_SIZE

#define SOF_IPC_MSG_MAX_SIZE   0x1000

Maximum message size for mailbox Tx/Rx.

◆ SOF_IPC_PM_CLK_GET

#define SOF_IPC_PM_CLK_GET   SOF_CMD_TYPE(0x005)

◆ SOF_IPC_PM_CLK_REQ

#define SOF_IPC_PM_CLK_REQ   SOF_CMD_TYPE(0x006)

◆ SOF_IPC_PM_CLK_SET

#define SOF_IPC_PM_CLK_SET   SOF_CMD_TYPE(0x004)

◆ SOF_IPC_PM_CORE_ENABLE

#define SOF_IPC_PM_CORE_ENABLE   SOF_CMD_TYPE(0x007)

◆ SOF_IPC_PM_CTX_RESTORE

#define SOF_IPC_PM_CTX_RESTORE   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_PM_CTX_SAVE

#define SOF_IPC_PM_CTX_SAVE   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_PM_CTX_SIZE

#define SOF_IPC_PM_CTX_SIZE   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_PM_GATE

#define SOF_IPC_PM_GATE   SOF_CMD_TYPE(0x008)

◆ SOF_IPC_PROBE_DEINIT

#define SOF_IPC_PROBE_DEINIT   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_PROBE_DMA_ADD

#define SOF_IPC_PROBE_DMA_ADD   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_PROBE_DMA_INFO

#define SOF_IPC_PROBE_DMA_INFO   SOF_CMD_TYPE(0x004)

◆ SOF_IPC_PROBE_DMA_REMOVE

#define SOF_IPC_PROBE_DMA_REMOVE   SOF_CMD_TYPE(0x005)

◆ SOF_IPC_PROBE_INIT

#define SOF_IPC_PROBE_INIT   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_PROBE_POINT_ADD

#define SOF_IPC_PROBE_POINT_ADD   SOF_CMD_TYPE(0x006)

◆ SOF_IPC_PROBE_POINT_INFO

#define SOF_IPC_PROBE_POINT_INFO   SOF_CMD_TYPE(0x007)

◆ SOF_IPC_PROBE_POINT_REMOVE

#define SOF_IPC_PROBE_POINT_REMOVE   SOF_CMD_TYPE(0x008)

◆ SOF_IPC_STREAM_PCM_FREE

#define SOF_IPC_STREAM_PCM_FREE   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_STREAM_PCM_PARAMS

#define SOF_IPC_STREAM_PCM_PARAMS   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_STREAM_PCM_PARAMS_REPLY

#define SOF_IPC_STREAM_PCM_PARAMS_REPLY   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_STREAM_POSITION

#define SOF_IPC_STREAM_POSITION   SOF_CMD_TYPE(0x00a)

◆ SOF_IPC_STREAM_TRIG_DRAIN

#define SOF_IPC_STREAM_TRIG_DRAIN   SOF_CMD_TYPE(0x008)

◆ SOF_IPC_STREAM_TRIG_PAUSE

#define SOF_IPC_STREAM_TRIG_PAUSE   SOF_CMD_TYPE(0x006)

◆ SOF_IPC_STREAM_TRIG_RELEASE

#define SOF_IPC_STREAM_TRIG_RELEASE   SOF_CMD_TYPE(0x007)

◆ SOF_IPC_STREAM_TRIG_START

#define SOF_IPC_STREAM_TRIG_START   SOF_CMD_TYPE(0x004)

◆ SOF_IPC_STREAM_TRIG_STOP

#define SOF_IPC_STREAM_TRIG_STOP   SOF_CMD_TYPE(0x005)

◆ SOF_IPC_STREAM_TRIG_XRUN

#define SOF_IPC_STREAM_TRIG_XRUN   SOF_CMD_TYPE(0x009)

◆ SOF_IPC_STREAM_VORBIS_FREE

#define SOF_IPC_STREAM_VORBIS_FREE   SOF_CMD_TYPE(0x011)

◆ SOF_IPC_STREAM_VORBIS_PARAMS

#define SOF_IPC_STREAM_VORBIS_PARAMS   SOF_CMD_TYPE(0x010)

◆ SOF_IPC_TEST_IPC_FLOOD

#define SOF_IPC_TEST_IPC_FLOOD   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_TPLG_BUFFER_FREE

#define SOF_IPC_TPLG_BUFFER_FREE   SOF_CMD_TYPE(0x021)

◆ SOF_IPC_TPLG_BUFFER_NEW

#define SOF_IPC_TPLG_BUFFER_NEW   SOF_CMD_TYPE(0x020)

◆ SOF_IPC_TPLG_COMP_CONNECT

#define SOF_IPC_TPLG_COMP_CONNECT   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_TPLG_COMP_FREE

#define SOF_IPC_TPLG_COMP_FREE   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_TPLG_COMP_NEW

#define SOF_IPC_TPLG_COMP_NEW   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_TPLG_PIPE_COMPLETE

#define SOF_IPC_TPLG_PIPE_COMPLETE   SOF_CMD_TYPE(0x013)

◆ SOF_IPC_TPLG_PIPE_CONNECT

#define SOF_IPC_TPLG_PIPE_CONNECT   SOF_CMD_TYPE(0x012)

◆ SOF_IPC_TPLG_PIPE_FREE

#define SOF_IPC_TPLG_PIPE_FREE   SOF_CMD_TYPE(0x011)

◆ SOF_IPC_TPLG_PIPE_NEW

#define SOF_IPC_TPLG_PIPE_NEW   SOF_CMD_TYPE(0x010)

◆ SOF_IPC_TRACE_DMA_FREE

#define SOF_IPC_TRACE_DMA_FREE   SOF_CMD_TYPE(0x005)

ABI3.20.

◆ SOF_IPC_TRACE_DMA_PARAMS

#define SOF_IPC_TRACE_DMA_PARAMS   SOF_CMD_TYPE(0x001)

◆ SOF_IPC_TRACE_DMA_PARAMS_EXT

#define SOF_IPC_TRACE_DMA_PARAMS_EXT   SOF_CMD_TYPE(0x003)

◆ SOF_IPC_TRACE_DMA_POSITION

#define SOF_IPC_TRACE_DMA_POSITION   SOF_CMD_TYPE(0x002)

◆ SOF_IPC_TRACE_FILTER_UPDATE

#define SOF_IPC_TRACE_FILTER_UPDATE   SOF_CMD_TYPE(0x004)

ABI3.17.

Enumeration Type Documentation

◆ sof_ipc_chmap

Channel positions - uses same values as ALSA.

Enumerator
SOF_CHMAP_UNKNOWN 
SOF_CHMAP_NA 

N/A, silent.

SOF_CHMAP_MONO 

mono stream

SOF_CHMAP_FL 

front left

SOF_CHMAP_FR 

front right

SOF_CHMAP_RL 

rear left

SOF_CHMAP_RR 

rear right

SOF_CHMAP_FC 

front centre

SOF_CHMAP_LFE 

LFE.

SOF_CHMAP_SL 

side left

SOF_CHMAP_SR 

side right

SOF_CHMAP_RC 

rear centre

SOF_CHMAP_FLC 

front left centre

SOF_CHMAP_FRC 

front right centre

SOF_CHMAP_RLC 

rear left centre

SOF_CHMAP_RRC 

rear right centre

SOF_CHMAP_FLW 

front left wide

SOF_CHMAP_FRW 

front right wide

SOF_CHMAP_FLH 

front left high

SOF_CHMAP_FCH 

front centre high

SOF_CHMAP_FRH 

front right high

SOF_CHMAP_TC 

top centre

SOF_CHMAP_TFL 

top front left

SOF_CHMAP_TFR 

top front right

SOF_CHMAP_TFC 

top front centre

SOF_CHMAP_TRL 

top rear left

SOF_CHMAP_TRR 

top rear right

SOF_CHMAP_TRC 

top rear centre

SOF_CHMAP_TFLC 

top front left centre

SOF_CHMAP_TFRC 

top front right centre

SOF_CHMAP_TSL 

top side left

SOF_CHMAP_TSR 

top side right

SOF_CHMAP_LLFE 

left LFE

SOF_CHMAP_RLFE 

right LFE

SOF_CHMAP_BC 

bottom centre

SOF_CHMAP_BLC 

bottom left centre

SOF_CHMAP_BRC 

bottom right centre

SOF_CHMAP_LAST 

◆ sof_ipc_ctrl_cmd

Control command type.

Enumerator
SOF_CTRL_CMD_VOLUME 

maps to ALSA volume style controls

SOF_CTRL_CMD_ENUM 

maps to ALSA enum style controls

SOF_CTRL_CMD_SWITCH 

maps to ALSA switch style controls

SOF_CTRL_CMD_BINARY 

maps to ALSA binary style controls

◆ sof_ipc_ctrl_event_type

Event type.

Enumerator
SOF_CTRL_EVENT_GENERIC 

generic event

SOF_CTRL_EVENT_GENERIC_METADATA 

generic event with metadata

SOF_CTRL_EVENT_KD 

keyword detection event

SOF_CTRL_EVENT_VAD 

voice activity detection event

◆ sof_ipc_ctrl_type

Control data type and direction.

SOF_CTRL_TYPE_VALUE_CHAN uses struct sof_ipc_ctrl_value_chan. SOF_CTRL_TYPE_VALUE_COMP uses struct sof_ipc_ctrl_value_comp. SOF_CTRL_TYPE_DATA_GET uses sof_abi_hdr.

Enumerator
SOF_CTRL_TYPE_VALUE_CHAN_GET 
SOF_CTRL_TYPE_VALUE_CHAN_SET 
SOF_CTRL_TYPE_VALUE_COMP_GET 
SOF_CTRL_TYPE_VALUE_COMP_SET 
SOF_CTRL_TYPE_DATA_GET 
SOF_CTRL_TYPE_DATA_SET