Unverified Commit 9b9db0d6 authored by Ranjani Sridharan's avatar Ranjani Sridharan Committed by Mark Brown
Browse files

ASoC: SOF: loader: Set complete state before post_fw_run op



Set the FW state to complete right after boot is complete. This enables
sending IPC's in the post_fw_run op. This will be needed to support
reloading 3rd party module libraries after firmware boot.

Signed-off-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarChao Song <chao.song@intel.com>
Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20221020121238.18339-2-peter.ujfalusi@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 05de5cf6
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -165,6 +165,9 @@ int snd_sof_run_firmware(struct snd_sof_dev *sdev)
	if (sdev->fw_state == SOF_FW_BOOT_READY_FAILED)
	if (sdev->fw_state == SOF_FW_BOOT_READY_FAILED)
		return -EIO; /* FW boots but fw_ready op failed */
		return -EIO; /* FW boots but fw_ready op failed */


	dev_dbg(sdev->dev, "firmware boot complete\n");
	sof_set_fw_state(sdev, SOF_FW_BOOT_COMPLETE);

	/* perform post fw run operations */
	/* perform post fw run operations */
	ret = snd_sof_dsp_post_fw_run(sdev);
	ret = snd_sof_dsp_post_fw_run(sdev);
	if (ret < 0) {
	if (ret < 0) {
@@ -172,9 +175,6 @@ int snd_sof_run_firmware(struct snd_sof_dev *sdev)
		return ret;
		return ret;
	}
	}


	dev_dbg(sdev->dev, "firmware boot complete\n");
	sof_set_fw_state(sdev, SOF_FW_BOOT_COMPLETE);

	if (sdev->first_boot && sdev->ipc->ops->fw_loader->query_fw_configuration)
	if (sdev->first_boot && sdev->ipc->ops->fw_loader->query_fw_configuration)
		return sdev->ipc->ops->fw_loader->query_fw_configuration(sdev);
		return sdev->ipc->ops->fw_loader->query_fw_configuration(sdev);