diff options
Diffstat (limited to 'sound/soc/codecs/dmic.c')
| -rw-r--r-- | sound/soc/codecs/dmic.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/sound/soc/codecs/dmic.c b/sound/soc/codecs/dmic.c index 57e9dac88d3..b2090b2a5e2 100644 --- a/sound/soc/codecs/dmic.c +++ b/sound/soc/codecs/dmic.c @@ -21,6 +21,7 @@ #include <linux/platform_device.h> #include <linux/slab.h> +#include <linux/module.h> #include <sound/core.h> #include <sound/pcm.h> #include <sound/soc.h> @@ -39,15 +40,30 @@ static struct snd_soc_dai_driver dmic_dai = { }, }; -static struct snd_soc_codec_driver soc_dmic = {}; +static const struct snd_soc_dapm_widget dmic_dapm_widgets[] = { + SND_SOC_DAPM_AIF_OUT("DMIC AIF", "Capture", 0, + SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_INPUT("DMic"), +}; + +static const struct snd_soc_dapm_route intercon[] = { + {"DMIC AIF", NULL, "DMic"}, +}; + +static struct snd_soc_codec_driver soc_dmic = { + .dapm_widgets = dmic_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(dmic_dapm_widgets), + .dapm_routes = intercon, + .num_dapm_routes = ARRAY_SIZE(intercon), +}; -static int __devinit dmic_dev_probe(struct platform_device *pdev) +static int dmic_dev_probe(struct platform_device *pdev) { return snd_soc_register_codec(&pdev->dev, &soc_dmic, &dmic_dai, 1); } -static int __devexit dmic_dev_remove(struct platform_device *pdev) +static int dmic_dev_remove(struct platform_device *pdev) { snd_soc_unregister_codec(&pdev->dev); return 0; @@ -61,20 +77,10 @@ static struct platform_driver dmic_driver = { .owner = THIS_MODULE, }, .probe = dmic_dev_probe, - .remove = __devexit_p(dmic_dev_remove), + .remove = dmic_dev_remove, }; -static int __init dmic_init(void) -{ - return platform_driver_register(&dmic_driver); -} -module_init(dmic_init); - -static void __exit dmic_exit(void) -{ - platform_driver_unregister(&dmic_driver); -} -module_exit(dmic_exit); +module_platform_driver(dmic_driver); MODULE_DESCRIPTION("Generic DMIC driver"); MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>"); |
