239
239
.num_links = ARRAY_SIZE(zoom2_dai),
242
static struct platform_device *zoom2_snd_device;
244
static int __init zoom2_soc_init(void)
242
static int __devinit zoom2_soc_probe(struct platform_device *pdev)
244
struct snd_soc_card *card = &snd_soc_zoom2;
248
if (!machine_is_omap_zoom2())
250
printk(KERN_INFO "Zoom2 SoC init\n");
252
zoom2_snd_device = platform_device_alloc("soc-audio", -1);
253
if (!zoom2_snd_device) {
254
printk(KERN_ERR "Platform device allocation failed\n");
258
platform_set_drvdata(zoom2_snd_device, &snd_soc_zoom2);
259
ret = platform_device_add(zoom2_snd_device);
247
pr_info("Zoom2 SoC init\n");
249
card->dev = &pdev->dev;
263
251
BUG_ON(gpio_request(ZOOM2_HEADSET_MUX_GPIO, "hs_mux") < 0);
264
252
gpio_direction_output(ZOOM2_HEADSET_MUX_GPIO, 0);
266
254
BUG_ON(gpio_request(ZOOM2_HEADSET_EXTMUTE_GPIO, "ext_mute") < 0);
267
255
gpio_direction_output(ZOOM2_HEADSET_EXTMUTE_GPIO, 0);
257
ret = snd_soc_register_card(card);
259
dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
272
printk(KERN_ERR "Unable to add platform device\n");
273
platform_device_put(zoom2_snd_device);
267
gpio_free(ZOOM2_HEADSET_MUX_GPIO);
268
gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO);
273
static int __devexit zoom2_soc_remove(struct platform_device *pdev)
275
struct snd_soc_card *card = platform_get_drvdata(pdev);
277
snd_soc_unregister_card(card);
279
gpio_free(ZOOM2_HEADSET_MUX_GPIO);
280
gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO);
285
static struct platform_driver zoom2_driver = {
287
.name = "zoom2-soc-audio",
288
.owner = THIS_MODULE,
291
.probe = zoom2_soc_probe,
292
.remove = __devexit_p(zoom2_soc_remove),
295
static int __init zoom2_soc_init(void)
297
return platform_driver_register(&zoom2_driver);
277
299
module_init(zoom2_soc_init);
279
301
static void __exit zoom2_soc_exit(void)
281
gpio_free(ZOOM2_HEADSET_MUX_GPIO);
282
gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO);
284
platform_device_unregister(zoom2_snd_device);
303
platform_driver_unregister(&zoom2_driver);
286
305
module_exit(zoom2_soc_exit);
288
307
MODULE_AUTHOR("Misael Lopez Cruz <x0052729@ti.com>");
289
308
MODULE_DESCRIPTION("ALSA SoC Zoom2");
290
309
MODULE_LICENSE("GPL");
310
MODULE_ALIAS("platform:zoom2-soc-audio");