]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: amd: acp: add machine driver changes for ACP7.0 and ACP7.1 platforms
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Fri, 7 Feb 2025 06:28:15 +0000 (11:58 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 7 Feb 2025 13:33:57 +0000 (13:33 +0000)
Add SoundWire generic machine driver changes for legacy stack(No DSP) for
ACP7.0 and ACP7.1 platforms.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://patch.msgid.link/20250207062819.1527184-22-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/acp/acp-sdw-legacy-mach.c
sound/soc/amd/acp/acp-sdw-mach-common.c
sound/soc/amd/acp/soc_amd_sdw_common.h

index 9280cd30d19cf2ac454f91b7efeae53fad3bd598..00aeea70f04e9bde3fc7f8ffc2a5b982b6d6eda9 100644 (file)
@@ -122,6 +122,13 @@ static int create_sdw_dailink(struct snd_soc_card *card,
                        if (ret)
                                return ret;
                        break;
+               case ACP70_PCI_REV:
+               case ACP71_PCI_REV:
+                       ret = get_acp70_cpu_pin_id(ffs(soc_end->link_mask - 1),
+                                                  *be_id, &cpu_pin_id, dev);
+                       if (ret)
+                               return ret;
+                       break;
                default:
                        return -EINVAL;
                }
@@ -221,6 +228,8 @@ static int create_sdw_dailinks(struct snd_soc_card *card,
 
        switch (amd_ctx->acp_rev) {
        case ACP63_PCI_REV:
+       case ACP70_PCI_REV:
+       case ACP71_PCI_REV:
                sdw_platform_component->name = "amd_ps_sdw_dma.0";
                break;
        default:
@@ -266,6 +275,8 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
 
        switch (amd_ctx->acp_rev) {
        case ACP63_PCI_REV:
+       case ACP70_PCI_REV:
+       case ACP71_PCI_REV:
                pdm_cpu->name = "acp_ps_pdm_dma.0";
                pdm_platform->name = "acp_ps_pdm_dma.0";
                break;
index 6f5c39ed1a18d4fd8befd2539b02d644429714de..e5f394dc2f4c02595b6ffc8ddbfd56f6489b2cfb 100644 (file)
@@ -59,6 +59,40 @@ int get_acp63_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct dev
 }
 EXPORT_SYMBOL_NS_GPL(get_acp63_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
 
+int get_acp70_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev)
+{
+       switch (sdw_link_id) {
+       case AMD_SDW0:
+       case AMD_SDW1:
+               switch (be_id) {
+               case SOC_SDW_JACK_OUT_DAI_ID:
+                       *cpu_pin_id = ACP70_SW_AUDIO0_TX;
+                       break;
+               case SOC_SDW_JACK_IN_DAI_ID:
+                       *cpu_pin_id = ACP70_SW_AUDIO0_RX;
+                       break;
+               case SOC_SDW_AMP_OUT_DAI_ID:
+                       *cpu_pin_id = ACP70_SW_AUDIO1_TX;
+                       break;
+               case SOC_SDW_AMP_IN_DAI_ID:
+                       *cpu_pin_id = ACP70_SW_AUDIO1_RX;
+                       break;
+               case SOC_SDW_DMIC_DAI_ID:
+                       *cpu_pin_id = ACP70_SW_AUDIO2_RX;
+                       break;
+               default:
+                       dev_err(dev, "Invalid be id:%d\n", be_id);
+                       return -EINVAL;
+               }
+               break;
+       default:
+               return -EINVAL;
+       }
+       dev_dbg(dev, "sdw_link_id:%d, be_id:%d, cpu_pin_id:%d\n", sdw_link_id, be_id, *cpu_pin_id);
+       return 0;
+}
+EXPORT_SYMBOL_NS_GPL(get_acp70_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
+
 MODULE_DESCRIPTION("AMD SoundWire Common Machine driver");
 MODULE_AUTHOR("Vijendar Mukunda <Vijendar.Mukunda@amd.com>");
 MODULE_LICENSE("GPL");
index b7bae107c13e4f395ca9b2a1caf334317b45bf18..9bedccfe25a9b80b4d1b764404c1f853708633a1 100644 (file)
@@ -19,6 +19,8 @@
 
 #define AMD_SDW_MAX_GROUPS             9
 #define ACP63_PCI_REV                  0x63
+#define ACP70_PCI_REV                  0x70
+#define ACP71_PCI_REV                  0x71
 #define SOC_JACK_JDSRC(quirk)          ((quirk) & GENMASK(3, 0))
 #define ASOC_SDW_FOUR_SPK              BIT(4)
 #define ASOC_SDW_ACP_DMIC              BIT(5)
 
 #define ACP_DMIC_BE_ID         4
 
+#define ACP70_SW_AUDIO0_TX     0
+#define ACP70_SW_AUDIO1_TX     1
+#define ACP70_SW_AUDIO2_TX     2
+
+#define ACP70_SW_AUDIO0_RX     3
+#define ACP70_SW_AUDIO1_RX     4
+#define ACP70_SW_AUDIO2_RX     5
+
 struct amd_mc_ctx {
        unsigned int acp_rev;
        unsigned int max_sdw_links;
 };
 
 int get_acp63_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev);
+int get_acp70_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev);
 
 #endif