comparator.h 4.9 KB

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