* [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 related [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 related [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 related [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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.