sound/soc/amd/ps/acp63.h

Source file repositories/reference/linux-study-clean/sound/soc/amd/ps/acp63.h

File Facts

System
Linux kernel
Corpus path
sound/soc/amd/ps/acp63.h
Extension
.h
Size
14093 bytes
Lines
449
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct pdm_stream_instance {
	u16 num_pages;
	u16 channels;
	dma_addr_t dma_addr;
	u64 bytescount;
	void __iomem *acp63_base;
};

struct pdm_dev_data {
	u32 pdm_irq;
	void __iomem *acp63_base;
	struct mutex *acp_lock;
	struct snd_pcm_substream *capture_stream;
};

struct sdw_dma_dev_data {
	void __iomem *acp_base;
	struct mutex *acp_lock; /* used to protect acp common register access */
	u32 acp_rev;
	struct snd_pcm_substream *acp63_sdw0_dma_stream[ACP63_SDW0_DMA_MAX_STREAMS];
	struct snd_pcm_substream *acp63_sdw1_dma_stream[ACP63_SDW1_DMA_MAX_STREAMS];
	struct snd_pcm_substream *acp70_sdw0_dma_stream[ACP70_SDW0_DMA_MAX_STREAMS];
	struct snd_pcm_substream *acp70_sdw1_dma_stream[ACP70_SDW1_DMA_MAX_STREAMS];
};

struct acp_sdw_dma_stream {
	u16 num_pages;
	u16 channels;
	u32 stream_id;
	u32 instance;
	dma_addr_t dma_addr;
	u64 bytescount;
};

union acp_sdw_dma_count {
	struct {
		u32 low;
		u32 high;
	} bcount;
	u64 bytescount;
};

struct sdw_dma_ring_buf_reg {
	u32 reg_dma_size;
	u32 reg_fifo_addr;
	u32 reg_fifo_size;
	u32 reg_ring_buf_size;
	u32 reg_ring_buf_addr;
	u32 water_mark_size_reg;
	u32 pos_low_reg;
	u32 pos_high_reg;
};

struct acp63_dev_data;

/**
 * struct acp_hw_ops - ACP PCI driver platform specific ops
 * @acp_init: ACP initialization
 * @acp_deinit: ACP de-initialization
 * @acp_get_config: function to read the acp pin configuration
 * @acp_sdw_dma_irq_thread: ACP SoundWire DMA interrupt thread
 * acp_suspend: ACP system level suspend callback
 * acp_resume: ACP system level resume callback
 * acp_suspend_runtime: ACP runtime suspend callback
 * acp_resume_runtime: ACP runtime resume callback
 */
struct acp_hw_ops {
	int (*acp_init)(void __iomem *acp_base, struct device *dev);
	int (*acp_deinit)(void __iomem *acp_base, struct device *dev);
	void (*acp_get_config)(struct pci_dev *pci, struct acp63_dev_data *acp_data);
	void (*acp_sdw_dma_irq_thread)(struct acp63_dev_data *acp_data);
	int (*acp_suspend)(struct device *dev);
	int (*acp_resume)(struct device *dev);
	int (*acp_suspend_runtime)(struct device *dev);
	int (*acp_resume_runtime)(struct device *dev);
};

/**
 * struct acp63_dev_data - acp pci driver context
 * @acp63_base: acp mmio base
 * @res: resource
 * @hw_ops: ACP pci driver platform-specific ops
 * @pdm_dev: ACP PDM controller platform device
 * @dmic_codec: platform device for DMIC Codec
 * sdw_dma_dev: platform device for SoundWire DMA controller
 * @mach_dev: platform device for machine driver to support ACP PDM/SoundWire configuration
 * @acp_lock: used to protect acp common registers
 * @info: SoundWire AMD information found in ACPI tables
 * @sdw: SoundWire context for all SoundWire manager instances
 * @machine: ACPI machines for SoundWire interface

Annotation

Implementation Notes