sound/soc/qcom/qdsp6/audioreach.c
Source file repositories/reference/linux-study-clean/sound/soc/qcom/qdsp6/audioreach.c
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/qcom/qdsp6/audioreach.c- Extension
.c- Size
- 46826 bytes
- Lines
- 1495
- Domain
- Driver Families
- Bucket
- sound/soc
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/slab.hlinux/soc/qcom/apr.hsound/soc.hsound/soc-dai.hsound/pcm.hsound/pcm_params.hdt-bindings/soc/qcom,gpr.hq6apm.haudioreach.h
Detected Declarations
struct apm_sub_graph_datastruct apm_sub_graph_paramsstruct apm_container_objstruct apm_container_paramsstruct apm_mod_list_objstruct apm_module_list_paramsstruct apm_mod_prop_objstruct apm_prop_list_paramsstruct apm_mod_conn_list_paramsstruct apm_graph_open_paramsstruct apm_pcm_module_media_fmt_cmdstruct apm_rd_shmem_module_config_cmdstruct apm_sh_module_media_fmt_cmdstruct apm_i2s_module_intf_cfgstruct apm_module_hw_ep_mf_cfgstruct apm_module_frame_size_factor_cfgstruct apm_module_hw_ep_power_mode_cfgstruct apm_module_hw_ep_dma_data_align_cfgstruct apm_gain_module_cfgstruct apm_codec_dma_module_intf_cfgstruct apm_display_port_module_intf_cfgstruct apm_module_sp_vi_op_mode_cfgstruct apm_module_sp_vi_ex_mode_cfgstruct apm_module_sp_vi_channel_map_cfgfunction audioreach_set_default_channel_mappingfunction apm_populate_container_configfunction apm_populate_sub_graph_configfunction apm_populate_module_prop_objfunction apm_populate_module_list_objfunction audioreach_populate_graphfunction list_for_each_entryfunction list_for_each_entryfunction list_for_each_entryfunction list_for_each_entryfunction list_for_each_entryfunction list_for_each_entryfunction audioreach_send_cmd_syncfunction audioreach_graph_send_cmd_syncfunction audioreach_display_port_set_media_formatfunction audioreach_codec_dma_set_media_formatfunction audioreach_send_u32_paramfunction audioreach_sal_limiter_enablefunction audioreach_sal_set_media_formatfunction audioreach_module_enablefunction audioreach_gapless_set_media_formatfunction audioreach_set_module_configfunction audioreach_mfc_set_media_formatfunction audioreach_set_compr_media_format
Annotated Snippet
struct apm_sub_graph_data {
struct apm_sub_graph_cfg sub_graph_cfg;
struct apm_prop_data perf_data;
struct apm_sg_prop_id_perf_mode perf;
struct apm_prop_data dir_data;
struct apm_sg_prop_id_direction dir;
struct apm_prop_data sid_data;
struct apm_sg_prop_id_scenario_id sid;
} __packed;
#define APM_SUB_GRAPH_CFG_NPROP 3
struct apm_sub_graph_params {
struct apm_module_param_data param_data;
uint32_t num_sub_graphs;
struct apm_sub_graph_data sg_cfg[];
} __packed;
#define APM_SUB_GRAPH_PSIZE(p, n) ALIGN(struct_size(p, sg_cfg, n), 8)
/* container config */
struct apm_container_obj {
struct apm_container_cfg container_cfg;
/* Capability ID list */
struct apm_prop_data cap_data;
uint32_t num_capability_id;
uint32_t capability_id;
/* Container graph Position */
struct apm_prop_data pos_data;
struct apm_cont_prop_id_graph_pos pos;
/* Container Stack size */
struct apm_prop_data stack_data;
struct apm_cont_prop_id_stack_size stack;
/* Container proc domain id */
struct apm_prop_data domain_data;
struct apm_cont_prop_id_domain domain;
} __packed;
struct apm_container_params {
struct apm_module_param_data param_data;
uint32_t num_containers;
struct apm_container_obj cont_obj[];
} __packed;
#define APM_CONTAINER_PSIZE(p, n) ALIGN(struct_size(p, cont_obj, n), 8)
/* Module List config */
struct apm_mod_list_obj {
/* Modules list cfg */
uint32_t sub_graph_id;
uint32_t container_id;
uint32_t num_modules;
struct apm_module_obj mod_cfg[];
} __packed;
#define APM_MOD_LIST_OBJ_PSIZE(p, n) struct_size(p, mod_cfg, n)
struct apm_module_list_params {
struct apm_module_param_data param_data;
uint32_t num_modules_list;
/* Module list config array */
struct apm_mod_list_obj mod_list_obj[];
} __packed;
/* Module Properties */
struct apm_mod_prop_obj {
u32 instance_id;
u32 num_props;
struct apm_prop_data prop_data_1;
struct apm_module_prop_id_port_info prop_id_port;
} __packed;
struct apm_prop_list_params {
struct apm_module_param_data param_data;
u32 num_modules_prop_cfg;
struct apm_mod_prop_obj mod_prop_obj[];
} __packed;
#define APM_MOD_PROP_PSIZE(p, n) ALIGN(struct_size(p, mod_prop_obj, n), 8)
/* Module Connections */
struct apm_mod_conn_list_params {
struct apm_module_param_data param_data;
u32 num_connections;
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/slab.h`, `linux/soc/qcom/apr.h`, `sound/soc.h`, `sound/soc-dai.h`, `sound/pcm.h`, `sound/pcm_params.h`, `dt-bindings/soc/qcom,gpr.h`.
- Detected declarations: `struct apm_sub_graph_data`, `struct apm_sub_graph_params`, `struct apm_container_obj`, `struct apm_container_params`, `struct apm_mod_list_obj`, `struct apm_module_list_params`, `struct apm_mod_prop_obj`, `struct apm_prop_list_params`, `struct apm_mod_conn_list_params`, `struct apm_graph_open_params`.
- Atlas domain: Driver Families / sound/soc.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.