/* L2I Codec Config/control msgs */ #define IPC_SST_FRAGMENT_ELPASED 0x90 /* Request IA more data */
#define IPC_SST_BUF_UNDER_RUN 0x92 /* PB Under run and stopped */ #define IPC_SST_BUF_OVER_RUN 0x93 /* CAP Under run and stopped */ #define IPC_SST_DRAIN_END 0x94 /* PB Drain complete and stopped */ #define IPC_SST_CHNGE_SSP_PARAMS 0x95 /* PB SSP parameters changed */ #define IPC_SST_STREAM_PROCESS_FATAL_ERR 0x96/* error in processing a stream */ #define IPC_SST_PERIOD_ELAPSED 0x97 /* period elapsed */
/* L2I Error reporting msgs */ #define IPC_IA_MEM_ALLOC_FAIL 0xE0 #define IPC_IA_PROC_ERR 0xE1 /* error in processing a stream can be used by playback and
capture modules */
/* Mrfld specific defines: * For asynchronous messages(INIT_CMPLT, PERIOD_ELAPSED, ASYNC_ERROR) * received from FW, the format is: * - IPC High: pvt_id is set to zero. Always short message. * - msg_id is in lower 16-bits of IPC low payload. * - pipe_id is in higher 16-bits of IPC low payload for period_elapsed. * - error id is in higher 16-bits of IPC low payload for async errors.
*/ #define SST_ASYNC_DRV_ID 0
/* Command Response or Acknowledge message to any IPC message will have * same message ID and stream ID information which is sent. * There is no specific Ack message ID. The data field is used as response * meaning.
*/ enum ackData {
IPC_ACK_SUCCESS = 0,
IPC_ACK_FAILURE,
};
enum ipc_ia_msg_id {
IPC_CMD = 1, /*!< Task Control message ID */
IPC_SET_PARAMS = 2,/*!< Task Set param message ID */
IPC_GET_PARAMS = 3, /*!< Task Get param message ID */
IPC_INVALID = 0xFF, /*!<Task Get param message ID */
};
struct ipc_dsp_hdr {
u16 mod_index_id:8; /*!< DSP Command ID specific to tasks */
u16 pipe_id:8; /*!< instance of the module in the pipeline */
u16 mod_id; /*!< Pipe_id */
u16 cmd_id; /*!< Module ID = lpe_algo_types_t */
u16 length; /*!< Length of the payload only */
} __packed;
union ipc_header_high { struct {
u32 msg_id:8; /* Message ID - Max 256 Message Types */
u32 task_id:4; /* Task ID associated with this comand */
u32 drv_id:4; /* Identifier for the driver to track*/
u32 rsvd1:8; /* Reserved */
u32 result:4; /* Reserved */
u32 res_rqd:1; /* Response rqd */
u32 large:1; /* Large Message if large = 1 */
u32 done:1; /* bit 30 - Done bit */
u32 busy:1; /* bit 31 - busy bit*/
} part;
u32 full;
} __packed; /* IPC header */ union ipc_header_mrfld { struct {
u32 header_low_payload; union ipc_header_high header_high;
} p;
u64 full;
} __packed; /* CAUTION NOTE: All IPC message body must be multiple of 32 bits.*/
/* IPC Header */ union ipc_header { struct {
u32 msg_id:8; /* Message ID - Max 256 Message Types */
u32 str_id:5;
u32 large:1; /* Large Message if large = 1 */
u32 reserved:2; /* Reserved for future use */
u32 data:14; /* Ack/Info for msg, size of msg in Mailbox */
u32 done:1; /* bit 30 */
u32 busy:1; /* bit 31 */
} part;
u32 full;
} __packed;
/* Firmware build info */ struct sst_fw_build_info { unsignedchar date[16]; /* Firmware build date */ unsignedchar time[16]; /* Firmware build time */
} __packed;
/* Firmware Version info */ struct snd_sst_fw_version {
u8 build; /* build number*/
u8 minor; /* minor number*/
u8 major; /* major number*/
u8 type; /* build type */
};
struct ipc_header_fw_init { struct snd_sst_fw_version fw_version;/* Firmware version details */ struct sst_fw_build_info build_info;
u16 result; /* Fw init result */
u8 module_id; /* Module ID in case of error */
u8 debug_info; /* Debug info from Module ID in case of fail */
} __packed;
/* Address and size info of a frame buffer */ struct sst_address_info {
u32 addr; /* Address at IA */
u32 size; /* Size of the buffer */
};
struct snd_sst_alloc_params_ext {
__u16 sg_count;
__u16 reserved;
__u32 frag_size; /*Number of samples after which period elapsed
message is sent valid only if path = 0*/ struct sst_address_info ring_buf_info[8];
};
struct snd_sst_stream_params { union snd_sst_codec_params uc;
} __packed;
/* Gain library parameters for mrfld * based on DSP command spec v0.82
*/ struct snd_sst_gain_v2 {
u16 gain_cell_num; /* num of gain cells to modify*/
u8 cell_nbr_idx; /* instance index*/
u8 cell_path_idx; /* pipe-id */
u16 module_id; /*module id */
u16 left_cell_gain; /* left gain value in dB*/
u16 right_cell_gain; /* right gain value in dB*/
u16 gain_time_const; /* gain time constant*/
} __packed;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.