sound/soc/codecs/cs35l56.h
Source file repositories/reference/linux-study-clean/sound/soc/codecs/cs35l56.h
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/codecs/cs35l56.h- Extension
.h- Size
- 2951 bytes
- Lines
- 93
- Domain
- Driver Families
- Bucket
- sound/soc
- 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.
- 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/completion.hlinux/container_of.hlinux/regulator/consumer.hlinux/pm_runtime.hlinux/workqueue.hsound/cs35l56.hwm_adsp.h
Detected Declarations
struct sdw_slavestruct cs35l56_private
Annotated Snippet
struct cs35l56_private {
struct wm_adsp dsp; /* must be first member */
struct cs35l56_base base;
struct work_struct dsp_work;
struct workqueue_struct *dsp_wq;
struct snd_soc_component *component;
struct regulator_bulk_data supplies[CS35L56_NUM_BULK_SUPPLIES];
struct sdw_slave *sdw_peripheral;
struct regmap *sdw_bus_regmap;
const char *fallback_fw_suffix;
struct work_struct sdw_irq_work;
bool sdw_irq_no_unmask;
bool soft_resetting;
bool sdw_attached;
struct completion init_completion;
int speaker_id;
u32 rx_mask;
u32 tx_mask;
u8 asp_slot_width;
u8 asp_slot_count;
bool tdm_mode;
bool sysclk_set;
u8 sdw_link_num;
u8 sdw_unique_id;
u8 ambient_ctl_value;
};
static inline struct cs35l56_private *cs35l56_private_from_base(struct cs35l56_base *cs35l56_base)
{
return container_of(cs35l56_base, struct cs35l56_private, base);
}
extern const struct dev_pm_ops cs35l56_pm_ops_i2c_spi;
void cs35l56_mask_soundwire_interrupts(struct sdw_slave *peripheral);
void cs35l56_unmask_soundwire_interrupts(struct sdw_slave *peripheral);
void cs35l56_disable_sdw_interrupts(struct cs35l56_private *cs35l56);
void cs35l56_enable_sdw_interrupts(struct cs35l56_private *cs35l56);
int cs35l56_system_suspend(struct device *dev);
int cs35l56_system_suspend_late(struct device *dev);
int cs35l56_system_suspend_no_irq(struct device *dev);
int cs35l56_system_resume_no_irq(struct device *dev);
int cs35l56_system_resume_early(struct device *dev);
int cs35l56_system_resume(struct device *dev);
irqreturn_t cs35l56_irq(int irq, void *data);
int cs35l56_irq_request(struct cs35l56_base *cs35l56_base, int irq);
int cs35l56_common_probe(struct cs35l56_private *cs35l56);
int cs35l56_init(struct cs35l56_private *cs35l56);
void cs35l56_remove(struct cs35l56_private *cs35l56);
#if IS_ENABLED(CONFIG_KUNIT)
int cs35l56_set_fw_suffix(struct cs35l56_private *cs35l56);
int cs35l56_set_fw_name(struct snd_soc_component *component);
int cs35l56_process_xu_properties(struct cs35l56_private *cs35l56);
int cs35l56_get_firmware_uid(struct cs35l56_private *cs35l56);
#endif
#endif /* ifndef CS35L56_H */
Annotation
- Immediate include surface: `linux/completion.h`, `linux/container_of.h`, `linux/regulator/consumer.h`, `linux/pm_runtime.h`, `linux/workqueue.h`, `sound/cs35l56.h`, `wm_adsp.h`.
- Detected declarations: `struct sdw_slave`, `struct cs35l56_private`.
- Atlas domain: Driver Families / sound/soc.
- Implementation status: source 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.