ASoC: SOF: ipc4-loader: get max pipeline number
authorBard Liao <yung-chuan.liao@linux.intel.com>
Tue, 8 Nov 2022 00:29:09 +0000 (08:29 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 9 Nov 2022 13:44:18 +0000 (13:44 +0000)
Get max pipeline number from firmware configuration.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20221108002910.2819709-3-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4-loader.c
sound/soc/sof/ipc4-priv.h

index 7021967..1321acc 100644 (file)
@@ -383,6 +383,17 @@ int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev)
                        if (!ipc4_data->max_libs_count)
                                ipc4_data->max_libs_count = 1;
                        break;
+               case SOF_IPC4_FW_CFG_MAX_PPL_COUNT:
+                       ipc4_data->max_num_pipelines = *tuple->value;
+                       trace_sof_ipc4_fw_config(sdev, "Max PPL count %d",
+                                                ipc4_data->max_num_pipelines);
+                       if (ipc4_data->max_num_pipelines <= 0) {
+                               dev_err(sdev->dev, "Invalid max_num_pipelines %d",
+                                       ipc4_data->max_num_pipelines);
+                               ret = -EINVAL;
+                               goto out;
+                       }
+                       break;
                default:
                        break;
                }
index d6f3500..fc9efdc 100644 (file)
@@ -65,6 +65,7 @@ struct sof_ipc4_fw_library {
  * @nhlt: NHLT table either from the BIOS or the topology manifest
  * @mtrace_type: mtrace type supported on the booted platform
  * @mtrace_log_bytes: log bytes as reported by the firmware via fw_config reply
+ * @max_num_pipelines: max number of pipelines
  * @max_libs_count: Maximum number of libraries support by the FW including the
  *                 base firmware
  *
@@ -76,6 +77,7 @@ struct sof_ipc4_fw_data {
        void *nhlt;
        enum sof_ipc4_mtrace_type mtrace_type;
        u32 mtrace_log_bytes;
+       int max_num_pipelines;
        u32 max_libs_count;
 
        int (*load_library)(struct snd_sof_dev *sdev,