diff options
Diffstat (limited to 'sound/soc/sof/intel/hda-loader.c')
| -rw-r--r-- | sound/soc/sof/intel/hda-loader.c | 20 | 
1 files changed, 12 insertions, 8 deletions
| diff --git a/sound/soc/sof/intel/hda-loader.c b/sound/soc/sof/intel/hda-loader.c index b8b914eaf7e0..75f6240cf3e1 100644 --- a/sound/soc/sof/intel/hda-loader.c +++ b/sound/soc/sof/intel/hda-loader.c @@ -310,15 +310,19 @@ int hda_cl_copy_fw(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_stream  		return ret;  	} -	/* 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; +	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, "Code loader DMA done, waiting for FW_ENTERED status\n"); + +	dev_dbg(sdev->dev, "waiting for FW_ENTERED status\n");  	status = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_BAR,  					chip->rom_status_reg, reg, |