rockchip_mipi_dsi.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright (C) 2017 Fuzhou Rockchip Electronics Co., Ltd
  4. * author: Eric Gao <eric.gao@rock-chips.com>
  5. */
  6. #ifndef ROCKCHIP_MIPI_DSI_H
  7. #define ROCKCHIP_MIPI_DSI_H
  8. /*
  9. * All these mipi controller register declaration provide reg address offset,
  10. * bits width, bit offset for a specified register bits. With these message, we
  11. * can set or clear every bits individually for a 32bit widthregister. We use
  12. * DSI_HOST_BITS macro definition to combinat these message using the following
  13. * format: val(32bit) = addr(16bit) | width(8bit) | offest(8bit)
  14. * For example:
  15. * #define SHUTDOWNZ DSI_HOST_BITS(0x004, 1, 0)
  16. * means SHUTDOWNZ is a signal reg bit with bit offset qual 0,and it's reg addr
  17. * offset is 0x004.The conbinat result = (0x004 << 16) | (1 << 8) | 0
  18. */
  19. #define ADDR_SHIFT 16
  20. #define BITS_SHIFT 8
  21. #define OFFSET_SHIFT 0
  22. #define DSI_HOST_BITS(addr, bits, bit_offset) \
  23. ((addr << ADDR_SHIFT) | (bits << BITS_SHIFT) | (bit_offset << OFFSET_SHIFT))
  24. /* DWC_DSI_VERSION_0x3133302A */
  25. #define VERSION DSI_HOST_BITS(0x000, 32, 0)
  26. #define SHUTDOWNZ DSI_HOST_BITS(0x004, 1, 0)
  27. #define TO_CLK_DIVISION DSI_HOST_BITS(0x008, 8, 8)
  28. #define TX_ESC_CLK_DIVISION DSI_HOST_BITS(0x008, 8, 0)
  29. #define DPI_VCID DSI_HOST_BITS(0x00c, 2, 0)
  30. #define EN18_LOOSELY DSI_HOST_BITS(0x010, 1, 8)
  31. #define DPI_COLOR_CODING DSI_HOST_BITS(0x010, 4, 0)
  32. #define COLORM_ACTIVE_LOW DSI_HOST_BITS(0x014, 1, 4)
  33. #define SHUTD_ACTIVE_LOW DSI_HOST_BITS(0x014, 1, 3)
  34. #define HSYNC_ACTIVE_LOW DSI_HOST_BITS(0x014, 1, 2)
  35. #define VSYNC_ACTIVE_LOW DSI_HOST_BITS(0x014, 1, 1)
  36. #define DATAEN_ACTIVE_LOW DSI_HOST_BITS(0x014, 1, 0)
  37. #define OUTVACT_LPCMD_TIME DSI_HOST_BITS(0x018, 8, 16)
  38. #define INVACT_LPCMD_TIME DSI_HOST_BITS(0x018, 8, 0)
  39. #define CRC_RX_EN DSI_HOST_BITS(0x02c, 1, 4)
  40. #define ECC_RX_EN DSI_HOST_BITS(0x02c, 1, 3)
  41. #define BTA_EN DSI_HOST_BITS(0x02c, 1, 2)
  42. #define EOTP_RX_EN DSI_HOST_BITS(0x02c, 1, 1)
  43. #define EOTP_TX_EN DSI_HOST_BITS(0x02c, 1, 0)
  44. #define GEN_VID_RX DSI_HOST_BITS(0x030, 2, 0)
  45. #define CMD_VIDEO_MODE DSI_HOST_BITS(0x034, 1, 0)
  46. #define VPG_ORIENTATION DSI_HOST_BITS(0x038, 1, 24)
  47. #define VPG_MODE DSI_HOST_BITS(0x038, 1, 20)
  48. #define VPG_EN DSI_HOST_BITS(0x038, 1, 16)
  49. #define LP_CMD_EN DSI_HOST_BITS(0x038, 1, 15)
  50. #define FRAME_BTA_ACK_EN DSI_HOST_BITS(0x038, 1, 14)
  51. #define LP_HFP_EN DSI_HOST_BITS(0x038, 1, 13)
  52. #define LP_HBP_EN DSI_HOST_BITS(0x038, 1, 12)
  53. #define LP_VACT_EN DSI_HOST_BITS(0x038, 1, 11)
  54. #define LP_VFP_EN DSI_HOST_BITS(0x038, 1, 10)
  55. #define LP_VBP_EN DSI_HOST_BITS(0x038, 1, 9)
  56. #define LP_VSA_EN DSI_HOST_BITS(0x038, 1, 8)
  57. #define VID_MODE_TYPE DSI_HOST_BITS(0x038, 2, 0)
  58. #define VID_PKT_SIZE DSI_HOST_BITS(0x03c, 14, 0)
  59. #define NUM_CHUNKS DSI_HOST_BITS(0x040, 13, 0)
  60. #define NULL_PKT_SIZE DSI_HOST_BITS(0x044, 13, 0)
  61. #define VID_HSA_TIME DSI_HOST_BITS(0x048, 12, 0)
  62. #define VID_HBP_TIME DSI_HOST_BITS(0x04c, 12, 0)
  63. #define VID_HLINE_TIME DSI_HOST_BITS(0x050, 15, 0)
  64. #define VID_VSA_LINES DSI_HOST_BITS(0x054, 10, 0)
  65. #define VID_VBP_LINES DSI_HOST_BITS(0x058, 10, 0)
  66. #define VID_VFP_LINES DSI_HOST_BITS(0x05c, 10, 0)
  67. #define VID_ACTIVE_LINES DSI_HOST_BITS(0x060, 14, 0)
  68. #define EDPI_CMD_SIZE DSI_HOST_BITS(0x064, 16, 0)
  69. #define MAX_RD_PKT_SIZE DSI_HOST_BITS(0x068, 1, 24)
  70. #define DCS_LW_TX DSI_HOST_BITS(0x068, 1, 19)
  71. #define DCS_SR_0P_TX DSI_HOST_BITS(0x068, 1, 18)
  72. #define DCS_SW_1P_TX DSI_HOST_BITS(0x068, 1, 17)
  73. #define DCS_SW_0P_TX DSI_HOST_BITS(0x068, 1, 16)
  74. #define GEN_LW_TX DSI_HOST_BITS(0x068, 1, 14)
  75. #define GEN_SR_2P_TX DSI_HOST_BITS(0x068, 1, 13)
  76. #define GEN_SR_1P_TX DSI_HOST_BITS(0x068, 1, 12)
  77. #define GEN_SR_0P_TX DSI_HOST_BITS(0x068, 1, 11)
  78. #define GEN_SW_2P_TX DSI_HOST_BITS(0x068, 1, 10)
  79. #define GEN_SW_1P_TX DSI_HOST_BITS(0x068, 1, 9)
  80. #define GEN_SW_0P_TX DSI_HOST_BITS(0x068, 1, 8)
  81. #define ACK_RQST_EN DSI_HOST_BITS(0x068, 1, 1)
  82. #define TEAR_FX_EN DSI_HOST_BITS(0x068, 1, 0)
  83. #define GEN_WC_MSBYTE DSI_HOST_BITS(0x06c, 14, 16)
  84. #define GEN_WC_LSBYTE DSI_HOST_BITS(0x06c, 8, 8)
  85. #define GEN_VC DSI_HOST_BITS(0x06c, 2, 6)
  86. #define GEN_DT DSI_HOST_BITS(0x06c, 6, 0)
  87. #define GEN_PLD_DATA DSI_HOST_BITS(0x070, 32, 0)
  88. #define GEN_RD_CMD_BUSY DSI_HOST_BITS(0x074, 1, 6)
  89. #define GEN_PLD_R_FULL DSI_HOST_BITS(0x074, 1, 5)
  90. #define GEN_PLD_R_EMPTY DSI_HOST_BITS(0x074, 1, 4)
  91. #define GEN_PLD_W_FULL DSI_HOST_BITS(0x074, 1, 3)
  92. #define GEN_PLD_W_EMPTY DSI_HOST_BITS(0x074, 1, 2)
  93. #define GEN_CMD_FULL DSI_HOST_BITS(0x074, 1, 1)
  94. #define GEN_CMD_EMPTY DSI_HOST_BITS(0x074, 1, 0)
  95. #define HSTX_TO_CNT DSI_HOST_BITS(0x078, 16, 16)
  96. #define LPRX_TO_CNT DSI_HOST_BITS(0x078, 16, 0)
  97. #define HS_RD_TO_CNT DSI_HOST_BITS(0x07c, 16, 0)
  98. #define LP_RD_TO_CNT DSI_HOST_BITS(0x080, 16, 0)
  99. #define PRESP_TO_MODE DSI_HOST_BITS(0x084, 1, 24)
  100. #define HS_WR_TO_CNT DSI_HOST_BITS(0x084, 16, 0)
  101. #define LP_WR_TO_CNT DSI_HOST_BITS(0x088, 16, 0)
  102. #define BTA_TO_CNT DSI_HOST_BITS(0x08c, 16, 0)
  103. #define AUTO_CLKLANE_CTRL DSI_HOST_BITS(0x094, 1, 1)
  104. #define PHY_TXREQUESTCLKHS DSI_HOST_BITS(0x094, 1, 0)
  105. #define PHY_HS2LP_TIME_CLK_LANE DSI_HOST_BITS(0x098, 10, 16)
  106. #define PHY_HS2HS_TIME_CLK_LANE DSI_HOST_BITS(0x098, 10, 0)
  107. #define PHY_HS2LP_TIME DSI_HOST_BITS(0x09c, 8, 24)
  108. #define PHY_LP2HS_TIME DSI_HOST_BITS(0x09c, 8, 16)
  109. #define MAX_RD_TIME DSI_HOST_BITS(0x09c, 15, 0)
  110. #define PHY_FORCEPLL DSI_HOST_BITS(0x0a0, 1, 3)
  111. #define PHY_ENABLECLK DSI_HOST_BITS(0x0a0, 1, 2)
  112. #define PHY_RSTZ DSI_HOST_BITS(0x0a0, 1, 1)
  113. #define PHY_SHUTDOWNZ DSI_HOST_BITS(0x0a0, 1, 0)
  114. #define PHY_STOP_WAIT_TIME DSI_HOST_BITS(0x0a4, 8, 8)
  115. #define N_LANES DSI_HOST_BITS(0x0a4, 2, 0)
  116. #define PHY_TXEXITULPSLAN DSI_HOST_BITS(0x0a8, 1, 3)
  117. #define PHY_TXREQULPSLAN DSI_HOST_BITS(0x0a8, 1, 2)
  118. #define PHY_TXEXITULPSCLK DSI_HOST_BITS(0x0a8, 1, 1)
  119. #define PHY_TXREQULPSCLK DSI_HOST_BITS(0x0a8, 1, 0)
  120. #define PHY_TX_TRIGGERS DSI_HOST_BITS(0x0ac, 4, 0)
  121. #define PHYSTOPSTATECLKLANE DSI_HOST_BITS(0x0b0, 1, 2)
  122. #define PHYLOCK DSI_HOST_BITS(0x0b0, 1, 0)
  123. #define PHY_TESTCLK DSI_HOST_BITS(0x0b4, 1, 1)
  124. #define PHY_TESTCLR DSI_HOST_BITS(0x0b4, 1, 0)
  125. #define PHY_TESTEN DSI_HOST_BITS(0x0b8, 1, 16)
  126. #define PHY_TESTDOUT DSI_HOST_BITS(0x0b8, 8, 8)
  127. #define PHY_TESTDIN DSI_HOST_BITS(0x0b8, 8, 0)
  128. #define PHY_TEST_CTRL1 DSI_HOST_BITS(0x0b8, 17, 0)
  129. #define PHY_TEST_CTRL0 DSI_HOST_BITS(0x0b4, 2, 0)
  130. #define INT_ST0 DSI_HOST_BITS(0x0bc, 21, 0)
  131. #define INT_ST1 DSI_HOST_BITS(0x0c0, 18, 0)
  132. #define INT_MKS0 DSI_HOST_BITS(0x0c4, 21, 0)
  133. #define INT_MKS1 DSI_HOST_BITS(0x0c8, 18, 0)
  134. #define INT_FORCE0 DSI_HOST_BITS(0x0d8, 21, 0)
  135. #define INT_FORCE1 DSI_HOST_BITS(0x0dc, 18, 0)
  136. #define CODE_HS_RX_CLOCK 0x34
  137. #define CODE_HS_RX_LANE0 0x44
  138. #define CODE_HS_RX_LANE1 0x54
  139. #define CODE_HS_RX_LANE2 0x84
  140. #define CODE_HS_RX_LANE3 0x94
  141. #define CODE_PLL_VCORANGE_VCOCAP 0x10
  142. #define CODE_PLL_CPCTRL 0x11
  143. #define CODE_PLL_LPF_CP 0x12
  144. #define CODE_PLL_INPUT_DIV_RAT 0x17
  145. #define CODE_PLL_LOOP_DIV_RAT 0x18
  146. #define CODE_PLL_INPUT_LOOP_DIV_RAT 0x19
  147. #define CODE_BANDGAP_BIAS_CTRL 0x20
  148. #define CODE_TERMINATION_CTRL 0x21
  149. #define CODE_AFE_BIAS_BANDGAP_ANOLOG 0x22
  150. #define CODE_HSTXDATALANEREQUSETSTATETIME 0x70
  151. #define CODE_HSTXDATALANEPREPARESTATETIME 0x71
  152. #define CODE_HSTXDATALANEHSZEROSTATETIME 0x72
  153. /* Transmission mode between vop and MIPI controller */
  154. enum vid_mode_type_t {
  155. NON_BURST_SYNC_PLUSE = 0,
  156. NON_BURST_SYNC_EVENT,
  157. BURST_MODE,
  158. };
  159. enum cmd_video_mode {
  160. VIDEO_MODE = 0,
  161. CMD_MODE,
  162. };
  163. /* Indicate MIPI DSI color mode */
  164. enum dpi_color_coding {
  165. DPI_16BIT_CFG_1 = 0,
  166. DPI_16BIT_CFG_2,
  167. DPI_16BIT_CFG_3,
  168. DPI_18BIT_CFG_1,
  169. DPI_18BIT_CFG_2,
  170. DPI_24BIT,
  171. DPI_20BIT_YCBCR_422_LP,
  172. DPI_24BIT_YCBCR_422,
  173. DPI_16BIT_YCBCR_422,
  174. DPI_30BIT,
  175. DPI_36BIT,
  176. DPI_12BIT_YCBCR_420,
  177. };
  178. /* Indicate which VOP the MIPI DSI use, bit or little one */
  179. enum vop_id {
  180. VOP_B = 0,
  181. VOP_L,
  182. };
  183. #endif /* end of ROCKCHIP_MIPI_DSI_H */