On Tue, 2020-05-19 at 10:02 +0900, Kuninori Morimoto wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > > dai_link related function should be implemented at soc-link.c. > This patch adds snd_soc_link_be_hw_params_fixup(). > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > --- > include/sound/soc-link.h | 3 +++ > sound/soc/soc-core.c | 6 +++++- > sound/soc/soc-dai.c | 8 +++----- > sound/soc/soc-link.c | 11 +++++++++++ > sound/soc/soc-pcm.c | 14 +++++--------- > 5 files changed, 27 insertions(+), 15 deletions(-) > > diff --git a/include/sound/soc-link.h b/include/sound/soc-link.h > index 2a81dca945cd..aae72f668de6 100644 > --- a/include/sound/soc-link.h > +++ b/include/sound/soc-link.h > @@ -9,6 +9,9 @@ > #define __SOC_LINK_H > > int snd_soc_link_init(struct snd_soc_pcm_runtime *rtd); > +int snd_soc_link_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, > + struct snd_pcm_hw_params *params); > + > int snd_soc_link_startup(struct snd_pcm_substream *substream); > void snd_soc_link_shutdown(struct snd_pcm_substream *substream); > int snd_soc_link_prepare(struct snd_pcm_substream *substream); > diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c > index d5450e61626a..d6818f8c7f1d 100644 > --- a/sound/soc/soc-core.c > +++ b/sound/soc/soc-core.c > @@ -1655,7 +1655,11 @@ static void soc_check_tplg_fes(struct > snd_soc_card *card) > dai_link->dpcm_playback = 1; > dai_link->dpcm_capture = 1; > > - /* override any BE fixups */ > + /* > + * override any BE fixups > + * see > + * snd_soc_link_be_hw_params_fixup() > + */ > dai_link->be_hw_params_fixup = > component->driver->be_hw_params_fixup; > > diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c > index ce4e1fd1ab79..39959cc99bc9 100644 > --- a/sound/soc/soc-dai.c > +++ b/sound/soc/soc-dai.c > @@ -313,11 +313,9 @@ int snd_soc_dai_hw_params(struct snd_soc_dai > *dai, > int ret = 0; > > /* perform any topology hw_params fixups before DAI */ > - if (rtd->dai_link->be_hw_params_fixup) { > - ret = rtd->dai_link->be_hw_params_fixup(rtd, params); > - if (ret < 0) > - goto end; > - } > + ret = snd_soc_link_be_hw_params_fixup(rtd, params); > + if (ret < 0) > + goto end; > > if (dai->driver->ops && > dai->driver->ops->hw_params) > diff --git a/sound/soc/soc-link.c b/sound/soc/soc-link.c > index 691910e82bff..a735b3ba2385 100644 > --- a/sound/soc/soc-link.c > +++ b/sound/soc/soc-link.c > @@ -35,6 +35,17 @@ int snd_soc_link_init(struct snd_soc_pcm_runtime > *rtd) > return soc_link_ret(rtd, ret); > } > > +int snd_soc_link_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, > + struct snd_pcm_hw_params *params) > +{ > + int ret = 0; > + > + if (rtd->dai_link->be_hw_params_fixup) > + ret = rtd->dai_link->be_hw_params_fixup(rtd, params); > + > + return soc_link_ret(rtd, ret); > +} > + > int snd_soc_link_startup(struct snd_pcm_substream *substream) > { > struct snd_soc_pcm_runtime *rtd = substream->private_data; > diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c > index 2b5068001efb..26246228d8c5 100644 > --- a/sound/soc/soc-pcm.c > +++ b/sound/soc/soc-pcm.c > @@ -2087,15 +2087,11 @@ int dpcm_be_dai_hw_params(struct > snd_soc_pcm_runtime *fe, int stream) > sizeof(struct snd_pcm_hw_params)); > > /* perform any hw_params fixups */ > - if (be->dai_link->be_hw_params_fixup) { > - ret = be->dai_link->be_hw_params_fixup(be, > - &dpcm->hw_params); > - if (ret < 0) { > - dev_err(be->dev, > - "ASoC: hw_params BE fixup > failed %d\n", > - ret); > - goto unwind; > - } > + ret = snd_soc_link_be_hw_params_fixup(be, &dpcm- > >hw_params); > + if (ret < 0) { > + dev_err(be->dev, > + "ASoC: hw_params BE fixup failed %d\n", > ret); We can remove this error too isnt it? snd_soc_link_be_hw_params_fixup() would already have printed an error and this would be a duplicate? Thanks, Ranjani