OSDN Git Service

ASoC: SOF: Mark snd_sof_dsp_ops.ipc_pcm_params() callback optional
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Thu, 10 Mar 2022 04:27:15 +0000 (20:27 -0800)
committerMark Brown <broonie@kernel.org>
Fri, 11 Mar 2022 13:41:04 +0000 (13:41 +0000)
AMD is only implementing an empty function to pass the required test and
it is going to be deprecated in favor of the IPC agnostic
set_stream_data_offset() callback.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20220310042720.976809-6-ranjani.sridharan@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/core.c
sound/soc/sof/ops.h
sound/soc/sof/sof-priv.h

index 95a845d..9217644 100644 (file)
@@ -361,8 +361,7 @@ int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data)
        if (!sof_ops(sdev) || !sof_ops(sdev)->probe || !sof_ops(sdev)->run ||
            !sof_ops(sdev)->block_read || !sof_ops(sdev)->block_write ||
            !sof_ops(sdev)->send_msg || !sof_ops(sdev)->load_firmware ||
-           !sof_ops(sdev)->ipc_msg_data || !sof_ops(sdev)->ipc_pcm_params ||
-           !sof_ops(sdev)->fw_ready) {
+           !sof_ops(sdev)->ipc_msg_data || !sof_ops(sdev)->fw_ready) {
                dev_err(dev, "error: missing mandatory ops\n");
                return -EINVAL;
        }
index f21d4a7..aeea73e 100644 (file)
@@ -473,7 +473,10 @@ snd_sof_ipc_pcm_params(struct snd_sof_dev *sdev,
                       struct snd_pcm_substream *substream,
                       const struct sof_ipc_pcm_params_reply *reply)
 {
-       return sof_ops(sdev)->ipc_pcm_params(sdev, substream, reply);
+       if (sof_ops(sdev) && sof_ops(sdev)->ipc_pcm_params)
+               return sof_ops(sdev)->ipc_pcm_params(sdev, substream, reply);
+
+       return 0;
 }
 
 /* host side configuration of the stream's data offset in stream mailbox area */
index 08eba51..4b235ce 100644 (file)
@@ -224,7 +224,7 @@ struct snd_sof_dsp_ops {
        /* host configure DSP HW parameters */
        int (*ipc_pcm_params)(struct snd_sof_dev *sdev,
                              struct snd_pcm_substream *substream,
-                             const struct sof_ipc_pcm_params_reply *reply); /* mandatory */
+                             const struct sof_ipc_pcm_params_reply *reply); /* optional */
 
        /* host side configuration of the stream's data offset in stream mailbox area */
        int (*set_stream_data_offset)(struct snd_sof_dev *sdev,