ASoC: SOF: ipc4: Stop using the query_fw_configuration fw_loader ops
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Thu, 20 Oct 2022 12:12:36 +0000 (15:12 +0300)
committerMark Brown <broonie@kernel.org>
Fri, 21 Oct 2022 12:05:09 +0000 (13:05 +0100)
Execute the configuration query from the generic post_fw_boot callback and
do not set the query_fw_configuration ops to allow it's removal.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Chao Song <chao.song@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20221020121238.18339-18-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4-loader.c
sound/soc/sof/ipc4-priv.h
sound/soc/sof/ipc4.c

index b7e8b3f..dbe3ee4 100644 (file)
@@ -202,7 +202,7 @@ static int sof_ipc4_validate_firmware(struct snd_sof_dev *sdev)
        return 0;
 }
 
-static int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev)
+int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev)
 {
        struct sof_ipc4_fw_data *ipc4_data = sdev->private;
        const struct sof_ipc_ops *iops = sdev->ipc->ops;
@@ -273,5 +273,4 @@ out:
 const struct sof_ipc_fw_loader_ops ipc4_loader_ops = {
        .validate = sof_ipc4_validate_firmware,
        .parse_ext_manifest = sof_ipc4_fw_parse_basefw_ext_man,
-       .query_fw_configuration = sof_ipc4_query_fw_configuration,
 };
index 7e7115a..e4bd6d9 100644 (file)
@@ -90,6 +90,7 @@ extern const struct sof_ipc_fw_tracing_ops ipc4_mtrace_ops;
 int sof_ipc4_set_pipeline_state(struct snd_sof_dev *sdev, u32 id, u32 state);
 int sof_ipc4_mtrace_update_pos(struct snd_sof_dev *sdev, int core);
 
+int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev);
 struct sof_ipc4_fw_module *sof_ipc4_find_module_by_uuid(struct snd_sof_dev *sdev,
                                                        const guid_t *uuid);
 #endif
index abbeb83..f1e5875 100644 (file)
@@ -687,9 +687,18 @@ static void sof_ipc4_exit(struct snd_sof_dev *sdev)
        xa_destroy(&ipc4_data->fw_lib_xa);
 }
 
+static int sof_ipc4_post_boot(struct snd_sof_dev *sdev)
+{
+       if (sdev->first_boot)
+               return sof_ipc4_query_fw_configuration(sdev);
+
+       return 0;
+}
+
 const struct sof_ipc_ops ipc4_ops = {
        .init = sof_ipc4_init,
        .exit = sof_ipc4_exit,
+       .post_fw_boot = sof_ipc4_post_boot,
        .tx_msg = sof_ipc4_tx_msg,
        .rx_msg = sof_ipc4_rx_msg,
        .set_get_data = sof_ipc4_set_get_data,