common_tpadc.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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_TPADC_H__
  33. #define __COMMON_TPADC_H__
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* SET_BITS */
  38. #define SETMASK(width, shift) ((width?((-1U) >> (32-width)):0) << (shift))
  39. #define CLRMASK(width, shift) (~(SETMASK(width, shift)))
  40. #define GET_BITS(shift, width, reg) \
  41. (((reg) & SETMASK(width, shift)) >> (shift))
  42. #define SET_BITS(shift, width, reg, val) \
  43. (((reg) & CLRMASK(width, shift)) | (val << (shift)))
  44. #define TPADC_WIDTH 4095 /*12bit 0XFFF*/
  45. #define TPADC_CLK_IN (12000000)
  46. #define DCXO24M (24000000)
  47. /* TPADC register offset */
  48. #define TP_CTRL0 0x00
  49. #define TP_CTRL1 0x04
  50. #define TP_CTRL2 0x08
  51. #define TP_CTRL3 0x0c
  52. #define TP_INT_FIFOC 0x10
  53. #define TP_INT_FIFOS 0x14
  54. #define TP_TPR 0x18
  55. #define TP_CDAT 0x1c
  56. #define TP_DATA 0x24
  57. /* tpadc regsiter offset and width */
  58. #define FIFO_OVERRUN_PENDING 17
  59. #define FIFO_OVERRUN_PENDIN_WIDTH 1
  60. #define FIFO_DATA_PENDING 16
  61. #define FIFO_DATA_PENDING_WIDTH 1
  62. #define TP_FIFO_FLUSH 4
  63. #define TP_FIFO_FLUSH_WIDTH 1
  64. #define TACQ 0
  65. #define TACQ_WIDTH 16
  66. #define FS_DIV 16
  67. #define FS_DIV_WIDTH 4
  68. #define ADC_CLK_DIVIDER 20
  69. #define ADC_CLK_DIVIDER_WIDTH 2
  70. #define ADC_FIRST_DLY_MODE 23
  71. #define ADC_FIRST_DLY_MODE_WIDTH 1
  72. #define ADC_FIRST_DLY 24
  73. #define ADC_FIRST_DLY_WIDTH 8
  74. #define TP_MODE_SELECT 4
  75. #define TP_MODE_SELECT_WIDTH 1
  76. #define TP_EN 5
  77. #define TP_EN_WIDTH 1
  78. #define TP_DEBOUNCE 12
  79. #define TP_DEBOUNCE_WIDTH 8
  80. #define PRE_MEA 0
  81. #define PRE_MEA_WIDTH 24
  82. #define PRE_MEA_EN 24
  83. #define PRE_MEA_EN_WIDTH 1
  84. #define TP_FIFO_MODE 26
  85. #define TP_FIFO_MODE_WIDTH 2
  86. #define TP_SENSITIVE 28
  87. #define TP_SENSITIVE_WIDTH 4
  88. #define FILTER_TYPE 0
  89. #define FILTER_TYPE_WIDTH 2
  90. #define FILTER_EN 2
  91. #define FILTER_EN_WIDTH 1
  92. #define TP_DOWN_IRQ_EN 0
  93. #define TP_DOWN_IRQ_ENWIDTH 1
  94. #define TP_UP_IRQ_EN 1
  95. #define TP_UP_IRQ_EN_WIDTH 1
  96. #define TP_DATA_DRQ_EN 7
  97. #define TP_DATA_DRQ_EN_WIDTH 1
  98. #define TP_FIFO_TRIG 8
  99. #define TP_FIFO_TRIG_WIDTH 5
  100. #define TP_DATA_XY_CHANGE 13
  101. #define TP_DATA_XY_CHANGE_WIDTH 1
  102. #define TP_DATA_IRQ_EN 16
  103. #define TP_DATA_IRQ_EN_WIDTH 1
  104. #define TP_FIFO_OVERRUN_IRQ 17
  105. #define TP_FIFO_OVERRUN_IRQ_WIDTH 1
  106. #define TP_DATAPEND (1<<16)
  107. #define TP_UPPEND (1<<1)
  108. #define TP_DOWNPEND (1<<0)
  109. #define OSC_FREQUENCY 24000000
  110. #define HOSC 1
  111. #define TP_IO_INPUT_MODE 0xfffff
  112. #define TP_CH3_SELECT (1 << 3) /* channale 3 select enable, 0:disable, 1:enable */
  113. #define TP_CH2_SELECT (1 << 2) /* channale 2 select enable, 0:disable, 1:enable */
  114. #define TP_CH1_SELECT (1 << 1) /* channale 1 select enable, 0:disable, 1:enable */
  115. #define TP_CH0_SELECT (1 << 0) /* channale 0 select enable, 0:disable, 1:enable */
  116. #ifdef __cplusplus
  117. }
  118. #endif
  119. #endif /* __COMMON_TPADC_I_H__ */