mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
ASoC: SOF: Intel: hda-loader: do not wait for HDaudio IOC
Commit9ee3f0d8c9
("ASOC: SOF: Intel: hda-loader: only wait for HDaudio IOC for IPC4 devices") removed DMA wait for IPC3 case. Proceed and remove the wait for IPC4 devices as well. There is no dependency to IPC version in the load logic and checking the firmware status is a sufficient check in case of errors. The removed code also had a bug in that -ETIMEDOUT is returned without stopping the DMA transfer. Cc: stable@vger.kernel.org Link: https://github.com/thesofproject/linux/issues/5135 Fixes:9ee3f0d8c9
("ASOC: SOF: Intel: hda-loader: only wait for HDaudio IOC for IPC4 devices") Suggested-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://patch.msgid.link/20241008060710.15409-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
494ddacd4a
commit
9814c1447f
@ -294,14 +294,9 @@ int hda_cl_copy_fw(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_stream
|
||||
{
|
||||
struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
|
||||
const struct sof_intel_dsp_desc *chip = hda->desc;
|
||||
struct sof_intel_hda_stream *hda_stream;
|
||||
unsigned long time_left;
|
||||
unsigned int reg;
|
||||
int ret, status;
|
||||
|
||||
hda_stream = container_of(hext_stream, struct sof_intel_hda_stream,
|
||||
hext_stream);
|
||||
|
||||
dev_dbg(sdev->dev, "Code loader DMA starting\n");
|
||||
|
||||
ret = hda_cl_trigger(sdev->dev, hext_stream, SNDRV_PCM_TRIGGER_START);
|
||||
@ -310,18 +305,6 @@ int hda_cl_copy_fw(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_stream
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) {
|
||||
/* Wait for completion of transfer */
|
||||
time_left = wait_for_completion_timeout(&hda_stream->ioc,
|
||||
msecs_to_jiffies(HDA_CL_DMA_IOC_TIMEOUT_MS));
|
||||
|
||||
if (!time_left) {
|
||||
dev_err(sdev->dev, "Code loader DMA did not complete\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
dev_dbg(sdev->dev, "Code loader DMA done\n");
|
||||
}
|
||||
|
||||
dev_dbg(sdev->dev, "waiting for FW_ENTERED status\n");
|
||||
|
||||
status = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_BAR,
|
||||
|
Loading…
Reference in New Issue
Block a user