]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/6.6.26/asoc-sof-amd-fix-for-false-dsp-interrupts.patch
Linux 6.1.85
[thirdparty/kernel/stable-queue.git] / releases / 6.6.26 / asoc-sof-amd-fix-for-false-dsp-interrupts.patch
1 From 9befac1d38b6c7745f0be5cb3a0b32a8da771ae8 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Thu, 4 Apr 2024 09:47:13 +0530
4 Subject: ASoC: SOF: amd: fix for false dsp interrupts
5
6 From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
7
8 [ Upstream commit b9846a386734e73a1414950ebfd50f04919f5e24 ]
9
10 Before ACP firmware loading, DSP interrupts are not expected.
11 Sometimes after reboot, it's observed that before ACP firmware is loaded
12 false DSP interrupt is reported.
13 Registering the interrupt handler before acp initialization causing false
14 interrupts sometimes on reboot as ACP reset is not applied.
15 Correct the sequence by invoking acp initialization sequence prior to
16 registering interrupt handler.
17
18 Fixes: 738a2b5e2cc9 ("ASoC: SOF: amd: Add IPC support for ACP IP block")
19 Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
20 Link: https://msgid.link/r/20240404041717.430545-1-Vijendar.Mukunda@amd.com
21 Signed-off-by: Mark Brown <broonie@kernel.org>
22 Signed-off-by: Sasha Levin <sashal@kernel.org>
23 ---
24 sound/soc/sof/amd/acp.c | 8 ++++----
25 1 file changed, 4 insertions(+), 4 deletions(-)
26
27 diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c
28 index 4c54ce212de6a..cc006d7038d97 100644
29 --- a/sound/soc/sof/amd/acp.c
30 +++ b/sound/soc/sof/amd/acp.c
31 @@ -522,6 +522,10 @@ int amd_sof_acp_probe(struct snd_sof_dev *sdev)
32 goto unregister_dev;
33 }
34
35 + ret = acp_init(sdev);
36 + if (ret < 0)
37 + goto free_smn_dev;
38 +
39 sdev->ipc_irq = pci->irq;
40 ret = request_threaded_irq(sdev->ipc_irq, acp_irq_handler, acp_irq_thread,
41 IRQF_SHARED, "AudioDSP", sdev);
42 @@ -531,10 +535,6 @@ int amd_sof_acp_probe(struct snd_sof_dev *sdev)
43 goto free_smn_dev;
44 }
45
46 - ret = acp_init(sdev);
47 - if (ret < 0)
48 - goto free_ipc_irq;
49 -
50 sdev->dsp_box.offset = 0;
51 sdev->dsp_box.size = BOX_SIZE_512;
52
53 --
54 2.43.0
55