drivers/staging/greybus/audio_codec.h

Source file repositories/reference/linux-study-clean/drivers/staging/greybus/audio_codec.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/greybus/audio_codec.h
Extension
.h
Size
6934 bytes
Lines
244
Domain
Driver Families
Bucket
drivers/staging
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 gbaudio_stream_params {
	int state;
	u8 sig_bits, channels;
	u32 format, rate;
};

struct gbaudio_codec_dai {
	int id;
	/* runtime params for playback/capture streams */
	struct gbaudio_stream_params params[2];
	struct list_head list;
};

struct gbaudio_codec_info {
	struct device *dev;
	struct snd_soc_component *component;
	struct list_head module_list;
	/* to maintain runtime stream params for each DAI */
	struct list_head dai_list;
	struct mutex lock;
	struct mutex register_mutex;
};

struct gbaudio_widget {
	__u8 id;
	const char *name;
	struct list_head list;
};

struct gbaudio_control {
	__u8 id;
	char *name;
	char *wname;
	const char * const *texts;
	int items;
	struct list_head list;
};

struct gbaudio_data_connection {
	int id;
	__le16 data_cport;
	struct gb_connection *connection;
	struct list_head list;
	/* maintain runtime state for playback/capture stream */
	int state[2];
};

/* stream direction */
#define GB_PLAYBACK	BIT(0)
#define GB_CAPTURE	BIT(1)

enum gbaudio_module_state {
	GBAUDIO_MODULE_OFF = 0,
	GBAUDIO_MODULE_ON,
};

struct gbaudio_jack {
	struct snd_soc_jack jack;
	struct list_head list;
};

struct gbaudio_module_info {
	/* module info */
	struct device *dev;
	int dev_id;	/* check if it should be bundle_id/hd_cport_id */
	int vid;
	int pid;
	int type;
	int set_uevent;
	char vstr[NAME_SIZE];
	char pstr[NAME_SIZE];
	struct list_head list;
	/* need to share this info to above user space */
	int manager_id;
	char name[NAME_SIZE];
	unsigned int ip_devices;
	unsigned int op_devices;

	/* jack related */
	char jack_name[NAME_SIZE];
	char button_name[NAME_SIZE];
	int jack_type;
	int jack_mask;
	int button_mask;
	int button_status;
	struct gbaudio_jack headset;
	struct gbaudio_jack button;

	/* connection info */
	struct gb_connection *mgmt_connection;

Annotation

Implementation Notes