common_gpadc.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. /*
  2. * Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved.
  3. *
  4. * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in
  5. * the the People's Republic of China and other countries.
  6. * All Allwinner Technology Co.,Ltd. trademarks are used with permission.
  7. *
  8. * DISCLAIMER
  9. * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT.
  10. * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
  11. * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN
  12. * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES.
  13. * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS
  14. * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE.
  15. * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY.
  16. *
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT
  19. * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND,
  20. * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING
  21. * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE
  22. * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  23. * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  24. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  25. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  26. * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION)
  27. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  28. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  30. * OF THE POSSIBILITY OF SUCH DAMAGE.
  31. */
  32. #ifndef __COMMON_GPADC_I_H__
  33. #define __COMMON_GPADC_I_H__
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* GPADC register offset */
  38. #define GP_SR_REG (0x00) /* Sample Rate config register */
  39. #define GP_CTRL_REG (0x04) /* control register */
  40. #define GP_CS_EN_REG (0x08) /* compare and select enable register */
  41. #define GP_FIFO_INTC_REG (0x0c) /* FIFO interrupt config register */
  42. #define GP_FIFO_INTS_REG (0x10) /* FIFO interrupt status register */
  43. #define GP_FIFO_DATA_REG (0X14) /* FIFO data register */
  44. #define GP_CB_DATA_REG (0X18) /* calibration data register */
  45. #define GP_DATAL_INTC_REG (0x20)
  46. #define GP_DATAH_INTC_REG (0x24)
  47. #define GP_DATA_INTC_REG (0x28)
  48. #define GP_DATAL_INTS_REG (0x30)
  49. #define GP_DATAH_INTS_REG (0x34)
  50. #define GP_DATA_INTS_REG (0x38)
  51. #define GP_CH0_CMP_DATA_REG (0x40) /* channal 0 compare data register */
  52. #define GP_CH1_CMP_DATA_REG (0x44) /* channal 1 compare data register */
  53. #define GP_CH2_CMP_DATA_REG (0x48) /* channal 2 compare data register */
  54. #define GP_CH3_CMP_DATA_REG (0x4c) /* channal 3 compare data register */
  55. #define GP_CH4_CMP_DATA_REG (0x50) /* channal 4 compare data register */
  56. #define GP_CH5_CMP_DATA_REG (0x54) /* channal 5 compare data register */
  57. #define GP_CH6_CMP_DATA_REG (0x58) /* channal 6 compare data register */
  58. #define GP_CH7_CMP_DATA_REG (0x5c) /* channal 7 compare data register */
  59. #define GP_CH0_DATA_REG (0x80) /* channal 0 data register */
  60. #define GP_CH1_DATA_REG (0x84) /* channal 1 data register */
  61. #define GP_CH2_DATA_REG (0x88) /* channal 2 data register */
  62. #define GP_CH3_DATA_REG (0x8c) /* channal 3 data register */
  63. #define GP_CH4_DATA_REG (0x90) /* channal 4 data register */
  64. #define GP_CH5_DATA_REG (0x94) /* channal 5 data register */
  65. #define GP_CH6_DATA_REG (0x98) /* channal 6 data register */
  66. #define GP_CH7_DATA_REG (0x9c) /* channal 7 data register */
  67. /*
  68. * GP_SR_REG default value: 0x01df_002f 50KHZ
  69. * sample_rate = clk_in/(n+1) = 24MHZ/(0x1df + 1) = 50KHZ
  70. */
  71. #define GP_SR_CON (0xffff << 16)
  72. /* GP_CTRL_REG default value:0x0000_0000 */
  73. #define GP_FIRST_CONCERT_DLY (0xff<<24) /* delay time of the first time */
  74. #define GP_CALI_EN (1 << 17) /* enable calibration */
  75. #define GP_ADC_EN (1 << 16) /* GPADC function enable */
  76. /*
  77. * 00:single conversion mode
  78. * 01:single-cycle conversion mode
  79. * 10:continuous mode, 11:burst mode
  80. */
  81. #define GP_MODE_SELECT (3 << 18)
  82. /* 0:disable, 1:enable */
  83. #define GP_CH7_CMP_EN (1 << 23)
  84. #define GP_CH6_CMP_EN (1 << 22)
  85. #define GP_CH5_CMP_EN (1 << 21)
  86. #define GP_CH4_CMP_EN (1 << 20)
  87. #define GP_CH3_CMP_EN (1 << 19)
  88. #define GP_CH2_CMP_EN (1 << 18)
  89. #define GP_CH1_CMP_EN (1 << 17)
  90. #define GP_CH0_CMP_EN (1 << 16)
  91. #define GP_CH7_SELECT (1 << 7)
  92. #define GP_CH6_SELECT (1 << 6)
  93. #define GP_CH5_SELECT (1 << 5)
  94. #define GP_CH4_SELECT (1 << 4)
  95. #define GP_CH3_SELECT (1 << 3)
  96. #define GP_CH2_SELECT (1 << 2)
  97. #define GP_CH1_SELECT (1 << 1)
  98. #define GP_CH0_SELECT (1 << 0)
  99. /*
  100. * GP_FIFO_INTC_REG default value: 0x0000_0f00
  101. * 0:disable, 1:enable
  102. */
  103. #define FIFO_OVER_IRQ_EN (1 << 17) /* fifo over run irq enable */
  104. #define FIFO_DATA_IRQ_EN (1 << 16) /* fifo data irq enable */
  105. /* write 1 to flush TX FIFO, self clear to 0 */
  106. #define FIFO_FLUSH (1 << 4)
  107. /*
  108. * GP_FIFO_INTS_REG default value: 0x0000_0000
  109. * 0:no pending irq, 1: over pending, need write 1 to clear flag
  110. */
  111. #define FIFO_OVER_PEND (1 << 17) /* fifo over pending flag */
  112. #define FIFO_DATA_PEND (1 << 16) /* fifo data pending flag */
  113. #define FIFO_CNT (0x3f << 8) /* the data count in fifo */
  114. /* GP_FIFO_DATA_REG default value: 0x0000_0000 */
  115. #define GP_FIFO_DATA (0xfff << 0) /* GPADC data in fifo */
  116. /* GP_CB_DATA_REG default value: 0x0000_0000 */
  117. #define GP_CB_DATA (0xfff << 0) /* GPADC calibration data */
  118. /* GP_INTC_REG default value: 0x0000_0000 */
  119. #define GP_CH7_LOW_IRQ_EN (1 << 7) /* 0:disable, 1:enable */
  120. #define GP_CH6_LOW_IRQ_EN (1 << 6)
  121. #define GP_CH5_LOW_IRQ_EN (1 << 5)
  122. #define GP_CH4_LOW_IRQ_EN (1 << 4)
  123. #define GP_CH3_LOW_IRQ_EN (1 << 3)
  124. #define GP_CH2_LOW_IRQ_EN (1 << 2)
  125. #define GP_CH1_LOW_IRQ_EN (1 << 1)
  126. #define GP_CH0_LOW_IRQ_EN (1 << 0)
  127. #define GP_CH7_HIG_IRQ_EN (1 << 7)
  128. #define GP_CH6_HIG_IRQ_EN (1 << 6)
  129. #define GP_CH5_HIG_IRQ_EN (1 << 5)
  130. #define GP_CH4_HIG_IRQ_EN (1 << 4)
  131. #define GP_CH3_HIG_IRQ_EN (1 << 3)
  132. #define GP_CH2_HIG_IRQ_EN (1 << 2)
  133. #define GP_CH1_HIG_IRQ_EN (1 << 1)
  134. #define GP_CH0_HIG_IRQ_EN (1 << 0)
  135. #define GP_CH7_DATA_IRQ_EN (1 << 7)
  136. #define GP_CH6_DATA_IRQ_EN (1 << 6)
  137. #define GP_CH5_DATA_IRQ_EN (1 << 5)
  138. #define GP_CH4_DATA_IRQ_EN (1 << 4)
  139. #define GP_CH3_DATA_IRQ_EN (1 << 3)
  140. #define GP_CH2_DATA_IRQ_EN (1 << 2)
  141. #define GP_CH1_DATA_IRQ_EN (1 << 1)
  142. #define GP_CH0_DATA_IRQ_EN (1 << 0)
  143. /* GP_INTS_REG default value: 0x0000_0000 */
  144. #define GP_CH7_LOW (1 << 7) /* 0:no pending, 1:pending */
  145. #define GP_CH6_LOW (1 << 6)
  146. #define GP_CH5_LOW (1 << 5)
  147. #define GP_CH4_LOW (1 << 4)
  148. #define GP_CH3_LOW (1 << 3)
  149. #define GP_CH2_LOW (1 << 2)
  150. #define GP_CH1_LOW (1 << 1)
  151. #define GP_CH0_LOW (1 << 0)
  152. #define GP_CH7_HIG (1 << 7)
  153. #define GP_CH6_HIG (1 << 6)
  154. #define GP_CH5_HIG (1 << 5)
  155. #define GP_CH4_HIG (1 << 4)
  156. #define GP_CH3_HIG (1 << 3)
  157. #define GP_CH2_HIG (1 << 2)
  158. #define GP_CH1_HIG (1 << 1)
  159. #define GP_CH0_HIG (1 << 0)
  160. #define GP_CH7_DATA (1 << 7)
  161. #define GP_CH6_DATA (1 << 6)
  162. #define GP_CH5_DATA (1 << 5)
  163. #define GP_CH4_DATA (1 << 4)
  164. #define GP_CH3_DATA (1 << 3)
  165. #define GP_CH2_DATA (1 << 2)
  166. #define GP_CH1_DATA (1 << 1)
  167. #define GP_CH0_DATA (1 << 0)
  168. /* GP_CH0_CMP_DATA_REG default value 0x0bff_0400 */
  169. #define GP_CH0_CMP_HIG_DATA (0xfff << 16)
  170. #define GP_CH0_CMP_LOW_DATA (0xfff << 0)
  171. /* GP_CH1_CMP_DATA_REG default value 0x0bff_0400 */
  172. #define GP_CH1_CMP_HIG_DATA (0xfff << 16)
  173. #define GP_CH1_CMP_LOW_DATA (0xfff << 0)
  174. /* GP_CH2_CMP_DATA_REG default value 0x0bff_0400 */
  175. #define GP_CH2_CMP_HIG_DATA (0xfff << 16)
  176. #define GP_CH2_CMP_LOW_DATA (0xfff << 0)
  177. /* GP_CH3_CMP_DATA_REG default value 0x0bff_0400 */
  178. #define GP_CH3_CMP_HIG_DATA (0xfff << 16)
  179. #define GP_CH3_CMP_LOW_DATA (0xfff << 0)
  180. /* GP_CH4_CMP_DATA_REG default value 0x0bff_0400 */
  181. #define GP_CH4_CMP_HIG_DATA (0xfff << 16)
  182. #define GP_CH4_CMP_LOW_DATA (0xfff << 0)
  183. /* GP_CH5_CMP_DATA_REG default value 0x0bff_0400 */
  184. #define GP_CH5_CMP_HIG_DATA (0xfff << 16)
  185. #define GP_CH5_CMP_LOW_DATA (0xfff << 0)
  186. /* GP_CH6_CMP_DATA_REG default value 0x0bff_0400 */
  187. #define GP_CH6_CMP_HIG_DATA (0xfff << 16)
  188. #define GP_CH6_CMP_LOW_DATA (0xfff << 0)
  189. /* GP_CH7_CMP_DATA_REG default value 0x0bff_0400 */
  190. #define GP_CH7_CMP_HIG_DATA (0xfff << 16)
  191. #define GP_CH7_CMP_LOW_DATA (0xfff << 0)
  192. /* GP_CH0_DATA_REG default value:0x0000_0000 */
  193. #define GP_CH_DATA_MASK (0xfff << 0) /*data mask */
  194. #define CHANNEL_0_SELECT (0x01 << 0)
  195. #define CHANNEL_1_SELECT (0x01 << 1)
  196. #define CHANNEL_2_SELECT (0x01 << 2)
  197. #define CHANNEL_3_SELECT (0x01 << 3)
  198. #define CHANNEL_4_SELECT (0x01 << 4)
  199. #define CHANNEL_5_SELECT (0x01 << 5)
  200. #define CHANNEL_6_SELECT (0x01 << 6)
  201. #define CHANNEL_7_SELECT (0x01 << 7)
  202. #define CHANNEL_MAX_NUM 8
  203. #define CHANNEL_NUM 4
  204. #ifdef __cplusplus
  205. }
  206. #endif
  207. #endif /* __COMMON_GPADC_I_H__ */