sound/soc/intel/avs/topology.h

Source file repositories/reference/linux-study-clean/sound/soc/intel/avs/topology.h

File Facts

System
Linux kernel
Corpus path
sound/soc/intel/avs/topology.h
Extension
.h
Size
4881 bytes
Lines
239
Domain
Driver Families
Bucket
sound/soc
Inferred role
Driver Families: implementation source
Status
source 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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct avs_tplg {
	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	u32 version;
	struct snd_soc_component *comp;

	struct avs_tplg_library *libs;
	u32 num_libs;
	struct avs_audio_format *fmts;
	u32 num_fmts;
	struct avs_tplg_modcfg_base *modcfgs_base;
	u32 num_modcfgs_base;
	struct avs_tplg_modcfg_ext *modcfgs_ext;
	u32 num_modcfgs_ext;
	struct avs_tplg_pplcfg *pplcfgs;
	u32 num_pplcfgs;
	struct avs_tplg_binding *bindings;
	u32 num_bindings;
	struct avs_tplg_path_template *condpath_tmpls;
	u32 num_condpath_tmpls;
	struct avs_tplg_init_config *init_configs;
	u32 num_init_configs;
	struct avs_tplg_nhlt_config *nhlt_configs;
	u32 num_nhlt_configs;

	struct list_head path_tmpl_list;
};

struct avs_tplg_library {
	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
};

/* Matches header of struct avs_mod_cfg_base. */
struct avs_tplg_modcfg_base {
	u32 cpc;
	u32 ibs;
	u32 obs;
	u32 is_pages;
};

struct avs_tplg_pin_format {
	u32 pin_index;
	u32 iobs;
	struct avs_audio_format *fmt;
};

struct avs_tplg_modcfg_ext {
	guid_t type;

	union {
		struct {
			u16 num_input_pins;
			u16 num_output_pins;
			struct avs_tplg_pin_format *pin_fmts;
		} generic;
		struct {
			struct avs_audio_format *out_fmt;
			struct avs_audio_format *blob_fmt; /* optional override */
			u32 feature_mask;
			union avs_virtual_index vindex;
			u32 dma_type;
			u32 dma_buffer_size;
		} copier;
		struct {
			struct avs_audio_format *ref_fmt;
			struct avs_audio_format *out_fmt;
			u32 wake_tick_period;
			union avs_virtual_index vindex;
			u32 dma_type;
			u32 dma_buffer_size;
			struct avs_audio_format *blob_fmt; /* optional override */
		} whm;
		struct {
			u32 out_channel_config;
			u32 coefficients_select;
			s32 coefficients[AVS_COEFF_CHANNELS_MAX];
			u32 channel_map;
		} updown_mix;
		struct {
			u32 out_freq;
		} src;
		struct {
			u32 out_freq;
			u8 mode;
			u8 disable_jitter_buffer;
		} asrc;
		struct {
			u32 cpc_lp_mode;
		} wov;
		struct {
			struct avs_audio_format *ref_fmt;

Annotation

Implementation Notes