[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