diff options
author | Mans Rullgard <mans.rullgard@linaro.org> | 2011-09-11 11:57:32 +0100 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2011-09-23 09:01:15 -0600 |
commit | 5be406b8a0adf47573802b07704c05788d1e1ae2 (patch) | |
tree | 6da441357a080c5af7b5b71ec51bc645a7514b0b /sound/soc/omap/omap3pandora.c | |
parent | dd7822c7e3580f5421c4f5e648012543c9b5614d (diff) |
LINARO: SAUCE: ASoC: omap: convert per-board modules to platform drivers
This converts the per-board modules to platform drivers for a
device created by in main platform setup. These drivers call
snd_soc_register_card() directly instead of going via a "soc-audio"
device and the corresponding driver in soc-core.
Signed-off-by: Mans Rullgard <mans.rullgard@linaro.org>
Diffstat (limited to 'sound/soc/omap/omap3pandora.c')
-rw-r--r-- | sound/soc/omap/omap3pandora.c | 67 |
1 files changed, 40 insertions, 27 deletions
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c index 8047c521e31..5d369f8130f 100644 --- a/sound/soc/omap/omap3pandora.c +++ b/sound/soc/omap/omap3pandora.c @@ -252,17 +252,15 @@ static struct snd_soc_card snd_soc_card_omap3pandora = { .num_links = ARRAY_SIZE(omap3pandora_dai), }; -static struct platform_device *omap3pandora_snd_device; - -static int __init omap3pandora_soc_init(void) +static int __devinit omap3pandora_soc_probe(struct platform_device *pdev) { + struct snd_soc_card *card = &snd_soc_card_omap3pandora; int ret; - if (!machine_is_omap3_pandora()) - return -ENODEV; - pr_info("OMAP3 Pandora SoC init\n"); + card->dev = &pdev->dev; + ret = gpio_request(OMAP3_PANDORA_DAC_POWER_GPIO, "dac_power"); if (ret) { pr_err(PREFIX "Failed to get DAC power GPIO\n"); @@ -287,53 +285,68 @@ static int __init omap3pandora_soc_init(void) goto fail1; } - omap3pandora_snd_device = platform_device_alloc("soc-audio", -1); - if (omap3pandora_snd_device == NULL) { - pr_err(PREFIX "Platform device allocation failed\n"); - ret = -ENOMEM; - goto fail1; - } - - platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora); - - ret = platform_device_add(omap3pandora_snd_device); + ret = snd_soc_register_card(card); if (ret) { - pr_err(PREFIX "Unable to add platform device\n"); - goto fail2; + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", + ret); + goto fail1; } - omap3pandora_dac_reg = regulator_get(&omap3pandora_snd_device->dev, "vcc"); + omap3pandora_dac_reg = regulator_get(card->dev, "vcc"); if (IS_ERR(omap3pandora_dac_reg)) { pr_err(PREFIX "Failed to get DAC regulator from %s: %ld\n", - dev_name(&omap3pandora_snd_device->dev), + dev_name(card->dev), PTR_ERR(omap3pandora_dac_reg)); ret = PTR_ERR(omap3pandora_dac_reg); - goto fail3; + goto fail2; } return 0; -fail3: - platform_device_del(omap3pandora_snd_device); fail2: - platform_device_put(omap3pandora_snd_device); + snd_soc_unregister_card(card); fail1: gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); fail0: gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); return ret; } -module_init(omap3pandora_soc_init); -static void __exit omap3pandora_soc_exit(void) +static int __devexit omap3pandora_soc_remove(struct platform_device *pdev) { + struct snd_soc_card *card = platform_get_drvdata(pdev); + regulator_put(omap3pandora_dac_reg); - platform_device_unregister(omap3pandora_snd_device); + snd_soc_unregister_card(card); gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); + + return 0; +} + +static struct platform_driver omap3pandora_driver = { + .driver = { + .name = "pandora-soc-audio", + .owner = THIS_MODULE, + }, + + .probe = omap3pandora_soc_probe, + .remove = __devexit_p(omap3pandora_soc_remove), +}; + +static int __init omap3pandora_soc_init(void) +{ + return platform_driver_register(&omap3pandora_driver); +} +module_init(omap3pandora_soc_init); + +static void __exit omap3pandora_soc_exit(void) +{ + platform_driver_unregister(&omap3pandora_driver); } module_exit(omap3pandora_soc_exit); MODULE_AUTHOR("Grazvydas Ignotas <notasas@gmail.com>"); MODULE_DESCRIPTION("ALSA SoC OMAP3 Pandora"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:pandora-soc-audio"); |