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>
 
        {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"},
 };
 
                        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);
 
                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 */
                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);
 
        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,
 };