sound/soc/sof/intel/hda.h
Source file repositories/reference/linux-study-clean/sound/soc/sof/intel/hda.h
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/sof/intel/hda.h- Extension
.h- Size
- 36884 bytes
- Lines
- 1069
- 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/soundwire/sdw.hlinux/soundwire/sdw_intel.hsound/compress_driver.hsound/hda_codec.hsound/hdaudio_ext.h../sof-client-probes.h../sof-audio.hshim.h
Detected Declarations
struct sof_intel_dsp_bdlstruct sof_ace3_mic_privacystruct sof_intel_hda_devstruct sof_intel_hda_streamstruct snd_sof_daistruct sof_ipc_dai_configstruct sof_ipc4_fw_librarystruct hda_dai_widget_dma_opsenum sof_hda_D0_substatefunction hda_codec_probe_busfunction hda_codec_set_codec_wakeupfunction hda_codec_i915_display_powerfunction hda_codec_i915_exitfunction hda_sdw_check_lcount_commonfunction hda_sdw_check_lcount_extfunction hda_sdw_check_lcountfunction hda_sdw_startupfunction hda_common_enable_sdw_irqfunction hda_sdw_process_wakeen_commonfunction hda_probes_registerfunction hda_probes_unregister
Annotated Snippet
struct sof_intel_dsp_bdl {
__le32 addr_l;
__le32 addr_h;
__le32 size;
__le32 ioc;
} __attribute((packed));
#define SOF_HDA_PLAYBACK_STREAMS 16
#define SOF_HDA_CAPTURE_STREAMS 16
#define SOF_HDA_PLAYBACK 0
#define SOF_HDA_CAPTURE 1
/* stream flags */
#define SOF_HDA_STREAM_DMI_L1_COMPATIBLE 1
/*
* Time in ms for opportunistic D0I3 entry delay.
* This has been deliberately chosen to be long to avoid race conditions.
* Could be optimized in future.
*/
#define SOF_HDA_D0I3_WORK_DELAY_MS 5000
/* HDA DSP D0 substate */
enum sof_hda_D0_substate {
SOF_HDA_DSP_PM_D0I0, /* default D0 substate */
SOF_HDA_DSP_PM_D0I3, /* low power D0 substate */
};
struct sof_ace3_mic_privacy {
bool active;
struct work_struct work;
};
/* represents DSP HDA controller frontend - i.e. host facing control */
struct sof_intel_hda_dev {
bool imrboot_supported;
bool skip_imr_boot;
bool booted_from_imr;
int boot_iteration;
/*
* DMA buffers for base firmware download. By default the buffers are
* allocated once and kept through the lifetime of the driver.
* See module parameter: persistent_cl_buffer
*/
struct snd_dma_buffer cl_dmab;
bool cl_dmab_contains_basefw;
struct snd_dma_buffer iccmax_dmab;
struct hda_bus hbus;
/* hw config */
const struct sof_intel_dsp_desc *desc;
/* trace */
struct hdac_ext_stream *dtrace_stream;
/* if position update IPC needed */
u32 no_ipc_position;
/* the maximum number of streams (playback + capture) supported */
u32 stream_max;
/* PM related */
bool l1_disabled;/* is DMI link L1 disabled? */
/* DMIC device */
struct platform_device *dmic_dev;
/* delayed work to enter D0I3 opportunistically */
struct delayed_work d0i3_work;
/* ACPI information stored between scan and probe steps */
struct sdw_intel_acpi_info info;
/* sdw context allocated by SoundWire driver */
struct sdw_intel_ctx *sdw;
/* FW clock config, 0:HPRO, 1:LPRO */
bool clk_config_lpro;
wait_queue_head_t waitq;
bool code_loading;
/* Intel NHLT information */
struct nhlt_acpi_table *nhlt;
/* work queue for mic privacy state change notification sending */
struct sof_ace3_mic_privacy mic_privacy;
Annotation
- Immediate include surface: `linux/completion.h`, `linux/soundwire/sdw.h`, `linux/soundwire/sdw_intel.h`, `sound/compress_driver.h`, `sound/hda_codec.h`, `sound/hdaudio_ext.h`, `../sof-client-probes.h`, `../sof-audio.h`.
- Detected declarations: `struct sof_intel_dsp_bdl`, `struct sof_ace3_mic_privacy`, `struct sof_intel_hda_dev`, `struct sof_intel_hda_stream`, `struct snd_sof_dai`, `struct sof_ipc_dai_config`, `struct sof_ipc4_fw_library`, `struct hda_dai_widget_dma_ops`, `enum sof_hda_D0_substate`, `function hda_codec_probe_bus`.
- 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.