wm2200.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * linux/sound/wm2200.h -- Platform data for WM2200
  3. *
  4. * Copyright 2012 Wolfson Microelectronics. PLC.
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. */
  10. #ifndef __LINUX_SND_WM2200_H
  11. #define __LINUX_SND_WM2200_H
  12. #define WM2200_GPIO_SET 0x10000
  13. #define WM2200_MAX_MICBIAS 2
  14. enum wm2200_in_mode {
  15. WM2200_IN_SE = 0,
  16. WM2200_IN_DIFF = 1,
  17. WM2200_IN_DMIC = 2,
  18. };
  19. enum wm2200_dmic_sup {
  20. WM2200_DMIC_SUP_MICVDD = 0,
  21. WM2200_DMIC_SUP_MICBIAS1 = 1,
  22. WM2200_DMIC_SUP_MICBIAS2 = 2,
  23. };
  24. enum wm2200_mbias_lvl {
  25. WM2200_MBIAS_LVL_1V5 = 1,
  26. WM2200_MBIAS_LVL_1V8 = 2,
  27. WM2200_MBIAS_LVL_1V9 = 3,
  28. WM2200_MBIAS_LVL_2V0 = 4,
  29. WM2200_MBIAS_LVL_2V2 = 5,
  30. WM2200_MBIAS_LVL_2V4 = 6,
  31. WM2200_MBIAS_LVL_2V5 = 7,
  32. WM2200_MBIAS_LVL_2V6 = 8,
  33. };
  34. struct wm2200_micbias {
  35. enum wm2200_mbias_lvl mb_lvl; /** Regulated voltage */
  36. unsigned int discharge:1; /** Actively discharge */
  37. unsigned int fast_start:1; /** Enable aggressive startup ramp rate */
  38. unsigned int bypass:1; /** Use bypass mode */
  39. };
  40. struct wm2200_pdata {
  41. int reset; /** GPIO controlling /RESET, if any */
  42. int ldo_ena; /** GPIO controlling LODENA, if any */
  43. int irq_flags;
  44. int gpio_defaults[4];
  45. enum wm2200_in_mode in_mode[3];
  46. enum wm2200_dmic_sup dmic_sup[3];
  47. /** MICBIAS configurations */
  48. struct wm2200_micbias micbias[WM2200_MAX_MICBIAS];
  49. };
  50. #endif