[PATCH 4/7] ASoC: soc-link: add snd_soc_link_be_hw_params_fixup()
Ranjani Sridharan
ranjani.sridharan at linux.intel.com
Tue May 19 03:45:35 CEST 2020
On Tue, 2020-05-19 at 10:02 +0900, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx at 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 at 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
More information about the Alsa-devel
mailing list