ASoC: SOF: Intel: hda-loader: clear the IPC ack bit after FW_PURGE done
authorKeyon Jie <yang.jie@linux.intel.com>
Fri, 28 Feb 2020 23:18:49 +0000 (17:18 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 2 Mar 2020 14:13:49 +0000 (14:13 +0000)
Set DONE bit after the FW_PURGE IPC is polled successfully, to clear the
interrupt and avoid the arrival of the confusing unexpected ipc.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Link: https://lore.kernel.org/r/20200228231850.9226-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-loader.c

index 8852184a25690577b4b6a352855a5ede3ca3744f..03b05d7f66da3df2e316fcf6fecdf6a50094e17d 100644 (file)
@@ -131,6 +131,12 @@ static int cl_dsp_init(struct snd_sof_dev *sdev, const void *fwdata,
                goto err;
        }
 
+       /* set DONE bit to clear the reply IPC message */
+       snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR,
+                                      chip->ipc_ack,
+                                      chip->ipc_ack_mask,
+                                      chip->ipc_ack_mask);
+
        /* step 5: power down corex */
        ret = hda_dsp_core_power_down(sdev,
                                  chip->cores_mask & ~(HDA_DSP_CORE_MASK(0)));