144c28dbdSSrinivas Kandagatla /* SPDX-License-Identifier: GPL-2.0 */ 244c28dbdSSrinivas Kandagatla 344c28dbdSSrinivas Kandagatla #ifndef __AUDIOREACH_H__ 444c28dbdSSrinivas Kandagatla #define __AUDIOREACH_H__ 544c28dbdSSrinivas Kandagatla #include <linux/types.h> 644c28dbdSSrinivas Kandagatla #include <linux/soc/qcom/apr.h> 744c28dbdSSrinivas Kandagatla #include <sound/soc.h> 85477518bSSrinivas Kandagatla struct q6apm; 95477518bSSrinivas Kandagatla struct q6apm_graph; 1044c28dbdSSrinivas Kandagatla 1144c28dbdSSrinivas Kandagatla /* Module IDs */ 1244c28dbdSSrinivas Kandagatla #define MODULE_ID_WR_SHARED_MEM_EP 0x07001000 1344c28dbdSSrinivas Kandagatla #define MODULE_ID_RD_SHARED_MEM_EP 0x07001001 1444c28dbdSSrinivas Kandagatla #define MODULE_ID_GAIN 0x07001002 1544c28dbdSSrinivas Kandagatla #define MODULE_ID_PCM_CNV 0x07001003 1644c28dbdSSrinivas Kandagatla #define MODULE_ID_PCM_ENC 0x07001004 1744c28dbdSSrinivas Kandagatla #define MODULE_ID_PCM_DEC 0x07001005 18c7548f59SSrinivas Kandagatla #define MODULE_ID_PLACEHOLDER_ENCODER 0x07001008 19c7548f59SSrinivas Kandagatla #define MODULE_ID_PLACEHOLDER_DECODER 0x07001009 20a934afdbSSrinivas Kandagatla #define MODULE_ID_SAL 0x07001010 21cf0de67dSSrinivas Kandagatla #define MODULE_ID_MFC 0x07001015 2244c28dbdSSrinivas Kandagatla #define MODULE_ID_CODEC_DMA_SINK 0x07001023 2344c28dbdSSrinivas Kandagatla #define MODULE_ID_CODEC_DMA_SOURCE 0x07001024 2444c28dbdSSrinivas Kandagatla #define MODULE_ID_I2S_SINK 0x0700100A 2544c28dbdSSrinivas Kandagatla #define MODULE_ID_I2S_SOURCE 0x0700100B 2644c28dbdSSrinivas Kandagatla #define MODULE_ID_DATA_LOGGING 0x0700101A 27c7548f59SSrinivas Kandagatla #define MODULE_ID_AAC_DEC 0x0700101F 28c7548f59SSrinivas Kandagatla #define MODULE_ID_FLAC_DEC 0x0700102F 29c7548f59SSrinivas Kandagatla #define MODULE_ID_MP3_DECODE 0x0700103B 30*2c954a37SMohammad Rafi Shaik #define MODULE_ID_GAPLESS 0x0700104D 31a8ab6541SSrinivas Kandagatla #define MODULE_ID_DISPLAY_PORT_SINK 0x07001069 3244c28dbdSSrinivas Kandagatla 3344c28dbdSSrinivas Kandagatla #define APM_CMD_GET_SPF_STATE 0x01001021 3444c28dbdSSrinivas Kandagatla #define APM_CMD_RSP_GET_SPF_STATE 0x02001007 3544c28dbdSSrinivas Kandagatla 3644c28dbdSSrinivas Kandagatla #define APM_MODULE_INSTANCE_ID 0x00000001 3744c28dbdSSrinivas Kandagatla #define PRM_MODULE_INSTANCE_ID 0x00000002 3844c28dbdSSrinivas Kandagatla #define AMDB_MODULE_INSTANCE_ID 0x00000003 3944c28dbdSSrinivas Kandagatla #define VCPM_MODULE_INSTANCE_ID 0x00000004 4044c28dbdSSrinivas Kandagatla #define AR_MODULE_INSTANCE_ID_START 0x00006000 4144c28dbdSSrinivas Kandagatla #define AR_MODULE_INSTANCE_ID_END 0x00007000 4244c28dbdSSrinivas Kandagatla #define AR_MODULE_DYNAMIC_INSTANCE_ID_START 0x00007000 4344c28dbdSSrinivas Kandagatla #define AR_MODULE_DYNAMIC_INSTANCE_ID_END 0x00008000 4444c28dbdSSrinivas Kandagatla #define AR_CONT_INSTANCE_ID_START 0x00005000 4544c28dbdSSrinivas Kandagatla #define AR_CONT_INSTANCE_ID_END 0x00006000 4644c28dbdSSrinivas Kandagatla #define AR_SG_INSTANCE_ID_START 0x00004000 4744c28dbdSSrinivas Kandagatla 4844c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_OPEN 0x01001000 4944c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_PREPARE 0x01001001 5044c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_START 0x01001002 5144c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_STOP 0x01001003 5244c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_CLOSE 0x01001004 5344c28dbdSSrinivas Kandagatla #define APM_CMD_GRAPH_FLUSH 0x01001005 5444c28dbdSSrinivas Kandagatla #define APM_CMD_SET_CFG 0x01001006 5544c28dbdSSrinivas Kandagatla #define APM_CMD_GET_CFG 0x01001007 5644c28dbdSSrinivas Kandagatla #define APM_CMD_SHARED_MEM_MAP_REGIONS 0x0100100C 5744c28dbdSSrinivas Kandagatla #define APM_CMD_SHARED_MEM_UNMAP_REGIONS 0x0100100D 5844c28dbdSSrinivas Kandagatla #define APM_CMD_RSP_SHARED_MEM_MAP_REGIONS 0x02001001 5944c28dbdSSrinivas Kandagatla #define APM_CMD_RSP_GET_CFG 0x02001000 6044c28dbdSSrinivas Kandagatla #define APM_CMD_CLOSE_ALL 0x01001013 6144c28dbdSSrinivas Kandagatla #define APM_CMD_REGISTER_SHARED_CFG 0x0100100A 6244c28dbdSSrinivas Kandagatla 6344c28dbdSSrinivas Kandagatla #define APM_MEMORY_MAP_SHMEM8_4K_POOL 3 6444c28dbdSSrinivas Kandagatla 6544c28dbdSSrinivas Kandagatla struct apm_cmd_shared_mem_map_regions { 6644c28dbdSSrinivas Kandagatla uint16_t mem_pool_id; 6744c28dbdSSrinivas Kandagatla uint16_t num_regions; 6844c28dbdSSrinivas Kandagatla uint32_t property_flag; 6944c28dbdSSrinivas Kandagatla } __packed; 7044c28dbdSSrinivas Kandagatla 7144c28dbdSSrinivas Kandagatla struct apm_shared_map_region_payload { 7244c28dbdSSrinivas Kandagatla uint32_t shm_addr_lsw; 7344c28dbdSSrinivas Kandagatla uint32_t shm_addr_msw; 7444c28dbdSSrinivas Kandagatla uint32_t mem_size_bytes; 7544c28dbdSSrinivas Kandagatla } __packed; 7644c28dbdSSrinivas Kandagatla 7744c28dbdSSrinivas Kandagatla struct apm_cmd_shared_mem_unmap_regions { 7844c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 7944c28dbdSSrinivas Kandagatla } __packed; 8044c28dbdSSrinivas Kandagatla 8144c28dbdSSrinivas Kandagatla struct apm_cmd_rsp_shared_mem_map_regions { 8244c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 8344c28dbdSSrinivas Kandagatla } __packed; 8444c28dbdSSrinivas Kandagatla 8544c28dbdSSrinivas Kandagatla /* APM module */ 8644c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_SUB_GRAPH_LIST 0x08001005 8744c28dbdSSrinivas Kandagatla 8844c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_MODULE_LIST 0x08001002 8944c28dbdSSrinivas Kandagatla 9044c28dbdSSrinivas Kandagatla struct apm_param_id_modules_list { 9144c28dbdSSrinivas Kandagatla uint32_t num_modules_list; 9244c28dbdSSrinivas Kandagatla } __packed; 9344c28dbdSSrinivas Kandagatla 9444c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_MODULE_PROP 0x08001003 9544c28dbdSSrinivas Kandagatla 9644c28dbdSSrinivas Kandagatla struct apm_param_id_module_prop { 9744c28dbdSSrinivas Kandagatla uint32_t num_modules_prop_cfg; 9844c28dbdSSrinivas Kandagatla } __packed; 9944c28dbdSSrinivas Kandagatla 10044c28dbdSSrinivas Kandagatla struct apm_module_prop_cfg { 10144c28dbdSSrinivas Kandagatla uint32_t instance_id; 10244c28dbdSSrinivas Kandagatla uint32_t num_props; 10344c28dbdSSrinivas Kandagatla } __packed; 10444c28dbdSSrinivas Kandagatla 10544c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_MODULE_CONN 0x08001004 10644c28dbdSSrinivas Kandagatla 10744c28dbdSSrinivas Kandagatla struct apm_param_id_module_conn { 10844c28dbdSSrinivas Kandagatla uint32_t num_connections; 10944c28dbdSSrinivas Kandagatla } __packed; 11044c28dbdSSrinivas Kandagatla 11144c28dbdSSrinivas Kandagatla struct apm_module_conn_obj { 11244c28dbdSSrinivas Kandagatla uint32_t src_mod_inst_id; 11344c28dbdSSrinivas Kandagatla uint32_t src_mod_op_port_id; 11444c28dbdSSrinivas Kandagatla uint32_t dst_mod_inst_id; 11544c28dbdSSrinivas Kandagatla uint32_t dst_mod_ip_port_id; 11644c28dbdSSrinivas Kandagatla } __packed; 11744c28dbdSSrinivas Kandagatla 11844c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_GAIN 0x08001006 11944c28dbdSSrinivas Kandagatla 12044c28dbdSSrinivas Kandagatla struct param_id_gain_cfg { 12144c28dbdSSrinivas Kandagatla uint16_t gain; 12244c28dbdSSrinivas Kandagatla uint16_t reserved; 12344c28dbdSSrinivas Kandagatla } __packed; 12444c28dbdSSrinivas Kandagatla 12544c28dbdSSrinivas Kandagatla #define PARAM_ID_PCM_OUTPUT_FORMAT_CFG 0x08001008 12644c28dbdSSrinivas Kandagatla 12744c28dbdSSrinivas Kandagatla struct param_id_pcm_output_format_cfg { 12844c28dbdSSrinivas Kandagatla uint32_t data_format; 12944c28dbdSSrinivas Kandagatla uint32_t fmt_id; 13044c28dbdSSrinivas Kandagatla uint32_t payload_size; 13144c28dbdSSrinivas Kandagatla } __packed; 13244c28dbdSSrinivas Kandagatla 13344c28dbdSSrinivas Kandagatla struct payload_pcm_output_format_cfg { 13444c28dbdSSrinivas Kandagatla uint16_t bit_width; 13544c28dbdSSrinivas Kandagatla uint16_t alignment; 13644c28dbdSSrinivas Kandagatla uint16_t bits_per_sample; 13744c28dbdSSrinivas Kandagatla uint16_t q_factor; 13844c28dbdSSrinivas Kandagatla uint16_t endianness; 13944c28dbdSSrinivas Kandagatla uint16_t interleaved; 14044c28dbdSSrinivas Kandagatla uint16_t reserved; 14144c28dbdSSrinivas Kandagatla uint16_t num_channels; 14244c28dbdSSrinivas Kandagatla uint8_t channel_mapping[]; 14344c28dbdSSrinivas Kandagatla } __packed; 14444c28dbdSSrinivas Kandagatla 14544c28dbdSSrinivas Kandagatla #define PARAM_ID_ENC_BITRATE 0x08001052 14644c28dbdSSrinivas Kandagatla 14744c28dbdSSrinivas Kandagatla struct param_id_enc_bitrate_param { 14844c28dbdSSrinivas Kandagatla uint32_t bitrate; 14944c28dbdSSrinivas Kandagatla } __packed; 15044c28dbdSSrinivas Kandagatla 15144c28dbdSSrinivas Kandagatla #define DATA_FORMAT_FIXED_POINT 1 152e41521b6SMohammad Rafi Shaik #define DATA_FORMAT_GENERIC_COMPRESSED 5 153e41521b6SMohammad Rafi Shaik #define DATA_FORMAT_RAW_COMPRESSED 6 15444c28dbdSSrinivas Kandagatla #define PCM_LSB_ALIGNED 1 15544c28dbdSSrinivas Kandagatla #define PCM_MSB_ALIGNED 2 15644c28dbdSSrinivas Kandagatla #define PCM_LITTLE_ENDIAN 1 15744c28dbdSSrinivas Kandagatla #define PCM_BIT_ENDIAN 2 15844c28dbdSSrinivas Kandagatla 15944c28dbdSSrinivas Kandagatla #define MEDIA_FMT_ID_PCM 0x09001000 160e41521b6SMohammad Rafi Shaik #define MEDIA_FMT_ID_MP3 0x09001009 16144c28dbdSSrinivas Kandagatla #define PCM_CHANNEL_L 1 16244c28dbdSSrinivas Kandagatla #define PCM_CHANNEL_R 2 16344c28dbdSSrinivas Kandagatla #define SAMPLE_RATE_48K 48000 16444c28dbdSSrinivas Kandagatla #define BIT_WIDTH_16 16 16544c28dbdSSrinivas Kandagatla 16644c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_PROP_PORT_INFO 0x08001015 16744c28dbdSSrinivas Kandagatla 16844c28dbdSSrinivas Kandagatla struct apm_modules_prop_info { 16944c28dbdSSrinivas Kandagatla uint32_t max_ip_port; 17044c28dbdSSrinivas Kandagatla uint32_t max_op_port; 17144c28dbdSSrinivas Kandagatla } __packed; 17244c28dbdSSrinivas Kandagatla 17344c28dbdSSrinivas Kandagatla /* Shared memory module */ 17444c28dbdSSrinivas Kandagatla #define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER 0x04001000 17544c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_TIMESTAMP_VALID_FLAG BIT(31) 17644c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_LAST_BUFFER_FLAG BIT(30) 17744c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_TS_CONTINUE_FLAG BIT(29) 17844c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_EOF_FLAG BIT(4) 17944c28dbdSSrinivas Kandagatla 18044c28dbdSSrinivas Kandagatla struct apm_data_cmd_wr_sh_mem_ep_data_buffer { 18144c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 18244c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 18344c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 18444c28dbdSSrinivas Kandagatla uint32_t buf_size; 18544c28dbdSSrinivas Kandagatla uint32_t timestamp_lsw; 18644c28dbdSSrinivas Kandagatla uint32_t timestamp_msw; 18744c28dbdSSrinivas Kandagatla uint32_t flags; 18844c28dbdSSrinivas Kandagatla } __packed; 18944c28dbdSSrinivas Kandagatla 19044c28dbdSSrinivas Kandagatla #define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER_V2 0x0400100A 19144c28dbdSSrinivas Kandagatla 19244c28dbdSSrinivas Kandagatla struct apm_data_cmd_wr_sh_mem_ep_data_buffer_v2 { 19344c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 19444c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 19544c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 19644c28dbdSSrinivas Kandagatla uint32_t buf_size; 19744c28dbdSSrinivas Kandagatla uint32_t timestamp_lsw; 19844c28dbdSSrinivas Kandagatla uint32_t timestamp_msw; 19944c28dbdSSrinivas Kandagatla uint32_t flags; 20044c28dbdSSrinivas Kandagatla uint32_t md_addr_lsw; 20144c28dbdSSrinivas Kandagatla uint32_t md_addr_msw; 20244c28dbdSSrinivas Kandagatla uint32_t md_map_handle; 20344c28dbdSSrinivas Kandagatla uint32_t md_buf_size; 20444c28dbdSSrinivas Kandagatla } __packed; 20544c28dbdSSrinivas Kandagatla 20644c28dbdSSrinivas Kandagatla #define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE 0x05001000 20744c28dbdSSrinivas Kandagatla 20844c28dbdSSrinivas Kandagatla struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done { 20944c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 21044c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 21144c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 21244c28dbdSSrinivas Kandagatla uint32_t status; 21344c28dbdSSrinivas Kandagatla 21444c28dbdSSrinivas Kandagatla } __packed; 21544c28dbdSSrinivas Kandagatla 21644c28dbdSSrinivas Kandagatla #define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE_V2 0x05001004 21744c28dbdSSrinivas Kandagatla 21844c28dbdSSrinivas Kandagatla struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done_v2 { 21944c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 22044c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 22144c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 22244c28dbdSSrinivas Kandagatla uint32_t status; 22344c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_lsw; 22444c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_msw; 22544c28dbdSSrinivas Kandagatla uint32_t md_mem_map_handle; 22644c28dbdSSrinivas Kandagatla uint32_t md_status; 22744c28dbdSSrinivas Kandagatla } __packed; 22844c28dbdSSrinivas Kandagatla 22944c28dbdSSrinivas Kandagatla #define PARAM_ID_MEDIA_FORMAT 0x0800100C 23044c28dbdSSrinivas Kandagatla #define DATA_CMD_WR_SH_MEM_EP_MEDIA_FORMAT 0x04001001 23144c28dbdSSrinivas Kandagatla 23244c28dbdSSrinivas Kandagatla struct apm_media_format { 23344c28dbdSSrinivas Kandagatla uint32_t data_format; 23444c28dbdSSrinivas Kandagatla uint32_t fmt_id; 23544c28dbdSSrinivas Kandagatla uint32_t payload_size; 23644c28dbdSSrinivas Kandagatla } __packed; 23744c28dbdSSrinivas Kandagatla 238e41521b6SMohammad Rafi Shaik #define MEDIA_FMT_ID_FLAC 0x09001004 239e41521b6SMohammad Rafi Shaik 240e41521b6SMohammad Rafi Shaik struct payload_media_fmt_flac_t { 241e41521b6SMohammad Rafi Shaik uint16_t num_channels; 242e41521b6SMohammad Rafi Shaik uint16_t sample_size; 243e41521b6SMohammad Rafi Shaik uint16_t min_blk_size; 244e41521b6SMohammad Rafi Shaik uint16_t max_blk_size; 245e41521b6SMohammad Rafi Shaik uint32_t sample_rate; 246e41521b6SMohammad Rafi Shaik uint32_t min_frame_size; 247e41521b6SMohammad Rafi Shaik uint32_t max_frame_size; 248e41521b6SMohammad Rafi Shaik } __packed; 249e41521b6SMohammad Rafi Shaik 250e41521b6SMohammad Rafi Shaik #define MEDIA_FMT_ID_AAC 0x09001001 251e41521b6SMohammad Rafi Shaik 252e41521b6SMohammad Rafi Shaik struct payload_media_fmt_aac_t { 253e41521b6SMohammad Rafi Shaik uint16_t aac_fmt_flag; 254e41521b6SMohammad Rafi Shaik uint16_t audio_obj_type; 255e41521b6SMohammad Rafi Shaik uint16_t num_channels; 256e41521b6SMohammad Rafi Shaik uint16_t total_size_of_PCE_bits; 257e41521b6SMohammad Rafi Shaik uint32_t sample_rate; 258e41521b6SMohammad Rafi Shaik } __packed; 259e41521b6SMohammad Rafi Shaik 26044c28dbdSSrinivas Kandagatla #define DATA_CMD_WR_SH_MEM_EP_EOS 0x04001002 26144c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_EOS_POLICY_LAST 1 26244c28dbdSSrinivas Kandagatla #define WR_SH_MEM_EP_EOS_POLICY_EACH 2 26344c28dbdSSrinivas Kandagatla 26444c28dbdSSrinivas Kandagatla struct data_cmd_wr_sh_mem_ep_eos { 26544c28dbdSSrinivas Kandagatla uint32_t policy; 26644c28dbdSSrinivas Kandagatla 26744c28dbdSSrinivas Kandagatla } __packed; 26844c28dbdSSrinivas Kandagatla 26944c28dbdSSrinivas Kandagatla #define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER 0x04001003 27044c28dbdSSrinivas Kandagatla 27144c28dbdSSrinivas Kandagatla struct data_cmd_rd_sh_mem_ep_data_buffer { 27244c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 27344c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 27444c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 27544c28dbdSSrinivas Kandagatla uint32_t buf_size; 27644c28dbdSSrinivas Kandagatla } __packed; 27744c28dbdSSrinivas Kandagatla 27844c28dbdSSrinivas Kandagatla #define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER 0x05001002 27944c28dbdSSrinivas Kandagatla 28044c28dbdSSrinivas Kandagatla struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done { 28144c28dbdSSrinivas Kandagatla uint32_t status; 28244c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 28344c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 28444c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 28544c28dbdSSrinivas Kandagatla uint32_t data_size; 28644c28dbdSSrinivas Kandagatla uint32_t offset; 28744c28dbdSSrinivas Kandagatla uint32_t timestamp_lsw; 28844c28dbdSSrinivas Kandagatla uint32_t timestamp_msw; 28944c28dbdSSrinivas Kandagatla uint32_t flags; 29044c28dbdSSrinivas Kandagatla uint32_t num_frames; 29144c28dbdSSrinivas Kandagatla } __packed; 29244c28dbdSSrinivas Kandagatla 29344c28dbdSSrinivas Kandagatla #define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER_V2 0x0400100B 29444c28dbdSSrinivas Kandagatla 29544c28dbdSSrinivas Kandagatla struct data_cmd_rd_sh_mem_ep_data_buffer_v2 { 29644c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 29744c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 29844c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 29944c28dbdSSrinivas Kandagatla uint32_t buf_size; 30044c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_lsw; 30144c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_msw; 30244c28dbdSSrinivas Kandagatla uint32_t md_mem_map_handle; 30344c28dbdSSrinivas Kandagatla uint32_t md_buf_size; 30444c28dbdSSrinivas Kandagatla } __packed; 30544c28dbdSSrinivas Kandagatla 30644c28dbdSSrinivas Kandagatla #define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER_V2 0x05001005 30744c28dbdSSrinivas Kandagatla 30844c28dbdSSrinivas Kandagatla struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done_v2 { 30944c28dbdSSrinivas Kandagatla uint32_t status; 31044c28dbdSSrinivas Kandagatla uint32_t buf_addr_lsw; 31144c28dbdSSrinivas Kandagatla uint32_t buf_addr_msw; 31244c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 31344c28dbdSSrinivas Kandagatla uint32_t data_size; 31444c28dbdSSrinivas Kandagatla uint32_t offset; 31544c28dbdSSrinivas Kandagatla uint32_t timestamp_lsw; 31644c28dbdSSrinivas Kandagatla uint32_t timestamp_msw; 31744c28dbdSSrinivas Kandagatla uint32_t flags; 31844c28dbdSSrinivas Kandagatla uint32_t num_frames; 31944c28dbdSSrinivas Kandagatla uint32_t md_status; 32044c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_lsw; 32144c28dbdSSrinivas Kandagatla uint32_t md_buf_addr_msw; 32244c28dbdSSrinivas Kandagatla uint32_t md_mem_map_handle; 32344c28dbdSSrinivas Kandagatla uint32_t md_size; 32444c28dbdSSrinivas Kandagatla } __packed; 32544c28dbdSSrinivas Kandagatla 32644c28dbdSSrinivas Kandagatla #define PARAM_ID_RD_SH_MEM_CFG 0x08001007 32744c28dbdSSrinivas Kandagatla 32844c28dbdSSrinivas Kandagatla struct param_id_rd_sh_mem_cfg { 32944c28dbdSSrinivas Kandagatla uint32_t num_frames_per_buffer; 33044c28dbdSSrinivas Kandagatla uint32_t metadata_control_flags; 33144c28dbdSSrinivas Kandagatla 33244c28dbdSSrinivas Kandagatla } __packed; 33344c28dbdSSrinivas Kandagatla 33444c28dbdSSrinivas Kandagatla #define DATA_CMD_WR_SH_MEM_EP_EOS_RENDERED 0x05001001 33544c28dbdSSrinivas Kandagatla 33644c28dbdSSrinivas Kandagatla struct data_cmd_wr_sh_mem_ep_eos_rendered { 33744c28dbdSSrinivas Kandagatla uint32_t module_instance_id; 33844c28dbdSSrinivas Kandagatla uint32_t render_status; 33944c28dbdSSrinivas Kandagatla } __packed; 34044c28dbdSSrinivas Kandagatla 34144c28dbdSSrinivas Kandagatla #define MODULE_ID_WR_SHARED_MEM_EP 0x07001000 34244c28dbdSSrinivas Kandagatla 34344c28dbdSSrinivas Kandagatla struct apm_cmd_header { 34444c28dbdSSrinivas Kandagatla uint32_t payload_address_lsw; 34544c28dbdSSrinivas Kandagatla uint32_t payload_address_msw; 34644c28dbdSSrinivas Kandagatla uint32_t mem_map_handle; 34744c28dbdSSrinivas Kandagatla uint32_t payload_size; 34844c28dbdSSrinivas Kandagatla } __packed; 34944c28dbdSSrinivas Kandagatla 35044c28dbdSSrinivas Kandagatla #define APM_CMD_HDR_SIZE sizeof(struct apm_cmd_header) 35144c28dbdSSrinivas Kandagatla 35244c28dbdSSrinivas Kandagatla struct apm_module_param_data { 35344c28dbdSSrinivas Kandagatla uint32_t module_instance_id; 35444c28dbdSSrinivas Kandagatla uint32_t param_id; 35544c28dbdSSrinivas Kandagatla uint32_t param_size; 35644c28dbdSSrinivas Kandagatla uint32_t error_code; 35744c28dbdSSrinivas Kandagatla } __packed; 35844c28dbdSSrinivas Kandagatla 35944c28dbdSSrinivas Kandagatla #define APM_MODULE_PARAM_DATA_SIZE sizeof(struct apm_module_param_data) 36044c28dbdSSrinivas Kandagatla 36144c28dbdSSrinivas Kandagatla struct apm_module_param_shared_data { 36244c28dbdSSrinivas Kandagatla uint32_t param_id; 36344c28dbdSSrinivas Kandagatla uint32_t param_size; 36444c28dbdSSrinivas Kandagatla } __packed; 36544c28dbdSSrinivas Kandagatla 36644c28dbdSSrinivas Kandagatla struct apm_prop_data { 36744c28dbdSSrinivas Kandagatla uint32_t prop_id; 36844c28dbdSSrinivas Kandagatla uint32_t prop_size; 36944c28dbdSSrinivas Kandagatla } __packed; 37044c28dbdSSrinivas Kandagatla 37144c28dbdSSrinivas Kandagatla /* Sub-Graph Properties */ 37244c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_SUB_GRAPH_CONFIG 0x08001001 37344c28dbdSSrinivas Kandagatla 37444c28dbdSSrinivas Kandagatla struct apm_param_id_sub_graph_cfg { 37544c28dbdSSrinivas Kandagatla uint32_t num_sub_graphs; 37644c28dbdSSrinivas Kandagatla } __packed; 37744c28dbdSSrinivas Kandagatla 37844c28dbdSSrinivas Kandagatla struct apm_sub_graph_cfg { 37944c28dbdSSrinivas Kandagatla uint32_t sub_graph_id; 38044c28dbdSSrinivas Kandagatla uint32_t num_sub_graph_prop; 38144c28dbdSSrinivas Kandagatla } __packed; 38244c28dbdSSrinivas Kandagatla 38344c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_PROP_ID_PERF_MODE 0x0800100E 38444c28dbdSSrinivas Kandagatla 38544c28dbdSSrinivas Kandagatla struct apm_sg_prop_id_perf_mode { 38644c28dbdSSrinivas Kandagatla uint32_t perf_mode; 38744c28dbdSSrinivas Kandagatla } __packed; 38844c28dbdSSrinivas Kandagatla 38944c28dbdSSrinivas Kandagatla #define APM_SG_PROP_ID_PERF_MODE_SIZE 4 39044c28dbdSSrinivas Kandagatla 39144c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_PROP_ID_DIRECTION 0x0800100F 39244c28dbdSSrinivas Kandagatla 39344c28dbdSSrinivas Kandagatla struct apm_sg_prop_id_direction { 39444c28dbdSSrinivas Kandagatla uint32_t direction; 39544c28dbdSSrinivas Kandagatla } __packed; 39644c28dbdSSrinivas Kandagatla 39744c28dbdSSrinivas Kandagatla #define APM_SG_PROP_ID_DIR_SIZE 4 39844c28dbdSSrinivas Kandagatla 39944c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_PROP_ID_SCENARIO_ID 0x08001010 40044c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK 0x1 40144c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_SID_AUDIO_RECORD 0x2 40244c28dbdSSrinivas Kandagatla #define APM_SUB_GRAPH_SID_AUDIO_VOICE_CALL 0x3 40344c28dbdSSrinivas Kandagatla 40444c28dbdSSrinivas Kandagatla struct apm_sg_prop_id_scenario_id { 40544c28dbdSSrinivas Kandagatla uint32_t scenario_id; 40644c28dbdSSrinivas Kandagatla } __packed; 40744c28dbdSSrinivas Kandagatla 40844c28dbdSSrinivas Kandagatla #define APM_SG_PROP_ID_SID_SIZE 4 40944c28dbdSSrinivas Kandagatla /* container api */ 41044c28dbdSSrinivas Kandagatla #define APM_PARAM_ID_CONTAINER_CONFIG 0x08001000 41144c28dbdSSrinivas Kandagatla 41244c28dbdSSrinivas Kandagatla struct apm_param_id_container_cfg { 41344c28dbdSSrinivas Kandagatla uint32_t num_containers; 41444c28dbdSSrinivas Kandagatla } __packed; 41544c28dbdSSrinivas Kandagatla 41644c28dbdSSrinivas Kandagatla struct apm_container_cfg { 41744c28dbdSSrinivas Kandagatla uint32_t container_id; 41844c28dbdSSrinivas Kandagatla uint32_t num_prop; 41944c28dbdSSrinivas Kandagatla } __packed; 42044c28dbdSSrinivas Kandagatla 42144c28dbdSSrinivas Kandagatla struct apm_cont_capability { 42244c28dbdSSrinivas Kandagatla uint32_t capability_id; 42344c28dbdSSrinivas Kandagatla } __packed; 42444c28dbdSSrinivas Kandagatla 42544c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_CAPABILITY_LIST 0x08001011 42644c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_CAPABILITY_SIZE 8 42744c28dbdSSrinivas Kandagatla 42844c28dbdSSrinivas Kandagatla #define APM_PROP_ID_INVALID 0x0 42944c28dbdSSrinivas Kandagatla #define APM_CONTAINER_CAP_ID_PP 0x1 43044c28dbdSSrinivas Kandagatla #define APM_CONTAINER_CAP_ID_PP 0x1 43144c28dbdSSrinivas Kandagatla 43244c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_cap_list { 43344c28dbdSSrinivas Kandagatla uint32_t num_capability_id; 43444c28dbdSSrinivas Kandagatla } __packed; 43544c28dbdSSrinivas Kandagatla 43644c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_GRAPH_POS 0x08001012 43744c28dbdSSrinivas Kandagatla 43844c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_graph_pos { 43944c28dbdSSrinivas Kandagatla uint32_t graph_pos; 44044c28dbdSSrinivas Kandagatla } __packed; 44144c28dbdSSrinivas Kandagatla 44244c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_STACK_SIZE 0x08001013 44344c28dbdSSrinivas Kandagatla 44444c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_stack_size { 44544c28dbdSSrinivas Kandagatla uint32_t stack_size; 44644c28dbdSSrinivas Kandagatla } __packed; 44744c28dbdSSrinivas Kandagatla 44844c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_PROC_DOMAIN 0x08001014 44944c28dbdSSrinivas Kandagatla 45044c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_domain { 45144c28dbdSSrinivas Kandagatla uint32_t proc_domain; 45244c28dbdSSrinivas Kandagatla } __packed; 45344c28dbdSSrinivas Kandagatla 45444c28dbdSSrinivas Kandagatla #define CONFIG_I2S_WS_SRC_EXTERNAL 0x0 45544c28dbdSSrinivas Kandagatla #define CONFIG_I2S_WS_SRC_INTERNAL 0x1 45644c28dbdSSrinivas Kandagatla 45744c28dbdSSrinivas Kandagatla #define PARAM_ID_I2S_INTF_CFG 0x08001019 45844c28dbdSSrinivas Kandagatla struct param_id_i2s_intf_cfg { 45944c28dbdSSrinivas Kandagatla uint32_t lpaif_type; 46044c28dbdSSrinivas Kandagatla uint32_t intf_idx; 46144c28dbdSSrinivas Kandagatla uint16_t sd_line_idx; 46244c28dbdSSrinivas Kandagatla uint16_t ws_src; 46344c28dbdSSrinivas Kandagatla } __packed; 46444c28dbdSSrinivas Kandagatla 46544c28dbdSSrinivas Kandagatla #define I2S_INTF_TYPE_PRIMARY 0 46644c28dbdSSrinivas Kandagatla #define I2S_INTF_TYPE_SECOINDARY 1 46744c28dbdSSrinivas Kandagatla #define I2S_INTF_TYPE_TERTINARY 2 46844c28dbdSSrinivas Kandagatla #define I2S_INTF_TYPE_QUATERNARY 3 46944c28dbdSSrinivas Kandagatla #define I2S_INTF_TYPE_QUINARY 4 47044c28dbdSSrinivas Kandagatla #define I2S_SD0 1 47144c28dbdSSrinivas Kandagatla #define I2S_SD1 2 47244c28dbdSSrinivas Kandagatla #define I2S_SD2 3 47344c28dbdSSrinivas Kandagatla #define I2S_SD3 4 47444c28dbdSSrinivas Kandagatla 47544c28dbdSSrinivas Kandagatla #define PORT_ID_I2S_INPUT 2 47644c28dbdSSrinivas Kandagatla #define PORT_ID_I2S_OUPUT 1 47744c28dbdSSrinivas Kandagatla #define I2S_STACK_SIZE 2048 47844c28dbdSSrinivas Kandagatla 479a8ab6541SSrinivas Kandagatla #define PARAM_ID_DISPLAY_PORT_INTF_CFG 0x08001154 480a8ab6541SSrinivas Kandagatla 481a8ab6541SSrinivas Kandagatla struct param_id_display_port_intf_cfg { 482a8ab6541SSrinivas Kandagatla uint32_t channel_allocation; 483a8ab6541SSrinivas Kandagatla /* Multi-Steam Transport index */ 484a8ab6541SSrinivas Kandagatla uint32_t mst_idx; 485a8ab6541SSrinivas Kandagatla uint32_t dptx_idx; 486a8ab6541SSrinivas Kandagatla } __packed; 487a8ab6541SSrinivas Kandagatla 48844c28dbdSSrinivas Kandagatla #define PARAM_ID_HW_EP_MF_CFG 0x08001017 48944c28dbdSSrinivas Kandagatla struct param_id_hw_ep_mf { 49044c28dbdSSrinivas Kandagatla uint32_t sample_rate; 49144c28dbdSSrinivas Kandagatla uint16_t bit_width; 49244c28dbdSSrinivas Kandagatla uint16_t num_channels; 49344c28dbdSSrinivas Kandagatla uint32_t data_format; 49444c28dbdSSrinivas Kandagatla } __packed; 49544c28dbdSSrinivas Kandagatla 49644c28dbdSSrinivas Kandagatla #define PARAM_ID_HW_EP_FRAME_SIZE_FACTOR 0x08001018 49744c28dbdSSrinivas Kandagatla 49844c28dbdSSrinivas Kandagatla struct param_id_fram_size_factor { 49944c28dbdSSrinivas Kandagatla uint32_t frame_size_factor; 50044c28dbdSSrinivas Kandagatla } __packed; 50144c28dbdSSrinivas Kandagatla 50244c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_PARENT_CONTAINER_ID 0x080010CB 50344c28dbdSSrinivas Kandagatla 50444c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_parent_container { 50544c28dbdSSrinivas Kandagatla uint32_t parent_container_id; 50644c28dbdSSrinivas Kandagatla } __packed; 50744c28dbdSSrinivas Kandagatla 50844c28dbdSSrinivas Kandagatla #define APM_CONTAINER_PROP_ID_HEAP_ID 0x08001174 50944c28dbdSSrinivas Kandagatla #define APM_CONT_HEAP_DEFAULT 0x1 51044c28dbdSSrinivas Kandagatla #define APM_CONT_HEAP_LOW_POWER 0x2 51144c28dbdSSrinivas Kandagatla 51244c28dbdSSrinivas Kandagatla struct apm_cont_prop_id_headp_id { 51344c28dbdSSrinivas Kandagatla uint32_t heap_id; 51444c28dbdSSrinivas Kandagatla } __packed; 51544c28dbdSSrinivas Kandagatla 51644c28dbdSSrinivas Kandagatla struct apm_modules_list { 51744c28dbdSSrinivas Kandagatla uint32_t sub_graph_id; 51844c28dbdSSrinivas Kandagatla uint32_t container_id; 51944c28dbdSSrinivas Kandagatla uint32_t num_modules; 52044c28dbdSSrinivas Kandagatla } __packed; 52144c28dbdSSrinivas Kandagatla 52244c28dbdSSrinivas Kandagatla struct apm_module_obj { 52344c28dbdSSrinivas Kandagatla uint32_t module_id; 52444c28dbdSSrinivas Kandagatla uint32_t instance_id; 52544c28dbdSSrinivas Kandagatla } __packed; 52644c28dbdSSrinivas Kandagatla 52744c28dbdSSrinivas Kandagatla #define APM_MODULE_PROP_ID_PORT_INFO 0x08001015 52844c28dbdSSrinivas Kandagatla #define APM_MODULE_PROP_ID_PORT_INFO_SZ 8 52944c28dbdSSrinivas Kandagatla struct apm_module_prop_id_port_info { 53044c28dbdSSrinivas Kandagatla uint32_t max_ip_port; 53144c28dbdSSrinivas Kandagatla uint32_t max_op_port; 53244c28dbdSSrinivas Kandagatla } __packed; 53344c28dbdSSrinivas Kandagatla 53444c28dbdSSrinivas Kandagatla #define DATA_LOGGING_MAX_INPUT_PORTS 0x1 53544c28dbdSSrinivas Kandagatla #define DATA_LOGGING_MAX_OUTPUT_PORTS 0x1 53644c28dbdSSrinivas Kandagatla #define DATA_LOGGING_STACK_SIZE 2048 53744c28dbdSSrinivas Kandagatla #define PARAM_ID_DATA_LOGGING_CONFIG 0x08001031 53844c28dbdSSrinivas Kandagatla 53944c28dbdSSrinivas Kandagatla struct data_logging_config { 54044c28dbdSSrinivas Kandagatla uint32_t log_code; 54144c28dbdSSrinivas Kandagatla uint32_t log_tap_point_id; 54244c28dbdSSrinivas Kandagatla uint32_t mode; 54344c28dbdSSrinivas Kandagatla } __packed; 54444c28dbdSSrinivas Kandagatla 545a934afdbSSrinivas Kandagatla #define PARAM_ID_SAL_OUTPUT_CFG 0x08001016 546a934afdbSSrinivas Kandagatla struct param_id_sal_output_config { 547a934afdbSSrinivas Kandagatla uint32_t bits_per_sample; 548a934afdbSSrinivas Kandagatla } __packed; 549a934afdbSSrinivas Kandagatla 550a934afdbSSrinivas Kandagatla #define PARAM_ID_SAL_LIMITER_ENABLE 0x0800101E 551a934afdbSSrinivas Kandagatla struct param_id_sal_limiter_enable { 552a934afdbSSrinivas Kandagatla uint32_t enable_lim; 553a934afdbSSrinivas Kandagatla } __packed; 554a934afdbSSrinivas Kandagatla 55544c28dbdSSrinivas Kandagatla #define PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT 0x08001024 556*2c954a37SMohammad Rafi Shaik #define PARAM_ID_EARLY_EOS_DELAY 0x0800114C 557*2c954a37SMohammad Rafi Shaik #define EARLY_EOS_DELAY_MS 150 55844c28dbdSSrinivas Kandagatla 55944c28dbdSSrinivas Kandagatla struct param_id_mfc_media_format { 56044c28dbdSSrinivas Kandagatla uint32_t sample_rate; 56144c28dbdSSrinivas Kandagatla uint16_t bit_width; 56244c28dbdSSrinivas Kandagatla uint16_t num_channels; 56344c28dbdSSrinivas Kandagatla uint16_t channel_mapping[]; 56444c28dbdSSrinivas Kandagatla } __packed; 56544c28dbdSSrinivas Kandagatla 566*2c954a37SMohammad Rafi Shaik struct param_id_gapless_early_eos_delay_t { 567*2c954a37SMohammad Rafi Shaik uint32_t early_eos_delay_ms; 568*2c954a37SMohammad Rafi Shaik } __packed; 569*2c954a37SMohammad Rafi Shaik 57044c28dbdSSrinivas Kandagatla struct media_format { 57144c28dbdSSrinivas Kandagatla uint32_t data_format; 57244c28dbdSSrinivas Kandagatla uint32_t fmt_id; 57344c28dbdSSrinivas Kandagatla uint32_t payload_size; 57444c28dbdSSrinivas Kandagatla } __packed; 57544c28dbdSSrinivas Kandagatla 57644c28dbdSSrinivas Kandagatla struct payload_media_fmt_pcm { 57744c28dbdSSrinivas Kandagatla uint32_t sample_rate; 57844c28dbdSSrinivas Kandagatla uint16_t bit_width; 57944c28dbdSSrinivas Kandagatla uint16_t alignment; 58044c28dbdSSrinivas Kandagatla uint16_t bits_per_sample; 58144c28dbdSSrinivas Kandagatla uint16_t q_factor; 58244c28dbdSSrinivas Kandagatla uint16_t endianness; 58344c28dbdSSrinivas Kandagatla uint16_t num_channels; 58444c28dbdSSrinivas Kandagatla uint8_t channel_mapping[]; 58544c28dbdSSrinivas Kandagatla } __packed; 58644c28dbdSSrinivas Kandagatla 5876648a6dcSSrinivas Kandagatla #define PARAM_ID_MODULE_ENABLE 0x08001026 5886648a6dcSSrinivas Kandagatla struct param_id_module_enable { 5896648a6dcSSrinivas Kandagatla uint32_t enable; 5906648a6dcSSrinivas Kandagatla } __packed; 5916648a6dcSSrinivas Kandagatla 59244c28dbdSSrinivas Kandagatla #define PARAM_ID_CODEC_DMA_INTF_CFG 0x08001063 59344c28dbdSSrinivas Kandagatla 59444c28dbdSSrinivas Kandagatla struct param_id_codec_dma_intf_cfg { 59544c28dbdSSrinivas Kandagatla /* 1 - RXTX 59644c28dbdSSrinivas Kandagatla * 2 - WSA 59744c28dbdSSrinivas Kandagatla * 3 - VA 59844c28dbdSSrinivas Kandagatla * 4 - AXI 59944c28dbdSSrinivas Kandagatla */ 60044c28dbdSSrinivas Kandagatla uint32_t lpaif_type; 60144c28dbdSSrinivas Kandagatla /* 60244c28dbdSSrinivas Kandagatla * RX0 | TX0 = 1 60344c28dbdSSrinivas Kandagatla * RX1 | TX1 = 2 60444c28dbdSSrinivas Kandagatla * RX2 | TX2 = 3... so on 60544c28dbdSSrinivas Kandagatla */ 60644c28dbdSSrinivas Kandagatla uint32_t intf_index; 60744c28dbdSSrinivas Kandagatla uint32_t active_channels_mask; 60844c28dbdSSrinivas Kandagatla } __packed; 60944c28dbdSSrinivas Kandagatla 61044c28dbdSSrinivas Kandagatla struct audio_hw_clk_cfg { 61144c28dbdSSrinivas Kandagatla uint32_t clock_id; 61244c28dbdSSrinivas Kandagatla uint32_t clock_freq; 61344c28dbdSSrinivas Kandagatla uint32_t clock_attri; 61444c28dbdSSrinivas Kandagatla uint32_t clock_root; 61544c28dbdSSrinivas Kandagatla } __packed; 61644c28dbdSSrinivas Kandagatla 6172f206404SSrinivas Kandagatla struct audio_hw_clk_rel_cfg { 6182f206404SSrinivas Kandagatla uint32_t clock_id; 6192f206404SSrinivas Kandagatla } __packed; 6202f206404SSrinivas Kandagatla 62144c28dbdSSrinivas Kandagatla #define PARAM_ID_HW_EP_POWER_MODE_CFG 0x8001176 62244c28dbdSSrinivas Kandagatla #define AR_HW_EP_POWER_MODE_0 0 /* default */ 62344c28dbdSSrinivas Kandagatla #define AR_HW_EP_POWER_MODE_1 1 /* XO Shutdown allowed */ 62444c28dbdSSrinivas Kandagatla #define AR_HW_EP_POWER_MODE_2 2 /* XO Shutdown not allowed */ 62544c28dbdSSrinivas Kandagatla 62644c28dbdSSrinivas Kandagatla struct param_id_hw_ep_power_mode_cfg { 62744c28dbdSSrinivas Kandagatla uint32_t power_mode; 62844c28dbdSSrinivas Kandagatla } __packed; 62944c28dbdSSrinivas Kandagatla 63044c28dbdSSrinivas Kandagatla #define PARAM_ID_HW_EP_DMA_DATA_ALIGN 0x08001233 63144c28dbdSSrinivas Kandagatla #define AR_HW_EP_DMA_DATA_ALIGN_MSB 0 63244c28dbdSSrinivas Kandagatla #define AR_HW_EP_DMA_DATA_ALIGN_LSB 1 63344c28dbdSSrinivas Kandagatla #define AR_PCM_MAX_NUM_CHANNEL 8 63444c28dbdSSrinivas Kandagatla 63544c28dbdSSrinivas Kandagatla struct param_id_hw_ep_dma_data_align { 63644c28dbdSSrinivas Kandagatla uint32_t dma_data_align; 63744c28dbdSSrinivas Kandagatla } __packed; 63844c28dbdSSrinivas Kandagatla 63925ab80dbSSrinivas Kandagatla #define PARAM_ID_VOL_CTRL_MASTER_GAIN 0x08001035 64025ab80dbSSrinivas Kandagatla #define VOL_CTRL_DEFAULT_GAIN 0x2000 64125ab80dbSSrinivas Kandagatla 64225ab80dbSSrinivas Kandagatla struct param_id_vol_ctrl_master_gain { 64325ab80dbSSrinivas Kandagatla uint16_t master_gain; 64425ab80dbSSrinivas Kandagatla uint16_t reserved; 64525ab80dbSSrinivas Kandagatla } __packed; 64625ab80dbSSrinivas Kandagatla 64725ab80dbSSrinivas Kandagatla 648c7548f59SSrinivas Kandagatla #define PARAM_ID_REMOVE_INITIAL_SILENCE 0x0800114B 649c7548f59SSrinivas Kandagatla #define PARAM_ID_REMOVE_TRAILING_SILENCE 0x0800115D 650c7548f59SSrinivas Kandagatla 651c7548f59SSrinivas Kandagatla #define PARAM_ID_REAL_MODULE_ID 0x0800100B 652c7548f59SSrinivas Kandagatla 653c7548f59SSrinivas Kandagatla struct param_id_placeholder_real_module_id { 654c7548f59SSrinivas Kandagatla uint32_t real_module_id; 655c7548f59SSrinivas Kandagatla } __packed; 656c7548f59SSrinivas Kandagatla 65744c28dbdSSrinivas Kandagatla /* Graph */ 65844c28dbdSSrinivas Kandagatla struct audioreach_connection { 65944c28dbdSSrinivas Kandagatla /* Connections */ 66044c28dbdSSrinivas Kandagatla uint32_t src_mod_inst_id; 66144c28dbdSSrinivas Kandagatla uint32_t src_mod_op_port_id; 66244c28dbdSSrinivas Kandagatla uint32_t dst_mod_inst_id; 66344c28dbdSSrinivas Kandagatla uint32_t dst_mod_ip_port_id; 66444c28dbdSSrinivas Kandagatla struct list_head node; 66544c28dbdSSrinivas Kandagatla }; 66644c28dbdSSrinivas Kandagatla 66744c28dbdSSrinivas Kandagatla struct audioreach_graph_info { 66844c28dbdSSrinivas Kandagatla int id; 66944c28dbdSSrinivas Kandagatla uint32_t num_sub_graphs; 67044c28dbdSSrinivas Kandagatla struct list_head sg_list; 671e4977b91SSrinivas Kandagatla /* DPCM connection from FE Graph to BE graph */ 672e4977b91SSrinivas Kandagatla uint32_t src_mod_inst_id; 673e4977b91SSrinivas Kandagatla uint32_t src_mod_op_port_id; 674e4977b91SSrinivas Kandagatla uint32_t dst_mod_inst_id; 675e4977b91SSrinivas Kandagatla uint32_t dst_mod_ip_port_id; 67644c28dbdSSrinivas Kandagatla }; 67744c28dbdSSrinivas Kandagatla 67844c28dbdSSrinivas Kandagatla struct audioreach_sub_graph { 67944c28dbdSSrinivas Kandagatla uint32_t sub_graph_id; 68044c28dbdSSrinivas Kandagatla uint32_t perf_mode; 68144c28dbdSSrinivas Kandagatla uint32_t direction; 68244c28dbdSSrinivas Kandagatla uint32_t scenario_id; 68344c28dbdSSrinivas Kandagatla struct list_head node; 68444c28dbdSSrinivas Kandagatla 68544c28dbdSSrinivas Kandagatla struct audioreach_graph_info *info; 68644c28dbdSSrinivas Kandagatla uint32_t num_containers; 68744c28dbdSSrinivas Kandagatla struct list_head container_list; 68844c28dbdSSrinivas Kandagatla }; 68944c28dbdSSrinivas Kandagatla 69044c28dbdSSrinivas Kandagatla struct audioreach_container { 69144c28dbdSSrinivas Kandagatla uint32_t container_id; 69244c28dbdSSrinivas Kandagatla uint32_t capability_id; 69344c28dbdSSrinivas Kandagatla uint32_t graph_pos; 69444c28dbdSSrinivas Kandagatla uint32_t stack_size; 69544c28dbdSSrinivas Kandagatla uint32_t proc_domain; 69644c28dbdSSrinivas Kandagatla struct list_head node; 69744c28dbdSSrinivas Kandagatla 69844c28dbdSSrinivas Kandagatla uint32_t num_modules; 69944c28dbdSSrinivas Kandagatla struct list_head modules_list; 70044c28dbdSSrinivas Kandagatla struct audioreach_sub_graph *sub_graph; 70144c28dbdSSrinivas Kandagatla }; 70244c28dbdSSrinivas Kandagatla 70303365d6aSSrinivas Kandagatla #define AR_MAX_MOD_LINKS 8 70403365d6aSSrinivas Kandagatla 70544c28dbdSSrinivas Kandagatla struct audioreach_module { 70644c28dbdSSrinivas Kandagatla uint32_t module_id; 70744c28dbdSSrinivas Kandagatla uint32_t instance_id; 70844c28dbdSSrinivas Kandagatla 70944c28dbdSSrinivas Kandagatla uint32_t max_ip_port; 71044c28dbdSSrinivas Kandagatla uint32_t max_op_port; 71144c28dbdSSrinivas Kandagatla 71244c28dbdSSrinivas Kandagatla uint32_t in_port; 71344c28dbdSSrinivas Kandagatla uint32_t out_port; 71444c28dbdSSrinivas Kandagatla 71503365d6aSSrinivas Kandagatla uint32_t num_connections; 71644c28dbdSSrinivas Kandagatla /* Connections */ 71744c28dbdSSrinivas Kandagatla uint32_t src_mod_inst_id; 71803365d6aSSrinivas Kandagatla uint32_t src_mod_op_port_id[AR_MAX_MOD_LINKS]; 71903365d6aSSrinivas Kandagatla uint32_t dst_mod_inst_id[AR_MAX_MOD_LINKS]; 72003365d6aSSrinivas Kandagatla uint32_t dst_mod_ip_port_id[AR_MAX_MOD_LINKS]; 72144c28dbdSSrinivas Kandagatla 72244c28dbdSSrinivas Kandagatla /* Format specifics */ 72344c28dbdSSrinivas Kandagatla uint32_t ch_fmt; 72444c28dbdSSrinivas Kandagatla uint32_t rate; 72544c28dbdSSrinivas Kandagatla uint32_t bit_depth; 72644c28dbdSSrinivas Kandagatla 72744c28dbdSSrinivas Kandagatla /* I2S module */ 72844c28dbdSSrinivas Kandagatla uint32_t hw_interface_idx; 72944c28dbdSSrinivas Kandagatla uint32_t sd_line_idx; 73044c28dbdSSrinivas Kandagatla uint32_t ws_src; 73144c28dbdSSrinivas Kandagatla uint32_t frame_size_factor; 73244c28dbdSSrinivas Kandagatla uint32_t data_format; 73344c28dbdSSrinivas Kandagatla uint32_t hw_interface_type; 73444c28dbdSSrinivas Kandagatla 73544c28dbdSSrinivas Kandagatla /* PCM module specific */ 73644c28dbdSSrinivas Kandagatla uint32_t interleave_type; 73744c28dbdSSrinivas Kandagatla 73844c28dbdSSrinivas Kandagatla /* GAIN/Vol Control Module */ 73944c28dbdSSrinivas Kandagatla uint16_t gain; 74044c28dbdSSrinivas Kandagatla 74144c28dbdSSrinivas Kandagatla /* Logging */ 74244c28dbdSSrinivas Kandagatla uint32_t log_code; 74344c28dbdSSrinivas Kandagatla uint32_t log_tap_point_id; 74444c28dbdSSrinivas Kandagatla uint32_t log_mode; 74544c28dbdSSrinivas Kandagatla 74644c28dbdSSrinivas Kandagatla /* bookkeeping */ 74744c28dbdSSrinivas Kandagatla struct list_head node; 74844c28dbdSSrinivas Kandagatla struct audioreach_container *container; 74944c28dbdSSrinivas Kandagatla struct snd_soc_dapm_widget *widget; 75044c28dbdSSrinivas Kandagatla }; 75144c28dbdSSrinivas Kandagatla 7525477518bSSrinivas Kandagatla struct audioreach_module_config { 7535477518bSSrinivas Kandagatla int direction; 7545477518bSSrinivas Kandagatla u32 sample_rate; 7555477518bSSrinivas Kandagatla u16 bit_width; 7565477518bSSrinivas Kandagatla u16 bits_per_sample; 7575477518bSSrinivas Kandagatla 7585477518bSSrinivas Kandagatla u16 data_format; 7595477518bSSrinivas Kandagatla u16 num_channels; 7605477518bSSrinivas Kandagatla u16 active_channels_mask; 761a8ab6541SSrinivas Kandagatla u16 dp_idx; 762a8ab6541SSrinivas Kandagatla u32 channel_allocation; 7635477518bSSrinivas Kandagatla u32 sd_line_mask; 7645477518bSSrinivas Kandagatla int fmt; 765e41521b6SMohammad Rafi Shaik struct snd_codec codec; 7665477518bSSrinivas Kandagatla u8 channel_map[AR_PCM_MAX_NUM_CHANNEL]; 7675477518bSSrinivas Kandagatla }; 7685477518bSSrinivas Kandagatla 76944c28dbdSSrinivas Kandagatla /* Packet Allocation routines */ 77044c28dbdSSrinivas Kandagatla void *audioreach_alloc_apm_cmd_pkt(int pkt_size, uint32_t opcode, uint32_t 77144c28dbdSSrinivas Kandagatla token); 77244c28dbdSSrinivas Kandagatla void *audioreach_alloc_cmd_pkt(int payload_size, uint32_t opcode, 77344c28dbdSSrinivas Kandagatla uint32_t token, uint32_t src_port, 77444c28dbdSSrinivas Kandagatla uint32_t dest_port); 77544c28dbdSSrinivas Kandagatla void *audioreach_alloc_apm_pkt(int pkt_size, uint32_t opcode, uint32_t token, 77644c28dbdSSrinivas Kandagatla uint32_t src_port); 77744c28dbdSSrinivas Kandagatla void *audioreach_alloc_pkt(int payload_size, uint32_t opcode, 77844c28dbdSSrinivas Kandagatla uint32_t token, uint32_t src_port, 77944c28dbdSSrinivas Kandagatla uint32_t dest_port); 780e4977b91SSrinivas Kandagatla void *audioreach_alloc_graph_pkt(struct q6apm *apm, struct audioreach_graph_info 781e4977b91SSrinivas Kandagatla *info); 78236ad9bf1SSrinivas Kandagatla /* Topology specific */ 78336ad9bf1SSrinivas Kandagatla int audioreach_tplg_init(struct snd_soc_component *component); 78436ad9bf1SSrinivas Kandagatla 78525ab80dbSSrinivas Kandagatla /* Module specific */ 78625ab80dbSSrinivas Kandagatla void audioreach_graph_free_buf(struct q6apm_graph *graph); 78725ab80dbSSrinivas Kandagatla int audioreach_map_memory_regions(struct q6apm_graph *graph, 78825ab80dbSSrinivas Kandagatla unsigned int dir, size_t period_sz, 78925ab80dbSSrinivas Kandagatla unsigned int periods, 79025ab80dbSSrinivas Kandagatla bool is_contiguous); 79125ab80dbSSrinivas Kandagatla int audioreach_send_cmd_sync(struct device *dev, gpr_device_t *gdev, struct gpr_ibasic_rsp_result_t *result, 79225ab80dbSSrinivas Kandagatla struct mutex *cmd_lock, gpr_port_t *port, wait_queue_head_t *cmd_wait, 79325ab80dbSSrinivas Kandagatla struct gpr_pkt *pkt, uint32_t rsp_opcode); 79425ab80dbSSrinivas Kandagatla int audioreach_graph_send_cmd_sync(struct q6apm_graph *graph, struct gpr_pkt *pkt, 79525ab80dbSSrinivas Kandagatla uint32_t rsp_opcode); 79625ab80dbSSrinivas Kandagatla int audioreach_set_media_format(struct q6apm_graph *graph, 79725ab80dbSSrinivas Kandagatla struct audioreach_module *module, 79825ab80dbSSrinivas Kandagatla struct audioreach_module_config *cfg); 79925ab80dbSSrinivas Kandagatla int audioreach_shared_memory_send_eos(struct q6apm_graph *graph); 80025ab80dbSSrinivas Kandagatla int audioreach_gain_set_vol_ctrl(struct q6apm *apm, 80125ab80dbSSrinivas Kandagatla struct audioreach_module *module, int vol); 80269bff594SSrinivas Kandagatla int audioreach_send_u32_param(struct q6apm_graph *graph, struct audioreach_module *module, 80369bff594SSrinivas Kandagatla uint32_t param_id, uint32_t param_val); 804e41521b6SMohammad Rafi Shaik int audioreach_compr_set_param(struct q6apm_graph *graph, struct audioreach_module_config *mcfg); 805e41521b6SMohammad Rafi Shaik 80644c28dbdSSrinivas Kandagatla #endif /* __AUDIOREACH_H__ */ 807