e800_wm9712.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * e800-wm9712.c -- SoC audio for e800
  3. *
  4. * Based on tosa.c
  5. *
  6. * Copyright 2007 (c) Ian Molton <spyro@f2s.com>
  7. *
  8. * This program is free software; you can redistribute it and/or modify it
  9. * under the terms of the GNU General Public License as published by the
  10. * Free Software Foundation; version 2 ONLY.
  11. *
  12. */
  13. #include <linux/module.h>
  14. #include <linux/moduleparam.h>
  15. #include <linux/device.h>
  16. #include <sound/core.h>
  17. #include <sound/pcm.h>
  18. #include <sound/soc.h>
  19. #include <sound/soc-dapm.h>
  20. #include <asm/mach-types.h>
  21. #include <mach/audio.h>
  22. #include "../codecs/wm9712.h"
  23. #include "pxa2xx-pcm.h"
  24. #include "pxa2xx-ac97.h"
  25. static struct snd_soc_card e800;
  26. static struct snd_soc_dai_link e800_dai[] = {
  27. {
  28. .name = "AC97 Aux",
  29. .stream_name = "AC97 Aux",
  30. .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
  31. .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
  32. },
  33. };
  34. static struct snd_soc_card e800 = {
  35. .name = "Toshiba e800",
  36. .platform = &pxa2xx_soc_platform,
  37. .dai_link = e800_dai,
  38. .num_links = ARRAY_SIZE(e800_dai),
  39. };
  40. static struct snd_soc_device e800_snd_devdata = {
  41. .card = &e800,
  42. .codec_dev = &soc_codec_dev_wm9712,
  43. };
  44. static struct platform_device *e800_snd_device;
  45. static int __init e800_init(void)
  46. {
  47. int ret;
  48. if (!machine_is_e800())
  49. return -ENODEV;
  50. e800_snd_device = platform_device_alloc("soc-audio", -1);
  51. if (!e800_snd_device)
  52. return -ENOMEM;
  53. platform_set_drvdata(e800_snd_device, &e800_snd_devdata);
  54. e800_snd_devdata.dev = &e800_snd_device->dev;
  55. ret = platform_device_add(e800_snd_device);
  56. if (ret)
  57. platform_device_put(e800_snd_device);
  58. return ret;
  59. }
  60. static void __exit e800_exit(void)
  61. {
  62. platform_device_unregister(e800_snd_device);
  63. }
  64. module_init(e800_init);
  65. module_exit(e800_exit);
  66. /* Module information */
  67. MODULE_AUTHOR("Ian Molton <spyro@f2s.com>");
  68. MODULE_DESCRIPTION("ALSA SoC driver for e800");
  69. MODULE_LICENSE("GPL");