* [PATCH v5 0/3] ASoC: Add DMIC support for the AMD RPL platform
@ 2026-02-13 0:42 Mingyou Chen
2026-02-13 0:42 ` [PATCH v5 1/3] " Mingyou Chen
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Mingyou Chen @ 2026-02-13 0:42 UTC (permalink / raw)
To: vijendar.mukunda
Cc: broonie, lgirdwood, perex, tiwai, mario.limonciello,
venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound,
linux-kernel, Mingyou Chen
v2:
- Reverse ACP CONFIG PIN from 10 to 14 for rpl
- Remove the rpl folder
v3:
- Remove rpl configuration from Kconfig and Makefile
v4:
- Handle separate switch case for RPL platform (ACP Pin config)
v5:
- Remove clangd generated compiler_attributes.h include statement
Mingyou Chen (3):
ASoC: Add DMIC support for the AMD RPL platform
ASoC: Drop RPL driver
ASoC: Add quirk for Lecoo Bellator N176
sound/soc/amd/Kconfig | 10 -
sound/soc/amd/Makefile | 1 -
sound/soc/amd/rpl/Makefile | 5 -
sound/soc/amd/rpl/rpl-pci-acp6x.c | 227 ------------------
sound/soc/amd/rpl/rpl_acp6x.h | 36 ---
.../soc/amd/rpl/rpl_acp6x_chip_offset_byte.h | 30 ---
sound/soc/amd/yc/acp6x-mach.c | 7 +
sound/soc/amd/yc/pci-acp6x.c | 12 +
8 files changed, 19 insertions(+), 309 deletions(-)
delete mode 100644 sound/soc/amd/rpl/Makefile
delete mode 100644 sound/soc/amd/rpl/rpl-pci-acp6x.c
delete mode 100644 sound/soc/amd/rpl/rpl_acp6x.h
delete mode 100644 sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h
--
2.51.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v5 1/3] ASoC: Add DMIC support for the AMD RPL platform 2026-02-13 0:42 [PATCH v5 0/3] ASoC: Add DMIC support for the AMD RPL platform Mingyou Chen @ 2026-02-13 0:42 ` Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello 2026-02-13 0:42 ` [PATCH v5 2/3] ASoC: Drop RPL driver Mingyou Chen 2026-02-13 0:42 ` [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 Mingyou Chen 2 siblings, 1 reply; 7+ messages in thread From: Mingyou Chen @ 2026-02-13 0:42 UTC (permalink / raw) To: vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, mario.limonciello, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel, Mingyou Chen Add RPL rev 0x62 check and reverse ACP CONFIG PIN 10 to 14 for RPL platform Signed-off-by: Mingyou Chen <qby140326@gmail.com> --- sound/soc/amd/yc/pci-acp6x.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sound/soc/amd/yc/pci-acp6x.c b/sound/soc/amd/yc/pci-acp6x.c index 1140ed1cbb3d..53c1910a8838 100644 --- a/sound/soc/amd/yc/pci-acp6x.c +++ b/sound/soc/amd/yc/pci-acp6x.c @@ -163,6 +163,7 @@ static int snd_acp6x_probe(struct pci_dev *pci, switch (pci->revision) { case 0x60: case 0x6f: + case 0x62: /* RPL */ break; default: dev_dbg(&pci->dev, "acp6x pci device not found\n"); @@ -208,6 +209,17 @@ static int snd_acp6x_probe(struct pci_dev *pci, case ACP_CONFIG_15: dev_info(&pci->dev, "Audio Mode %d\n", val); break; + /* PIN 10 to 14 is reversed for RPL */ + case ACP_CONFIG_10: + case ACP_CONFIG_11: + case ACP_CONFIG_12: + case ACP_CONFIG_13: + case ACP_CONFIG_14: + if (pci->revision == 0x62) { + dev_info(&pci->dev, "RPL Audio Mode %d\n", val); + break; + } + fallthrough; default: adata->res = devm_kzalloc(&pci->dev, sizeof(struct resource), -- 2.51.2 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 1/3] ASoC: Add DMIC support for the AMD RPL platform 2026-02-13 0:42 ` [PATCH v5 1/3] " Mingyou Chen @ 2026-02-13 3:25 ` Mario Limonciello 0 siblings, 0 replies; 7+ messages in thread From: Mario Limonciello @ 2026-02-13 3:25 UTC (permalink / raw) To: Mingyou Chen, vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel On 2/12/2026 6:42 PM, Mingyou Chen wrote: > Add RPL rev 0x62 check and reverse ACP CONFIG PIN 10 to 14 for RPL > platform I think you have a typo here, which really confused me for a while. You meant to say "reserve" but you typed "reverse". > > Signed-off-by: Mingyou Chen <qby140326@gmail.com> > --- > sound/soc/amd/yc/pci-acp6x.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/sound/soc/amd/yc/pci-acp6x.c b/sound/soc/amd/yc/pci-acp6x.c > index 1140ed1cbb3d..53c1910a8838 100644 > --- a/sound/soc/amd/yc/pci-acp6x.c > +++ b/sound/soc/amd/yc/pci-acp6x.c > @@ -163,6 +163,7 @@ static int snd_acp6x_probe(struct pci_dev *pci, > switch (pci->revision) { > case 0x60: > case 0x6f: > + case 0x62: /* RPL */ > break; > default: > dev_dbg(&pci->dev, "acp6x pci device not found\n"); > @@ -208,6 +209,17 @@ static int snd_acp6x_probe(struct pci_dev *pci, > case ACP_CONFIG_15: > dev_info(&pci->dev, "Audio Mode %d\n", val); > break; > + /* PIN 10 to 14 is reversed for RPL */ This comment is in the incorrect location (and also has a typo). I feel it should come right before this line so it's obvious that when on the RPL platform you handle the special case. if (pci->revision == 0x62) > + case ACP_CONFIG_10: > + case ACP_CONFIG_11: > + case ACP_CONFIG_12: > + case ACP_CONFIG_13: > + case ACP_CONFIG_14: > + if (pci->revision == 0x62) { > + dev_info(&pci->dev, "RPL Audio Mode %d\n", val); > + break; > + } > + fallthrough; > default: > adata->res = devm_kzalloc(&pci->dev, > sizeof(struct resource), ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 2/3] ASoC: Drop RPL driver 2026-02-13 0:42 [PATCH v5 0/3] ASoC: Add DMIC support for the AMD RPL platform Mingyou Chen 2026-02-13 0:42 ` [PATCH v5 1/3] " Mingyou Chen @ 2026-02-13 0:42 ` Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org) 2026-02-13 0:42 ` [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 Mingyou Chen 2 siblings, 1 reply; 7+ messages in thread From: Mingyou Chen @ 2026-02-13 0:42 UTC (permalink / raw) To: vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, mario.limonciello, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel, Mingyou Chen The RPL driver is no longer needed because its functionality has been superseded by the YC driver Signed-off-by: Mingyou Chen <qby140326@gmail.com> --- sound/soc/amd/Kconfig | 10 - sound/soc/amd/Makefile | 1 - sound/soc/amd/rpl/Makefile | 5 - sound/soc/amd/rpl/rpl-pci-acp6x.c | 227 ------------------ sound/soc/amd/rpl/rpl_acp6x.h | 36 --- .../soc/amd/rpl/rpl_acp6x_chip_offset_byte.h | 30 --- 6 files changed, 309 deletions(-) delete mode 100644 sound/soc/amd/rpl/Makefile delete mode 100644 sound/soc/amd/rpl/rpl-pci-acp6x.c delete mode 100644 sound/soc/amd/rpl/rpl_acp6x.h delete mode 100644 sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h diff --git a/sound/soc/amd/Kconfig b/sound/soc/amd/Kconfig index fd35a03aadcb..a6eecbe12e84 100644 --- a/sound/soc/amd/Kconfig +++ b/sound/soc/amd/Kconfig @@ -124,16 +124,6 @@ config SND_AMD_ACP_CONFIG source "sound/soc/amd/acp/Kconfig" -config SND_SOC_AMD_RPL_ACP6x - tristate "AMD Audio Coprocessor-v6.2 RPL support" - depends on X86 && PCI - help - This option enables Audio Coprocessor i.e. ACP v6.2 support on - AMD RPL platform. By enabling this flag build will be - triggered for ACP PCI driver. - Say m if you have such a device. - If unsure select "N". - config SND_SOC_AMD_ACP63_TOPLEVEL tristate "support for AMD platforms with ACP version >= 6.3" default SND_AMD_ACP_CONFIG diff --git a/sound/soc/amd/Makefile b/sound/soc/amd/Makefile index 4f89d962cce2..23b25ff0d800 100644 --- a/sound/soc/amd/Makefile +++ b/sound/soc/amd/Makefile @@ -17,5 +17,4 @@ obj-$(CONFIG_SND_SOC_AMD_ACP5x) += vangogh/ obj-$(CONFIG_SND_SOC_AMD_ACP6x) += yc/ obj-$(CONFIG_SND_AMD_ACP_CONFIG) += acp/ obj-$(CONFIG_SND_AMD_ACP_CONFIG) += snd-acp-config.o -obj-$(CONFIG_SND_SOC_AMD_RPL_ACP6x) += rpl/ obj-$(CONFIG_SND_SOC_AMD_PS) += ps/ diff --git a/sound/soc/amd/rpl/Makefile b/sound/soc/amd/rpl/Makefile deleted file mode 100644 index a3825c5be4e7..000000000000 --- a/sound/soc/amd/rpl/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# RPL platform Support -snd-rpl-pci-acp6x-y := rpl-pci-acp6x.o - -obj-$(CONFIG_SND_SOC_AMD_RPL_ACP6x) += snd-rpl-pci-acp6x.o diff --git a/sound/soc/amd/rpl/rpl-pci-acp6x.c b/sound/soc/amd/rpl/rpl-pci-acp6x.c deleted file mode 100644 index e3afe9172bdf..000000000000 --- a/sound/soc/amd/rpl/rpl-pci-acp6x.c +++ /dev/null @@ -1,227 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * AMD RPL ACP PCI Driver - * - * Copyright 2022 Advanced Micro Devices, Inc. - */ - -#include <linux/pci.h> -#include <linux/module.h> -#include <linux/io.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/pm_runtime.h> - -#include "rpl_acp6x.h" - -struct rpl_dev_data { - void __iomem *acp6x_base; -}; - -static int rpl_power_on(void __iomem *acp_base) -{ - u32 val; - int timeout; - - val = rpl_acp_readl(acp_base + ACP_PGFSM_STATUS); - - if (!val) - return val; - - if ((val & ACP_PGFSM_STATUS_MASK) != ACP_POWER_ON_IN_PROGRESS) - rpl_acp_writel(ACP_PGFSM_CNTL_POWER_ON_MASK, acp_base + ACP_PGFSM_CONTROL); - timeout = 0; - while (++timeout < 500) { - val = rpl_acp_readl(acp_base + ACP_PGFSM_STATUS); - if (!val) - return 0; - udelay(1); - } - return -ETIMEDOUT; -} - -static int rpl_reset(void __iomem *acp_base) -{ - u32 val; - int timeout; - - rpl_acp_writel(1, acp_base + ACP_SOFT_RESET); - timeout = 0; - while (++timeout < 500) { - val = rpl_acp_readl(acp_base + ACP_SOFT_RESET); - if (val & ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK) - break; - cpu_relax(); - } - rpl_acp_writel(0, acp_base + ACP_SOFT_RESET); - timeout = 0; - while (++timeout < 500) { - val = rpl_acp_readl(acp_base + ACP_SOFT_RESET); - if (!val) - return 0; - cpu_relax(); - } - return -ETIMEDOUT; -} - -static int rpl_init(void __iomem *acp_base) -{ - int ret; - - /* power on */ - ret = rpl_power_on(acp_base); - if (ret) { - pr_err("ACP power on failed\n"); - return ret; - } - rpl_acp_writel(0x01, acp_base + ACP_CONTROL); - /* Reset */ - ret = rpl_reset(acp_base); - if (ret) { - pr_err("ACP reset failed\n"); - return ret; - } - rpl_acp_writel(0x03, acp_base + ACP_CLKMUX_SEL); - return 0; -} - -static int rpl_deinit(void __iomem *acp_base) -{ - int ret; - - /* Reset */ - ret = rpl_reset(acp_base); - if (ret) { - pr_err("ACP reset failed\n"); - return ret; - } - rpl_acp_writel(0x00, acp_base + ACP_CLKMUX_SEL); - rpl_acp_writel(0x00, acp_base + ACP_CONTROL); - return 0; -} - -static int snd_rpl_probe(struct pci_dev *pci, - const struct pci_device_id *pci_id) -{ - struct rpl_dev_data *adata; - u32 addr; - int ret; - - /* RPL device check */ - switch (pci->revision) { - case 0x62: - break; - default: - dev_dbg(&pci->dev, "acp6x pci device not found\n"); - return -ENODEV; - } - if (pci_enable_device(pci)) { - dev_err(&pci->dev, "pci_enable_device failed\n"); - return -ENODEV; - } - - ret = pci_request_regions(pci, "AMD ACP6x audio"); - if (ret < 0) { - dev_err(&pci->dev, "pci_request_regions failed\n"); - goto disable_pci; - } - - adata = devm_kzalloc(&pci->dev, sizeof(struct rpl_dev_data), - GFP_KERNEL); - if (!adata) { - ret = -ENOMEM; - goto release_regions; - } - - addr = pci_resource_start(pci, 0); - adata->acp6x_base = devm_ioremap(&pci->dev, addr, - pci_resource_len(pci, 0)); - if (!adata->acp6x_base) { - ret = -ENOMEM; - goto release_regions; - } - pci_set_master(pci); - pci_set_drvdata(pci, adata); - ret = rpl_init(adata->acp6x_base); - if (ret) - goto release_regions; - pm_runtime_set_autosuspend_delay(&pci->dev, ACP_SUSPEND_DELAY_MS); - pm_runtime_use_autosuspend(&pci->dev); - pm_runtime_put_noidle(&pci->dev); - pm_runtime_allow(&pci->dev); - - return 0; -release_regions: - pci_release_regions(pci); -disable_pci: - pci_disable_device(pci); - - return ret; -} - -static int snd_rpl_suspend(struct device *dev) -{ - struct rpl_dev_data *adata; - int ret; - - adata = dev_get_drvdata(dev); - ret = rpl_deinit(adata->acp6x_base); - if (ret) - dev_err(dev, "ACP de-init failed\n"); - return ret; -} - -static int snd_rpl_resume(struct device *dev) -{ - struct rpl_dev_data *adata; - int ret; - - adata = dev_get_drvdata(dev); - ret = rpl_init(adata->acp6x_base); - if (ret) - dev_err(dev, "ACP init failed\n"); - return ret; -} - -static const struct dev_pm_ops rpl_pm = { - RUNTIME_PM_OPS(snd_rpl_suspend, snd_rpl_resume, NULL) - SYSTEM_SLEEP_PM_OPS(snd_rpl_suspend, snd_rpl_resume) -}; - -static void snd_rpl_remove(struct pci_dev *pci) -{ - struct rpl_dev_data *adata; - int ret; - - adata = pci_get_drvdata(pci); - ret = rpl_deinit(adata->acp6x_base); - if (ret) - dev_err(&pci->dev, "ACP de-init failed\n"); - pm_runtime_forbid(&pci->dev); - pm_runtime_get_noresume(&pci->dev); - pci_release_regions(pci); - pci_disable_device(pci); -} - -static const struct pci_device_id snd_rpl_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_AMD, ACP_DEVICE_ID), - .class = PCI_CLASS_MULTIMEDIA_OTHER << 8, - .class_mask = 0xffffff }, - { 0, }, -}; -MODULE_DEVICE_TABLE(pci, snd_rpl_ids); - -static struct pci_driver rpl_acp6x_driver = { - .name = KBUILD_MODNAME, - .id_table = snd_rpl_ids, - .probe = snd_rpl_probe, - .remove = snd_rpl_remove, - .driver = { - .pm = pm_ptr(&rpl_pm), - } -}; - -module_pci_driver(rpl_acp6x_driver); - -MODULE_DESCRIPTION("AMD ACP RPL PCI driver"); -MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/amd/rpl/rpl_acp6x.h b/sound/soc/amd/rpl/rpl_acp6x.h deleted file mode 100644 index f5816a33632e..000000000000 --- a/sound/soc/amd/rpl/rpl_acp6x.h +++ /dev/null @@ -1,36 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * AMD ACP Driver - * - * Copyright (C) 2021 Advanced Micro Devices, Inc. All rights reserved. - */ - -#include "rpl_acp6x_chip_offset_byte.h" - -#define ACP_DEVICE_ID 0x15E2 -#define ACP6x_PHY_BASE_ADDRESS 0x1240000 - -#define ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK 0x00010001 -#define ACP_PGFSM_CNTL_POWER_ON_MASK 1 -#define ACP_PGFSM_CNTL_POWER_OFF_MASK 0 -#define ACP_PGFSM_STATUS_MASK 3 -#define ACP_POWERED_ON 0 -#define ACP_POWER_ON_IN_PROGRESS 1 -#define ACP_POWERED_OFF 2 -#define ACP_POWER_OFF_IN_PROGRESS 3 - -#define DELAY_US 5 -#define ACP_COUNTER 20000 - -/* time in ms for runtime suspend delay */ -#define ACP_SUSPEND_DELAY_MS 2000 - -static inline u32 rpl_acp_readl(void __iomem *base_addr) -{ - return readl(base_addr - ACP6x_PHY_BASE_ADDRESS); -} - -static inline void rpl_acp_writel(u32 val, void __iomem *base_addr) -{ - writel(val, base_addr - ACP6x_PHY_BASE_ADDRESS); -} diff --git a/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h b/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h deleted file mode 100644 index 456498f5396d..000000000000 --- a/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h +++ /dev/null @@ -1,30 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * AMD ACP 6.2 Register Documentation - * - * Copyright 2022 Advanced Micro Devices, Inc. - */ - -#ifndef _rpl_acp6x_OFFSET_HEADER -#define _rpl_acp6x_OFFSET_HEADER - -/* Registers from ACP_CLKRST block */ -#define ACP_SOFT_RESET 0x1241000 -#define ACP_CONTROL 0x1241004 -#define ACP_STATUS 0x1241008 -#define ACP_DYNAMIC_CG_MASTER_CONTROL 0x1241010 -#define ACP_PGFSM_CONTROL 0x124101C -#define ACP_PGFSM_STATUS 0x1241020 -#define ACP_CLKMUX_SEL 0x1241024 - -/* Registers from ACP_AON block */ -#define ACP_PME_EN 0x1241400 -#define ACP_DEVICE_STATE 0x1241404 -#define AZ_DEVICE_STATE 0x1241408 -#define ACP_PIN_CONFIG 0x1241440 -#define ACP_PAD_PULLUP_CTRL 0x1241444 -#define ACP_PAD_PULLDOWN_CTRL 0x1241448 -#define ACP_PAD_DRIVE_STRENGTH_CTRL 0x124144C -#define ACP_PAD_SCHMEN_CTRL 0x1241450 - -#endif -- 2.51.2 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 2/3] ASoC: Drop RPL driver 2026-02-13 0:42 ` [PATCH v5 2/3] ASoC: Drop RPL driver Mingyou Chen @ 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org) 0 siblings, 0 replies; 7+ messages in thread From: Mario Limonciello (AMD) (kernel.org) @ 2026-02-13 3:25 UTC (permalink / raw) To: Mingyou Chen, vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel On 2/12/2026 6:42 PM, Mingyou Chen wrote: > The RPL driver is no longer needed because its functionality has been > superseded by the YC driver > > Signed-off-by: Mingyou Chen <qby140326@gmail.com> Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> > --- > sound/soc/amd/Kconfig | 10 - > sound/soc/amd/Makefile | 1 - > sound/soc/amd/rpl/Makefile | 5 - > sound/soc/amd/rpl/rpl-pci-acp6x.c | 227 ------------------ > sound/soc/amd/rpl/rpl_acp6x.h | 36 --- > .../soc/amd/rpl/rpl_acp6x_chip_offset_byte.h | 30 --- > 6 files changed, 309 deletions(-) > delete mode 100644 sound/soc/amd/rpl/Makefile > delete mode 100644 sound/soc/amd/rpl/rpl-pci-acp6x.c > delete mode 100644 sound/soc/amd/rpl/rpl_acp6x.h > delete mode 100644 sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h > > diff --git a/sound/soc/amd/Kconfig b/sound/soc/amd/Kconfig > index fd35a03aadcb..a6eecbe12e84 100644 > --- a/sound/soc/amd/Kconfig > +++ b/sound/soc/amd/Kconfig > @@ -124,16 +124,6 @@ config SND_AMD_ACP_CONFIG > > source "sound/soc/amd/acp/Kconfig" > > -config SND_SOC_AMD_RPL_ACP6x > - tristate "AMD Audio Coprocessor-v6.2 RPL support" > - depends on X86 && PCI > - help > - This option enables Audio Coprocessor i.e. ACP v6.2 support on > - AMD RPL platform. By enabling this flag build will be > - triggered for ACP PCI driver. > - Say m if you have such a device. > - If unsure select "N". > - > config SND_SOC_AMD_ACP63_TOPLEVEL > tristate "support for AMD platforms with ACP version >= 6.3" > default SND_AMD_ACP_CONFIG > diff --git a/sound/soc/amd/Makefile b/sound/soc/amd/Makefile > index 4f89d962cce2..23b25ff0d800 100644 > --- a/sound/soc/amd/Makefile > +++ b/sound/soc/amd/Makefile > @@ -17,5 +17,4 @@ obj-$(CONFIG_SND_SOC_AMD_ACP5x) += vangogh/ > obj-$(CONFIG_SND_SOC_AMD_ACP6x) += yc/ > obj-$(CONFIG_SND_AMD_ACP_CONFIG) += acp/ > obj-$(CONFIG_SND_AMD_ACP_CONFIG) += snd-acp-config.o > -obj-$(CONFIG_SND_SOC_AMD_RPL_ACP6x) += rpl/ > obj-$(CONFIG_SND_SOC_AMD_PS) += ps/ > diff --git a/sound/soc/amd/rpl/Makefile b/sound/soc/amd/rpl/Makefile > deleted file mode 100644 > index a3825c5be4e7..000000000000 > --- a/sound/soc/amd/rpl/Makefile > +++ /dev/null > @@ -1,5 +0,0 @@ > -# SPDX-License-Identifier: GPL-2.0+ > -# RPL platform Support > -snd-rpl-pci-acp6x-y := rpl-pci-acp6x.o > - > -obj-$(CONFIG_SND_SOC_AMD_RPL_ACP6x) += snd-rpl-pci-acp6x.o > diff --git a/sound/soc/amd/rpl/rpl-pci-acp6x.c b/sound/soc/amd/rpl/rpl-pci-acp6x.c > deleted file mode 100644 > index e3afe9172bdf..000000000000 > --- a/sound/soc/amd/rpl/rpl-pci-acp6x.c > +++ /dev/null > @@ -1,227 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0+ > -/* > - * AMD RPL ACP PCI Driver > - * > - * Copyright 2022 Advanced Micro Devices, Inc. > - */ > - > -#include <linux/pci.h> > -#include <linux/module.h> > -#include <linux/io.h> > -#include <linux/delay.h> > -#include <linux/platform_device.h> > -#include <linux/pm_runtime.h> > - > -#include "rpl_acp6x.h" > - > -struct rpl_dev_data { > - void __iomem *acp6x_base; > -}; > - > -static int rpl_power_on(void __iomem *acp_base) > -{ > - u32 val; > - int timeout; > - > - val = rpl_acp_readl(acp_base + ACP_PGFSM_STATUS); > - > - if (!val) > - return val; > - > - if ((val & ACP_PGFSM_STATUS_MASK) != ACP_POWER_ON_IN_PROGRESS) > - rpl_acp_writel(ACP_PGFSM_CNTL_POWER_ON_MASK, acp_base + ACP_PGFSM_CONTROL); > - timeout = 0; > - while (++timeout < 500) { > - val = rpl_acp_readl(acp_base + ACP_PGFSM_STATUS); > - if (!val) > - return 0; > - udelay(1); > - } > - return -ETIMEDOUT; > -} > - > -static int rpl_reset(void __iomem *acp_base) > -{ > - u32 val; > - int timeout; > - > - rpl_acp_writel(1, acp_base + ACP_SOFT_RESET); > - timeout = 0; > - while (++timeout < 500) { > - val = rpl_acp_readl(acp_base + ACP_SOFT_RESET); > - if (val & ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK) > - break; > - cpu_relax(); > - } > - rpl_acp_writel(0, acp_base + ACP_SOFT_RESET); > - timeout = 0; > - while (++timeout < 500) { > - val = rpl_acp_readl(acp_base + ACP_SOFT_RESET); > - if (!val) > - return 0; > - cpu_relax(); > - } > - return -ETIMEDOUT; > -} > - > -static int rpl_init(void __iomem *acp_base) > -{ > - int ret; > - > - /* power on */ > - ret = rpl_power_on(acp_base); > - if (ret) { > - pr_err("ACP power on failed\n"); > - return ret; > - } > - rpl_acp_writel(0x01, acp_base + ACP_CONTROL); > - /* Reset */ > - ret = rpl_reset(acp_base); > - if (ret) { > - pr_err("ACP reset failed\n"); > - return ret; > - } > - rpl_acp_writel(0x03, acp_base + ACP_CLKMUX_SEL); > - return 0; > -} > - > -static int rpl_deinit(void __iomem *acp_base) > -{ > - int ret; > - > - /* Reset */ > - ret = rpl_reset(acp_base); > - if (ret) { > - pr_err("ACP reset failed\n"); > - return ret; > - } > - rpl_acp_writel(0x00, acp_base + ACP_CLKMUX_SEL); > - rpl_acp_writel(0x00, acp_base + ACP_CONTROL); > - return 0; > -} > - > -static int snd_rpl_probe(struct pci_dev *pci, > - const struct pci_device_id *pci_id) > -{ > - struct rpl_dev_data *adata; > - u32 addr; > - int ret; > - > - /* RPL device check */ > - switch (pci->revision) { > - case 0x62: > - break; > - default: > - dev_dbg(&pci->dev, "acp6x pci device not found\n"); > - return -ENODEV; > - } > - if (pci_enable_device(pci)) { > - dev_err(&pci->dev, "pci_enable_device failed\n"); > - return -ENODEV; > - } > - > - ret = pci_request_regions(pci, "AMD ACP6x audio"); > - if (ret < 0) { > - dev_err(&pci->dev, "pci_request_regions failed\n"); > - goto disable_pci; > - } > - > - adata = devm_kzalloc(&pci->dev, sizeof(struct rpl_dev_data), > - GFP_KERNEL); > - if (!adata) { > - ret = -ENOMEM; > - goto release_regions; > - } > - > - addr = pci_resource_start(pci, 0); > - adata->acp6x_base = devm_ioremap(&pci->dev, addr, > - pci_resource_len(pci, 0)); > - if (!adata->acp6x_base) { > - ret = -ENOMEM; > - goto release_regions; > - } > - pci_set_master(pci); > - pci_set_drvdata(pci, adata); > - ret = rpl_init(adata->acp6x_base); > - if (ret) > - goto release_regions; > - pm_runtime_set_autosuspend_delay(&pci->dev, ACP_SUSPEND_DELAY_MS); > - pm_runtime_use_autosuspend(&pci->dev); > - pm_runtime_put_noidle(&pci->dev); > - pm_runtime_allow(&pci->dev); > - > - return 0; > -release_regions: > - pci_release_regions(pci); > -disable_pci: > - pci_disable_device(pci); > - > - return ret; > -} > - > -static int snd_rpl_suspend(struct device *dev) > -{ > - struct rpl_dev_data *adata; > - int ret; > - > - adata = dev_get_drvdata(dev); > - ret = rpl_deinit(adata->acp6x_base); > - if (ret) > - dev_err(dev, "ACP de-init failed\n"); > - return ret; > -} > - > -static int snd_rpl_resume(struct device *dev) > -{ > - struct rpl_dev_data *adata; > - int ret; > - > - adata = dev_get_drvdata(dev); > - ret = rpl_init(adata->acp6x_base); > - if (ret) > - dev_err(dev, "ACP init failed\n"); > - return ret; > -} > - > -static const struct dev_pm_ops rpl_pm = { > - RUNTIME_PM_OPS(snd_rpl_suspend, snd_rpl_resume, NULL) > - SYSTEM_SLEEP_PM_OPS(snd_rpl_suspend, snd_rpl_resume) > -}; > - > -static void snd_rpl_remove(struct pci_dev *pci) > -{ > - struct rpl_dev_data *adata; > - int ret; > - > - adata = pci_get_drvdata(pci); > - ret = rpl_deinit(adata->acp6x_base); > - if (ret) > - dev_err(&pci->dev, "ACP de-init failed\n"); > - pm_runtime_forbid(&pci->dev); > - pm_runtime_get_noresume(&pci->dev); > - pci_release_regions(pci); > - pci_disable_device(pci); > -} > - > -static const struct pci_device_id snd_rpl_ids[] = { > - { PCI_DEVICE(PCI_VENDOR_ID_AMD, ACP_DEVICE_ID), > - .class = PCI_CLASS_MULTIMEDIA_OTHER << 8, > - .class_mask = 0xffffff }, > - { 0, }, > -}; > -MODULE_DEVICE_TABLE(pci, snd_rpl_ids); > - > -static struct pci_driver rpl_acp6x_driver = { > - .name = KBUILD_MODNAME, > - .id_table = snd_rpl_ids, > - .probe = snd_rpl_probe, > - .remove = snd_rpl_remove, > - .driver = { > - .pm = pm_ptr(&rpl_pm), > - } > -}; > - > -module_pci_driver(rpl_acp6x_driver); > - > -MODULE_DESCRIPTION("AMD ACP RPL PCI driver"); > -MODULE_LICENSE("GPL v2"); > diff --git a/sound/soc/amd/rpl/rpl_acp6x.h b/sound/soc/amd/rpl/rpl_acp6x.h > deleted file mode 100644 > index f5816a33632e..000000000000 > --- a/sound/soc/amd/rpl/rpl_acp6x.h > +++ /dev/null > @@ -1,36 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0+ */ > -/* > - * AMD ACP Driver > - * > - * Copyright (C) 2021 Advanced Micro Devices, Inc. All rights reserved. > - */ > - > -#include "rpl_acp6x_chip_offset_byte.h" > - > -#define ACP_DEVICE_ID 0x15E2 > -#define ACP6x_PHY_BASE_ADDRESS 0x1240000 > - > -#define ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK 0x00010001 > -#define ACP_PGFSM_CNTL_POWER_ON_MASK 1 > -#define ACP_PGFSM_CNTL_POWER_OFF_MASK 0 > -#define ACP_PGFSM_STATUS_MASK 3 > -#define ACP_POWERED_ON 0 > -#define ACP_POWER_ON_IN_PROGRESS 1 > -#define ACP_POWERED_OFF 2 > -#define ACP_POWER_OFF_IN_PROGRESS 3 > - > -#define DELAY_US 5 > -#define ACP_COUNTER 20000 > - > -/* time in ms for runtime suspend delay */ > -#define ACP_SUSPEND_DELAY_MS 2000 > - > -static inline u32 rpl_acp_readl(void __iomem *base_addr) > -{ > - return readl(base_addr - ACP6x_PHY_BASE_ADDRESS); > -} > - > -static inline void rpl_acp_writel(u32 val, void __iomem *base_addr) > -{ > - writel(val, base_addr - ACP6x_PHY_BASE_ADDRESS); > -} > diff --git a/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h b/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h > deleted file mode 100644 > index 456498f5396d..000000000000 > --- a/sound/soc/amd/rpl/rpl_acp6x_chip_offset_byte.h > +++ /dev/null > @@ -1,30 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0+ */ > -/* > - * AMD ACP 6.2 Register Documentation > - * > - * Copyright 2022 Advanced Micro Devices, Inc. > - */ > - > -#ifndef _rpl_acp6x_OFFSET_HEADER > -#define _rpl_acp6x_OFFSET_HEADER > - > -/* Registers from ACP_CLKRST block */ > -#define ACP_SOFT_RESET 0x1241000 > -#define ACP_CONTROL 0x1241004 > -#define ACP_STATUS 0x1241008 > -#define ACP_DYNAMIC_CG_MASTER_CONTROL 0x1241010 > -#define ACP_PGFSM_CONTROL 0x124101C > -#define ACP_PGFSM_STATUS 0x1241020 > -#define ACP_CLKMUX_SEL 0x1241024 > - > -/* Registers from ACP_AON block */ > -#define ACP_PME_EN 0x1241400 > -#define ACP_DEVICE_STATE 0x1241404 > -#define AZ_DEVICE_STATE 0x1241408 > -#define ACP_PIN_CONFIG 0x1241440 > -#define ACP_PAD_PULLUP_CTRL 0x1241444 > -#define ACP_PAD_PULLDOWN_CTRL 0x1241448 > -#define ACP_PAD_DRIVE_STRENGTH_CTRL 0x124144C > -#define ACP_PAD_SCHMEN_CTRL 0x1241450 > - > -#endif ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 2026-02-13 0:42 [PATCH v5 0/3] ASoC: Add DMIC support for the AMD RPL platform Mingyou Chen 2026-02-13 0:42 ` [PATCH v5 1/3] " Mingyou Chen 2026-02-13 0:42 ` [PATCH v5 2/3] ASoC: Drop RPL driver Mingyou Chen @ 2026-02-13 0:42 ` Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org) 2 siblings, 1 reply; 7+ messages in thread From: Mingyou Chen @ 2026-02-13 0:42 UTC (permalink / raw) To: vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, mario.limonciello, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel, Mingyou Chen The Lecoo Bellator N176 requires a specific quirk to enable the DMIC support. Signed-off-by: Mingyou Chen <qby140326@gmail.com> --- sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 0294177acc66..de49c812124a 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -45,6 +45,13 @@ static struct snd_soc_card acp6x_card = { }; static const struct dmi_system_id yc_acp_quirk_table[] = { + { + .driver_data = &acp6x_card, + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Lecoo"), + DMI_MATCH(DMI_PRODUCT_NAME, "Bellator N176"), + } + }, { .driver_data = &acp6x_card, .matches = { -- 2.51.2 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 2026-02-13 0:42 ` [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 Mingyou Chen @ 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org) 0 siblings, 0 replies; 7+ messages in thread From: Mario Limonciello (AMD) (kernel.org) @ 2026-02-13 3:25 UTC (permalink / raw) To: Mingyou Chen, vijendar.mukunda Cc: broonie, lgirdwood, perex, tiwai, venkataprasad.potturu, Sunil-kumar.Dommati, linux-sound, linux-kernel On 2/12/2026 6:42 PM, Mingyou Chen wrote: > The Lecoo Bellator N176 requires a specific quirk to enable the DMIC > support. > > Signed-off-by: Mingyou Chen <qby140326@gmail.com> Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> > --- > sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c > index 0294177acc66..de49c812124a 100644 > --- a/sound/soc/amd/yc/acp6x-mach.c > +++ b/sound/soc/amd/yc/acp6x-mach.c > @@ -45,6 +45,13 @@ static struct snd_soc_card acp6x_card = { > }; > > static const struct dmi_system_id yc_acp_quirk_table[] = { > + { > + .driver_data = &acp6x_card, > + .matches = { > + DMI_MATCH(DMI_BOARD_VENDOR, "Lecoo"), > + DMI_MATCH(DMI_PRODUCT_NAME, "Bellator N176"), > + } > + }, > { > .driver_data = &acp6x_card, > .matches = { ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-02-13 3:25 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-02-13 0:42 [PATCH v5 0/3] ASoC: Add DMIC support for the AMD RPL platform Mingyou Chen 2026-02-13 0:42 ` [PATCH v5 1/3] " Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello 2026-02-13 0:42 ` [PATCH v5 2/3] ASoC: Drop RPL driver Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org) 2026-02-13 0:42 ` [PATCH v5 3/3] ASoC: Add quirk for Lecoo Bellator N176 Mingyou Chen 2026-02-13 3:25 ` Mario Limonciello (AMD) (kernel.org)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®