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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/greybus.hsound/soc.hsound/jack.h
Detected Declarations
struct gbaudio_stream_paramsstruct gbaudio_codec_daistruct gbaudio_codec_infostruct gbaudio_widgetstruct gbaudio_controlstruct gbaudio_data_connectionstruct gbaudio_jackstruct gbaudio_module_infoenum gbaudio_codec_stateenum gbaudio_module_state
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
- Immediate include surface: `linux/greybus.h`, `sound/soc.h`, `sound/jack.h`.
- Detected declarations: `struct gbaudio_stream_params`, `struct gbaudio_codec_dai`, `struct gbaudio_codec_info`, `struct gbaudio_widget`, `struct gbaudio_control`, `struct gbaudio_data_connection`, `struct gbaudio_jack`, `struct gbaudio_module_info`, `enum gbaudio_codec_state`, `enum gbaudio_module_state`.
- Atlas domain: Driver Families / drivers/staging.
- Implementation status: source implementation candidate.
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.