Commit bddcfb08 authored by Syed Saba Kareem's avatar Syed Saba Kareem Committed by Mark Brown

ASoC: amd: Add check for acp config flags

We have SOF and generic ACP support enabled for Rembrandt and
pheonix platforms on some machines. Since we have same PCI id
used for probing, add check for machine configuration flag to
avoid conflict with newer pci drivers. Such machine flag has
been initialized via dmi match on few Chrome machines. If no
flag is specified probe and register older platform device.
Signed-off-by: default avatarSyed Saba Kareem <Syed.SabaKareem@amd.com>
Reviewed-by: default avatarVijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230412091638.1158901-1-Syed.SabaKareem@amd.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent d93ee84e
...@@ -90,6 +90,7 @@ config SND_SOC_AMD_VANGOGH_MACH ...@@ -90,6 +90,7 @@ config SND_SOC_AMD_VANGOGH_MACH
config SND_SOC_AMD_ACP6x config SND_SOC_AMD_ACP6x
tristate "AMD Audio Coprocessor-v6.x Yellow Carp support" tristate "AMD Audio Coprocessor-v6.x Yellow Carp support"
select SND_AMD_ACP_CONFIG
depends on X86 && PCI depends on X86 && PCI
help help
This option enables Audio Coprocessor i.e ACP v6.x support on This option enables Audio Coprocessor i.e ACP v6.x support on
...@@ -130,6 +131,7 @@ config SND_SOC_AMD_RPL_ACP6x ...@@ -130,6 +131,7 @@ config SND_SOC_AMD_RPL_ACP6x
config SND_SOC_AMD_PS config SND_SOC_AMD_PS
tristate "AMD Audio Coprocessor-v6.3 Pink Sardine support" tristate "AMD Audio Coprocessor-v6.3 Pink Sardine support"
select SND_AMD_ACP_CONFIG
depends on X86 && PCI && ACPI depends on X86 && PCI && ACPI
help help
This option enables Audio Coprocessor i.e ACP v6.3 support on This option enables Audio Coprocessor i.e ACP v6.3 support on
......
...@@ -111,3 +111,5 @@ struct acp63_dev_data { ...@@ -111,3 +111,5 @@ struct acp63_dev_data {
u16 pdev_count; u16 pdev_count;
u16 pdm_dev_index; u16 pdm_dev_index;
}; };
int snd_amd_acp_find_config(struct pci_dev *pci);
...@@ -247,11 +247,17 @@ static int snd_acp63_probe(struct pci_dev *pci, ...@@ -247,11 +247,17 @@ static int snd_acp63_probe(struct pci_dev *pci,
{ {
struct acp63_dev_data *adata; struct acp63_dev_data *adata;
u32 addr; u32 addr;
u32 irqflags; u32 irqflags, flag;
int val; int val;
int ret; int ret;
irqflags = IRQF_SHARED; irqflags = IRQF_SHARED;
/* Return if acp config flag is defined */
flag = snd_amd_acp_find_config(pci);
if (flag)
return -ENODEV;
/* Pink Sardine device check */ /* Pink Sardine device check */
switch (pci->revision) { switch (pci->revision) {
case 0x63: case 0x63:
......
...@@ -105,3 +105,6 @@ static inline void acp6x_writel(u32 val, void __iomem *base_addr) ...@@ -105,3 +105,6 @@ static inline void acp6x_writel(u32 val, void __iomem *base_addr)
{ {
writel(val, base_addr - ACP6x_PHY_BASE_ADDRESS); writel(val, base_addr - ACP6x_PHY_BASE_ADDRESS);
} }
int snd_amd_acp_find_config(struct pci_dev *pci);
...@@ -149,10 +149,16 @@ static int snd_acp6x_probe(struct pci_dev *pci, ...@@ -149,10 +149,16 @@ static int snd_acp6x_probe(struct pci_dev *pci,
int index = 0; int index = 0;
int val = 0x00; int val = 0x00;
u32 addr; u32 addr;
unsigned int irqflags; unsigned int irqflags, flag;
int ret; int ret;
irqflags = IRQF_SHARED; irqflags = IRQF_SHARED;
/* Return if acp config flag is defined */
flag = snd_amd_acp_find_config(pci);
if (flag)
return -ENODEV;
/* Yellow Carp device check */ /* Yellow Carp device check */
switch (pci->revision) { switch (pci->revision) {
case 0x60: case 0x60:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment