sound/soc/amd/acp7x/acp7x.h

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

File Facts

System
Linux kernel
Corpus path
sound/soc/amd/acp7x/acp7x.h
Extension
.h
Size
2957 bytes
Lines
111
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 acp_hw_ops {
	int (*acp_init)(void __iomem *acp_base, struct device *dev);
	int (*acp_deinit)(void __iomem *acp_base, struct device *dev);
	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 acp7x_dev_data {
	void __iomem *acp7x_base;
	struct acp_hw_ops *hw_ops;
	u32 addr;
	u32 reg_range;
	u32 acp_rev;
};

void acp7x_hw_init_ops(struct acp_hw_ops *hw_ops);

static inline int acp_hw_init(struct acp7x_dev_data *adata, struct device *dev)
{
	if (adata && adata->hw_ops && adata->hw_ops->acp_init)
		return adata->hw_ops->acp_init(adata->acp7x_base, dev);
	return -EOPNOTSUPP;
}

static inline int acp_hw_deinit(struct acp7x_dev_data *adata, struct device *dev)
{
	if (adata && adata->hw_ops && adata->hw_ops->acp_deinit)
		return adata->hw_ops->acp_deinit(adata->acp7x_base, dev);
	return -EOPNOTSUPP;
}

static inline int acp_hw_suspend(struct device *dev)
{
	struct acp7x_dev_data *adata = dev_get_drvdata(dev);

	if (adata && adata->hw_ops && adata->hw_ops->acp_suspend)
		return adata->hw_ops->acp_suspend(dev);
	return -EOPNOTSUPP;
}

static inline int acp_hw_resume(struct device *dev)
{
	struct acp7x_dev_data *adata = dev_get_drvdata(dev);

	if (adata && adata->hw_ops && adata->hw_ops->acp_resume)
		return adata->hw_ops->acp_resume(dev);
	return -EOPNOTSUPP;
}

static inline int acp_hw_suspend_runtime(struct device *dev)
{
	struct acp7x_dev_data *adata = dev_get_drvdata(dev);

	if (adata && adata->hw_ops && adata->hw_ops->acp_suspend_runtime)
		return adata->hw_ops->acp_suspend_runtime(dev);
	return -EOPNOTSUPP;
}

static inline int acp_hw_runtime_resume(struct device *dev)
{
	struct acp7x_dev_data *adata = dev_get_drvdata(dev);

	if (adata && adata->hw_ops && adata->hw_ops->acp_resume_runtime)
		return adata->hw_ops->acp_resume_runtime(dev);
	return -EOPNOTSUPP;
}

int snd_amd_acp_find_config(struct pci_dev *pci);

#endif /* __SOUND_SOC_AMD_ACP7X_H */

Annotation

Implementation Notes