ASoC: SOF: Intel: remove unnecessary waitq before loading firmware
The HDA_DSP_IPC_PURGE_FW IPC from ROM is already handled in cl_dsp_init(), and it will never be received in the IRQ thread, so the wait condition on this IPC will never be satisfied. The wait before loading firmware is redundant and can be removed safely. Signed-off-by: Amery Song <chao.song@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Keyon Jie <yang.jie@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Pierre Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Link: https://lore.kernel.org/r/20200312200622.24477-6-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
9b65b2a80e
Коммит
828c2f7871
|
@ -65,11 +65,6 @@ static irqreturn_t cnl_ipc_irq_thread(int irq, void *context)
|
|||
hda_dsp_ipc_get_reply(sdev);
|
||||
snd_sof_ipc_reply(sdev, msg);
|
||||
|
||||
if (sdev->code_loading) {
|
||||
sdev->code_loading = 0;
|
||||
wake_up(&sdev->waitq);
|
||||
}
|
||||
|
||||
cnl_ipc_dsp_done(sdev);
|
||||
|
||||
spin_unlock_irq(&sdev->ipc_lock);
|
||||
|
|
|
@ -174,12 +174,6 @@ irqreturn_t hda_dsp_ipc_irq_thread(int irq, void *context)
|
|||
hda_dsp_ipc_get_reply(sdev);
|
||||
snd_sof_ipc_reply(sdev, msg);
|
||||
|
||||
/* wake up sleeper if we are loading code */
|
||||
if (sdev->code_loading) {
|
||||
sdev->code_loading = 0;
|
||||
wake_up(&sdev->waitq);
|
||||
}
|
||||
|
||||
/* set the done bit */
|
||||
hda_dsp_ipc_dsp_done(sdev);
|
||||
|
||||
|
|
|
@ -179,9 +179,6 @@ static int cl_trigger(struct snd_sof_dev *sdev,
|
|||
/* code loader is special case that reuses stream ops */
|
||||
switch (cmd) {
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
wait_event_timeout(sdev->waitq, !sdev->code_loading,
|
||||
HDA_DSP_CL_TRIGGER_TIMEOUT);
|
||||
|
||||
snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
|
||||
1 << hstream->index,
|
||||
1 << hstream->index);
|
||||
|
|
|
@ -585,9 +585,6 @@ int hda_dsp_probe(struct snd_sof_dev *sdev)
|
|||
hda_dsp_ctrl_ppcap_enable(sdev, true);
|
||||
hda_dsp_ctrl_ppcap_int_enable(sdev, true);
|
||||
|
||||
/* initialize waitq for code loading */
|
||||
init_waitqueue_head(&sdev->waitq);
|
||||
|
||||
/* set default mailbox offset for FW ready message */
|
||||
sdev->dsp_box.offset = HDA_DSP_MBOX_UPLINK_OFFSET;
|
||||
|
||||
|
|
|
@ -175,7 +175,6 @@
|
|||
* value cannot be read back within the specified time.
|
||||
*/
|
||||
#define HDA_DSP_STREAM_RUN_TIMEOUT 300
|
||||
#define HDA_DSP_CL_TRIGGER_TIMEOUT 300
|
||||
|
||||
#define HDA_DSP_SPIB_ENABLE 1
|
||||
#define HDA_DSP_SPIB_DISABLE 0
|
||||
|
|
|
@ -466,9 +466,6 @@ int snd_sof_load_firmware_raw(struct snd_sof_dev *sdev)
|
|||
const char *fw_filename;
|
||||
int ret;
|
||||
|
||||
/* set code loading condition to true */
|
||||
sdev->code_loading = 1;
|
||||
|
||||
/* Don't request firmware again if firmware is already requested */
|
||||
if (plat_data->fw)
|
||||
return 0;
|
||||
|
|
|
@ -421,10 +421,6 @@ struct snd_sof_dev {
|
|||
int ipc_timeout;
|
||||
int boot_timeout;
|
||||
|
||||
/* Wait queue for code loading */
|
||||
wait_queue_head_t waitq;
|
||||
int code_loading;
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_PROBES)
|
||||
unsigned int extractor_stream_tag;
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче