ASoC: SOF: Introduce new firmware state: SOF_FW_BOOT_READY_OK
The SOF_FW_BOOT_READY_OK fw_state indicates that the boot ready message has been received and there were no errors found. The SOF_FW_BOOT_COMPLETE state will be reached after the snd_sof_dsp_post_fw_run() completes without error. Signed-off-by: Peter 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> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com> Link: https://lore.kernel.org/r/20211223113628.18582-9-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
4e1f864821
commit
b2e9eb3adb
@@ -938,6 +938,7 @@ static const struct soc_fw_state_info {
|
||||
{SOF_FW_BOOT_IN_PROGRESS, "SOF_FW_BOOT_IN_PROGRESS"},
|
||||
{SOF_FW_BOOT_FAILED, "SOF_FW_BOOT_FAILED"},
|
||||
{SOF_FW_BOOT_READY_FAILED, "SOF_FW_BOOT_READY_FAILED"},
|
||||
{SOF_FW_BOOT_READY_OK, "SOF_FW_BOOT_READY_OK"},
|
||||
{SOF_FW_BOOT_COMPLETE, "SOF_FW_BOOT_COMPLETE"},
|
||||
{SOF_FW_CRASHED, "SOF_FW_CRASHED"},
|
||||
};
|
||||
|
||||
+1
-1
@@ -536,7 +536,7 @@ void snd_sof_ipc_msgs_rx(struct snd_sof_dev *sdev)
|
||||
if (err < 0)
|
||||
sof_set_fw_state(sdev, SOF_FW_BOOT_READY_FAILED);
|
||||
else
|
||||
sof_set_fw_state(sdev, SOF_FW_BOOT_COMPLETE);
|
||||
sof_set_fw_state(sdev, SOF_FW_BOOT_READY_OK);
|
||||
|
||||
/* wake up firmware loader */
|
||||
wake_up(&sdev->boot_wait);
|
||||
|
||||
@@ -842,9 +842,7 @@ int snd_sof_run_firmware(struct snd_sof_dev *sdev)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (sdev->fw_state == SOF_FW_BOOT_COMPLETE)
|
||||
dev_dbg(sdev->dev, "firmware boot complete\n");
|
||||
else
|
||||
if (sdev->fw_state == SOF_FW_BOOT_READY_FAILED)
|
||||
return -EIO; /* FW boots but fw_ready op failed */
|
||||
|
||||
/* perform post fw run operations */
|
||||
@@ -854,6 +852,9 @@ int snd_sof_run_firmware(struct snd_sof_dev *sdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
dev_dbg(sdev->dev, "firmware boot complete\n");
|
||||
sof_set_fw_state(sdev, SOF_FW_BOOT_COMPLETE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(snd_sof_run_firmware);
|
||||
|
||||
@@ -381,6 +381,7 @@ enum snd_sof_fw_state {
|
||||
SOF_FW_BOOT_IN_PROGRESS,
|
||||
SOF_FW_BOOT_FAILED,
|
||||
SOF_FW_BOOT_READY_FAILED, /* firmware booted but fw_ready op failed */
|
||||
SOF_FW_BOOT_READY_OK,
|
||||
SOF_FW_BOOT_COMPLETE,
|
||||
SOF_FW_CRASHED,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user