ASoC: soc-dpcm.h: remove snd_soc_dpcm::hw_param
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 19 Oct 2022 00:37:26 +0000 (00:37 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 19 Oct 2022 12:05:34 +0000 (13:05 +0100)
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>
include/sound/soc-dpcm.h
sound/soc/sh/rcar/core.c
sound/soc/soc-pcm.c

index 5b689c663290fc892eac8f9b94f880e3721e9ac4..2864aed7299835aa8a66ea279cc9f574216be64e 100644 (file)
@@ -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
index 4e21ebce03c605d886e9895b1c008adfba2e13f9..2d269ac8c1377d83eb64ba240d6f17297cbfa214 100644 (file)
@@ -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);
index fb87d6d2340853ecf8b1f4116a18be7f6a5cb9f8..d8e4677f300230da2e5894a85bc4481408ef96d3 100644 (file)
@@ -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;