|
@@ -13,6 +13,7 @@
|
|
|
* option) any later version.
|
|
|
*/
|
|
|
|
|
|
+#include <linux/platform_device.h>
|
|
|
#include <sound/core.h>
|
|
|
#include <sound/pcm.h>
|
|
|
#include <sound/pcm_params.h>
|
|
@@ -55,3 +56,57 @@ int snd_soc_params_to_bclk(struct snd_pcm_hw_params *params)
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(snd_soc_params_to_bclk);
|
|
|
+
|
|
|
+static struct snd_soc_platform_driver dummy_platform;
|
|
|
+
|
|
|
+static __devinit int snd_soc_dummy_probe(struct platform_device *pdev)
|
|
|
+{
|
|
|
+ return snd_soc_register_platform(&pdev->dev, &dummy_platform);
|
|
|
+}
|
|
|
+
|
|
|
+static __devexit int snd_soc_dummy_remove(struct platform_device *pdev)
|
|
|
+{
|
|
|
+ snd_soc_unregister_platform(&pdev->dev);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static struct platform_driver soc_dummy_driver = {
|
|
|
+ .driver = {
|
|
|
+ .name = "snd-soc-dummy",
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ },
|
|
|
+ .probe = snd_soc_dummy_probe,
|
|
|
+ .remove = __devexit_p(snd_soc_dummy_remove),
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device *soc_dummy_dev;
|
|
|
+
|
|
|
+static int __init snd_soc_util_init(void)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ soc_dummy_dev = platform_device_alloc("snd-soc-dummy", -1);
|
|
|
+ if (!soc_dummy_dev)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ ret = platform_device_add(soc_dummy_dev);
|
|
|
+ if (ret != 0) {
|
|
|
+ platform_device_put(soc_dummy_dev);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = platform_driver_register(&soc_dummy_driver);
|
|
|
+ if (ret != 0)
|
|
|
+ platform_device_unregister(soc_dummy_dev);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+module_init(snd_soc_util_init);
|
|
|
+
|
|
|
+static void __exit snd_soc_util_exit(void)
|
|
|
+{
|
|
|
+ platform_device_unregister(soc_dummy_dev);
|
|
|
+ platform_driver_unregister(&soc_dummy_driver);
|
|
|
+}
|
|
|
+module_exit(snd_soc_util_exit);
|