ddp_reg.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2015. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. */
  31. #ifndef _DDP_REG_H_
  32. #define _DDP_REG_H_
  33. #include <platform/mt_typedefs.h>
  34. #include <platform/sync_write.h>
  35. #include <platform/mt_reg_base.h>
  36. typedef void * cmdqRecHandle;
  37. //TDODO: get base reg addr from system header
  38. #define DISP_INDEX_OFFSET (DISP_OVL0_2L_BASE - OVL0_BASE) /* used by ovl */
  39. #define DISP_RDMA_INDEX_OFFSET (DISP_RDMA1_BASE - DISP_RDMA0_BASE) /* used by rdma */
  40. #define DISPSYS_OVL0_BASE OVL0_BASE
  41. #define DISPSYS_OVL1_BASE OVL1_BASE
  42. #define DISPSYS_OVL0_2L_BASE DISP_OVL0_2L_BASE
  43. #define DISPSYS_OVL1_2L_BASE DISP_OVL1_2L_BASE
  44. #define DISPSYS_OVL2_2L_BASE DISP_OVL2_2L_BASE
  45. #define DISPSYS_OVL3_2L_BASE DISP_OVL3_2L_BASE
  46. #define DISPSYS_RDMA0_BASE DISP_RDMA0_BASE
  47. #define DISPSYS_RDMA1_BASE DISP_RDMA1_BASE
  48. #define DISPSYS_RDMA4_BASE DISP_RDMA4_BASE
  49. #define DISPSYS_RDMA5_BASE DISP_RDMA5_BASE
  50. #define DISPSYS_MDP_RDMA4_BASE MDP_RDMA4_BASE
  51. #define DISPSYS_MDP_RDMA5_BASE MDP_RDMA5_BASE
  52. #define DISPSYS_WDMA0_BASE DISP_WDMA0_BASE
  53. #define DISPSYS_WDMA1_BASE DISP_WDMA1_BASE
  54. #define DISPSYS_COLOR0_BASE COLOR0_BASE
  55. #define DISPSYS_COLOR1_BASE COLOR1_BASE
  56. #define DISPSYS_AAL0_BASE DISP_AAL0_BASE
  57. #define DISPSYS_AAL1_BASE DISP_AAL1_BASE
  58. #define DISPSYS_MDP_AAL4_BASE MDP_AAL4_BASE
  59. #define DISPSYS_MDP_AAL5_BASE MDP_AAL5_BASE
  60. #define DISPSYS_GAMMA0_BASE DISP_GAMMA0_BASE
  61. #define DISPSYS_GAMMA1_BASE DISP_GAMMA1_BASE
  62. #define DISPSYS_SPLIT0_BASE DISP_SPLIT0_BASE
  63. #define DISPSYS_DSI0_BASE DSI0_BASE
  64. #define DISPSYS_MIPITX0_BASE MIPI_TX0_CONFIG_BASE
  65. #define DISPSYS_MIPITX1_BASE MIPI_TX1_CONFIG_BASE
  66. #define DISPSYS_DITHER0_BASE DITHER0_BASE
  67. #define DISPSYS_DITHER1_BASE DITHER1_BASE
  68. #define DISPSYS_DSI1_BASE DSI1_BASE
  69. #define DISPSYS_RSZ0_BASE DISP_RSZ0_BASE
  70. #define DISPSYS_RSZ1_BASE DISP_RSZ1_BASE
  71. #define DISPSYS_MDP_RSZ4_BASE MDP_RSZ4_BASE
  72. #define DISPSYS_MDP_RSZ5_BASE MDP_RSZ5_BASE
  73. #define DISPSYS_PWM0_BASE DISP_PWM0_BASE
  74. #define DISPSYS_MUTEX_BASE MM_MUTEX_BASE
  75. #define DISPSYS_SMI_LARB0_BASE SMI_LARB0_BASE
  76. #define DISPSYS_SMI_LARB1_BASE SMI_LARB1_BASE
  77. #define DISPSYS_SMI_COMMON_BASE SMI_COMMON_BASE
  78. #define DISPSYS_SMI_SUBCOM0_BASE SMI_SUBCOM0_BASE
  79. #define DISPSYS_SMI_SUBCOM1_BASE SMI_SUBCOM1_BASE
  80. #define DISPSYS_CCORR0_BASE CCORR0_BASE
  81. #define DISPSYS_CCORR1_BASE CCORR1_BASE
  82. #define DISPSYS_CONFIG_BASE MMSYS_CONFIG_BASE
  83. #define DISPSYS_POSTMASK0_BASE DISP_POSTMASK0_BASE
  84. #define DISPSYS_POSTMASK1_BASE DISP_POSTMASK1_BASE
  85. #define DISPSYS_MERGE0_BASE DISP_MERGE0_BASE
  86. #define DISPSYS_MERGE1_BASE DISP_MERGE1_BASE
  87. #define DISPSYS_DSC_BASE DISP_DSC_BASE
  88. #define DISPSYS_DP_INTF_BASE DISP_DP_INTF_BASE
  89. // ---------------------------------------------------------------------------
  90. // Type Casting
  91. // ---------------------------------------------------------------------------
  92. #define AS_INT32(x) (*(INT32 *)(x))
  93. #define AS_INT16(x) (*(INT16 *)(x))
  94. #define AS_INT8(x) (*(INT8 *)(x))
  95. #define AS_UINT32(x) (*(UINT32 *)(x))
  96. #define AS_UINT16(x) (*(UINT16 *)(x))
  97. #define AS_UINT8(x) (*(UINT8 *)(x))
  98. // ---------------------------------------------------------------------------
  99. // Register Manipulations
  100. // ---------------------------------------------------------------------------
  101. /*
  102. #define READ_REGISTER_UINT32(reg) \
  103. (*(volatile UINT32 * const)(reg))
  104. #define WRITE_REGISTER_UINT32(reg, val) \
  105. (*(volatile UINT32 * const)(reg)) = (val)
  106. #define READ_REGISTER_UINT16(reg) \
  107. (*(volatile UINT16 * const)(reg))
  108. #define WRITE_REGISTER_UINT16(reg, val) \
  109. (*(volatile UINT16 * const)(reg)) = (val)
  110. #define READ_REGISTER_UINT8(reg) \
  111. (*(volatile UINT8 * const)(reg))
  112. #define WRITE_REGISTER_UINT8(reg, val) \
  113. (*(volatile UINT8 * const)(reg)) = (val)
  114. */
  115. // ---------------------------------------------------------------------------
  116. // Register Field Access
  117. // ---------------------------------------------------------------------------
  118. #define REG_FLD(width, shift) \
  119. ((unsigned int)((((width) & 0xFF) << 16) | ((shift) & 0xFF)))
  120. #define REG_FLD_MSB_LSB(msb, lsb) REG_FLD((msb) - (lsb) + 1, (lsb))
  121. #define REG_FLD_WIDTH(field) \
  122. ((unsigned int)(((field) >> 16) & 0xFF))
  123. #define REG_FLD_SHIFT(field) \
  124. ((unsigned int)((field) & 0xFF))
  125. #define REG_FLD_MASK(field) \
  126. ((unsigned int)((1ULL << REG_FLD_WIDTH(field)) - 1) << REG_FLD_SHIFT(field))
  127. #define REG_FLD_VAL(field, val) \
  128. (((unsigned int)(val) << REG_FLD_SHIFT(field)) & REG_FLD_MASK(field))
  129. #define REG_FLD_VAL_GET(field, regval) \
  130. (((regval) & REG_FLD_MASK(field)) >> REG_FLD_SHIFT(field))
  131. #define DISP_REG_GET(reg32) (*(volatile unsigned int*)(reg32))
  132. #define DISP_REG_GET_FIELD(field, reg32) ((*(volatile unsigned int*)(reg32) & REG_FLD_MASK(field)) >> REG_FLD_SHIFT(field))
  133. /* polling register until masked bit is 1 */
  134. #define DDP_REG_POLLING(reg32, mask) \
  135. do { \
  136. while (!((DISP_REG_GET(reg32))&mask))\
  137. ; \
  138. } while (0)
  139. /* Polling register until masked bit is 0 */
  140. #define DDP_REG_POLLING_NEG(reg32, mask) \
  141. do { \
  142. while ((DISP_REG_GET(reg32))&mask)\
  143. ; \
  144. } while (0)
  145. #define DISP_CPU_REG_SET(reg32, val) mt_reg_sync_writel(val, (volatile unsigned int*)(reg32))
  146. #define DISP_CPU_REG_SET_FIELD(field, reg32, val) \
  147. do { \
  148. mt_reg_sync_writel( (*(volatile unsigned int*)(reg32) & ~REG_FLD_MASK(field))|REG_FLD_VAL((field), (val)), reg32); \
  149. } while (0)
  150. #define DISP_REG_MASK(handle, reg32, val, mask) \
  151. do { \
  152. mt_reg_sync_writel((unsigned int)(INREG32(reg32)&~(mask))|(val),(volatile unsigned long*)(reg32) );\
  153. } while (0)
  154. #define DISP_REG_SET(handle,reg32, val) \
  155. do { \
  156. mt_reg_sync_writel(val, (volatile unsigned int*)(reg32));\
  157. } while (0)
  158. #define DISP_REG_SET_FIELD(handle,field, reg32, val) \
  159. do { \
  160. mt_reg_sync_writel( (*(volatile unsigned int*)(reg32) & ~REG_FLD_MASK(field))|REG_FLD_VAL((field), (val)), reg32); \
  161. } while (0)
  162. #define DISP_REG_CMDQ_POLLING(handle, reg32, val, mask) \
  163. do { \
  164. while ((DISP_REG_GET(reg32) & (mask)) != ((val) & (mask)))\
  165. ; \
  166. } while (0)
  167. /* AAL */
  168. #define DISP_AAL_EN (DISPSYS_AAL0_BASE + 0x000)
  169. #define DISP_AAL_CFG (DISPSYS_AAL0_BASE + 0x020)
  170. #define DISP_AAL_IN_CNT (DISPSYS_AAL0_BASE + 0x024)
  171. #define DISP_AAL_OUT_CNT (DISPSYS_AAL0_BASE + 0x028)
  172. #define CFG_FLD_RELAY_MODE REG_FLD(1, 0)
  173. #define DISP_AAL_SIZE (DISPSYS_AAL0_BASE + 0x030)
  174. #define SIZE_FLD_HSIZE REG_FLD(13, 16)
  175. #define SIZE_FLD_VSIZE REG_FLD(13, 0)
  176. #define DISP_REG_AAL_SHADOW_CTRL (DISPSYS_AAL0_BASE + 0x0B0)
  177. #define FLD_AAL_BYPASS_SHADOW REG_FLD(1, 0)
  178. #define FLD_AAL_READ_WRK_REG REG_FLD(1, 2)
  179. /* PWM */
  180. #define DISP_PWM_EN_OFF (0x00)
  181. #define DISP_PWM_COMMIT_OFF (0x0C)
  182. #define DISP_PWM_CON_0_OFF (0x18)
  183. #define DISP_PWM_CON_1_OFF (0x1C)
  184. /* COLOR */
  185. #define DISP_COLOR_CFG_MAIN (DISPSYS_COLOR0_BASE + 0x400)
  186. #define DISP_COLOR_PXL_CNT_MAIN (DISPSYS_COLOR0_BASE + 0x404)
  187. #define DISP_COLOR_LINE_CNT_MAIN (DISPSYS_COLOR0_BASE + 0x408)
  188. #define DISP_COLOR_START (DISPSYS_COLOR0_BASE + 0xC00)
  189. #define DISP_COLOR_INTERNAL_IP_WIDTH (DISPSYS_COLOR0_BASE + 0xC50)
  190. #define DISP_COLOR_INTERNAL_IP_HEIGHT (DISPSYS_COLOR0_BASE + 0xC54)
  191. #define DISP_COLOR_CM1_EN (DISPSYS_COLOR0_BASE + 0xC60)
  192. #define DISP_COLOR_CM2_EN (DISPSYS_COLOR0_BASE + 0xCA0)
  193. #define DISP_REG_COLOR_SHADOW_CTRL (DISPSYS_COLOR0_BASE + 0xCB0)
  194. #define FLD_COLOR_BYPASS_SHADOW REG_FLD(1, 0)
  195. #define FLD_COLOR_READ_WRK_REG REG_FLD(1, 2)
  196. /* CCORR */
  197. #define DISP_REG_CCORR_EN (DISPSYS_CCORR0_BASE + 0x000)
  198. #define DISP_REG_CCORR_CFG (DISPSYS_CCORR0_BASE + 0x020)
  199. #define DISP_REG_CCORR_IN_CNT (DISPSYS_CCORR0_BASE + 0x024)
  200. #define DISP_REG_CCORR_OUT_CNT (DISPSYS_CCORR0_BASE + 0x028)
  201. #define DISP_REG_CCORR_SIZE (DISPSYS_CCORR0_BASE + 0x030)
  202. #define DISP_REG_CCORR_SHADOW_CTRL (DISPSYS_CCORR0_BASE + 0x0A0)
  203. #define FLD_CCORR_BYPASS_SHADOW REG_FLD(1, 2)
  204. #define FLD_CCORR_READ_WRK_REG REG_FLD(1, 0)
  205. /* GAMMA */
  206. #define DISP_REG_GAMMA_EN (DISPSYS_GAMMA0_BASE + 0x000)
  207. #define DISP_REG_GAMMA_CFG (DISPSYS_GAMMA0_BASE + 0x020)
  208. #define DISP_REG_GAMMA_SIZE (DISPSYS_GAMMA0_BASE + 0x030)
  209. #define DISP_REG_GAMMA_INPUT_COUNT (DISPSYS_GAMMA0_BASE + 0x024)
  210. #define DISP_REG_GAMMA_OUTPUT_COUNT (DISPSYS_GAMMA0_BASE + 0x028)
  211. #define DISP_REG_GAMMA_SHADOW_CTRL (DISPSYS_GAMMA0_BASE + 0x034)
  212. #define FLD_GAMMA_BYPASS_SHADOW REG_FLD(1, 1)
  213. #define FLD_GAMMA_READ_WRK_REG REG_FLD(1, 2)
  214. /* Dither */
  215. #define DISP_REG_DITHER_EN (DISPSYS_DITHER0_BASE + 0x000)
  216. #define DISP_REG_DITHER_CFG (DISPSYS_DITHER0_BASE + 0x020)
  217. #define DISP_REG_DITHER_IN_CNT (DISPSYS_DITHER0_BASE + 0x024)
  218. #define DISP_REG_DITHER_OUT_CNT (DISPSYS_DITHER0_BASE + 0x028)
  219. #define DISP_REG_DITHER_SIZE (DISPSYS_DITHER0_BASE + 0x030)
  220. #define DISP_REG_DITHER_0 (DISPSYS_DITHER0_BASE + 0x100)
  221. #define FLD_DITHER_BYPASS_SHADOW REG_FLD(1, 0)
  222. #define FLD_DITHER_READ_WRK_REG REG_FLD(1, 2)
  223. /* RDMA */
  224. #define DISP_REG_RDMA_INT_ENABLE (DISPSYS_RDMA0_BASE+0x000)
  225. #define DISP_REG_RDMA_INT_STATUS (DISPSYS_RDMA0_BASE+0x004)
  226. #define DISP_REG_RDMA_GLOBAL_CON (DISPSYS_RDMA0_BASE+0x010)
  227. #define DISP_REG_RDMA_SIZE_CON_0 (DISPSYS_RDMA0_BASE+0x014)
  228. #define DISP_REG_RDMA_SIZE_CON_1 (DISPSYS_RDMA0_BASE+0x018)
  229. #define DISP_REG_RDMA_TARGET_LINE (DISPSYS_RDMA0_BASE+0x01C)
  230. #define DISP_REG_RDMA_MEM_CON (DISPSYS_RDMA0_BASE+0x024)
  231. #define DISP_REG_RDMA_MEM_SRC_PITCH (DISPSYS_RDMA0_BASE+0x02C)
  232. #define DISP_REG_RDMA_MEM_GMC_SETTING_0 (DISPSYS_RDMA0_BASE+0x030)
  233. #define MEM_GMC_SETTING_0_FLD_PRE_ULTRA_THRESHOLD_LOW \
  234. REG_FLD_MSB_LSB(13, 0)
  235. #define MEM_GMC_SETTING_0_FLD_PRE_ULTRA_THRESHOLD_HIGH \
  236. REG_FLD_MSB_LSB(29, 16)
  237. #define MEM_GMC_SETTING_0_FLD_RG_VALID_THRESHOLD_FORCE_PREULTRA \
  238. REG_FLD_MSB_LSB(30, 30)
  239. #define MEM_GMC_SETTING_0_FLD_RG_VDE_FORCE_PREULTRA \
  240. REG_FLD_MSB_LSB(31, 31)
  241. #define DISP_REG_RDMA_MEM_GMC_SETTING_1 (DISPSYS_RDMA0_BASE+0x034)
  242. #define MEM_GMC_SETTING_1_FLD_ULTRA_THRESHOLD_LOW \
  243. REG_FLD_MSB_LSB(13, 0)
  244. #define MEM_GMC_SETTING_1_FLD_ULTRA_THRESHOLD_HIGH \
  245. REG_FLD_MSB_LSB(29, 16)
  246. #define MEM_GMC_SETTING_1_FLD_RG_VALID_THRESHOLD_BLOCK_ULTRA \
  247. REG_FLD_MSB_LSB(30, 30)
  248. #define MEM_GMC_SETTING_1_FLD_RG_VDE_BLOCK_ULTRA \
  249. REG_FLD_MSB_LSB(31, 31)
  250. #define DISP_REG_RDMA_MEM_SLOW_CON (DISPSYS_RDMA0_BASE+0x038)
  251. #define DISP_REG_RDMA_MEM_GMC_SETTING_2 (DISPSYS_RDMA0_BASE+0x03c)
  252. #define MEM_GMC_SETTING_2_FLD_ISSUE_REQ_THRESHOLD REG_FLD_MSB_LSB(13, 0)
  253. #define DISP_REG_RDMA_FIFO_CON (DISPSYS_RDMA0_BASE+0x040)
  254. #define FIFO_CON_FLD_OUTPUT_VALID_FIFO_THRESHOLD REG_FLD_MSB_LSB(13, 0)
  255. #define FIFO_CON_FLD_OUTPUT_VALID_THRESHOLD_PER_LINE \
  256. REG_FLD_MSB_LSB(15, 15)
  257. #define FIFO_CON_FLD_FIFO_PSEUDO_SIZE REG_FLD_MSB_LSB(29, 16)
  258. #define FIFO_CON_FLD_FIFO_UNDERFLOW_EN REG_FLD_MSB_LSB(31, 31)
  259. #define DISP_REG_RDMA_FIFO_LOG (DISPSYS_RDMA0_BASE+0x044)
  260. #define DISP_REG_RDMA_C00 (DISPSYS_RDMA0_BASE+0x054)
  261. #define DISP_REG_RDMA_C01 (DISPSYS_RDMA0_BASE+0x058)
  262. #define DISP_REG_RDMA_C02 (DISPSYS_RDMA0_BASE+0x05C)
  263. #define DISP_REG_RDMA_C10 (DISPSYS_RDMA0_BASE+0x060)
  264. #define DISP_REG_RDMA_C11 (DISPSYS_RDMA0_BASE+0x064)
  265. #define DISP_REG_RDMA_C12 (DISPSYS_RDMA0_BASE+0x068)
  266. #define DISP_REG_RDMA_C20 (DISPSYS_RDMA0_BASE+0x06C)
  267. #define DISP_REG_RDMA_C21 (DISPSYS_RDMA0_BASE+0x070)
  268. #define DISP_REG_RDMA_C22 (DISPSYS_RDMA0_BASE+0x074)
  269. #define DISP_REG_RDMA_PRE_ADD_0 (DISPSYS_RDMA0_BASE+0x078)
  270. #define DISP_REG_RDMA_PRE_ADD_1 (DISPSYS_RDMA0_BASE+0x07C)
  271. #define DISP_REG_RDMA_PRE_ADD_2 (DISPSYS_RDMA0_BASE+0x080)
  272. #define DISP_REG_RDMA_POST_ADD_0 (DISPSYS_RDMA0_BASE+0x084)
  273. #define DISP_REG_RDMA_POST_ADD_1 (DISPSYS_RDMA0_BASE+0x088)
  274. #define DISP_REG_RDMA_POST_ADD_2 (DISPSYS_RDMA0_BASE+0x08C)
  275. #define DISP_REG_RDMA_DUMMY (DISPSYS_RDMA0_BASE+0x090)
  276. #define DISP_REG_RDMA_DEBUG_OUT_SEL (DISPSYS_RDMA0_BASE+0x094)
  277. #define DISP_REG_RDMA_MEM_START_ADDR (DISPSYS_RDMA0_BASE+0xf00)
  278. #define DISP_REG_RDMA_BG_CON_0 (DISPSYS_RDMA0_BASE+0x0a0)
  279. #define DISP_REG_RDMA_BG_CON_1 (DISPSYS_RDMA0_BASE+0x0a4)
  280. #define DISP_REG_RDMA_THRESHOLD_FOR_SODI (DISPSYS_RDMA0_BASE+0x0a8)
  281. #define RDMA_THRESHOLD_FOR_SODI_FLD_LOW REG_FLD_MSB_LSB(13, 0)
  282. #define RDMA_THRESHOLD_FOR_SODI_FLD_HIGH REG_FLD_MSB_LSB(29, 16)
  283. #define DISP_REG_RDMA_THRESHOLD_FOR_DVFS (DISPSYS_RDMA0_BASE+0x0ac)
  284. #define RDMA_THRESHOLD_FOR_DVFS_FLD_LOW REG_FLD_MSB_LSB(13, 0)
  285. #define RDMA_THRESHOLD_FOR_DVFS_FLD_HIGH REG_FLD_MSB_LSB(29, 16)
  286. #define DISP_REG_RDMA_SRAM_SEL (DISPSYS_RDMA0_BASE+0x0b0)
  287. #define DISP_REG_RDMA_STALL_CG_CON (DISPSYS_RDMA0_BASE+0x0b4)
  288. #define DISP_REG_RDMA_SHADOW_UPDATE (DISPSYS_RDMA0_BASE+0x0bc)
  289. #define DISP_REG_RDMA_DRAM_CON (DISPSYS_RDMA0_BASE+0x0c0)
  290. #define DISP_REG_RDMA_BG_CON_2 (DISPSYS_RDMA0_BASE+0x0c4)
  291. #define DISP_REG_RDMA_DVFS_SETTING_PRE (DISPSYS_RDMA0_BASE+0x0d0)
  292. #define RG_DVFS_PRE_ULTRA_THRESHOLD_LOW REG_FLD_MSB_LSB(13, 0)
  293. #define RG_DVFS_PRE_ULTRA_THRESHOLD_HIGH REG_FLD_MSB_LSB(29, 16)
  294. #define DISP_REG_RDMA_DVFS_SETTING_ULTRA (DISPSYS_RDMA0_BASE+0x0d4)
  295. #define RG_DVFS_ULTRA_THRESHOLD_LOW REG_FLD_MSB_LSB(13, 0)
  296. #define RG_DVFS_ULTRA_THRESHOLD_HIGH REG_FLD_MSB_LSB(29, 16)
  297. #define DISP_REG_RDMA_LEAVE_DRS_SETTING (DISPSYS_RDMA0_BASE+0x0d8)
  298. #define RG_IS_DRS_STATUS_THRESHOLD_LOW REG_FLD_MSB_LSB(13, 0)
  299. #define RG_IS_DRS_STATUS_THRESHOLD_HIGH REG_FLD_MSB_LSB(29, 16)
  300. #define DISP_REG_RDMA_ENTER_DRS_SETTING (DISPSYS_RDMA0_BASE+0x0dc)
  301. #define RG_NOT_DRS_STATUS_THRESHOLD_LOW REG_FLD_MSB_LSB(13, 0)
  302. #define RG_NOT_DRS_STATUS_THRESHOLD_HIGH REG_FLD_MSB_LSB(29, 16)
  303. #define DISP_REG_RDMA_MEM_GMC_SETTING_3 (DISPSYS_RDMA0_BASE+0x0e8)
  304. #define FLD_LOW_FOR_URGENT REG_FLD_MSB_LSB(13, 0)
  305. #define FLD_HIGH_FOR_URGENT REG_FLD_MSB_LSB(29, 16)
  306. #define FLD_RG_VALID_THRESHOLD_BLOCK_URGENT \
  307. REG_FLD_MSB_LSB(30, 30)
  308. #define FLD_RG_VDE_BLOCK_URGENT REG_FLD_MSB_LSB(31, 31)
  309. #define DISP_REG_RDMA_IN_P_CNT (DISPSYS_RDMA0_BASE+0x120)
  310. #define DISP_REG_RDMA_IN_LINE_CNT (DISPSYS_RDMA0_BASE+0x124)
  311. #define DISP_REG_RDMA_OUT_P_CNT (DISPSYS_RDMA0_BASE+0x128)
  312. #define DISP_REG_RDMA_OUT_LINE_CNT (DISPSYS_RDMA0_BASE+0x12c)
  313. #define DISP_REG_RDMA_DBG_OUT (DISPSYS_RDMA0_BASE+0x100)
  314. #define DISP_REG_RDMA_ULTRA_SRC_SEL (DISPSYS_RDMA0_BASE+0x1a0)
  315. #define DISP_REG_RDMA_GREQ_NUM_SEL (DISPSYS_RDMA0_BASE+0x1a4)
  316. #define DISP_REG_RDMA_GREQ_URG_NUM_SEL (DISPSYS_RDMA0_BASE+0x1a8)
  317. #define FLD_RG_LAYER_SMI_ID_EN REG_FLD_MSB_LSB(29, 29)
  318. #define INT_ENABLE_FLD_TARGET_LINE_INT_EN REG_FLD(1, 5)
  319. #define INT_ENABLE_FLD_FIFO_UNDERFLOW_INT_EN REG_FLD(1, 4)
  320. #define INT_ENABLE_FLD_EOF_ABNORMAL_INT_EN REG_FLD(1, 3)
  321. #define INT_ENABLE_FLD_FRAME_END_INT_EN REG_FLD(1, 2)
  322. #define INT_ENABLE_FLD_FRAME_START_INT_EN REG_FLD(1, 1)
  323. #define INT_ENABLE_FLD_REG_UPDATE_INT_EN REG_FLD(1, 0)
  324. #define INT_STATUS_FLD_FIFO_EMPTY_INT_FLAG REG_FLD(1, 6)
  325. #define INT_STATUS_FLD_TARGET_LINE_INT_FLAG REG_FLD(1, 5)
  326. #define INT_STATUS_FLD_FIFO_UNDERFLOW_INT_FLAG REG_FLD(1, 4)
  327. #define INT_STATUS_FLD_EOF_ABNORMAL_INT_FLAG REG_FLD(1, 3)
  328. #define INT_STATUS_FLD_FRAME_END_INT_FLAG REG_FLD(1, 2)
  329. #define INT_STATUS_FLD_FRAME_START_INT_FLAG REG_FLD(1, 1)
  330. #define INT_STATUS_FLD_REG_UPDATE_INT_FLAG REG_FLD(1, 0)
  331. #define GLOBAL_CON_FLD_SMI_BUSY REG_FLD(1, 12)
  332. #define GLOBAL_CON_FLD_RESET_STATE REG_FLD(3, 8)
  333. #define GLOBAL_CON_FLD_SOFT_RESET REG_FLD(1, 4)
  334. #define GLOBAL_CON_FLD_MODE_SEL REG_FLD(1, 1)
  335. #define GLOBAL_CON_FLD_ENGINE_EN REG_FLD(1, 0)
  336. #define SIZE_CON_0_FLD_MATRIX_INT_MTX_SEL REG_FLD(4, 20)
  337. #define SIZE_CON_0_FLD_MATRIX_WIDE_GAMUT_EN REG_FLD(1, 18)
  338. #define SIZE_CON_0_FLD_MATRIX_ENABLE REG_FLD(1, 17)
  339. #define SIZE_CON_0_FLD_MATRIX_EXT_MTX_EN REG_FLD(1, 16)
  340. #define SIZE_CON_0_FLD_OUTPUT_FRAME_WIDTH REG_FLD(13, 0)
  341. #define SIZE_CON_1_FLD_OUTPUT_FRAME_HEIGHT REG_FLD(20, 0)
  342. #define TARGET_LINE_FLD_TARGET_LINE REG_FLD(20, 0)
  343. #define MEM_CON_FLD_MEM_MODE_HORI_BLOCK_NUM REG_FLD(8, 24)
  344. #define MEM_CON_FLD_MEM_MODE_INPUT_COSITE REG_FLD(1, 13)
  345. #define MEM_CON_FLD_MEM_MODE_INPUT_UPSAMPLE REG_FLD(1, 12)
  346. #define MEM_CON_FLD_MEM_MODE_INPUT_SWAP REG_FLD(1, 8)
  347. #define MEM_CON_FLD_MEM_MODE_INPUT_FORMAT REG_FLD(4, 4)
  348. #define MEM_CON_FLD_MEM_MODE_TILE_INTERLACE REG_FLD(1, 1)
  349. #define MEM_CON_FLD_MEM_MODE_TILE_EN REG_FLD(1, 0)
  350. #define MEM_SRC_PITCH_FLD_MEM_MODE_SRC_PITCH REG_FLD(16, 0)
  351. #define MEM_SLOW_CON_FLD_MEM_MODE_SLOW_COUNT REG_FLD(16, 16)
  352. #define MEM_SLOW_CON_FLD_MEM_MODE_SLOW_EN REG_FLD(1, 0)
  353. #define FIFO_LOG_FLD_RDMA_FIFO_LOG REG_FLD(12, 0)
  354. #define C00_FLD_DISP_RDMA_C00 REG_FLD(13, 0)
  355. #define C01_FLD_DISP_RDMA_C01 REG_FLD(13, 0)
  356. #define C02_FLD_DISP_RDMA_C02 REG_FLD(13, 0)
  357. #define C10_FLD_DISP_RDMA_C10 REG_FLD(13, 0)
  358. #define C11_FLD_DISP_RDMA_C11 REG_FLD(13, 0)
  359. #define C12_FLD_DISP_RDMA_C12 REG_FLD(13, 0)
  360. #define C20_FLD_DISP_RDMA_C20 REG_FLD(13, 0)
  361. #define C21_FLD_DISP_RDMA_C21 REG_FLD(13, 0)
  362. #define C22_FLD_DISP_RDMA_C22 REG_FLD(13, 0)
  363. #define PRE_ADD_0_FLD_DISP_RDMA_PRE_ADD_0 REG_FLD(9, 0)
  364. #define PRE_ADD_1_FLD_DISP_RDMA_PRE_ADD_1 REG_FLD(9, 0)
  365. #define PRE_ADD_2_FLD_DISP_RDMA_PRE_ADD_2 REG_FLD(9, 0)
  366. #define POST_ADD_0_FLD_DISP_RDMA_POST_ADD_0 REG_FLD(9, 0)
  367. #define POST_ADD_1_FLD_DISP_RDMA_POST_ADD_1 REG_FLD(9, 0)
  368. #define POST_ADD_2_FLD_DISP_RDMA_POST_ADD_2 REG_FLD(9, 0)
  369. #define DUMMY_FLD_DISP_RDMA_DUMMY REG_FLD(32, 0)
  370. #define DEBUG_OUT_SEL_FLD_DISP_RDMA_DEBUG_OUT_SEL REG_FLD(4, 0)
  371. #define MEM_START_ADDR_FLD_MEM_MODE_START_ADDR REG_FLD(32, 0)
  372. #define RDMA_BG_CON_0_LEFT REG_FLD(13, 0)
  373. #define RDMA_BG_CON_0_RIGHT REG_FLD(13, 16)
  374. #define RDMA_BG_CON_1_TOP REG_FLD(13, 0)
  375. #define RDMA_BG_CON_1_BOTTOM REG_FLD(13, 16)
  376. #define MEM_GMC_SETTING_3_FLD_URGENT_THRESHOLD_LOW REG_FLD(12, 0)
  377. #define MEM_GMC_SETTING_3_FLD_URGENT_THRESHOLD_HIGH REG_FLD(12, 16)
  378. /* ------------------------------------------------------------- */
  379. /* golden setting */
  380. enum GS_RDMA_FLD {
  381. GS_RDMA_PRE_ULTRA_TH_LOW = 0,
  382. GS_RDMA_PRE_ULTRA_TH_HIGH,
  383. GS_RDMA_VALID_TH_FORCE_PRE_ULTRA,
  384. GS_RDMA_VDE_FORCE_PRE_ULTRA,
  385. GS_RDMA_ULTRA_TH_LOW,
  386. GS_RDMA_ULTRA_TH_HIGH,
  387. GS_RDMA_VALID_TH_BLOCK_ULTRA,
  388. GS_RDMA_VDE_BLOCK_ULTRA,
  389. GS_RDMA_ISSUE_REQ_TH,
  390. GS_RDMA_OUTPUT_VALID_FIFO_TH,
  391. GS_RDMA_FIFO_SIZE,
  392. GS_RDMA_FIFO_UNDERFLOW_EN,
  393. GS_RDMA_TH_LOW_FOR_SODI,
  394. GS_RDMA_TH_HIGH_FOR_SODI,
  395. GS_RDMA_TH_LOW_FOR_DVFS,
  396. GS_RDMA_TH_HIGH_FOR_DVFS,
  397. GS_RDMA_SRAM_SEL,
  398. GS_RDMA_DVFS_PRE_ULTRA_TH_LOW,
  399. GS_RDMA_DVFS_PRE_ULTRA_TH_HIGH,
  400. GS_RDMA_DVFS_ULTRA_TH_LOW,
  401. GS_RDMA_DVFS_ULTRA_TH_HIGH,
  402. GS_RDMA_IS_DRS_STATUS_TH_LOW,
  403. GS_RDMA_IS_DRS_STATUS_TH_HIGH,
  404. GS_RDMA_NOT_DRS_STATUS_TH_LOW,
  405. GS_RDMA_NOT_DRS_STATUS_TH_HIGH,
  406. GS_RDMA_URGENT_TH_LOW,
  407. GS_RDMA_URGENT_TH_HIGH,
  408. GS_RDMA_LAYER_SMI_ID_EN,
  409. GS_RDMA_FLD_NUM,
  410. };
  411. #define REG_FLD_GET DISP_REG_GET_FIELD
  412. #define REG_FLD_SET DISP_CPU_REG_SET_FIELD
  413. #include <platform/ddp_reg_mmsys.h>
  414. #include <platform/ddp_reg_split.h>
  415. #include <platform/ddp_reg_dsi.h>
  416. #include <platform/ddp_reg_mutex.h>
  417. #include <platform/ddp_reg_ovl.h>
  418. #include <platform/ddp_reg_mipi.h>
  419. #include <platform/ddp_reg_postmask.h>
  420. #include <platform/ddp_reg_pq.h>
  421. #endif