ASoC: Intel: use platform_data for machine drivers
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Sat, 17 Nov 2018 00:47:06 +0000 (18:47 -0600)
committerMark Brown <broonie@kernel.org>
Tue, 20 Nov 2018 16:58:52 +0000 (16:58 +0000)
For some reason we have different mechanisms for passing data to
machine drivers. Use the solution used by Atom/SST and SOF instead of
using drv_data as done by Skylake.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/kbl_rt5663_max98927.c
sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
sound/soc/intel/boards/skl_hda_dsp_generic.c
sound/soc/intel/boards/skl_nau88l25_max98357a.c
sound/soc/intel/boards/skl_nau88l25_ssm4567.c
sound/soc/intel/skylake/skl.c

index c2a96940f9f296986f7b99abae9afa8645e16c75..d71475200b08aad41ea82a466b8c35a95fc8aa6d 100644 (file)
@@ -984,7 +984,7 @@ static int kabylake_audio_probe(struct platform_device *pdev)
        kabylake_audio_card->dev = &pdev->dev;
        snd_soc_card_set_drvdata(kabylake_audio_card, ctx);
 
-       mach = dev_get_drvdata(&pdev->dev);
+       mach = (&pdev->dev)->platform_data;
        if (mach)
                dmic_constraints = mach->mach_params.dmic_num == 2 ?
                        &constraints_dmic_2ch : &constraints_dmic_channels;
index d7df307b406f7a8186ceefa2594795e097fc3b63..7044d8c2b187375cd6fd44b3342eedf4b37fd8d1 100644 (file)
@@ -659,7 +659,7 @@ static int kabylake_audio_probe(struct platform_device *pdev)
        kabylake_audio_card.dev = &pdev->dev;
        snd_soc_card_set_drvdata(&kabylake_audio_card, ctx);
 
-       mach = dev_get_drvdata(&pdev->dev);
+       mach = (&pdev->dev)->platform_data;
        if (mach)
                dmic_constraints = mach->mach_params.dmic_num == 2 ?
                        &constraints_dmic_2ch : &constraints_dmic_channels;
index 15c502d6774d08d255f65667df322aa4bfbc149e..b9a21e64ead2ecafdd9daaf78b96862b75ece2a7 100644 (file)
@@ -146,7 +146,7 @@ static int skl_hda_audio_probe(struct platform_device *pdev)
 
        INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
 
-       mach = dev_get_drvdata(&pdev->dev);
+       mach = (&pdev->dev)->platform_data;
        if (!mach)
                return -EINVAL;
 
index 931890f9aa742c647084df4d66283b4dfce8f9d4..0922106bd323d7e89bd6e7e25b890dc14e6d22fb 100644 (file)
@@ -652,7 +652,7 @@ static int skylake_audio_probe(struct platform_device *pdev)
        skylake_audio_card.dev = &pdev->dev;
        snd_soc_card_set_drvdata(&skylake_audio_card, ctx);
 
-       mach = dev_get_drvdata(&pdev->dev);
+       mach = (&pdev->dev)->platform_data;
        if (mach)
                dmic_constraints = mach->mach_params.dmic_num == 2 ?
                        &constraints_dmic_2ch : &constraints_dmic_channels;
index 657c650766fc71916844363ed8e4dfa2d61f0c21..8433c521d39f21392524312ec18a499e205435c0 100644 (file)
@@ -705,7 +705,7 @@ static int skylake_audio_probe(struct platform_device *pdev)
        skylake_audio_card.dev = &pdev->dev;
        snd_soc_card_set_drvdata(&skylake_audio_card, ctx);
 
-       mach = dev_get_drvdata(&pdev->dev);
+       mach = (&pdev->dev)->platform_data;
        if (mach)
                dmic_constraints = mach->mach_params.dmic_num == 2 ?
                        &constraints_dmic_2ch : &constraints_dmic_channels;
index b66d66acbc35a3b11124297663abc3bf418a4e88..f81e7996aa0cea898a1d08396ac42d5fed0be901 100644 (file)
@@ -534,6 +534,16 @@ static int skl_machine_device_register(struct skl *skl)
                return -EIO;
        }
 
+       mach->mach_params.platform = dev_name(bus->dev);
+       mach->mach_params.codec_mask = bus->codec_mask;
+
+       ret = platform_device_add_data(pdev, (const void *)mach, sizeof(*mach));
+       if (ret) {
+               dev_err(bus->dev, "failed to add machine device platform data\n");
+               platform_device_put(pdev);
+               return ret;
+       }
+
        ret = platform_device_add(pdev);
        if (ret) {
                dev_err(bus->dev, "failed to add machine device\n");
@@ -541,9 +551,6 @@ static int skl_machine_device_register(struct skl *skl)
                return -EIO;
        }
 
-       mach->mach_params.platform = dev_name(bus->dev);
-       mach->mach_params.codec_mask = bus->codec_mask;
-       dev_set_drvdata(&pdev->dev, mach);
 
        skl->i2s_dev = pdev;