#include <linux/pci.h>
#include <linux/bitops.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/acpi.h>
#include <linux/interrupt.h>
#include <sound/pcm_params.h>
#include <linux/pm_runtime.h>
#include <linux/iopoll.h>
#include <linux/soundwire/sdw_amd.h>
#include "../mach-config.h"
#include "acp63.h"
static int acp63_power_on(void __iomem *acp_base)
{ … }
static int acp63_reset(void __iomem *acp_base)
{ … }
static void acp63_enable_interrupts(void __iomem *acp_base)
{ … }
static void acp63_disable_interrupts(void __iomem *acp_base)
{ … }
static int acp63_init(void __iomem *acp_base, struct device *dev)
{ … }
static int acp63_deinit(void __iomem *acp_base, struct device *dev)
{ … }
static irqreturn_t acp63_irq_thread(int irq, void *context)
{ … }
static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
{ … }
#if IS_ENABLED(CONFIG_SND_SOC_AMD_SOUNDWIRE)
static int acp_scan_sdw_devices(struct device *dev, u64 addr)
{ … }
static int amd_sdw_probe(struct device *dev)
{ … }
static int amd_sdw_exit(struct acp63_dev_data *acp_data)
{ … }
static struct snd_soc_acpi_mach *acp63_sdw_machine_select(struct device *dev)
{ … }
#else
static int acp_scan_sdw_devices(struct device *dev, u64 addr)
{
return 0;
}
static int amd_sdw_probe(struct device *dev)
{
return 0;
}
static int amd_sdw_exit(struct acp63_dev_data *acp_data)
{
return 0;
}
static struct snd_soc_acpi_mach *acp63_sdw_machine_select(struct device *dev)
{
return NULL;
}
#endif
static int acp63_machine_register(struct device *dev)
{ … }
static int get_acp63_device_config(struct pci_dev *pci, struct acp63_dev_data *acp_data)
{ … }
static void acp63_fill_platform_dev_info(struct platform_device_info *pdevinfo,
struct device *parent,
struct fwnode_handle *fw_node,
char *name, unsigned int id,
const struct resource *res,
unsigned int num_res,
const void *data,
size_t size_data)
{ … }
static int create_acp63_platform_devs(struct pci_dev *pci, struct acp63_dev_data *adata, u32 addr)
{ … }
static int snd_acp63_probe(struct pci_dev *pci,
const struct pci_device_id *pci_id)
{ … }
static bool check_acp_sdw_enable_status(struct acp63_dev_data *adata)
{ … }
static void handle_acp63_sdw_pme_event(struct acp63_dev_data *adata)
{ … }
static int __maybe_unused snd_acp63_suspend(struct device *dev)
{ … }
static int __maybe_unused snd_acp63_runtime_resume(struct device *dev)
{ … }
static int __maybe_unused snd_acp63_resume(struct device *dev)
{ … }
static const struct dev_pm_ops acp63_pm_ops = …;
static void snd_acp63_remove(struct pci_dev *pci)
{ … }
static const struct pci_device_id snd_acp63_ids[] = …;
MODULE_DEVICE_TABLE(pci, snd_acp63_ids);
static struct pci_driver ps_acp63_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_IMPORT_NS(…);
MODULE_IMPORT_NS(…);
MODULE_LICENSE(…) …;