On Tue, Jun 14, 2022 at 03:08:17PM +0800, Bard Liao wrote: > For IPC4, we need to set pipeline state in BE DAI trigger. > > Signed-off-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx> > Reviewed-by: Rander Wang <rander.wang@xxxxxxxxx> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > Reviewed-by: Ranjani Sridharan <ranjani.sridharan@xxxxxxxxxxxxxxx> > --- > sound/soc/sof/intel/hda-dai.c | 15 ++++++++++++--- > sound/soc/sof/intel/hda.c | 2 +- > sound/soc/sof/intel/hda.h | 1 + > 3 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/sound/soc/sof/intel/hda-dai.c b/sound/soc/sof/intel/hda-dai.c > index 228079a52c3d..6ed99fdc5793 100644 > --- a/sound/soc/sof/intel/hda-dai.c > +++ b/sound/soc/sof/intel/hda-dai.c > @@ -713,8 +713,7 @@ static const struct snd_soc_dai_ops ipc3_ssp_dai_ops = { > .shutdown = ssp_dai_shutdown, > }; > > -static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream, > - int cmd, struct snd_soc_dai *dai) > +static int ipc4_be_dai_common_trigger(struct snd_soc_dai *dai, int cmd, int stream) > { > struct snd_sof_widget *pipe_widget; > struct sof_ipc4_pipeline *pipeline; > @@ -723,7 +722,7 @@ static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream, > struct snd_sof_dev *sdev; > int ret; > > - w = snd_soc_dai_get_widget(dai, substream->stream); > + w = snd_soc_dai_get_widget(dai, stream); > swidget = w->dobj.private; > pipe_widget = swidget->pipe_widget; > pipeline = pipe_widget->private; > @@ -758,6 +757,12 @@ static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream, > return 0; > } > > +static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream, > + int cmd, struct snd_soc_dai *dai) > +{ > + return ipc4_be_dai_common_trigger(dai, cmd, substream->stream); > +} > + > static const struct snd_soc_dai_ops ipc4_dmic_dai_ops = { > .trigger = ipc4_be_dai_trigger, > }; > @@ -809,6 +814,10 @@ void hda_set_dai_drv_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *ops) > if (!hda_use_tplg_nhlt) > ipc4_data->nhlt = intel_nhlt_init(sdev->dev); > > +#if IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE) > + sdw_callback.trigger = ipc4_be_dai_common_trigger; > +#endif #if should not be in .c files if at all possible. Surely there's a better way here... thanks, greg k-h