comparator.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. * comparator.h -- Comparator Aux ADC for Wolfson WM8350 PMIC
  3. *
  4. * Copyright 2007 Wolfson Microelectronics PLC
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms of the GNU General Public License as published by the
  8. * Free Software Foundation; either version 2 of the License, or (at your
  9. * option) any later version.
  10. */
  11. #ifndef __LINUX_MFD_WM8350_COMPARATOR_H_
  12. #define __LINUX_MFD_WM8350_COMPARATOR_H_
  13. /*
  14. * Registers
  15. */
  16. #define WM8350_DIGITISER_CONTROL_1 0x90
  17. #define WM8350_DIGITISER_CONTROL_2 0x91
  18. #define WM8350_AUX1_READBACK 0x98
  19. #define WM8350_AUX2_READBACK 0x99
  20. #define WM8350_AUX3_READBACK 0x9A
  21. #define WM8350_AUX4_READBACK 0x9B
  22. #define WM8350_CHIP_TEMP_READBACK 0x9F
  23. #define WM8350_GENERIC_COMPARATOR_CONTROL 0xA3
  24. #define WM8350_GENERIC_COMPARATOR_1 0xA4
  25. #define WM8350_GENERIC_COMPARATOR_2 0xA5
  26. #define WM8350_GENERIC_COMPARATOR_3 0xA6
  27. #define WM8350_GENERIC_COMPARATOR_4 0xA7
  28. /*
  29. * R144 (0x90) - Digitiser Control (1)
  30. */
  31. #define WM8350_AUXADC_CTC 0x4000
  32. #define WM8350_AUXADC_POLL 0x2000
  33. #define WM8350_AUXADC_HIB_MODE 0x1000
  34. #define WM8350_AUXADC_SEL8 0x0080
  35. #define WM8350_AUXADC_SEL7 0x0040
  36. #define WM8350_AUXADC_SEL6 0x0020
  37. #define WM8350_AUXADC_SEL5 0x0010
  38. #define WM8350_AUXADC_SEL4 0x0008
  39. #define WM8350_AUXADC_SEL3 0x0004
  40. #define WM8350_AUXADC_SEL2 0x0002
  41. #define WM8350_AUXADC_SEL1 0x0001
  42. /*
  43. * R145 (0x91) - Digitiser Control (2)
  44. */
  45. #define WM8350_AUXADC_MASKMODE_MASK 0x3000
  46. #define WM8350_AUXADC_CRATE_MASK 0x0700
  47. #define WM8350_AUXADC_CAL 0x0004
  48. #define WM8350_AUX_RBMODE 0x0002
  49. #define WM8350_AUXADC_WAIT 0x0001
  50. /*
  51. * R152 (0x98) - AUX1 Readback
  52. */
  53. #define WM8350_AUXADC_SCALE1_MASK 0x6000
  54. #define WM8350_AUXADC_REF1 0x1000
  55. #define WM8350_AUXADC_DATA1_MASK 0x0FFF
  56. /*
  57. * R153 (0x99) - AUX2 Readback
  58. */
  59. #define WM8350_AUXADC_SCALE2_MASK 0x6000
  60. #define WM8350_AUXADC_REF2 0x1000
  61. #define WM8350_AUXADC_DATA2_MASK 0x0FFF
  62. /*
  63. * R154 (0x9A) - AUX3 Readback
  64. */
  65. #define WM8350_AUXADC_SCALE3_MASK 0x6000
  66. #define WM8350_AUXADC_REF3 0x1000
  67. #define WM8350_AUXADC_DATA3_MASK 0x0FFF
  68. /*
  69. * R155 (0x9B) - AUX4 Readback
  70. */
  71. #define WM8350_AUXADC_SCALE4_MASK 0x6000
  72. #define WM8350_AUXADC_REF4 0x1000
  73. #define WM8350_AUXADC_DATA4_MASK 0x0FFF
  74. /*
  75. * R156 (0x9C) - USB Voltage Readback
  76. */
  77. #define WM8350_AUXADC_DATA_USB_MASK 0x0FFF
  78. /*
  79. * R157 (0x9D) - LINE Voltage Readback
  80. */
  81. #define WM8350_AUXADC_DATA_LINE_MASK 0x0FFF
  82. /*
  83. * R158 (0x9E) - BATT Voltage Readback
  84. */
  85. #define WM8350_AUXADC_DATA_BATT_MASK 0x0FFF
  86. /*
  87. * R159 (0x9F) - Chip Temp Readback
  88. */
  89. #define WM8350_AUXADC_DATA_CHIPTEMP_MASK 0x0FFF
  90. /*
  91. * R163 (0xA3) - Generic Comparator Control
  92. */
  93. #define WM8350_DCMP4_ENA 0x0008
  94. #define WM8350_DCMP3_ENA 0x0004
  95. #define WM8350_DCMP2_ENA 0x0002
  96. #define WM8350_DCMP1_ENA 0x0001
  97. /*
  98. * R164 (0xA4) - Generic comparator 1
  99. */
  100. #define WM8350_DCMP1_SRCSEL_MASK 0xE000
  101. #define WM8350_DCMP1_GT 0x1000
  102. #define WM8350_DCMP1_THR_MASK 0x0FFF
  103. /*
  104. * R165 (0xA5) - Generic comparator 2
  105. */
  106. #define WM8350_DCMP2_SRCSEL_MASK 0xE000
  107. #define WM8350_DCMP2_GT 0x1000
  108. #define WM8350_DCMP2_THR_MASK 0x0FFF
  109. /*
  110. * R166 (0xA6) - Generic comparator 3
  111. */
  112. #define WM8350_DCMP3_SRCSEL_MASK 0xE000
  113. #define WM8350_DCMP3_GT 0x1000
  114. #define WM8350_DCMP3_THR_MASK 0x0FFF
  115. /*
  116. * R167 (0xA7) - Generic comparator 4
  117. */
  118. #define WM8350_DCMP4_SRCSEL_MASK 0xE000
  119. #define WM8350_DCMP4_GT 0x1000
  120. #define WM8350_DCMP4_THR_MASK 0x0FFF
  121. /*
  122. * Interrupts.
  123. */
  124. #define WM8350_IRQ_AUXADC_DATARDY 16
  125. #define WM8350_IRQ_AUXADC_DCOMP4 17
  126. #define WM8350_IRQ_AUXADC_DCOMP3 18
  127. #define WM8350_IRQ_AUXADC_DCOMP2 19
  128. #define WM8350_IRQ_AUXADC_DCOMP1 20
  129. #define WM8350_IRQ_SYS_HYST_COMP_FAIL 21
  130. #define WM8350_IRQ_SYS_CHIP_GT115 22
  131. #define WM8350_IRQ_SYS_CHIP_GT140 23
  132. /*
  133. * USB/2, LINE & BATT = ((VRTC * 2) / 4095)) * 10e6 uV
  134. * Where VRTC = 2.7 V
  135. */
  136. #define WM8350_AUX_COEFF 1319
  137. #define WM8350_AUXADC_AUX1 0
  138. #define WM8350_AUXADC_AUX2 1
  139. #define WM8350_AUXADC_AUX3 2
  140. #define WM8350_AUXADC_AUX4 3
  141. #define WM8350_AUXADC_USB 4
  142. #define WM8350_AUXADC_LINE 5
  143. #define WM8350_AUXADC_BATT 6
  144. #define WM8350_AUXADC_TEMP 7
  145. struct wm8350;
  146. /*
  147. * AUX ADC Readback
  148. */
  149. int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale,
  150. int vref);
  151. #endif