ASoC: SOF: Intel: hda: add hw_params/free/trigger callbacks
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Mon, 7 Aug 2023 21:09:54 +0000 (16:09 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 7 Aug 2023 22:09:44 +0000 (23:09 +0100)
These callbacks are just wrappers to keep the code relatively clean.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Link: https://lore.kernel.org/r/20230807210959.506849-16-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda.c

index 6074b0ca13aaea7c52caf7e181768644cad3f0cf..67b2e00baf4e86e66d6ffb07b21a03d7bc08e511 100644 (file)
@@ -112,6 +112,34 @@ struct sdw_intel_ops sdw_callback = {
        .params_stream = sdw_params_stream,
 };
 
+static int sdw_ace2x_params_stream(struct device *dev,
+                                  struct sdw_intel_stream_params_data *params_data)
+{
+       return sdw_hda_dai_hw_params(params_data->substream,
+                                    params_data->hw_params,
+                                    params_data->dai,
+                                    params_data->link_id);
+}
+
+static int sdw_ace2x_free_stream(struct device *dev,
+                                struct sdw_intel_stream_free_data *free_data)
+{
+       return sdw_hda_dai_hw_free(free_data->substream,
+                                  free_data->dai,
+                                  free_data->link_id);
+}
+
+static int sdw_ace2x_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai)
+{
+       return sdw_hda_dai_trigger(substream, cmd, dai);
+}
+
+static struct sdw_intel_ops sdw_ace2x_callback = {
+       .params_stream = sdw_ace2x_params_stream,
+       .free_stream = sdw_ace2x_free_stream,
+       .trigger = sdw_ace2x_trigger,
+};
+
 void hda_common_enable_sdw_irq(struct snd_sof_dev *sdev, bool enable)
 {
        struct sof_intel_hda_dev *hdev;
@@ -179,6 +207,7 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev)
                res.shim_base = hdev->desc->sdw_shim_base;
                res.alh_base = hdev->desc->sdw_alh_base;
                res.ext = false;
+               res.ops = &sdw_callback;
        } else {
                /*
                 * retrieve eml_lock needed to protect shared registers
@@ -196,11 +225,13 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev)
                 */
                res.hw_ops = &sdw_intel_lnl_hw_ops;
                res.ext = true;
+               res.ops = &sdw_ace2x_callback;
+
        }
        res.irq = sdev->ipc_irq;
        res.handle = hdev->info.handle;
        res.parent = sdev->dev;
-       res.ops = &sdw_callback;
+
        res.dev = sdev->dev;
        res.clock_stop_quirks = sdw_clock_stop_quirks;
        res.hbus = sof_to_bus(sdev);