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