]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ASoC: amd: acp: use acp_rev for platform specific conditional checks
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Tue, 24 Sep 2024 06:18:14 +0000 (11:48 +0530)
committerMark Brown <broonie@kernel.org>
Sun, 29 Sep 2024 23:10:36 +0000 (01:10 +0200)
Add 'acp_rev' as a member in machine driver private data structure to
store acp pci revision id. Replace platform specific conditional checks
by using 'acp_rev' variable.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://patch.msgid.link/20240924061821.1127054-3-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/acp/acp-legacy-mach.c
sound/soc/amd/acp/acp-mach-common.c
sound/soc/amd/acp/acp-mach.h
sound/soc/amd/acp/acp-sof-mach.c
sound/soc/amd/acp/acp_common.h [new file with mode: 0644]

index d104f7e8fdcd8f2a2cec8bbc884d13ef637766fd..2a59f7916e15a96ae09e17668380f3c0ac2005d9 100644 (file)
@@ -126,6 +126,7 @@ static int acp_asoc_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = NULL;
        struct device *dev = &pdev->dev;
+       struct snd_soc_acpi_mach *mach = dev_get_platdata(&pdev->dev);
        const struct dmi_system_id *dmi_id;
        struct acp_card_drvdata *acp_card_drvdata;
        int ret;
@@ -173,6 +174,7 @@ static int acp_asoc_probe(struct platform_device *pdev)
        if (!strcmp(pdev->name, "acp-pdm-mach"))
                acp_card_drvdata->platform =  *((int *)dev->platform_data);
 
+       acp_card_drvdata->acp_rev = mach->mach_params.subsystem_rev;
        dmi_id = dmi_first_match(acp_quirk_table);
        if (dmi_id && dmi_id->driver_data)
                acp_card_drvdata->tdm_mode = dmi_id->driver_data;
index d4c7a7b79177f6f9e0c1acd5a521ea1f6e83333a..2394aa061265f6d95e0d1b91b0569e8099aeb9cb 100644 (file)
@@ -1471,7 +1471,7 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
        if (drv_data->amp_cpu_id == I2S_SP) {
                links[i].name = "acp-amp-codec";
                links[i].id = AMP_BE_ID;
-               if (drv_data->platform == RENOIR) {
+               if (drv_data->acp_rev == ACP_RN_PCI_ID) {
                        links[i].cpus = sof_sp;
                        links[i].num_cpus = ARRAY_SIZE(sof_sp);
                } else {
@@ -1647,12 +1647,12 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
                links[i].id = HEADSET_BE_ID;
                links[i].cpus = i2s_hs;
                links[i].num_cpus = ARRAY_SIZE(i2s_hs);
-               switch (drv_data->platform) {
-               case REMBRANDT:
+               switch (drv_data->acp_rev) {
+               case ACP_RMB_PCI_ID:
                        links[i].platforms = platform_rmb_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_rmb_component);
                        break;
-               case ACP63:
+               case ACP63_PCI_ID:
                        links[i].platforms = platform_acp63_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_acp63_component);
                        break;
@@ -1719,12 +1719,12 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
                links[i].id = AMP_BE_ID;
                links[i].cpus = i2s_hs;
                links[i].num_cpus = ARRAY_SIZE(i2s_hs);
-               switch (drv_data->platform) {
-               case REMBRANDT:
+               switch (drv_data->acp_rev) {
+               case ACP_RMB_PCI_ID:
                        links[i].platforms = platform_rmb_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_rmb_component);
                        break;
-               case ACP63:
+               case ACP63_PCI_ID:
                        links[i].platforms = platform_acp63_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_acp63_component);
                        break;
@@ -1770,17 +1770,17 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
                }
                links[i].cpus = pdm_dmic;
                links[i].num_cpus = ARRAY_SIZE(pdm_dmic);
-               switch (drv_data->platform) {
-               case REMBRANDT:
+               switch (drv_data->acp_rev) {
+               case ACP_RMB_PCI_ID:
                        links[i].platforms = platform_rmb_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_rmb_component);
                        break;
-               case ACP63:
+               case ACP63_PCI_ID:
                        links[i].platforms = platform_acp63_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_acp63_component);
                        break;
-               case ACP70:
-               case ACP71:
+               case ACP70_PCI_ID:
+               case ACP71_PCI_ID:
                        links[i].platforms = platform_acp70_component;
                        links[i].num_platforms = ARRAY_SIZE(platform_acp70_component);
                        break;
index 93d9e3886b7ecd7fe93d898d1127f6730a153b4c..2b6b8b3e1b9477a200c9e846e03f3ae6aceb49a8 100644 (file)
@@ -18,6 +18,8 @@
 #include <linux/module.h>
 #include <sound/soc.h>
 
+#include "acp_common.h"
+
 #define TDM_CHANNELS   8
 
 #define ACP_OPS(priv, cb)      ((priv)->ops.cb)
@@ -78,6 +80,7 @@ struct acp_card_drvdata {
        unsigned int dmic_codec_id;
        unsigned int dai_fmt;
        unsigned int platform;
+       unsigned int acp_rev;
        struct clk *wclk;
        struct clk *bclk;
        struct acp_mach_ops ops;
index f36750167fa291d4159bfcb7e2f37b58c920bb50..49aadbadb7e19f930bf9e1125a94ab57aa81bba5 100644 (file)
@@ -94,6 +94,7 @@ static int acp_sof_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = NULL;
        struct device *dev = &pdev->dev;
+       struct snd_soc_acpi_mach *mach = dev_get_platdata(&pdev->dev);
        const struct dmi_system_id *dmi_id;
        struct acp_card_drvdata *acp_card_drvdata;
        int ret;
@@ -116,6 +117,7 @@ static int acp_sof_probe(struct platform_device *pdev)
        if (dmi_id && dmi_id->driver_data)
                acp_card_drvdata->tdm_mode = dmi_id->driver_data;
 
+       acp_card_drvdata->acp_rev = mach->mach_params.subsystem_rev;
        ret = acp_sofdsp_dai_links_create(card);
        if (ret)
                return dev_err_probe(&pdev->dev, ret, "Failed to create DAI links\n");
diff --git a/sound/soc/amd/acp/acp_common.h b/sound/soc/amd/acp/acp_common.h
new file mode 100644 (file)
index 0000000..f1ae880
--- /dev/null
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-only
+ * Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved
+ */
+
+/*
+ * acp_common.h - acp common header file
+ */
+
+#ifndef __ACP_COMMON_H
+#define __ACP_COMMON_H
+
+#define ACP_RN_PCI_ID          0x01
+#define ACP_VANGOGH_PCI_ID     0x50
+#define ACP_RMB_PCI_ID         0x6F
+#define ACP63_PCI_ID           0x63
+#define ACP70_PCI_ID           0x70
+#define ACP71_PCI_ID           0x71
+
+#endif