ASoC: Intel: boards: byt/cht: set card and driver name at run time
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 12 Nov 2020 22:38:16 +0000 (16:38 -0600)
committerMark Brown <broonie@kernel.org>
Thu, 19 Nov 2020 18:24:37 +0000 (18:24 +0000)
To avoid hard-coded variations between SOF and SST drivers, set the
card name and driver dynamically depending on the parent type. This is
the first pass required to let distributions select which drivers to
use with kernel parameters instead of build-time selection.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Link: https://lore.kernel.org/r/20201112223825.39765-6-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/bytcht_cx2072x.c
sound/soc/intel/boards/bytcht_da7213.c
sound/soc/intel/boards/bytcht_es8316.c
sound/soc/intel/boards/bytcr_rt5640.c
sound/soc/intel/boards/bytcr_rt5651.c
sound/soc/intel/boards/cht_bsw_max98090_ti.c
sound/soc/intel/boards/cht_bsw_nau8824.c
sound/soc/intel/boards/cht_bsw_rt5645.c
sound/soc/intel/boards/cht_bsw_rt5672.c

index 0b50b3646d5526c80fad75bbaf689671f2d07a66..762f09190f10bb92f728736df49cdd7272fec023 100644 (file)
@@ -205,14 +205,12 @@ static struct snd_soc_dai_link byt_cht_cx2072x_dais[] = {
        },
 };
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht cx2072x" /* card name will be 'sof-bytcht cx2072x' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht cx2072x" /* card name will be 'sof-bytcht cx2072x' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "bytcht-cx2072x"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card byt_cht_cx2072x_card = {
@@ -236,6 +234,7 @@ static int snd_byt_cht_cx2072x_probe(struct platform_device *pdev)
        struct snd_soc_acpi_mach *mach;
        struct acpi_device *adev;
        int dai_index = 0;
+       bool sof_parent;
        int i, ret;
 
        byt_cht_cx2072x_card.dev = &pdev->dev;
@@ -265,6 +264,17 @@ static int snd_byt_cht_cx2072x_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               byt_cht_cx2072x_card.name = SOF_CARD_NAME;
+               byt_cht_cx2072x_card.driver_name = SOF_DRIVER_NAME;
+       } else {
+               byt_cht_cx2072x_card.name = CARD_NAME;
+               byt_cht_cx2072x_card.driver_name = DRIVER_NAME;
+       }
+
        return devm_snd_soc_register_card(&pdev->dev, &byt_cht_cx2072x_card);
 }
 
index e1e46b4bbac54f7302f718de1f3eb30bc506b022..ef6682226a853ec0ee17a737edb132260aefe0f3 100644 (file)
@@ -205,14 +205,12 @@ static struct snd_soc_dai_link dailink[] = {
        },
 };
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht da7213" /* card name will be 'sof-bytcht da7213' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht da7213" /* card name will be 'sof-bytcht da7213' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "bytcht-da7213"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card bytcht_da7213_card = {
@@ -237,6 +235,7 @@ static int bytcht_da7213_probe(struct platform_device *pdev)
        struct snd_soc_acpi_mach *mach;
        const char *platform_name;
        struct acpi_device *adev;
+       bool sof_parent;
        int dai_index = 0;
        int ret_val = 0;
        int i;
@@ -269,6 +268,17 @@ static int bytcht_da7213_probe(struct platform_device *pdev)
        if (ret_val)
                return ret_val;
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               bytcht_da7213_card.name = SOF_CARD_NAME;
+               bytcht_da7213_card.driver_name = SOF_DRIVER_NAME;
+       } else {
+               bytcht_da7213_card.name = CARD_NAME;
+               bytcht_da7213_card.driver_name = DRIVER_NAME;
+       }
+
        ret_val = devm_snd_soc_register_card(&pdev->dev, card);
        if (ret_val) {
                dev_err(&pdev->dev,
index 7ed869bf1a926db4d9ec3398d27454174598d4a6..fbb62bab9dccd54725f9f5da5b78210299c3246f 100644 (file)
@@ -406,18 +406,14 @@ static int byt_cht_es8316_resume(struct snd_soc_card *card)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht es8316" /* card name will be 'sof-bytcht es8316' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht es8316" /* card name will be 'sof-bytcht es8316' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "bytcht-es8316"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 static struct snd_soc_card byt_cht_es8316_card = {
-       .name = CARD_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = byt_cht_es8316_dais,
        .num_links = ARRAY_SIZE(byt_cht_es8316_dais),
@@ -472,6 +468,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
        const char *platform_name;
        struct acpi_device *adev;
        struct device *codec_dev;
+       bool sof_parent;
        unsigned int cnt = 0;
        int dai_index = 0;
        int i;
@@ -590,6 +587,17 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
        byt_cht_es8316_card.long_name = long_name;
 #endif
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               byt_cht_es8316_card.name = SOF_CARD_NAME;
+               byt_cht_es8316_card.driver_name = SOF_DRIVER_NAME;
+       } else {
+               byt_cht_es8316_card.name = CARD_NAME;
+               byt_cht_es8316_card.driver_name = DRIVER_NAME;
+       }
+
        /* register the soc card */
        snd_soc_card_set_drvdata(&byt_cht_es8316_card, priv);
 
index 9dadf6561444db23bcd812dd813717602058ce2a..574b489a32836bf02575810a5fbcdaae4f45eb99 100644 (file)
@@ -1136,18 +1136,14 @@ static int byt_rt5640_resume(struct snd_soc_card *card)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht rt5640" /* card name will be 'sof-bytcht rt5640' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht rt5640" /* card name will be 'sof-bytcht rt5640' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "bytcr-rt5640"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 static struct snd_soc_card byt_rt5640_card = {
-       .name = CARD_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = byt_rt5640_dais,
        .num_links = ARRAY_SIZE(byt_rt5640_dais),
@@ -1173,6 +1169,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev)
        struct snd_soc_acpi_mach *mach;
        const char *platform_name;
        struct acpi_device *adev;
+       bool sof_parent;
        int ret_val = 0;
        int dai_index = 0;
        int i;
@@ -1336,6 +1333,17 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev)
        if (ret_val)
                return ret_val;
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               byt_rt5640_card.name = SOF_CARD_NAME;
+               byt_rt5640_card.driver_name = SOF_DRIVER_NAME;
+       } else {
+               byt_rt5640_card.name = CARD_NAME;
+               byt_rt5640_card.driver_name = DRIVER_NAME;
+       }
+
        ret_val = devm_snd_soc_register_card(&pdev->dev, &byt_rt5640_card);
 
        if (ret_val) {
index 64d3fc4a3225966abd67059d1e959bbcb6dac6e0..69e1d84e4de3d1ef6497a3a7978d1454c2ac2696 100644 (file)
@@ -827,14 +827,12 @@ static int byt_rt5651_resume(struct snd_soc_card *card)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht rt5651" /* card name will be 'sof-bytcht rt5651' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht rt5651" /* card name will be 'sof-bytcht rt5651' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "bytcr-rt5651"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 static struct snd_soc_card byt_rt5651_card = {
        .name = CARD_NAME,
@@ -876,6 +874,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
        const char *platform_name;
        struct acpi_device *adev;
        struct device *codec_dev;
+       bool sof_parent;
        bool is_bytcr = false;
        int ret_val = 0;
        int dai_index = 0;
@@ -1093,6 +1092,17 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
        if (ret_val)
                return ret_val;
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               byt_rt5651_card.name = SOF_CARD_NAME;
+               byt_rt5651_card.driver_name = SOF_DRIVER_NAME;
+       } else {
+               byt_rt5651_card.name = CARD_NAME;
+               byt_rt5651_card.driver_name = DRIVER_NAME;
+       }
+
        ret_val = devm_snd_soc_register_card(&pdev->dev, &byt_rt5651_card);
 
        if (ret_val) {
index 835e9bd6b52d3c63eacbcc9d754dafa552bb22ca..a1d456d7a9c29e298e5ff84416aa9fa982b4ad5b 100644 (file)
@@ -382,19 +382,15 @@ static struct snd_soc_dai_link cht_dailink[] = {
        },
 };
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht max98090" /* card name will be 'sof-bytcht max98090 */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht max98090" /* card name will be 'sof-bytcht max98090 */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "chtmax98090"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card snd_soc_card_cht = {
-       .name = CARD_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = cht_dailink,
        .num_links = ARRAY_SIZE(cht_dailink),
@@ -540,6 +536,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        const char *mclk_name;
        struct snd_soc_acpi_mach *mach;
        const char *platform_name;
+       bool sof_parent;
 
        drv = devm_kzalloc(&pdev->dev, sizeof(*drv), GFP_KERNEL);
        if (!drv)
@@ -602,6 +599,17 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
                }
        }
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               snd_soc_card_cht.name = SOF_CARD_NAME;
+               snd_soc_card_cht.driver_name = SOF_DRIVER_NAME;
+       } else {
+               snd_soc_card_cht.name = CARD_NAME;
+               snd_soc_card_cht.driver_name = DRIVER_NAME;
+       }
+
        ret_val = devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_cht);
        if (ret_val) {
                dev_err(&pdev->dev,
index 3e12bff15fedb313f75737fc3e159f2ba6eb2f10..f173793d867bfb17ca2e4fd1a547edf33d7865ef 100644 (file)
@@ -231,19 +231,15 @@ static struct snd_soc_dai_link cht_dailink[] = {
        },
 };
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht nau8824" /* card name will be 'sof-bytcht nau8824 */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht nau8824" /* card name will be 'sof-bytcht nau8824 */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "chtnau8824"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card snd_soc_card_cht = {
-       .name = CARD_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = cht_dailink,
        .num_links = ARRAY_SIZE(cht_dailink),
@@ -260,6 +256,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        struct cht_mc_private *drv;
        struct snd_soc_acpi_mach *mach;
        const char *platform_name;
+       bool sof_parent;
        int ret_val;
 
        drv = devm_kzalloc(&pdev->dev, sizeof(*drv), GFP_KERNEL);
@@ -277,6 +274,17 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        if (ret_val)
                return ret_val;
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               snd_soc_card_cht.name = SOF_CARD_NAME;
+               snd_soc_card_cht.driver_name = SOF_DRIVER_NAME;
+       } else {
+               snd_soc_card_cht.name = CARD_NAME;
+               snd_soc_card_cht.driver_name = DRIVER_NAME;
+       }
+
        /* register the soc card */
        ret_val = devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_cht);
        if (ret_val) {
index b53c02481749498aa661a347924d46f6647b7b07..bdaf8d00fc6b8f0d060a03610795ceee85dccf48 100644 (file)
@@ -479,21 +479,17 @@ static struct snd_soc_dai_link cht_dailink[] = {
        },
 };
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_RT5645_NAME "bytcht rt5645" /* card name 'sof-bytcht rt5645' */
-#define CARD_RT5650_NAME "bytcht rt5650" /* card name 'sof-bytcht rt5650' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_RT5645_NAME "bytcht rt5645" /* card name 'sof-bytcht rt5645' */
+#define SOF_CARD_RT5650_NAME "bytcht rt5650" /* card name 'sof-bytcht rt5650' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_RT5645_NAME "chtrt5645"
 #define CARD_RT5650_NAME "chtrt5650"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card snd_soc_card_chtrt5645 = {
-       .name = CARD_RT5645_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = cht_dailink,
        .num_links = ARRAY_SIZE(cht_dailink),
@@ -506,8 +502,6 @@ static struct snd_soc_card snd_soc_card_chtrt5645 = {
 };
 
 static struct snd_soc_card snd_soc_card_chtrt5650 = {
-       .name = CARD_RT5650_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = cht_dailink,
        .num_links = ARRAY_SIZE(cht_dailink),
@@ -541,6 +535,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        const char *platform_name;
        struct cht_mc_private *drv;
        struct acpi_device *adev;
+       bool sof_parent;
        bool found = false;
        bool is_bytcr = false;
        int dai_index = 0;
@@ -680,6 +675,22 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        }
 
        snd_soc_card_set_drvdata(card, drv);
+
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               snd_soc_card_chtrt5645.name = SOF_CARD_RT5645_NAME;
+               snd_soc_card_chtrt5645.driver_name = SOF_DRIVER_NAME;
+               snd_soc_card_chtrt5650.name = SOF_CARD_RT5650_NAME;
+               snd_soc_card_chtrt5650.driver_name = SOF_DRIVER_NAME;
+       } else {
+               snd_soc_card_chtrt5645.name = CARD_RT5645_NAME;
+               snd_soc_card_chtrt5645.driver_name = DRIVER_NAME;
+               snd_soc_card_chtrt5650.name = CARD_RT5650_NAME;
+               snd_soc_card_chtrt5650.driver_name = DRIVER_NAME;
+       }
+
        ret_val = devm_snd_soc_register_card(&pdev->dev, card);
        if (ret_val) {
                dev_err(&pdev->dev,
index 8442be93eb1c6bf8ecb47f05893c8e0b7a8b5346..6c46bfc43b504f8d534d63de3a97ab5d9b4cdedf 100644 (file)
@@ -382,19 +382,15 @@ static int cht_resume_post(struct snd_soc_card *card)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_BAYTRAIL)
 /* use space before codec name to simplify card ID, and simplify driver name */
-#define CARD_NAME "bytcht rt5672" /* card name will be 'sof-bytcht rt5672' */
-#define DRIVER_NAME "SOF"
-#else
+#define SOF_CARD_NAME "bytcht rt5672" /* card name will be 'sof-bytcht rt5672' */
+#define SOF_DRIVER_NAME "SOF"
+
 #define CARD_NAME "cht-bsw-rt5672"
 #define DRIVER_NAME NULL /* card name will be used for driver name */
-#endif
 
 /* SoC card */
 static struct snd_soc_card snd_soc_card_cht = {
-       .name = CARD_NAME,
-       .driver_name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .dai_link = cht_dailink,
        .num_links = ARRAY_SIZE(cht_dailink),
@@ -417,6 +413,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        struct snd_soc_acpi_mach *mach = pdev->dev.platform_data;
        const char *platform_name;
        struct acpi_device *adev;
+       bool sof_parent;
        int i;
 
        drv = devm_kzalloc(&pdev->dev, sizeof(*drv), GFP_KERNEL);
@@ -458,6 +455,17 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
        }
        snd_soc_card_set_drvdata(&snd_soc_card_cht, drv);
 
+       sof_parent = snd_soc_acpi_sof_parent(&pdev->dev);
+
+       /* set card and driver name */
+       if (sof_parent) {
+               snd_soc_card_cht.name = SOF_CARD_NAME;
+               snd_soc_card_cht.driver_name = SOF_DRIVER_NAME;
+       } else {
+               snd_soc_card_cht.name = CARD_NAME;
+               snd_soc_card_cht.driver_name = DRIVER_NAME;
+       }
+
        /* register the soc card */
        ret_val = devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_cht);
        if (ret_val) {