sound/pci/cs46xx/cs46xx_dsp_spos.h

Source file repositories/reference/linux-study-clean/sound/pci/cs46xx/cs46xx_dsp_spos.h

File Facts

System
Linux kernel
Corpus path
sound/pci/cs46xx/cs46xx_dsp_spos.h
Extension
.h
Size
5269 bytes
Lines
214
Domain
Driver Families
Bucket
sound/pci
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 dsp_symbol_entry {
	u32 address;
	char symbol_name[DSP_MAX_SYMBOL_NAME];
	int symbol_type;

	/* initialized by driver */
	struct dsp_module_desc * module;
	int deleted;
};

struct dsp_symbol_desc {
	int nsymbols;

	struct dsp_symbol_entry *symbols;

	/* initialized by driver */
	int highest_frag_index;
};

struct dsp_segment_desc {
	int segment_type;
	u32 offset;
	u32 size;
	u32 * data;
};

struct dsp_module_desc {
	char * module_name;
	struct dsp_symbol_desc symbol_table;
	int nsegments;
	struct dsp_segment_desc * segments;

	/* initialized by driver */
	u32 overlay_begin_address;
	u32 load_address;
	int nfixups;
};

struct dsp_scb_descriptor {
	char scb_name[DSP_MAX_SCB_NAME];
	u32 address;
	int index;
	u32 *data;

	struct dsp_scb_descriptor * sub_list_ptr;
	struct dsp_scb_descriptor * next_scb_ptr;
	struct dsp_scb_descriptor * parent_scb_ptr;

	struct dsp_symbol_entry * task_entry;
	struct dsp_symbol_entry * scb_symbol;

	struct snd_info_entry *proc_info;
	int ref_count;

	u16 volume[2];
	unsigned int deleted :1;
	unsigned int updated :1;
	unsigned int volume_set :1;
};

struct dsp_task_descriptor {
	char task_name[DSP_MAX_TASK_NAME];
	int size;
	u32 address;
	int index;
	u32 *data;
};

struct dsp_pcm_channel_descriptor {
	int active;
	int src_slot;
	int pcm_slot;
	u32 sample_rate;
	u32 unlinked;
	struct dsp_scb_descriptor * pcm_reader_scb;
	struct dsp_scb_descriptor * src_scb;
	struct dsp_scb_descriptor * mixer_scb;

	void * private_data;
};

struct dsp_spos_instance {
	struct dsp_symbol_desc symbol_table; /* currently available loaded symbols in SP */

	int nmodules;
	struct dsp_module_desc * modules; /* modules loaded into SP */

	struct dsp_segment_desc code;

	/* Main PCM playback mixer */

Annotation

Implementation Notes