aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/amd/raven/pci-acp3x.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-05-25 08:58:01 +0200
committerTakashi Iwai <tiwai@suse.de>2021-05-25 08:58:01 +0200
commitdad19afce9ad93dda1a10d08afea71b6dd30f19f (patch)
tree30e4532c8341fbf89680813d2ec2e888ef99bd85 /sound/soc/amd/raven/pci-acp3x.c
parentALSA: usb-audio: scarlett2: snd_scarlett_gen2_controls_create() can be static (diff)
parentASoC: qcom: lpass-cpu: Use optional clk APIs (diff)
downloadlinux-dev-dad19afce9ad93dda1a10d08afea71b6dd30f19f.tar.xz
linux-dev-dad19afce9ad93dda1a10d08afea71b6dd30f19f.zip
Merge tag 'asoc-fix-v5.13-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v5.13 A collection of fixes that have come in since the merge window, mainly device specific things. The fixes to the generic cards from Morimoto-san are handling regressions that were introduced in the merge window on at least the Kontron sl28-var3-ads2.
Diffstat (limited to 'sound/soc/amd/raven/pci-acp3x.c')
-rw-r--r--sound/soc/amd/raven/pci-acp3x.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sound/soc/amd/raven/pci-acp3x.c b/sound/soc/amd/raven/pci-acp3x.c
index d3536fd6a124..a013a607b3d4 100644
--- a/sound/soc/amd/raven/pci-acp3x.c
+++ b/sound/soc/amd/raven/pci-acp3x.c
@@ -76,6 +76,19 @@ static int acp3x_reset(void __iomem *acp3x_base)
return -ETIMEDOUT;
}
+static void acp3x_enable_interrupts(void __iomem *acp_base)
+{
+ rv_writel(0x01, acp_base + mmACP_EXTERNAL_INTR_ENB);
+}
+
+static void acp3x_disable_interrupts(void __iomem *acp_base)
+{
+ rv_writel(ACP_EXT_INTR_STAT_CLEAR_MASK, acp_base +
+ mmACP_EXTERNAL_INTR_STAT);
+ rv_writel(0x00, acp_base + mmACP_EXTERNAL_INTR_CNTL);
+ rv_writel(0x00, acp_base + mmACP_EXTERNAL_INTR_ENB);
+}
+
static int acp3x_init(struct acp3x_dev_data *adata)
{
void __iomem *acp3x_base = adata->acp3x_base;
@@ -93,6 +106,7 @@ static int acp3x_init(struct acp3x_dev_data *adata)
pr_err("ACP3x reset failed\n");
return ret;
}
+ acp3x_enable_interrupts(acp3x_base);
return 0;
}
@@ -100,6 +114,7 @@ static int acp3x_deinit(void __iomem *acp3x_base)
{
int ret;
+ acp3x_disable_interrupts(acp3x_base);
/* Reset */
ret = acp3x_reset(acp3x_base);
if (ret) {