ASoC: soc-dpcm.h: remove snd_soc_dpcm::hw_param
Current soc-pcm.c is coping fe hw_param to dpcm->hw_param (A), fixup it (B), and copy it to be (C). int dpcm_be_dai_hw_params(...) { ... for_each_dpcm_be(fe, stream, dpcm) { ... /* copy params for each dpcm */ (A) memcpy(&dpcm->hw_params, &fe->dpcm[stream].hw_params, ...) ; /* perform any hw_params fixups */ (B) ret = snd_soc_link_be_hw_params_fixup(be, &dpcm->hw_params); ... /* copy the fixed-up hw params for BE dai */ (C) memcpy(&be->dpcm[stream].hw_params, &dpcm->hw_params, ...); ... } ... } But here, (1) it is coping hw_params without caring stream (Playback/Capture), (2) we can get same value from be. We don't need to have dpcm->hw_params. This patch removes it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/87v8ogsl6h.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
c670a224d1
commit
25106550f1
@ -78,8 +78,6 @@ struct snd_soc_dpcm {
|
||||
struct list_head list_be;
|
||||
struct list_head list_fe;
|
||||
|
||||
/* hw params for this link - may be different for each link */
|
||||
struct snd_pcm_hw_params hw_params;
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *debugfs_state;
|
||||
#endif
|
||||
|
@ -1518,7 +1518,8 @@ static int rsnd_hw_params(struct snd_soc_component *component,
|
||||
int stream = substream->stream;
|
||||
|
||||
for_each_dpcm_be(fe, stream, dpcm) {
|
||||
struct snd_pcm_hw_params *be_params = &dpcm->hw_params;
|
||||
struct snd_soc_pcm_runtime *be = dpcm->be;
|
||||
struct snd_pcm_hw_params *be_params = &be->dpcm[stream].hw_params;
|
||||
|
||||
if (params_channels(hw_params) != params_channels(be_params))
|
||||
io->converted_chan = params_channels(be_params);
|
||||
|
@ -155,7 +155,7 @@ static ssize_t dpcm_show_state(struct snd_soc_pcm_runtime *fe,
|
||||
|
||||
for_each_dpcm_be(fe, stream, dpcm) {
|
||||
struct snd_soc_pcm_runtime *be = dpcm->be;
|
||||
params = &dpcm->hw_params;
|
||||
params = &be->dpcm[stream].hw_params;
|
||||
|
||||
offset += scnprintf(buf + offset, size - offset,
|
||||
"- %s\n", be->dai_link->name);
|
||||
@ -1980,6 +1980,8 @@ int dpcm_be_dai_hw_params(struct snd_soc_pcm_runtime *fe, int stream)
|
||||
int ret;
|
||||
|
||||
for_each_dpcm_be(fe, stream, dpcm) {
|
||||
struct snd_pcm_hw_params hw_params;
|
||||
|
||||
be = dpcm->be;
|
||||
be_substream = snd_soc_dpcm_get_substream(be, stream);
|
||||
|
||||
@ -1988,16 +1990,16 @@ int dpcm_be_dai_hw_params(struct snd_soc_pcm_runtime *fe, int stream)
|
||||
continue;
|
||||
|
||||
/* copy params for each dpcm */
|
||||
memcpy(&dpcm->hw_params, &fe->dpcm[stream].hw_params,
|
||||
memcpy(&hw_params, &fe->dpcm[stream].hw_params,
|
||||
sizeof(struct snd_pcm_hw_params));
|
||||
|
||||
/* perform any hw_params fixups */
|
||||
ret = snd_soc_link_be_hw_params_fixup(be, &dpcm->hw_params);
|
||||
ret = snd_soc_link_be_hw_params_fixup(be, &hw_params);
|
||||
if (ret < 0)
|
||||
goto unwind;
|
||||
|
||||
/* copy the fixed-up hw params for BE dai */
|
||||
memcpy(&be->dpcm[stream].hw_params, &dpcm->hw_params,
|
||||
memcpy(&be->dpcm[stream].hw_params, &hw_params,
|
||||
sizeof(struct snd_pcm_hw_params));
|
||||
|
||||
/* only allow hw_params() if no connected FEs are running */
|
||||
@ -2012,7 +2014,7 @@ int dpcm_be_dai_hw_params(struct snd_soc_pcm_runtime *fe, int stream)
|
||||
dev_dbg(be->dev, "ASoC: hw_params BE %s\n",
|
||||
be->dai_link->name);
|
||||
|
||||
ret = __soc_pcm_hw_params(be, be_substream, &dpcm->hw_params);
|
||||
ret = __soc_pcm_hw_params(be, be_substream, &hw_params);
|
||||
if (ret < 0)
|
||||
goto unwind;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user