diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2019-07-26 00:50:19 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-08-05 11:18:57 -0400 |
commit | 245c539a1206d74e8508a07550fb7c99d0817b8c (patch) | |
tree | aba4092dbe5a3bba94a19e1f4f4542ba7b6ece27 | |
parent | 6d53723380ed73a2ced648d6e92774b39e5af1bd (diff) |
ASoC: soc-component: add snd_soc_component_hw_params()
Current ALSA SoC is directly using component->driver->ops->xxx,
thus, it is deep nested, and makes code difficult to read,
and is not good for encapsulation.
This patch adds new snd_soc_component_hw_params() and use it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87blxh5rnf.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | include/sound/soc-component.h | 3 | ||||
-rw-r--r-- | sound/soc/soc-component.c | 11 | ||||
-rw-r--r-- | sound/soc/soc-pcm.c | 6 |
3 files changed, 15 insertions, 5 deletions
diff --git a/include/sound/soc-component.h b/include/sound/soc-component.h index ff8233014444..778a6e7d352d 100644 --- a/include/sound/soc-component.h +++ b/include/sound/soc-component.h | |||
@@ -345,5 +345,8 @@ int snd_soc_component_close(struct snd_soc_component *component, | |||
345 | struct snd_pcm_substream *substream); | 345 | struct snd_pcm_substream *substream); |
346 | int snd_soc_component_prepare(struct snd_soc_component *component, | 346 | int snd_soc_component_prepare(struct snd_soc_component *component, |
347 | struct snd_pcm_substream *substream); | 347 | struct snd_pcm_substream *substream); |
348 | int snd_soc_component_hw_params(struct snd_soc_component *component, | ||
349 | struct snd_pcm_substream *substream, | ||
350 | struct snd_pcm_hw_params *params); | ||
348 | 351 | ||
349 | #endif /* __SOC_COMPONENT_H */ | 352 | #endif /* __SOC_COMPONENT_H */ |
diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c index 733d7139d875..7b6456370da5 100644 --- a/sound/soc/soc-component.c +++ b/sound/soc/soc-component.c | |||
@@ -315,3 +315,14 @@ int snd_soc_component_prepare(struct snd_soc_component *component, | |||
315 | 315 | ||
316 | return 0; | 316 | return 0; |
317 | } | 317 | } |
318 | |||
319 | int snd_soc_component_hw_params(struct snd_soc_component *component, | ||
320 | struct snd_pcm_substream *substream, | ||
321 | struct snd_pcm_hw_params *params) | ||
322 | { | ||
323 | if (component->driver->ops && | ||
324 | component->driver->ops->hw_params) | ||
325 | return component->driver->ops->hw_params(substream, params); | ||
326 | |||
327 | return 0; | ||
328 | } | ||
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index c7fee67bc0dc..8be1d22dc87a 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c | |||
@@ -951,11 +951,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, | |||
951 | for_each_rtdcom(rtd, rtdcom) { | 951 | for_each_rtdcom(rtd, rtdcom) { |
952 | component = rtdcom->component; | 952 | component = rtdcom->component; |
953 | 953 | ||
954 | if (!component->driver->ops || | 954 | ret = snd_soc_component_hw_params(component, substream, params); |
955 | !component->driver->ops->hw_params) | ||
956 | continue; | ||
957 | |||
958 | ret = component->driver->ops->hw_params(substream, params); | ||
959 | if (ret < 0) { | 955 | if (ret < 0) { |
960 | dev_err(component->dev, | 956 | dev_err(component->dev, |
961 | "ASoC: %s hw params failed: %d\n", | 957 | "ASoC: %s hw params failed: %d\n", |