diff mbox series

[4/7] ASoC: soc-link: add snd_soc_link_be_hw_params_fixup()

Message ID 871rng68l1.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ASoC: add soc-link | expand

Commit Message

Kuninori Morimoto May 19, 2020, 1:02 a.m. UTC
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(-)

Comments

Ranjani Sridharan May 19, 2020, 1:45 a.m. UTC | #1
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
Kuninori Morimoto May 19, 2020, 4:16 a.m. UTC | #2
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 mbox series

Patch

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 */