include/sound/simple_card_utils.h
Source file repositories/reference/linux-study-clean/include/sound/simple_card_utils.h
File Facts
- System
- Linux kernel
- Corpus path
include/sound/simple_card_utils.h- Extension
.h- Size
- 9796 bytes
- Lines
- 303
- Domain
- Driver Families
- Bucket
- include/sound
- 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/clk.hsound/soc.h
Detected Declarations
struct simple_util_tdm_width_mapstruct simple_util_daistruct simple_util_datastruct simple_util_jackstruct prop_numsstruct simple_util_privstruct simple_dai_propsstruct link_infoenum simple_util_sysclk_orderfunction simple_util_debug_daifunction simple_util_debug_info
Annotated Snippet
struct simple_util_tdm_width_map {
u8 sample_bits;
u8 slot_count;
u16 slot_width;
};
struct simple_util_dai {
const char *name;
unsigned int sysclk;
int clk_direction;
int slots;
int slot_width;
unsigned int tx_slot_mask;
unsigned int rx_slot_mask;
struct clk *clk;
bool clk_fixed;
struct simple_util_tdm_width_map *tdm_width_map;
int n_tdm_widths;
};
struct simple_util_data {
u32 convert_rate;
u32 convert_channels;
const char *convert_sample_format;
};
struct simple_util_jack {
struct snd_soc_jack jack;
struct snd_soc_jack_pin pin;
struct snd_soc_jack_gpio gpio;
};
struct prop_nums {
int cpus;
int codecs;
int platforms;
};
enum simple_util_sysclk_order {
SIMPLE_SYSCLK_ORDER_CODEC_FIRST = 0,
SIMPLE_SYSCLK_ORDER_CPU_FIRST,
};
struct simple_util_priv {
struct snd_soc_card snd_card;
struct simple_dai_props {
struct simple_util_dai *cpu_dai;
struct simple_util_dai *codec_dai;
struct simple_util_data adata;
struct snd_soc_codec_conf *codec_conf;
struct prop_nums num;
unsigned int mclk_fs;
enum simple_util_sysclk_order sysclk_order;
} *dai_props;
struct simple_util_jack hp_jack;
struct simple_util_jack mic_jack;
struct snd_soc_jack *aux_jacks;
struct snd_soc_dai_link *dai_link;
struct simple_util_dai *dais;
struct snd_soc_dai_link_component *dlcs;
struct snd_soc_codec_conf *codec_conf;
struct gpio_desc *pa_gpio;
const struct snd_soc_ops *ops;
unsigned int dpcm_selectable:1;
unsigned int force_dpcm:1;
};
#define simple_priv_to_card(priv) (&(priv)->snd_card)
#define simple_priv_to_props(priv, i) ((priv)->dai_props + (i))
#define simple_priv_to_dev(priv) (simple_priv_to_card(priv)->dev)
#define simple_priv_to_link(priv, i) (simple_priv_to_card(priv)->dai_link + (i))
#define simple_props_to_dlc_cpu(props, i) ((props)->cpus + i)
#define simple_props_to_dlc_codec(props, i) ((props)->codecs + i)
#define simple_props_to_dlc_platform(props, i) ((props)->platforms + i)
#define simple_props_to_dai_cpu(props, i) ((props)->cpu_dai + i)
#define simple_props_to_dai_codec(props, i) ((props)->codec_dai + i)
#define simple_props_to_codec_conf(props, i) ((props)->codec_conf + i)
/* has the same effect as simple_priv_to_props(). Preferred over
* simple_priv_to_props() when dealing with PCM runtime data as
* the ID stored in rtd->id may not be a valid array index.
*/
#define runtime_simple_priv_to_props(priv, rtd) \
((priv)->dai_props + ((rtd)->dai_link - (priv)->dai_link))
#define for_each_prop_dlc_cpus(props, i, cpu) \
for ((i) = 0; \
((i) < (props)->num.cpus) && \
((cpu) = simple_props_to_dlc_cpu(props, i)); \
Annotation
- Immediate include surface: `linux/clk.h`, `sound/soc.h`.
- Detected declarations: `struct simple_util_tdm_width_map`, `struct simple_util_dai`, `struct simple_util_data`, `struct simple_util_jack`, `struct prop_nums`, `struct simple_util_priv`, `struct simple_dai_props`, `struct link_info`, `enum simple_util_sysclk_order`, `function simple_util_debug_dai`.
- Atlas domain: Driver Families / include/sound.
- 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.