~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/qcom/qdsp6/audioreach.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 
  3 #ifndef __AUDIOREACH_H__
  4 #define __AUDIOREACH_H__
  5 #include <linux/types.h>
  6 #include <linux/soc/qcom/apr.h>
  7 #include <sound/soc.h>
  8 struct q6apm;
  9 struct q6apm_graph;
 10 
 11 /* Module IDs */
 12 #define MODULE_ID_WR_SHARED_MEM_EP      0x07001000
 13 #define MODULE_ID_RD_SHARED_MEM_EP      0x07001001
 14 #define MODULE_ID_GAIN                  0x07001002
 15 #define MODULE_ID_PCM_CNV               0x07001003
 16 #define MODULE_ID_PCM_ENC               0x07001004
 17 #define MODULE_ID_PCM_DEC               0x07001005
 18 #define MODULE_ID_PLACEHOLDER_ENCODER   0x07001008
 19 #define MODULE_ID_PLACEHOLDER_DECODER   0x07001009
 20 #define MODULE_ID_SAL                   0x07001010
 21 #define MODULE_ID_MFC                   0x07001015
 22 #define MODULE_ID_CODEC_DMA_SINK        0x07001023
 23 #define MODULE_ID_CODEC_DMA_SOURCE      0x07001024
 24 #define MODULE_ID_I2S_SINK              0x0700100A
 25 #define MODULE_ID_I2S_SOURCE            0x0700100B
 26 #define MODULE_ID_DATA_LOGGING          0x0700101A
 27 #define MODULE_ID_AAC_DEC               0x0700101F
 28 #define MODULE_ID_FLAC_DEC              0x0700102F
 29 #define MODULE_ID_MP3_DECODE            0x0700103B
 30 #define MODULE_ID_GAPLESS               0x0700104D
 31 #define MODULE_ID_DISPLAY_PORT_SINK     0x07001069
 32 
 33 #define APM_CMD_GET_SPF_STATE           0x01001021
 34 #define APM_CMD_RSP_GET_SPF_STATE       0x02001007
 35 
 36 #define APM_MODULE_INSTANCE_ID          0x00000001
 37 #define PRM_MODULE_INSTANCE_ID          0x00000002
 38 #define AMDB_MODULE_INSTANCE_ID         0x00000003
 39 #define VCPM_MODULE_INSTANCE_ID         0x00000004
 40 #define AR_MODULE_INSTANCE_ID_START     0x00006000
 41 #define AR_MODULE_INSTANCE_ID_END       0x00007000
 42 #define AR_MODULE_DYNAMIC_INSTANCE_ID_START     0x00007000
 43 #define AR_MODULE_DYNAMIC_INSTANCE_ID_END       0x00008000
 44 #define AR_CONT_INSTANCE_ID_START       0x00005000
 45 #define AR_CONT_INSTANCE_ID_END         0x00006000
 46 #define AR_SG_INSTANCE_ID_START         0x00004000
 47 
 48 #define APM_CMD_GRAPH_OPEN                      0x01001000
 49 #define APM_CMD_GRAPH_PREPARE                   0x01001001
 50 #define APM_CMD_GRAPH_START                     0x01001002
 51 #define APM_CMD_GRAPH_STOP                      0x01001003
 52 #define APM_CMD_GRAPH_CLOSE                     0x01001004
 53 #define APM_CMD_GRAPH_FLUSH                     0x01001005
 54 #define APM_CMD_SET_CFG                         0x01001006
 55 #define APM_CMD_GET_CFG                         0x01001007
 56 #define APM_CMD_SHARED_MEM_MAP_REGIONS          0x0100100C
 57 #define APM_CMD_SHARED_MEM_UNMAP_REGIONS        0x0100100D
 58 #define APM_CMD_RSP_SHARED_MEM_MAP_REGIONS      0x02001001
 59 #define APM_CMD_RSP_GET_CFG                     0x02001000
 60 #define APM_CMD_CLOSE_ALL                       0x01001013
 61 #define APM_CMD_REGISTER_SHARED_CFG             0x0100100A
 62 
 63 #define APM_MEMORY_MAP_SHMEM8_4K_POOL           3
 64 
 65 struct apm_cmd_shared_mem_map_regions {
 66         uint16_t mem_pool_id;
 67         uint16_t num_regions;
 68         uint32_t property_flag;
 69 } __packed;
 70 
 71 struct apm_shared_map_region_payload {
 72         uint32_t shm_addr_lsw;
 73         uint32_t shm_addr_msw;
 74         uint32_t mem_size_bytes;
 75 } __packed;
 76 
 77 struct apm_cmd_shared_mem_unmap_regions {
 78         uint32_t mem_map_handle;
 79 } __packed;
 80 
 81 struct apm_cmd_rsp_shared_mem_map_regions {
 82         uint32_t mem_map_handle;
 83 } __packed;
 84 
 85 /* APM module */
 86 #define APM_PARAM_ID_SUB_GRAPH_LIST             0x08001005
 87 
 88 #define APM_PARAM_ID_MODULE_LIST                0x08001002
 89 
 90 struct apm_param_id_modules_list {
 91         uint32_t num_modules_list;
 92 } __packed;
 93 
 94 #define APM_PARAM_ID_MODULE_PROP                0x08001003
 95 
 96 struct apm_param_id_module_prop {
 97         uint32_t num_modules_prop_cfg;
 98 } __packed;
 99 
100 struct apm_module_prop_cfg {
101         uint32_t instance_id;
102         uint32_t num_props;
103 } __packed;
104 
105 #define APM_PARAM_ID_MODULE_CONN                0x08001004
106 
107 struct apm_param_id_module_conn {
108         uint32_t num_connections;
109 } __packed;
110 
111 struct apm_module_conn_obj {
112         uint32_t src_mod_inst_id;
113         uint32_t src_mod_op_port_id;
114         uint32_t dst_mod_inst_id;
115         uint32_t dst_mod_ip_port_id;
116 } __packed;
117 
118 #define APM_PARAM_ID_GAIN                       0x08001006
119 
120 struct param_id_gain_cfg {
121         uint16_t gain;
122         uint16_t reserved;
123 } __packed;
124 
125 #define PARAM_ID_PCM_OUTPUT_FORMAT_CFG          0x08001008
126 
127 struct param_id_pcm_output_format_cfg {
128         uint32_t data_format;
129         uint32_t fmt_id;
130         uint32_t payload_size;
131 } __packed;
132 
133 struct payload_pcm_output_format_cfg {
134         uint16_t bit_width;
135         uint16_t alignment;
136         uint16_t bits_per_sample;
137         uint16_t q_factor;
138         uint16_t endianness;
139         uint16_t interleaved;
140         uint16_t reserved;
141         uint16_t num_channels;
142         uint8_t channel_mapping[];
143 } __packed;
144 
145 #define PARAM_ID_ENC_BITRATE                    0x08001052
146 
147 struct param_id_enc_bitrate_param {
148         uint32_t bitrate;
149 } __packed;
150 
151 #define DATA_FORMAT_FIXED_POINT         1
152 #define DATA_FORMAT_GENERIC_COMPRESSED  5
153 #define DATA_FORMAT_RAW_COMPRESSED      6
154 #define PCM_LSB_ALIGNED                 1
155 #define PCM_MSB_ALIGNED                 2
156 #define PCM_LITTLE_ENDIAN               1
157 #define PCM_BIT_ENDIAN                  2
158 
159 #define MEDIA_FMT_ID_PCM        0x09001000
160 #define MEDIA_FMT_ID_MP3        0x09001009
161 #define SAMPLE_RATE_48K         48000
162 #define BIT_WIDTH_16            16
163 
164 #define APM_PARAM_ID_PROP_PORT_INFO             0x08001015
165 
166 struct apm_modules_prop_info {
167         uint32_t max_ip_port;
168         uint32_t max_op_port;
169 } __packed;
170 
171 /* Shared memory module */
172 #define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER       0x04001000
173 #define WR_SH_MEM_EP_TIMESTAMP_VALID_FLAG       BIT(31)
174 #define WR_SH_MEM_EP_LAST_BUFFER_FLAG           BIT(30)
175 #define WR_SH_MEM_EP_TS_CONTINUE_FLAG           BIT(29)
176 #define WR_SH_MEM_EP_EOF_FLAG                   BIT(4)
177 
178 struct apm_data_cmd_wr_sh_mem_ep_data_buffer {
179         uint32_t buf_addr_lsw;
180         uint32_t buf_addr_msw;
181         uint32_t mem_map_handle;
182         uint32_t buf_size;
183         uint32_t timestamp_lsw;
184         uint32_t timestamp_msw;
185         uint32_t flags;
186 } __packed;
187 
188 #define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER_V2    0x0400100A
189 
190 struct apm_data_cmd_wr_sh_mem_ep_data_buffer_v2 {
191         uint32_t buf_addr_lsw;
192         uint32_t buf_addr_msw;
193         uint32_t mem_map_handle;
194         uint32_t buf_size;
195         uint32_t timestamp_lsw;
196         uint32_t timestamp_msw;
197         uint32_t flags;
198         uint32_t md_addr_lsw;
199         uint32_t md_addr_msw;
200         uint32_t md_map_handle;
201         uint32_t md_buf_size;
202 } __packed;
203 
204 #define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE      0x05001000
205 
206 struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done {
207         uint32_t buf_addr_lsw;
208         uint32_t buf_addr_msw;
209         uint32_t mem_map_handle;
210         uint32_t status;
211 
212 } __packed;
213 
214 #define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE_V2   0x05001004
215 
216 struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done_v2 {
217         uint32_t buf_addr_lsw;
218         uint32_t buf_addr_msw;
219         uint32_t mem_map_handle;
220         uint32_t status;
221         uint32_t md_buf_addr_lsw;
222         uint32_t md_buf_addr_msw;
223         uint32_t md_mem_map_handle;
224         uint32_t md_status;
225 } __packed;
226 
227 #define PARAM_ID_MEDIA_FORMAT                           0x0800100C
228 #define DATA_CMD_WR_SH_MEM_EP_MEDIA_FORMAT              0x04001001
229 
230 struct apm_media_format {
231         uint32_t data_format;
232         uint32_t fmt_id;
233         uint32_t payload_size;
234 } __packed;
235 
236 #define MEDIA_FMT_ID_FLAC       0x09001004
237 
238 struct payload_media_fmt_flac_t {
239         uint16_t num_channels;
240         uint16_t sample_size;
241         uint16_t min_blk_size;
242         uint16_t max_blk_size;
243         uint32_t sample_rate;
244         uint32_t min_frame_size;
245         uint32_t max_frame_size;
246 } __packed;
247 
248 #define MEDIA_FMT_ID_AAC        0x09001001
249 
250 struct payload_media_fmt_aac_t {
251         uint16_t aac_fmt_flag;
252         uint16_t audio_obj_type;
253         uint16_t num_channels;
254         uint16_t total_size_of_PCE_bits;
255         uint32_t sample_rate;
256 } __packed;
257 
258 #define DATA_CMD_WR_SH_MEM_EP_EOS                       0x04001002
259 #define WR_SH_MEM_EP_EOS_POLICY_LAST    1
260 #define WR_SH_MEM_EP_EOS_POLICY_EACH    2
261 
262 struct data_cmd_wr_sh_mem_ep_eos {
263         uint32_t policy;
264 
265 } __packed;
266 
267 #define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER               0x04001003
268 
269 struct data_cmd_rd_sh_mem_ep_data_buffer {
270         uint32_t buf_addr_lsw;
271         uint32_t buf_addr_msw;
272         uint32_t mem_map_handle;
273         uint32_t buf_size;
274 } __packed;
275 
276 #define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER           0x05001002
277 
278 struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done {
279         uint32_t status;
280         uint32_t buf_addr_lsw;
281         uint32_t buf_addr_msw;
282         uint32_t mem_map_handle;
283         uint32_t data_size;
284         uint32_t offset;
285         uint32_t timestamp_lsw;
286         uint32_t timestamp_msw;
287         uint32_t flags;
288         uint32_t num_frames;
289 } __packed;
290 
291 #define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER_V2            0x0400100B
292 
293 struct data_cmd_rd_sh_mem_ep_data_buffer_v2 {
294         uint32_t buf_addr_lsw;
295         uint32_t buf_addr_msw;
296         uint32_t mem_map_handle;
297         uint32_t buf_size;
298         uint32_t md_buf_addr_lsw;
299         uint32_t md_buf_addr_msw;
300         uint32_t md_mem_map_handle;
301         uint32_t md_buf_size;
302 } __packed;
303 
304 #define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER_V2        0x05001005
305 
306 struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done_v2 {
307         uint32_t status;
308         uint32_t buf_addr_lsw;
309         uint32_t buf_addr_msw;
310         uint32_t mem_map_handle;
311         uint32_t data_size;
312         uint32_t offset;
313         uint32_t timestamp_lsw;
314         uint32_t timestamp_msw;
315         uint32_t flags;
316         uint32_t num_frames;
317         uint32_t md_status;
318         uint32_t md_buf_addr_lsw;
319         uint32_t md_buf_addr_msw;
320         uint32_t md_mem_map_handle;
321         uint32_t md_size;
322 } __packed;
323 
324 #define PARAM_ID_RD_SH_MEM_CFG                          0x08001007
325 
326 struct param_id_rd_sh_mem_cfg {
327         uint32_t num_frames_per_buffer;
328         uint32_t metadata_control_flags;
329 
330 } __packed;
331 
332 #define DATA_CMD_WR_SH_MEM_EP_EOS_RENDERED              0x05001001
333 
334 struct data_cmd_wr_sh_mem_ep_eos_rendered {
335         uint32_t module_instance_id;
336         uint32_t render_status;
337 } __packed;
338 
339 #define MODULE_ID_WR_SHARED_MEM_EP                      0x07001000
340 
341 struct apm_cmd_header {
342         uint32_t payload_address_lsw;
343         uint32_t payload_address_msw;
344         uint32_t mem_map_handle;
345         uint32_t payload_size;
346 } __packed;
347 
348 #define APM_CMD_HDR_SIZE sizeof(struct apm_cmd_header)
349 
350 struct apm_module_param_data  {
351         uint32_t module_instance_id;
352         uint32_t param_id;
353         uint32_t param_size;
354         uint32_t error_code;
355 } __packed;
356 
357 #define APM_MODULE_PARAM_DATA_SIZE      sizeof(struct apm_module_param_data)
358 
359 struct apm_module_param_shared_data  {
360         uint32_t param_id;
361         uint32_t param_size;
362 } __packed;
363 
364 struct apm_prop_data {
365         uint32_t prop_id;
366         uint32_t prop_size;
367 } __packed;
368 
369 /* Sub-Graph Properties */
370 #define APM_PARAM_ID_SUB_GRAPH_CONFIG   0x08001001
371 
372 struct apm_param_id_sub_graph_cfg {
373         uint32_t num_sub_graphs;
374 } __packed;
375 
376 struct apm_sub_graph_cfg {
377         uint32_t sub_graph_id;
378         uint32_t num_sub_graph_prop;
379 } __packed;
380 
381 #define APM_SUB_GRAPH_PROP_ID_PERF_MODE         0x0800100E
382 
383 struct apm_sg_prop_id_perf_mode {
384         uint32_t perf_mode;
385 } __packed;
386 
387 #define APM_SG_PROP_ID_PERF_MODE_SIZE   4
388 
389 #define APM_SUB_GRAPH_PROP_ID_DIRECTION 0x0800100F
390 
391 struct apm_sg_prop_id_direction {
392         uint32_t direction;
393 } __packed;
394 
395 #define APM_SG_PROP_ID_DIR_SIZE         4
396 
397 #define APM_SUB_GRAPH_PROP_ID_SCENARIO_ID       0x08001010
398 #define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK        0x1
399 #define APM_SUB_GRAPH_SID_AUDIO_RECORD          0x2
400 #define APM_SUB_GRAPH_SID_AUDIO_VOICE_CALL      0x3
401 
402 struct apm_sg_prop_id_scenario_id {
403         uint32_t scenario_id;
404 } __packed;
405 
406 #define APM_SG_PROP_ID_SID_SIZE                 4
407 /* container api */
408 #define APM_PARAM_ID_CONTAINER_CONFIG           0x08001000
409 
410 struct apm_param_id_container_cfg {
411         uint32_t num_containers;
412 } __packed;
413 
414 struct apm_container_cfg {
415         uint32_t container_id;
416         uint32_t num_prop;
417 } __packed;
418 
419 struct apm_cont_capability  {
420         uint32_t capability_id;
421 } __packed;
422 
423 #define APM_CONTAINER_PROP_ID_CAPABILITY_LIST   0x08001011
424 #define APM_CONTAINER_PROP_ID_CAPABILITY_SIZE   8
425 
426 #define APM_PROP_ID_INVALID                     0x0
427 #define APM_CONTAINER_CAP_ID_PP                 0x1
428 #define APM_CONTAINER_CAP_ID_PP                 0x1
429 
430 struct apm_cont_prop_id_cap_list  {
431         uint32_t num_capability_id;
432 } __packed;
433 
434 #define APM_CONTAINER_PROP_ID_GRAPH_POS         0x08001012
435 
436 struct apm_cont_prop_id_graph_pos  {
437         uint32_t graph_pos;
438 } __packed;
439 
440 #define APM_CONTAINER_PROP_ID_STACK_SIZE        0x08001013
441 
442 struct apm_cont_prop_id_stack_size  {
443         uint32_t stack_size;
444 } __packed;
445 
446 #define APM_CONTAINER_PROP_ID_PROC_DOMAIN       0x08001014
447 
448 struct apm_cont_prop_id_domain  {
449         uint32_t proc_domain;
450 } __packed;
451 
452 #define CONFIG_I2S_WS_SRC_EXTERNAL              0x0
453 #define CONFIG_I2S_WS_SRC_INTERNAL              0x1
454 
455 #define PARAM_ID_I2S_INTF_CFG                   0x08001019
456 struct param_id_i2s_intf_cfg {
457         uint32_t lpaif_type;
458         uint32_t intf_idx;
459         uint16_t sd_line_idx;
460         uint16_t ws_src;
461 } __packed;
462 
463 #define I2S_INTF_TYPE_PRIMARY           0
464 #define I2S_INTF_TYPE_SECOINDARY        1
465 #define I2S_INTF_TYPE_TERTINARY         2
466 #define I2S_INTF_TYPE_QUATERNARY        3
467 #define I2S_INTF_TYPE_QUINARY           4
468 #define I2S_SD0                         1
469 #define I2S_SD1                         2
470 #define I2S_SD2                         3
471 #define I2S_SD3                         4
472 
473 #define PORT_ID_I2S_INPUT               2
474 #define PORT_ID_I2S_OUPUT               1
475 #define I2S_STACK_SIZE                  2048
476 
477 #define PARAM_ID_DISPLAY_PORT_INTF_CFG          0x08001154
478 
479 struct param_id_display_port_intf_cfg {
480         uint32_t channel_allocation;
481         /* Multi-Steam Transport index */
482         uint32_t mst_idx;
483         uint32_t dptx_idx;
484 } __packed;
485 
486 #define PARAM_ID_HW_EP_MF_CFG                   0x08001017
487 struct param_id_hw_ep_mf {
488         uint32_t sample_rate;
489         uint16_t bit_width;
490         uint16_t num_channels;
491         uint32_t data_format;
492 } __packed;
493 
494 #define PARAM_ID_HW_EP_FRAME_SIZE_FACTOR        0x08001018
495 
496 struct param_id_fram_size_factor {
497         uint32_t frame_size_factor;
498 } __packed;
499 
500 #define APM_CONTAINER_PROP_ID_PARENT_CONTAINER_ID       0x080010CB
501 
502 struct apm_cont_prop_id_parent_container  {
503         uint32_t parent_container_id;
504 } __packed;
505 
506 #define APM_CONTAINER_PROP_ID_HEAP_ID                   0x08001174
507 #define APM_CONT_HEAP_DEFAULT                           0x1
508 #define APM_CONT_HEAP_LOW_POWER                         0x2
509 
510 struct apm_cont_prop_id_headp_id  {
511         uint32_t heap_id;
512 } __packed;
513 
514 struct apm_modules_list {
515         uint32_t sub_graph_id;
516         uint32_t container_id;
517         uint32_t num_modules;
518 } __packed;
519 
520 struct apm_module_obj {
521         uint32_t module_id;
522         uint32_t instance_id;
523 } __packed;
524 
525 #define APM_MODULE_PROP_ID_PORT_INFO            0x08001015
526 #define APM_MODULE_PROP_ID_PORT_INFO_SZ         8
527 struct apm_module_prop_id_port_info {
528         uint32_t max_ip_port;
529         uint32_t max_op_port;
530 } __packed;
531 
532 #define DATA_LOGGING_MAX_INPUT_PORTS            0x1
533 #define DATA_LOGGING_MAX_OUTPUT_PORTS           0x1
534 #define DATA_LOGGING_STACK_SIZE                 2048
535 #define PARAM_ID_DATA_LOGGING_CONFIG            0x08001031
536 
537 struct data_logging_config {
538         uint32_t log_code;
539         uint32_t log_tap_point_id;
540         uint32_t mode;
541 } __packed;
542 
543 #define PARAM_ID_SAL_OUTPUT_CFG                 0x08001016
544 struct param_id_sal_output_config {
545         uint32_t bits_per_sample;
546 } __packed;
547 
548 #define PARAM_ID_SAL_LIMITER_ENABLE             0x0800101E
549 struct param_id_sal_limiter_enable {
550         uint32_t enable_lim;
551 } __packed;
552 
553 #define PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT        0x08001024
554 #define PARAM_ID_EARLY_EOS_DELAY                0x0800114C
555 #define EARLY_EOS_DELAY_MS                      150
556 
557 struct param_id_mfc_media_format {
558         uint32_t sample_rate;
559         uint16_t bit_width;
560         uint16_t num_channels;
561         uint16_t channel_mapping[];
562 } __packed;
563 
564 struct param_id_gapless_early_eos_delay_t {
565         uint32_t early_eos_delay_ms;
566 } __packed;
567 
568 struct media_format {
569         uint32_t data_format;
570         uint32_t fmt_id;
571         uint32_t payload_size;
572 } __packed;
573 
574 struct payload_media_fmt_pcm {
575         uint32_t sample_rate;
576         uint16_t bit_width;
577         uint16_t alignment;
578         uint16_t bits_per_sample;
579         uint16_t q_factor;
580         uint16_t endianness;
581         uint16_t num_channels;
582         uint8_t channel_mapping[];
583 } __packed;
584 
585 #define PARAM_ID_MODULE_ENABLE                  0x08001026
586 struct param_id_module_enable {
587         uint32_t enable;
588 } __packed;
589 
590 #define PARAM_ID_CODEC_DMA_INTF_CFG             0x08001063
591 
592 struct param_id_codec_dma_intf_cfg {
593         /* 1 - RXTX
594          * 2 - WSA
595          * 3 - VA
596          * 4 - AXI
597          */
598         uint32_t lpaif_type;
599         /*
600          *  RX0 | TX0 = 1
601          *  RX1 | TX1 = 2
602          *  RX2 | TX2 = 3... so on
603          */
604         uint32_t intf_index;
605         uint32_t active_channels_mask;
606 } __packed;
607 
608 struct audio_hw_clk_cfg {
609         uint32_t clock_id;
610         uint32_t clock_freq;
611         uint32_t clock_attri;
612         uint32_t clock_root;
613 } __packed;
614 
615 struct audio_hw_clk_rel_cfg {
616         uint32_t clock_id;
617 } __packed;
618 
619 #define PARAM_ID_HW_EP_POWER_MODE_CFG   0x8001176
620 #define AR_HW_EP_POWER_MODE_0   0 /* default */
621 #define AR_HW_EP_POWER_MODE_1   1 /* XO Shutdown allowed */
622 #define AR_HW_EP_POWER_MODE_2   2 /* XO Shutdown not allowed */
623 
624 struct param_id_hw_ep_power_mode_cfg {
625         uint32_t power_mode;
626 } __packed;
627 
628 #define PARAM_ID_HW_EP_DMA_DATA_ALIGN   0x08001233
629 #define AR_HW_EP_DMA_DATA_ALIGN_MSB     0
630 #define AR_HW_EP_DMA_DATA_ALIGN_LSB     1
631 #define AR_PCM_MAX_NUM_CHANNEL          8
632 
633 struct param_id_hw_ep_dma_data_align {
634         uint32_t dma_data_align;
635 } __packed;
636 
637 #define PARAM_ID_VOL_CTRL_MASTER_GAIN   0x08001035
638 #define VOL_CTRL_DEFAULT_GAIN           0x2000
639 
640 struct param_id_vol_ctrl_master_gain {
641         uint16_t master_gain;
642         uint16_t reserved;
643 } __packed;
644 
645 
646 #define PARAM_ID_REMOVE_INITIAL_SILENCE         0x0800114B
647 #define PARAM_ID_REMOVE_TRAILING_SILENCE        0x0800115D
648 
649 #define PARAM_ID_REAL_MODULE_ID 0x0800100B
650 
651 struct param_id_placeholder_real_module_id {
652         uint32_t real_module_id;
653 } __packed;
654 
655 /* Graph */
656 struct audioreach_connection {
657         /* Connections */
658         uint32_t src_mod_inst_id;
659         uint32_t src_mod_op_port_id;
660         uint32_t dst_mod_inst_id;
661         uint32_t dst_mod_ip_port_id;
662         struct list_head node;
663 };
664 
665 struct audioreach_graph_info {
666         int id;
667         uint32_t num_sub_graphs;
668         struct list_head sg_list;
669         /* DPCM connection from FE Graph to BE graph */
670         uint32_t src_mod_inst_id;
671         uint32_t src_mod_op_port_id;
672         uint32_t dst_mod_inst_id;
673         uint32_t dst_mod_ip_port_id;
674 };
675 
676 struct audioreach_sub_graph {
677         uint32_t sub_graph_id;
678         uint32_t perf_mode;
679         uint32_t direction;
680         uint32_t scenario_id;
681         struct list_head node;
682 
683         struct audioreach_graph_info *info;
684         uint32_t num_containers;
685         struct list_head container_list;
686 };
687 
688 struct audioreach_container {
689         uint32_t container_id;
690         uint32_t capability_id;
691         uint32_t graph_pos;
692         uint32_t stack_size;
693         uint32_t proc_domain;
694         struct list_head node;
695 
696         uint32_t num_modules;
697         struct list_head modules_list;
698         struct audioreach_sub_graph *sub_graph;
699 };
700 
701 #define AR_MAX_MOD_LINKS        8
702 
703 struct audioreach_module {
704         uint32_t module_id;
705         uint32_t instance_id;
706 
707         uint32_t max_ip_port;
708         uint32_t max_op_port;
709 
710         uint32_t in_port;
711         uint32_t out_port;
712 
713         uint32_t num_connections;
714         /* Connections */
715         uint32_t src_mod_inst_id;
716         uint32_t src_mod_op_port_id[AR_MAX_MOD_LINKS];
717         uint32_t dst_mod_inst_id[AR_MAX_MOD_LINKS];
718         uint32_t dst_mod_ip_port_id[AR_MAX_MOD_LINKS];
719 
720         /* Format specifics */
721         uint32_t ch_fmt;
722         uint32_t rate;
723         uint32_t bit_depth;
724 
725         /* I2S module */
726         uint32_t hw_interface_idx;
727         uint32_t sd_line_idx;
728         uint32_t ws_src;
729         uint32_t frame_size_factor;
730         uint32_t data_format;
731         uint32_t hw_interface_type;
732 
733         /* PCM module specific */
734         uint32_t interleave_type;
735 
736         /* GAIN/Vol Control Module */
737         uint16_t gain;
738 
739         /* Logging */
740         uint32_t log_code;
741         uint32_t log_tap_point_id;
742         uint32_t log_mode;
743 
744         /* bookkeeping */
745         struct list_head node;
746         struct audioreach_container *container;
747         struct snd_soc_dapm_widget *widget;
748 };
749 
750 struct audioreach_module_config {
751         int     direction;
752         u32     sample_rate;
753         u16     bit_width;
754         u16     bits_per_sample;
755 
756         u16     data_format;
757         u16     num_channels;
758         u16     dp_idx;
759         u32     channel_allocation;
760         u32     sd_line_mask;
761         int     fmt;
762         struct snd_codec codec;
763         u8 channel_map[AR_PCM_MAX_NUM_CHANNEL];
764 };
765 
766 /* Packet Allocation routines */
767 void *audioreach_alloc_apm_cmd_pkt(int pkt_size, uint32_t opcode, uint32_t
768                                     token);
769 void audioreach_set_default_channel_mapping(u8 *ch_map, int num_channels);
770 void *audioreach_alloc_cmd_pkt(int payload_size, uint32_t opcode,
771                                uint32_t token, uint32_t src_port,
772                                uint32_t dest_port);
773 void *audioreach_alloc_apm_pkt(int pkt_size, uint32_t opcode, uint32_t token,
774                                 uint32_t src_port);
775 void *audioreach_alloc_pkt(int payload_size, uint32_t opcode,
776                            uint32_t token, uint32_t src_port,
777                            uint32_t dest_port);
778 void *audioreach_alloc_graph_pkt(struct q6apm *apm, struct audioreach_graph_info
779                                  *info);
780 /* Topology specific */
781 int audioreach_tplg_init(struct snd_soc_component *component);
782 
783 /* Module specific */
784 void audioreach_graph_free_buf(struct q6apm_graph *graph);
785 int audioreach_map_memory_regions(struct q6apm_graph *graph,
786                                   unsigned int dir, size_t period_sz,
787                                   unsigned int periods,
788                                   bool is_contiguous);
789 int audioreach_send_cmd_sync(struct device *dev, gpr_device_t *gdev, struct gpr_ibasic_rsp_result_t *result,
790                              struct mutex *cmd_lock, gpr_port_t *port, wait_queue_head_t *cmd_wait,
791                              struct gpr_pkt *pkt, uint32_t rsp_opcode);
792 int audioreach_graph_send_cmd_sync(struct q6apm_graph *graph, struct gpr_pkt *pkt,
793                                    uint32_t rsp_opcode);
794 int audioreach_set_media_format(struct q6apm_graph *graph,
795                                 struct audioreach_module *module,
796                                 struct audioreach_module_config *cfg);
797 int audioreach_shared_memory_send_eos(struct q6apm_graph *graph);
798 int audioreach_gain_set_vol_ctrl(struct q6apm *apm,
799                                  struct audioreach_module *module, int vol);
800 int audioreach_send_u32_param(struct q6apm_graph *graph, struct audioreach_module *module,
801                               uint32_t param_id, uint32_t param_val);
802 int audioreach_compr_set_param(struct q6apm_graph *graph, struct audioreach_module_config *mcfg);
803 
804 #endif /* __AUDIOREACH_H__ */
805 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php