summary refs log tree commit diff
path: root/sound/soc
diff options
context:
space:
mode:
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>2023-07-19 15:36:07 +0530
committerPierre-Loup A. Griffais <pgriffais@valvesoftware.com>2023-11-02 16:07:51 -0700
commitea424444918ec37b61ea6147a8e930e8b8176f45 (patch)
tree5ad604f074dd003f208275e3a96606b67e721771 /sound/soc
parentf5672c8db1adbf5b54da058d32a2c4a27d6f1807 (diff)
downloadlinux-ea424444918ec37b61ea6147a8e930e8b8176f45.tar.gz
ASoC: SOF: amd: enable ACP external global interrupt
Previously ACP SOF firmware used to enable the ACP external
global interrupt register.
This will restrict to report ACP host interrupts only after
firmware loading is successful.
This register needs to be set from host driver to handle
other ACP interrupts(SoundWire Interrupts) before loading
the ACP firmware.

Add field for external interrupt enable register in acp descriptor
structure and enable the external interrupt enable register.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/sof/amd/acp.c3
-rw-r--r--sound/soc/sof/amd/acp.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c
index a784291a4fd1..e11e07a4d102 100644
--- a/sound/soc/sof/amd/acp.c
+++ b/sound/soc/sof/amd/acp.c
@@ -424,6 +424,9 @@ static int acp_reset(struct snd_sof_dev *sdev)
 		dev_err(sdev->dev, "timeout in releasing reset\n");
 
 	snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->acp_clkmux_sel, ACP_CLOCK_ACLK);
+	if (desc->ext_intr_enb)
+		snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->ext_intr_enb, 0x01);
+
 	return ret;
 }
 
diff --git a/sound/soc/sof/amd/acp.h b/sound/soc/sof/amd/acp.h
index e15a92a88d12..cd9df31bbed8 100644
--- a/sound/soc/sof/amd/acp.h
+++ b/sound/soc/sof/amd/acp.h
@@ -174,6 +174,7 @@ struct sof_amd_acp_desc {
 	const char *name;
 	unsigned int host_bridge_id;
 	u32 pgfsm_base;
+	u32 ext_intr_enb;
 	u32 ext_intr_stat;
 	u32 dsp_intr_base;
 	u32 sram_pte_offset;