]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: soc-utils: Transition to the faux device interface
authorSudeep Holla <sudeep.holla@arm.com>
Mon, 17 Mar 2025 10:13:18 +0000 (10:13 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 17 Mar 2025 16:25:51 +0000 (16:25 +0000)
The ASoC soc-utils driver does not require the creation of a platform
device. Originally, this approach was chosen for simplicity when the
driver was first implemented.

With the introduction of the lightweight faux device interface, we now
have a more appropriate alternative. Migrate the driver to utilize the
faux bus, given that the platform device it previously created was not
a real one anyway. This will simplify the code, reducing its footprint
while maintaining functionality.

Cc: Mark Brown <broonie@kernel.org>
Cc: Takashi Iwai <tiwai@suse.com>
Cc: linux-sound@vger.kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Link: https://patch.msgid.link/20250317-plat2faux_dev-v1-6-5fe67c085ad5@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-utils.c

index 318b141c00b3800b780276f9683204f926b96ad2..5e3e4f14c3927d7c7681e516c4416c201be84319 100644 (file)
@@ -7,7 +7,7 @@
 // Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
 //         Liam Girdwood <lrg@slimlogic.co.uk>
 
-#include <linux/platform_device.h>
+#include <linux/device/faux.h>
 #include <linux/export.h>
 #include <linux/math.h>
 #include <sound/core.h>
@@ -262,48 +262,38 @@ struct snd_soc_dai_link_component snd_soc_dummy_dlc = {
 };
 EXPORT_SYMBOL_GPL(snd_soc_dummy_dlc);
 
-static int snd_soc_dummy_probe(struct platform_device *pdev)
+static int snd_soc_dummy_probe(struct faux_device *fdev)
 {
        int ret;
 
-       ret = devm_snd_soc_register_component(&pdev->dev,
+       ret = devm_snd_soc_register_component(&fdev->dev,
                                              &dummy_codec, &dummy_dai, 1);
        if (ret < 0)
                return ret;
 
-       ret = devm_snd_soc_register_component(&pdev->dev, &dummy_platform,
+       ret = devm_snd_soc_register_component(&fdev->dev, &dummy_platform,
                                              NULL, 0);
 
        return ret;
 }
 
-static struct platform_driver soc_dummy_driver = {
-       .driver = {
-               .name = "snd-soc-dummy",
-       },
+static struct faux_device_ops soc_dummy_ops = {
        .probe = snd_soc_dummy_probe,
 };
 
-static struct platform_device *soc_dummy_dev;
+static struct faux_device *soc_dummy_dev;
 
 int __init snd_soc_util_init(void)
 {
-       int ret;
-
-       soc_dummy_dev =
-               platform_device_register_simple("snd-soc-dummy", -1, NULL, 0);
-       if (IS_ERR(soc_dummy_dev))
-               return PTR_ERR(soc_dummy_dev);
+       soc_dummy_dev = faux_device_create("snd-soc-dummy", NULL,
+                                          &soc_dummy_ops);
+       if (!soc_dummy_dev)
+               return -ENODEV;
 
-       ret = platform_driver_register(&soc_dummy_driver);
-       if (ret != 0)
-               platform_device_unregister(soc_dummy_dev);
-
-       return ret;
+       return 0;
 }
 
 void snd_soc_util_exit(void)
 {
-       platform_driver_unregister(&soc_dummy_driver);
-       platform_device_unregister(soc_dummy_dev);
+       faux_device_destroy(soc_dummy_dev);
 }