ASoC: add for_each_dpcm_be() macro
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 18 Sep 2018 01:31:09 +0000 (01:31 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 20 Sep 2018 17:31:20 +0000 (10:31 -0700)
To be more readable code, this patch adds
new for_each_dpcm_be() macro, and replace existing code to it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc-dpcm.h
sound/soc/fsl/fsl_asrc_dma.c
sound/soc/sh/rcar/ctu.c
sound/soc/sh/rcar/src.c
sound/soc/soc-compress.c
sound/soc/soc-pcm.c

index f130de6cfe8e6c938346dc6272d1d002018d9e0e..4be3a2b7c10611a7406fe5b473e50cbef9cf5bcb 100644 (file)
@@ -106,6 +106,13 @@ struct snd_soc_dpcm_runtime {
 #define for_each_dpcm_fe(be, stream, dpcm)                             \
        list_for_each_entry(dpcm, &(be)->dpcm[stream].fe_clients, list_fe)
 
+#define for_each_dpcm_be(fe, stream, dpcm)                             \
+       list_for_each_entry(dpcm, &(fe)->dpcm[stream].be_clients, list_be)
+#define for_each_dpcm_be_safe(fe, stream, dpcm, _dpcm)                 \
+       list_for_each_entry_safe(dpcm, _dpcm, &(fe)->dpcm[stream].be_clients, list_be)
+#define for_each_dpcm_be_rollback(fe, stream, dpcm)                    \
+       list_for_each_entry_continue_reverse(dpcm, &(fe)->dpcm[stream].be_clients, list_be)
+
 /* can this BE stop and free */
 int snd_soc_dpcm_can_be_free_stop(struct snd_soc_pcm_runtime *fe,
                struct snd_soc_pcm_runtime *be, int stream);
index 1033ac6631b08ae0f419679835c89336ed5077b4..01052a0808b0bd56fbba0f24556cbe9953b84890 100644 (file)
@@ -151,7 +151,7 @@ static int fsl_asrc_dma_hw_params(struct snd_pcm_substream *substream,
        int ret;
 
        /* Fetch the Back-End dma_data from DPCM */
-       list_for_each_entry(dpcm, &rtd->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(rtd, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *substream_be;
                struct snd_soc_dai *dai = be->cpu_dai;
index 6a55aa7530031364617f0ba01c4725741b05f183..ad702377a6c33c814afbedffe901865b22994672 100644 (file)
@@ -258,7 +258,7 @@ static int rsnd_ctu_hw_params(struct rsnd_mod *mod,
                struct snd_pcm_hw_params *be_params;
                int stream = substream->stream;
 
-               list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+               for_each_dpcm_be(fe, stream, dpcm) {
                        be_params = &dpcm->hw_params;
                        if (params_channels(fe_params) != params_channels(be_params))
                                ctu->channels = params_channels(be_params);
index beccfbac7581ce6e1bd69d10a6758c39558e4aac..cd38a43b976fae6739605ae381e3813e6b4d6736 100644 (file)
@@ -158,7 +158,7 @@ static int rsnd_src_hw_params(struct rsnd_mod *mod,
                struct snd_soc_dpcm *dpcm;
                struct snd_pcm_hw_params *be_params;
 
-               list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+               for_each_dpcm_be(fe, stream, dpcm) {
                        be_params = &dpcm->hw_params;
 
                        if (params_rate(fe_params) != params_rate(be_params))
index 409d082e80d15b75576ce7be3501183ce0370547..699397a091670d8b8526175cdb51afefa3ad35c0 100644 (file)
@@ -157,7 +157,7 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream)
        ret = dpcm_be_dai_startup(fe, stream);
        if (ret < 0) {
                /* clean up all links */
-               list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
+               for_each_dpcm_be(fe, stream, dpcm)
                        dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
 
                dpcm_be_disconnect(fe, stream);
@@ -321,7 +321,7 @@ static int soc_compr_free_fe(struct snd_compr_stream *cstream)
        ret = dpcm_be_dai_shutdown(fe, stream);
 
        /* mark FE's links ready to prune */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
+       for_each_dpcm_be(fe, stream, dpcm)
                dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
 
        dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
index e7916630e6fadd03e89c124b825f5ad715c55a9b..03f36e534050f49cf9c4a859a9bc6e93f1798503 100644 (file)
@@ -174,7 +174,7 @@ int dpcm_dapm_stream_event(struct snd_soc_pcm_runtime *fe, int dir,
 {
        struct snd_soc_dpcm *dpcm;
 
-       list_for_each_entry(dpcm, &fe->dpcm[dir].be_clients, list_be) {
+       for_each_dpcm_be(fe, dir, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
 
@@ -1211,7 +1211,7 @@ static int dpcm_be_connect(struct snd_soc_pcm_runtime *fe,
        struct snd_soc_dpcm *dpcm;
 
        /* only add new dpcms */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                if (dpcm->be == be && dpcm->fe == fe)
                        return 0;
        }
@@ -1272,7 +1272,7 @@ void dpcm_be_disconnect(struct snd_soc_pcm_runtime *fe, int stream)
 {
        struct snd_soc_dpcm *dpcm, *d;
 
-       list_for_each_entry_safe(dpcm, d, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be_safe(fe, stream, dpcm, d) {
                dev_dbg(fe->dev, "ASoC: BE %s disconnect check for %s\n",
                                stream ? "capture" : "playback",
                                dpcm->be->dai_link->name);
@@ -1438,7 +1438,7 @@ static int dpcm_prune_paths(struct snd_soc_pcm_runtime *fe, int stream,
        int prune = 0;
 
        /* Destroy any old FE <--> BE connections */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                unsigned int i;
 
                /* is there a valid CPU DAI widget for this BE */
@@ -1544,7 +1544,7 @@ void dpcm_clear_pending_state(struct snd_soc_pcm_runtime *fe, int stream)
 {
        struct snd_soc_dpcm *dpcm;
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
+       for_each_dpcm_be(fe, stream, dpcm)
                dpcm->be->dpcm[stream].runtime_update =
                                                SND_SOC_DPCM_UPDATE_NO;
 }
@@ -1555,7 +1555,7 @@ static void dpcm_be_dai_startup_unwind(struct snd_soc_pcm_runtime *fe,
        struct snd_soc_dpcm *dpcm;
 
        /* disable any enabled and non active backends */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -1584,7 +1584,7 @@ int dpcm_be_dai_startup(struct snd_soc_pcm_runtime *fe, int stream)
        int err, count = 0;
 
        /* only startup BE DAIs that are either sinks or sources to this FE DAI */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -1638,7 +1638,7 @@ int dpcm_be_dai_startup(struct snd_soc_pcm_runtime *fe, int stream)
 
 unwind:
        /* disable any enabled and non active backends */
-       list_for_each_entry_continue_reverse(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be_rollback(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
                        snd_soc_dpcm_get_substream(be, stream);
@@ -1695,7 +1695,7 @@ static void dpcm_runtime_merge_format(struct snd_pcm_substream *substream,
         * if FE want to use it (= dpcm_merged_format)
         */
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_soc_dai_driver *codec_dai_drv;
                struct snd_soc_pcm_stream *codec_stream;
@@ -1736,7 +1736,7 @@ static void dpcm_runtime_merge_chan(struct snd_pcm_substream *substream,
         * if FE want to use it (= dpcm_merged_chan)
         */
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_soc_dai_driver *cpu_dai_drv =  be->cpu_dai->driver;
                struct snd_soc_dai_driver *codec_dai_drv;
@@ -1788,7 +1788,7 @@ static void dpcm_runtime_merge_rate(struct snd_pcm_substream *substream,
         * if FE want to use it (= dpcm_merged_chan)
         */
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_soc_dai_driver *cpu_dai_drv =  be->cpu_dai->driver;
                struct snd_soc_dai_driver *codec_dai_drv;
@@ -1891,7 +1891,7 @@ static int dpcm_apply_symmetry(struct snd_pcm_substream *fe_substream,
        }
 
        /* apply symmetry for BE */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
                        snd_soc_dpcm_get_substream(be, stream);
@@ -1976,7 +1976,7 @@ int dpcm_be_dai_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
        struct snd_soc_dpcm *dpcm;
 
        /* only shutdown BEs that are either sinks or sources to this FE DAI */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -2040,7 +2040,7 @@ int dpcm_be_dai_hw_free(struct snd_soc_pcm_runtime *fe, int stream)
 
        /* only hw_params backends that are either sinks or sources
         * to this frontend DAI */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -2109,7 +2109,7 @@ int dpcm_be_dai_hw_params(struct snd_soc_pcm_runtime *fe, int stream)
        struct snd_soc_dpcm *dpcm;
        int ret;
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -2160,7 +2160,7 @@ int dpcm_be_dai_hw_params(struct snd_soc_pcm_runtime *fe, int stream)
 
 unwind:
        /* disable any enabled and non active backends */
-       list_for_each_entry_continue_reverse(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be_rollback(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
                        snd_soc_dpcm_get_substream(be, stream);
@@ -2240,7 +2240,7 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
        struct snd_soc_dpcm *dpcm;
        int ret = 0;
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -2426,7 +2426,7 @@ int dpcm_be_dai_prepare(struct snd_soc_pcm_runtime *fe, int stream)
        struct snd_soc_dpcm *dpcm;
        int ret = 0;
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                struct snd_pcm_substream *be_substream =
@@ -2636,7 +2636,7 @@ close:
        dpcm_be_dai_shutdown(fe, stream);
 disconnect:
        /* disconnect any non started BEs */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
                                dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
@@ -2781,11 +2781,9 @@ out:
 int soc_dpcm_be_digital_mute(struct snd_soc_pcm_runtime *fe, int mute)
 {
        struct snd_soc_dpcm *dpcm;
-       struct list_head *clients =
-               &fe->dpcm[SNDRV_PCM_STREAM_PLAYBACK].be_clients;
        struct snd_soc_dai *dai;
 
-       list_for_each_entry(dpcm, clients, list_be) {
+       for_each_dpcm_be(fe, SNDRV_PCM_STREAM_PLAYBACK, dpcm) {
 
                struct snd_soc_pcm_runtime *be = dpcm->be;
                int i;
@@ -2834,7 +2832,7 @@ static int dpcm_fe_dai_open(struct snd_pcm_substream *fe_substream)
        ret = dpcm_fe_dai_startup(fe_substream);
        if (ret < 0) {
                /* clean up all links */
-               list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
+               for_each_dpcm_be(fe, stream, dpcm)
                        dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
 
                dpcm_be_disconnect(fe, stream);
@@ -2857,7 +2855,7 @@ static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
        ret = dpcm_fe_dai_shutdown(fe_substream);
 
        /* mark FE's links ready to prune */
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
+       for_each_dpcm_be(fe, stream, dpcm)
                dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
 
        dpcm_be_disconnect(fe, stream);
@@ -3326,7 +3324,7 @@ static ssize_t dpcm_show_state(struct snd_soc_pcm_runtime *fe,
                goto out;
        }
 
-       list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) {
+       for_each_dpcm_be(fe, stream, dpcm) {
                struct snd_soc_pcm_runtime *be = dpcm->be;
                params = &dpcm->hw_params;