ftsHardware.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * FTS Capacitive touch screen controller (FingerTipS)
  4. *
  5. * Copyright (C) 2016-2019, STMicroelectronics Limited.
  6. * Authors: AMG(Analog Mems Group) <[email protected]>
  7. *
  8. *
  9. * This program is free software; you can redistribute it and/or modify it
  10. * under the terms of the GNU General Public License version 2 as published by
  11. * the Free Software Foundation.
  12. *
  13. * This program is distributed in the hope that it will be useful, but WITHOUT
  14. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  15. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  16. * more details.
  17. *
  18. * You should have received a copy of the GNU General Public License along with
  19. * this program. If not, see <http://www.gnu.org/licenses/>.
  20. */
  21. /**
  22. **************************************************************************
  23. ** STMicroelectronics **
  24. **************************************************************************
  25. ** [email protected] **
  26. **************************************************************************
  27. * *
  28. * HW related data **
  29. * *
  30. **************************************************************************
  31. **************************************************************************
  32. */
  33. #ifndef __FTS_HARDWARE_H
  34. #define __FTS_HARDWARE_H
  35. //DUMMY BYTES DATA
  36. #define DUMMY_HW_REG 1
  37. #define DUMMY_FRAMEBUFFER 1
  38. #define DUMMY_MEMORY 1
  39. //DIGITAL CHIP INFO
  40. #ifdef FTM3_CHIP
  41. #define DCHIP_ID_0 0x39
  42. #define DCHIP_ID_1 0x6C
  43. #else
  44. #define DCHIP_ID_0 0x36
  45. #define DCHIP_ID_1 0x70
  46. #endif
  47. #ifdef FTM3_CHIP
  48. #define DCHIP_ID_ADDR 0x0007
  49. #define DCHIP_FW_VER_ADDR 0x000A
  50. #else
  51. #define DCHIP_ID_ADDR 0x0004
  52. #define DCHIP_FW_VER_ADDR 0x0008
  53. #endif
  54. #define DCHIP_FW_VER_BYTE 2
  55. //CHUNKS
  56. #define READ_CHUNK (2 * 1024)
  57. #define WRITE_CHUNK (2 * 1024)
  58. #define MEMORY_CHUNK (2 * 1024)
  59. //PROTOCOL INFO
  60. #ifdef FTM3_CHIP
  61. #define I2C_SAD 0x49
  62. #else
  63. #define I2C_SAD 0x49
  64. #endif
  65. #define I2C_INTERFACE //comment if the chip use SPI
  66. #define ICR_ADDR 0x0024
  67. #define ICR_SPI_VALUE 0x02
  68. //SYSTEM RESET INFO
  69. #ifdef FTM3_CHIP
  70. #define SYSTEM_RESET_ADDRESS 0x0023
  71. #define SYSTEM_RESET_VALUE 0x01
  72. #else
  73. #define SYSTEM_RESET_ADDRESS 0x0028
  74. #define SYSTEM_RESET_VALUE 0x80
  75. #endif
  76. //INTERRUPT INFO
  77. #ifdef FTM3_CHIP
  78. #define IER_ADDR 0x001C
  79. #else
  80. #define IER_ADDR 0x002C
  81. #endif
  82. #define IER_ENABLE 0x41
  83. #define IER_DISABLE 0x00
  84. //FLASH COMMAND
  85. #define FLASH_CMD_UNLOCK 0xF7
  86. #ifdef FTM3_CHIP
  87. #define FLASH_CMD_WRITE_LOWER_64 0xF0
  88. #define FLASH_CMD_WRITE_UPPER_64 0xF1
  89. #define FLASH_CMD_BURN 0xF2
  90. #define FLASH_CMD_ERASE 0xF3
  91. #define FLASH_CMD_READSTATUS 0xF4
  92. #else
  93. #define FLASH_CMD_WRITE_64K 0xF8
  94. #define FLASH_CMD_READ_REGISTER 0xF9
  95. #define FLASH_CMD_WRITE_REGISTER 0xFA
  96. #endif
  97. //FLASH UNLOCK PARAMETER
  98. #define FLASH_UNLOCK_CODE0 0x74
  99. #define FLASH_UNLOCK_CODE1 0x45
  100. #ifndef FTM3_CHIP
  101. //FLASH ERASE and DMA PARAMETER
  102. #define FLASH_ERASE_UNLOCK_CODE0 0x72
  103. #define FLASH_ERASE_UNLOCK_CODE1 0x03
  104. #define FLASH_ERASE_UNLOCK_CODE2 0x02
  105. #define FLASH_ERASE_CODE0 0x02
  106. #define FLASH_ERASE_CODE1 0xC0
  107. #define FLASH_DMA_CODE0 0x05
  108. #define FLASH_DMA_CODE1 0xC0
  109. #define FLASH_DMA_CONFIG 0x06
  110. #define FLASH_ERASE_START 0x80
  111. #define FLASH_NUM_PAGE 64//number of pages
  112. #define FLASH_CX_PAGE_START 61
  113. #define FLASH_CX_PAGE_END 62
  114. #endif
  115. //FLASH ADDRESS
  116. #ifdef FTM3_CHIP
  117. #define FLASH_ADDR_SWITCH_CMD 0x00010000
  118. #define FLASH_ADDR_CODE 0x00000000
  119. #define FLASH_ADDR_CONFIG 0x0001E800
  120. #define FLASH_ADDR_CX 0x0001F000
  121. #else
  122. #define ADDR_WARM_BOOT 0x001E
  123. #define WARM_BOOT_VALUE 0x38
  124. #define FLASH_ADDR_CODE 0x00000000
  125. #define FLASH_ADDR_CONFIG 0x0000FC00
  126. #endif
  127. //CRC ADDR
  128. #ifdef FTM3_CHIP
  129. #define ADDR_CRC_BYTE0 0x00
  130. #define ADDR_CRC_BYTE1 0x86
  131. #define CRC_MASK 0x02
  132. #else
  133. #define ADDR_CRC_BYTE0 0x00
  134. #define ADDR_CRC_BYTE1 0x74
  135. #define CRC_MASK 0x03
  136. #endif
  137. //SIZES FW, CODE, CONFIG, MEMH
  138. #ifdef FTM3_CHIP
  139. #define FW_HEADER_SIZE 32
  140. #define FW_SIZE (int)(128*1024)
  141. #define FW_CODE_SIZE (int)(122*1024)
  142. #define FW_CONFIG_SIZE (int)(2*1024)
  143. #define FW_CX_SIZE (int)(FW_SIZE-FW_CODE_SIZE-FW_CONFIG_SIZE)
  144. #define FW_VER_MEMH_BYTE1 193
  145. #define FW_VER_MEMH_BYTE0 192
  146. #define FW_OFF_CONFID_MEMH_BYTE1 2
  147. #define FW_OFF_CONFID_MEMH_BYTE0 1
  148. #define FW_BIN_VER_OFFSET 4
  149. #define FW_BIN_CONFIG_VER_OFFSET (FW_HEADER_SIZE+FW_CODE_SIZE+1)
  150. #else
  151. #define FW_HEADER_SIZE 64
  152. #define FW_HEADER_SIGNATURE 0xAA55AA55
  153. #define FW_FTB_VER 0x00000001
  154. #define FW_BYTES_ALIGN 4
  155. #define FW_BIN_VER_OFFSET 16
  156. #define FW_BIN_CONFIG_VER_OFFSET 20
  157. #endif
  158. //FIFO
  159. #define FIFO_EVENT_SIZE 8
  160. #ifdef FTM3_CHIP
  161. #define FIFO_DEPTH 32
  162. #else
  163. #define FIFO_DEPTH 64
  164. #endif
  165. #define FIFO_CMD_READONE 0x85
  166. #define FIFO_CMD_READALL 0x86
  167. #define FIFO_CMD_LAST 0x87
  168. #define FIFO_CMD_FLUSH 0xA1
  169. //CONSTANT TOTAL CX
  170. #ifdef FTM3_CHIP
  171. #define CX1_WEIGHT 4
  172. #define CX2_WEIGHT 1
  173. #else
  174. #define CX1_WEIGHT 8
  175. #define CX2_WEIGHT 1
  176. #endif
  177. //OP CODES FOR MEMORY (based on protocol)
  178. #define FTS_CMD_HW_REG_R 0xB6
  179. #define FTS_CMD_HW_REG_W 0xB6
  180. #define FTS_CMD_FRAMEBUFFER_R 0xD0
  181. #define FTS_CMD_FRAMEBUFFER_W 0xD0
  182. #endif