sound/soc/codecs/cs35l41.c
Source file repositories/reference/linux-study-clean/sound/soc/codecs/cs35l41.c
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/codecs/cs35l41.c- Extension
.c- Size
- 42820 bytes
- Lines
- 1499
- Domain
- Driver Families
- Bucket
- sound/soc
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/acpi.hacpi/acpi_bus.hlinux/delay.hlinux/err.hlinux/init.hlinux/kernel.hlinux/module.hlinux/moduleparam.hlinux/pm_runtime.hlinux/property.hsound/initval.hsound/pcm.hsound/pcm_params.hsound/soc.hsound/soc-dapm.hsound/tlv.hcs35l41.h
Detected Declarations
struct cs35l41_pll_sysclk_configstruct cs35l41_fs_mon_configstruct cs35l41_global_fs_configfunction cs35l41_get_fs_mon_config_indexfunction cs35l41_dsp_preload_evfunction cs35l41_dsp_audio_evfunction cs35l41_boost_enablefunction cs35l41_error_releasefunction cs35l41_irqfunction cs35l41_main_amp_eventfunction cs35l41_set_channel_mapfunction cs35l41_set_dai_fmtfunction cs35l41_pcm_hw_paramsfunction cs35l41_get_clk_configfunction cs35l41_component_set_sysclkfunction cs35l41_dai_set_sysclkfunction cs35l41_set_pdatafunction cs35l41_component_probefunction cs35l41_component_removefunction cs35l41_handle_pdatafunction cs35l41_dsp_initfunction cs35l41_get_system_namefunction cs35l41_probefunction cs35l41_removefunction cs35l41_runtime_suspendfunction cs35l41_runtime_resumefunction cs35l41_sys_suspendfunction cs35l41_sys_suspend_noirqfunction cs35l41_sys_resume_noirqfunction cs35l41_sys_resumeexport cs35l41_probeexport cs35l41_remove
Annotated Snippet
struct cs35l41_pll_sysclk_config {
int freq;
int clk_cfg;
};
static const struct cs35l41_pll_sysclk_config cs35l41_pll_sysclk[] = {
{ 32768, 0x00 },
{ 8000, 0x01 },
{ 11025, 0x02 },
{ 12000, 0x03 },
{ 16000, 0x04 },
{ 22050, 0x05 },
{ 24000, 0x06 },
{ 32000, 0x07 },
{ 44100, 0x08 },
{ 48000, 0x09 },
{ 88200, 0x0A },
{ 96000, 0x0B },
{ 128000, 0x0C },
{ 176400, 0x0D },
{ 192000, 0x0E },
{ 256000, 0x0F },
{ 352800, 0x10 },
{ 384000, 0x11 },
{ 512000, 0x12 },
{ 705600, 0x13 },
{ 750000, 0x14 },
{ 768000, 0x15 },
{ 1000000, 0x16 },
{ 1024000, 0x17 },
{ 1200000, 0x18 },
{ 1411200, 0x19 },
{ 1500000, 0x1A },
{ 1536000, 0x1B },
{ 2000000, 0x1C },
{ 2048000, 0x1D },
{ 2400000, 0x1E },
{ 2822400, 0x1F },
{ 3000000, 0x20 },
{ 3072000, 0x21 },
{ 3200000, 0x22 },
{ 4000000, 0x23 },
{ 4096000, 0x24 },
{ 4800000, 0x25 },
{ 5644800, 0x26 },
{ 6000000, 0x27 },
{ 6144000, 0x28 },
{ 6250000, 0x29 },
{ 6400000, 0x2A },
{ 6500000, 0x2B },
{ 6750000, 0x2C },
{ 7526400, 0x2D },
{ 8000000, 0x2E },
{ 8192000, 0x2F },
{ 9600000, 0x30 },
{ 11289600, 0x31 },
{ 12000000, 0x32 },
{ 12288000, 0x33 },
{ 12500000, 0x34 },
{ 12800000, 0x35 },
{ 13000000, 0x36 },
{ 13500000, 0x37 },
{ 19200000, 0x38 },
{ 22579200, 0x39 },
{ 24000000, 0x3A },
{ 24576000, 0x3B },
{ 25000000, 0x3C },
{ 25600000, 0x3D },
{ 26000000, 0x3E },
{ 27000000, 0x3F },
};
struct cs35l41_fs_mon_config {
int freq;
unsigned int fs1;
unsigned int fs2;
};
static const struct cs35l41_fs_mon_config cs35l41_fs_mon[] = {
{ 32768, 2254, 3754 },
{ 8000, 9220, 15364 },
{ 11025, 6148, 10244 },
{ 12000, 6148, 10244 },
{ 16000, 4612, 7684 },
{ 22050, 3076, 5124 },
{ 24000, 3076, 5124 },
{ 32000, 2308, 3844 },
{ 44100, 1540, 2564 },
{ 48000, 1540, 2564 },
{ 88200, 772, 1284 },
Annotation
- Immediate include surface: `linux/acpi.h`, `acpi/acpi_bus.h`, `linux/delay.h`, `linux/err.h`, `linux/init.h`, `linux/kernel.h`, `linux/module.h`, `linux/moduleparam.h`.
- Detected declarations: `struct cs35l41_pll_sysclk_config`, `struct cs35l41_fs_mon_config`, `struct cs35l41_global_fs_config`, `function cs35l41_get_fs_mon_config_index`, `function cs35l41_dsp_preload_ev`, `function cs35l41_dsp_audio_ev`, `function cs35l41_boost_enable`, `function cs35l41_error_release`, `function cs35l41_irq`, `function cs35l41_main_amp_event`.
- Atlas domain: Driver Families / sound/soc.
- Implementation status: integration implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.