Message ID | 871rng68l1.wl-kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: add soc-link | expand |
On Tue, 2020-05-19 at 10:02 +0900, Kuninori Morimoto wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > 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@renesas.com> > --- > 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
Hi Ranjani Thank you for reviewing > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > > > 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@renesas.com> > > --- (snip) > > + 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? Oh, yes. Will fixup it in v2 Thank you for your help !! Best regards --- Kuninori Morimoto
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); + goto unwind; } /* copy the fixed-up hw params for BE dai */