ASoC: add for_each_card_prelinks() macro
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 18 Sep 2018 01:28:49 +0000 (01:28 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 20 Sep 2018 17:18:34 +0000 (10:18 -0700)
To be more readable code, this patch adds
new for_each_card_prelinks() 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>
16 files changed:
include/sound/soc.h
sound/soc/fsl/pcm030-audio-fabric.c
sound/soc/generic/simple-card-utils.c
sound/soc/intel/boards/skl_hda_dsp_generic.c
sound/soc/mediatek/mt2701/mt2701-cs42448.c
sound/soc/mediatek/mt2701/mt2701-wm8960.c
sound/soc/mediatek/mt6797/mt6797-mt6351.c
sound/soc/mediatek/mt8173/mt8173-max98090.c
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5676.c
sound/soc/mediatek/mt8173/mt8173-rt5650.c
sound/soc/meson/axg-card.c
sound/soc/qcom/apq8096.c
sound/soc/qcom/sdm845.c
sound/soc/samsung/tm2_wm5110.c
sound/soc/soc-core.c

index ec1ae9f4feebd08a857eccd609107d18fd15e834..f94b989e7a1a1b6e8c2c14d92f66662a04901e89 100644 (file)
@@ -1120,6 +1120,10 @@ struct snd_soc_card {
 
        void *drvdata;
 };
+#define for_each_card_prelinks(card, i, link)                          \
+       for ((i) = 0;                                                   \
+            ((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \
+            (i)++)
 
 /* SoC machine DAI configuration, glues a codec and cpu DAI together */
 struct snd_soc_pcm_runtime {
index ec731223cab3d7bfbfe8208571a9c67e59276d3a..e339f36cea956567ad878d30b17941a8226ea5ea 100644 (file)
@@ -57,6 +57,7 @@ static int pcm030_fabric_probe(struct platform_device *op)
        struct device_node *platform_np;
        struct snd_soc_card *card = &pcm030_card;
        struct pcm030_audio_data *pdata;
+       struct snd_soc_dai_link *dai_link;
        int ret;
        int i;
 
@@ -78,8 +79,8 @@ static int pcm030_fabric_probe(struct platform_device *op)
                return -ENODEV;
        }
 
-       for (i = 0; i < card->num_links; i++)
-               card->dai_link[i].platform_of_node = platform_np;
+       for_each_card_prelinks(card, i, dai_link)
+               dai_link->platform_of_node = platform_np;
 
        ret = request_module("snd-soc-wm9712");
        if (ret)
index b400dbf1f834a121fff854ea0e913741c54df1f5..f34cc6cddfa283d79051b832dad2ca8e4de39706 100644 (file)
@@ -404,11 +404,9 @@ EXPORT_SYMBOL_GPL(asoc_simple_card_canonicalize_cpu);
 int asoc_simple_card_clean_reference(struct snd_soc_card *card)
 {
        struct snd_soc_dai_link *dai_link;
-       int num_links;
+       int i;
 
-       for (num_links = 0, dai_link = card->dai_link;
-            num_links < card->num_links;
-            num_links++, dai_link++) {
+       for_each_card_prelinks(card, i, dai_link) {
                of_node_put(dai_link->cpu_of_node);
                of_node_put(dai_link->codecs->of_node);
        }
index b213e9b47505fb7420b8aead162398dc81cea75b..b415dd4c85f5ac9890f440fd40311ce5e8f4953b 100644 (file)
@@ -104,6 +104,7 @@ static struct snd_soc_card hda_soc_card = {
 static int skl_hda_fill_card_info(struct skl_machine_pdata *pdata)
 {
        struct snd_soc_card *card = &hda_soc_card;
+       struct snd_soc_dai_link *dai_link;
        u32 codec_count, codec_mask;
        int i, num_links, num_route;
 
@@ -125,8 +126,8 @@ static int skl_hda_fill_card_info(struct skl_machine_pdata *pdata)
        card->num_links = num_links;
        card->num_dapm_routes = num_route;
 
-       for (i = 0; i < num_links; i++)
-               skl_hda_be_dai_links[i].platform_name = pdata->platform;
+       for_each_card_prelinks(card, i, dai_link)
+               dai_link->platform_name = pdata->platform;
 
        return 0;
 }
index 666282b865a8affdf89be3bf93cbaa94070f9919..875f846915351969e005bdec5a460b8d1281aa57 100644 (file)
@@ -299,6 +299,7 @@ static int mt2701_cs42448_machine_probe(struct platform_device *pdev)
                devm_kzalloc(&pdev->dev, sizeof(struct mt2701_cs42448_private),
                             GFP_KERNEL);
        struct device *dev = &pdev->dev;
+       struct snd_soc_dai_link *dai_link;
 
        if (!priv)
                return -ENOMEM;
@@ -309,10 +310,10 @@ static int mt2701_cs42448_machine_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Property 'platform' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt2701_cs42448_dai_links[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_links->platform_name)
                        continue;
-               mt2701_cs42448_dai_links[i].platform_of_node = platform_node;
+               dai_links->platform_of_node = platform_node;
        }
 
        card->dev = dev;
@@ -324,10 +325,10 @@ static int mt2701_cs42448_machine_probe(struct platform_device *pdev)
                        "Property 'audio-codec' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt2701_cs42448_dai_links[i].codec_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_links->codec_name)
                        continue;
-               mt2701_cs42448_dai_links[i].codec_of_node = codec_node;
+               dai_links->codec_of_node = codec_node;
        }
 
        codec_node_bt_mrg = of_parse_phandle(pdev->dev.of_node,
index e5d49e6e2f990b675ef0f12be1bba2e22de46824..c67f62935e538dc8045248f01d0146a07c3d9c8a 100644 (file)
@@ -97,6 +97,7 @@ static int mt2701_wm8960_machine_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt2701_wm8960_card;
        struct device_node *platform_node, *codec_node;
+       struct snd_soc_dai_link *dai_link;
        int ret, i;
 
        platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -105,10 +106,10 @@ static int mt2701_wm8960_machine_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Property 'platform' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt2701_wm8960_dai_links[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_links->platform_name)
                        continue;
-               mt2701_wm8960_dai_links[i].platform_of_node = platform_node;
+               dai_links->platform_of_node = platform_node;
        }
 
        card->dev = &pdev->dev;
@@ -120,10 +121,10 @@ static int mt2701_wm8960_machine_probe(struct platform_device *pdev)
                        "Property 'audio-codec' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt2701_wm8960_dai_links[i].codec_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_links->codec_name)
                        continue;
-               mt2701_wm8960_dai_links[i].codec_of_node = codec_node;
+               dai_links->codec_of_node = codec_node;
        }
 
        ret = snd_soc_of_parse_audio_routing(card, "audio-routing");
index 6e578e830e42e55e83d70de8468c85b3fac22bd7..ff2e0ca4384e0b37d6dd54ddd4ab0613c545c71f 100644 (file)
@@ -158,6 +158,7 @@ static int mt6797_mt6351_dev_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt6797_mt6351_card;
        struct device_node *platform_node, *codec_node;
+       struct snd_soc_dai_link *dai_link;
        int ret, i;
 
        card->dev = &pdev->dev;
@@ -168,10 +169,10 @@ static int mt6797_mt6351_dev_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Property 'platform' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt6797_mt6351_dai_links[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->platform_name)
                        continue;
-               mt6797_mt6351_dai_links[i].platform_of_node = platform_node;
+               dai_links->platform_of_node = platform_node;
        }
 
        codec_node = of_parse_phandle(pdev->dev.of_node,
@@ -181,10 +182,10 @@ static int mt6797_mt6351_dev_probe(struct platform_device *pdev)
                        "Property 'audio-codec' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt6797_mt6351_dai_links[i].codec_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_links->codec_name)
                        continue;
-               mt6797_mt6351_dai_links[i].codec_of_node = codec_node;
+               dai_links->codec_of_node = codec_node;
        }
 
        ret = devm_snd_soc_register_card(&pdev->dev, card);
index 902d111016d6f5e39a52af047cb0e68a2d086f47..4d6596d5cb0796cd22f86d4c74a17047af4a1aae 100644 (file)
@@ -137,6 +137,7 @@ static int mt8173_max98090_dev_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt8173_max98090_card;
        struct device_node *codec_node, *platform_node;
+       struct snd_soc_dai_link *dai_link;
        int ret, i;
 
        platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -145,10 +146,10 @@ static int mt8173_max98090_dev_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Property 'platform' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt8173_max98090_dais[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->platform_name)
                        continue;
-               mt8173_max98090_dais[i].platform_of_node = platform_node;
+               dai_link->platform_of_node = platform_node;
        }
 
        codec_node = of_parse_phandle(pdev->dev.of_node,
@@ -158,10 +159,10 @@ static int mt8173_max98090_dev_probe(struct platform_device *pdev)
                        "Property 'audio-codec' missing or invalid\n");
                return -EINVAL;
        }
-       for (i = 0; i < card->num_links; i++) {
-               if (mt8173_max98090_dais[i].codec_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->codec_name)
                        continue;
-               mt8173_max98090_dais[i].codec_of_node = codec_node;
+               dai_link->codec_of_node = codec_node;
        }
        card->dev = &pdev->dev;
 
index 5b4e90180827a7132bdbf5d71859212fc7099744..da5b58ce791bbb681c73bf88676444e6d548d93a 100644 (file)
@@ -178,6 +178,7 @@ static int mt8173_rt5650_rt5514_dev_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt8173_rt5650_rt5514_card;
        struct device_node *platform_node;
+       struct snd_soc_dai_link *dai_link;
        int i, ret;
 
        platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -187,10 +188,10 @@ static int mt8173_rt5650_rt5514_dev_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       for (i = 0; i < card->num_links; i++) {
-               if (mt8173_rt5650_rt5514_dais[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->platform_name)
                        continue;
-               mt8173_rt5650_rt5514_dais[i].platform_of_node = platform_node;
+               dai_link->platform_of_node = platform_node;
        }
 
        mt8173_rt5650_rt5514_codecs[0].of_node =
index 82675ed057dee9eb5df78351c120af92041fd506..d83cd039b413b34788281d49dbae3c58e23ca1f7 100644 (file)
@@ -224,6 +224,7 @@ static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt8173_rt5650_rt5676_card;
        struct device_node *platform_node;
+       struct snd_soc_dai_link *dai_link;
        int i, ret;
 
        platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -233,10 +234,10 @@ static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       for (i = 0; i < card->num_links; i++) {
-               if (mt8173_rt5650_rt5676_dais[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->platform_name)
                        continue;
-               mt8173_rt5650_rt5676_dais[i].platform_of_node = platform_node;
+               dai_link->platform_of_node = platform_node;
        }
 
        mt8173_rt5650_rt5676_codecs[0].of_node =
index ef05fbc40c324fc9ea1439b8b895152ce6928196..7edf250c8fb13950a53eb5a1e377cd84b2eab10a 100644 (file)
@@ -239,6 +239,7 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
        struct device_node *platform_node;
        struct device_node *np;
        const char *codec_capture_dai;
+       struct snd_soc_dai_link *dai_link;
        int i, ret;
 
        platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -248,10 +249,10 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       for (i = 0; i < card->num_links; i++) {
-               if (mt8173_rt5650_dais[i].platform_name)
+       for_each_card_prelinks(card, i, dai_link) {
+               if (dai_link->platform_name)
                        continue;
-               mt8173_rt5650_dais[i].platform_of_node = platform_node;
+               dai_link->platform_of_node = platform_node;
        }
 
        mt8173_rt5650_codecs[0].of_node =
index 197e10a96e28bcf5f6443b06224287862ff52b6d..aa54d2c612c98f4f58fc811973f8e46ada86a7d8 100644 (file)
@@ -101,8 +101,7 @@ static void axg_card_clean_references(struct axg_card *priv)
        int i, j;
 
        if (card->dai_link) {
-               for (i = 0; i < card->num_links; i++) {
-                       link = &card->dai_link[i];
+               for_each_card_prelinks(card, i, link) {
                        of_node_put(link->cpu_of_node);
                        for_each_link_codecs(link, j, codec)
                                of_node_put(codec->of_node);
index 1543e85629f8037c60a37637a3f3607d7a83ad1e..fb45f396ab4a7451618ef1cc6a328c992277263a 100644 (file)
@@ -25,13 +25,12 @@ static int apq8096_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
 
 static void apq8096_add_be_ops(struct snd_soc_card *card)
 {
-       struct snd_soc_dai_link *link = card->dai_link;
-       int i, num_links = card->num_links;
+       struct snd_soc_dai_link *link;
+       int i;
 
-       for (i = 0; i < num_links; i++) {
+       for_each_card_prelinks(card, i, link) {
                if (link->no_pcm == 1)
                        link->be_hw_params_fixup = apq8096_be_hw_params_fixup;
-               link++;
        }
 }
 
index 2a781d87ee65e1dcd2b798111f384084233ed652..9effbecc571f6b319812a301aba7777f34c17fa0 100644 (file)
@@ -195,15 +195,14 @@ static int sdm845_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
 
 static void sdm845_add_be_ops(struct snd_soc_card *card)
 {
-       struct snd_soc_dai_link *link = card->dai_link;
-       int i, num_links = card->num_links;
+       struct snd_soc_dai_link *link;
+       int i;
 
-       for (i = 0; i < num_links; i++) {
+       for_each_card_prelinks(card, i, link) {
                if (link->no_pcm == 1) {
                        link->ops = &sdm845_be_ops;
                        link->be_hw_params_fixup = sdm845_be_hw_params_fixup;
                }
-               link++;
        }
 }
 
index 43332c32d7e9b482e2e83be34cbd27e0d74a70e2..dc93941e01c3b8d4d374c451505b3f9f908ae448 100644 (file)
@@ -491,6 +491,7 @@ static int tm2_probe(struct platform_device *pdev)
        struct snd_soc_card *card = &tm2_card;
        struct tm2_machine_priv *priv;
        struct of_phandle_args args;
+       struct snd_soc_dai_link *dai_link;
        int num_codecs, ret, i;
 
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
@@ -558,18 +559,18 @@ static int tm2_probe(struct platform_device *pdev)
        }
 
        /* Initialize WM5110 - I2S and HDMI - I2S1 DAI links */
-       for (i = 0; i < card->num_links; i++) {
+       for_each_card_prelinks(card, i, dai_link) {
                unsigned int dai_index = 0; /* WM5110 */
 
-               card->dai_link[i].cpu_name = NULL;
-               card->dai_link[i].platform_name = NULL;
+               dai_link->cpu_name = NULL;
+               dai_link->platform_name = NULL;
 
                if (num_codecs > 1 && i == card->num_links - 1)
                        dai_index = 1; /* HDMI */
 
-               card->dai_link[i].codec_of_node = codec_dai_node[dai_index];
-               card->dai_link[i].cpu_of_node = cpu_dai_node[dai_index];
-               card->dai_link[i].platform_of_node = cpu_dai_node[dai_index];
+               dai_link->codec_of_node = codec_dai_node[dai_index];
+               dai_link->cpu_of_node = cpu_dai_node[dai_index];
+               dai_link->platform_of_node = cpu_dai_node[dai_index];
        }
 
        if (num_codecs > 1) {
index da2b2a758b6d1b0d213fe3a07694f7f9fb4dfb0c..532d8c59ed1e36b4c2682af63a10c76cbea2f231 100644 (file)
@@ -1889,9 +1889,7 @@ static void soc_check_tplg_fes(struct snd_soc_card *card)
                        continue;
 
                /* machine matches, so override the rtd data */
-               for (i = 0; i < card->num_links; i++) {
-
-                       dai_link = &card->dai_link[i];
+               for_each_card_prelinks(card, i, dai_link) {
 
                        /* ignore this FE */
                        if (dai_link->dynamic) {
@@ -1955,8 +1953,8 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
        soc_check_tplg_fes(card);
 
        /* bind DAIs */
-       for (i = 0; i < card->num_links; i++) {
-               ret = soc_bind_dai_link(card, &card->dai_link[i]);
+       for_each_card_prelinks(card, i, dai_link) {
+               ret = soc_bind_dai_link(card, dai_link);
                if (ret != 0)
                        goto base_error;
        }
@@ -1969,8 +1967,8 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
        }
 
        /* add predefined DAI links to the list */
-       for (i = 0; i < card->num_links; i++)
-               snd_soc_add_dai_link(card, card->dai_link+i);
+       for_each_card_prelinks(card, i, dai_link)
+               snd_soc_add_dai_link(card, dai_link);
 
        /* card bind complete so register a sound card */
        ret = snd_card_new(card->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
@@ -2714,12 +2712,12 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
 int snd_soc_register_card(struct snd_soc_card *card)
 {
        int i, ret;
+       struct snd_soc_dai_link *link;
 
        if (!card->name || !card->dev)
                return -EINVAL;
 
-       for (i = 0; i < card->num_links; i++) {
-               struct snd_soc_dai_link *link = &card->dai_link[i];
+       for_each_card_prelinks(card, i, link) {
 
                ret = soc_init_dai_link(card, link);
                if (ret) {