ASoC: amd: vg: update acp init and deinit sequence
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Wed, 23 Feb 2022 07:19:35 +0000 (12:49 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 24 Feb 2022 02:04:30 +0000 (02:04 +0000)
As part of ACP programming sequence, ACP_CONTROL and ACP_CLKMUX_SEL
registers should be updated during acp init and de-init sequence.
This patch updates register sequence during ACP init and
deinit.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20220223071959.13539-6-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/vangogh/pci-acp5x.c

index 2b6b9edc36e2906c3c9f820eb2d507e422d92ae8..e0df17c88e8e0491a8f846fc69a963eb3fbb1b5b 100644 (file)
@@ -92,12 +92,14 @@ static int acp5x_init(void __iomem *acp5x_base)
                pr_err("ACP5x power on failed\n");
                return ret;
        }
+       acp_writel(0x01, acp5x_base + ACP_CONTROL);
        /* Reset */
        ret = acp5x_reset(acp5x_base);
        if (ret) {
                pr_err("ACP5x reset failed\n");
                return ret;
        }
+       acp_writel(0x03, acp5x_base + ACP_CLKMUX_SEL);
        acp5x_enable_interrupts(acp5x_base);
        return 0;
 }
@@ -113,6 +115,8 @@ static int acp5x_deinit(void __iomem *acp5x_base)
                pr_err("ACP5x reset failed\n");
                return ret;
        }
+       acp_writel(0x00, acp5x_base + ACP_CLKMUX_SEL);
+       acp_writel(0x00, acp5x_base + ACP_CONTROL);
        return 0;
 }