mcde_display_regs.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __DRM_MCDE_DISPLAY_REGS
  3. #define __DRM_MCDE_DISPLAY_REGS
  4. /* PP (pixel processor) interrupts */
  5. #define MCDE_IMSCPP 0x00000104
  6. #define MCDE_RISPP 0x00000114
  7. #define MCDE_MISPP 0x00000124
  8. #define MCDE_SISPP 0x00000134
  9. #define MCDE_PP_VCMPA BIT(0)
  10. #define MCDE_PP_VCMPB BIT(1)
  11. #define MCDE_PP_VSCC0 BIT(2)
  12. #define MCDE_PP_VSCC1 BIT(3)
  13. #define MCDE_PP_VCMPC0 BIT(4)
  14. #define MCDE_PP_VCMPC1 BIT(5)
  15. #define MCDE_PP_ROTFD_A BIT(6)
  16. #define MCDE_PP_ROTFD_B BIT(7)
  17. /* Overlay interrupts */
  18. #define MCDE_IMSCOVL 0x00000108
  19. #define MCDE_RISOVL 0x00000118
  20. #define MCDE_MISOVL 0x00000128
  21. #define MCDE_SISOVL 0x00000138
  22. /* Channel interrupts */
  23. #define MCDE_IMSCCHNL 0x0000010C
  24. #define MCDE_RISCHNL 0x0000011C
  25. #define MCDE_MISCHNL 0x0000012C
  26. #define MCDE_SISCHNL 0x0000013C
  27. /* X = 0..9 */
  28. #define MCDE_EXTSRCXA0 0x00000200
  29. #define MCDE_EXTSRCXA0_GROUPOFFSET 0x20
  30. #define MCDE_EXTSRCXA0_BASEADDRESS0_SHIFT 3
  31. #define MCDE_EXTSRCXA0_BASEADDRESS0_MASK 0xFFFFFFF8
  32. #define MCDE_EXTSRCXA1 0x00000204
  33. #define MCDE_EXTSRCXA1_GROUPOFFSET 0x20
  34. #define MCDE_EXTSRCXA1_BASEADDRESS1_SHIFT 3
  35. #define MCDE_EXTSRCXA1_BASEADDRESS1_MASK 0xFFFFFFF8
  36. /* External sources 0..9 */
  37. #define MCDE_EXTSRC0CONF 0x0000020C
  38. #define MCDE_EXTSRC1CONF 0x0000022C
  39. #define MCDE_EXTSRC2CONF 0x0000024C
  40. #define MCDE_EXTSRC3CONF 0x0000026C
  41. #define MCDE_EXTSRC4CONF 0x0000028C
  42. #define MCDE_EXTSRC5CONF 0x000002AC
  43. #define MCDE_EXTSRC6CONF 0x000002CC
  44. #define MCDE_EXTSRC7CONF 0x000002EC
  45. #define MCDE_EXTSRC8CONF 0x0000030C
  46. #define MCDE_EXTSRC9CONF 0x0000032C
  47. #define MCDE_EXTSRCXCONF_GROUPOFFSET 0x20
  48. #define MCDE_EXTSRCXCONF_BUF_ID_SHIFT 0
  49. #define MCDE_EXTSRCXCONF_BUF_ID_MASK 0x00000003
  50. #define MCDE_EXTSRCXCONF_BUF_NB_SHIFT 2
  51. #define MCDE_EXTSRCXCONF_BUF_NB_MASK 0x0000000C
  52. #define MCDE_EXTSRCXCONF_PRI_OVLID_SHIFT 4
  53. #define MCDE_EXTSRCXCONF_PRI_OVLID_MASK 0x000000F0
  54. #define MCDE_EXTSRCXCONF_BPP_SHIFT 8
  55. #define MCDE_EXTSRCXCONF_BPP_MASK 0x00000F00
  56. #define MCDE_EXTSRCXCONF_BPP_1BPP_PAL 0
  57. #define MCDE_EXTSRCXCONF_BPP_2BPP_PAL 1
  58. #define MCDE_EXTSRCXCONF_BPP_4BPP_PAL 2
  59. #define MCDE_EXTSRCXCONF_BPP_8BPP_PAL 3
  60. #define MCDE_EXTSRCXCONF_BPP_RGB444 4
  61. #define MCDE_EXTSRCXCONF_BPP_ARGB4444 5
  62. #define MCDE_EXTSRCXCONF_BPP_IRGB1555 6
  63. #define MCDE_EXTSRCXCONF_BPP_RGB565 7
  64. #define MCDE_EXTSRCXCONF_BPP_RGB888 8
  65. #define MCDE_EXTSRCXCONF_BPP_XRGB8888 9
  66. #define MCDE_EXTSRCXCONF_BPP_ARGB8888 10
  67. #define MCDE_EXTSRCXCONF_BPP_YCBCR422 11
  68. #define MCDE_EXTSRCXCONF_BGR BIT(12)
  69. #define MCDE_EXTSRCXCONF_BEBO BIT(13)
  70. #define MCDE_EXTSRCXCONF_BEPO BIT(14)
  71. #define MCDE_EXTSRCXCONF_TUNNELING_BUFFER_HEIGHT_SHIFT 16
  72. #define MCDE_EXTSRCXCONF_TUNNELING_BUFFER_HEIGHT_MASK 0x0FFF0000
  73. /* External sources 0..9 */
  74. #define MCDE_EXTSRC0CR 0x00000210
  75. #define MCDE_EXTSRC1CR 0x00000230
  76. #define MCDE_EXTSRC2CR 0x00000250
  77. #define MCDE_EXTSRC3CR 0x00000270
  78. #define MCDE_EXTSRC4CR 0x00000290
  79. #define MCDE_EXTSRC5CR 0x000002B0
  80. #define MCDE_EXTSRC6CR 0x000002D0
  81. #define MCDE_EXTSRC7CR 0x000002F0
  82. #define MCDE_EXTSRC8CR 0x00000310
  83. #define MCDE_EXTSRC9CR 0x00000330
  84. #define MCDE_EXTSRCXCR_SEL_MOD_SHIFT 0
  85. #define MCDE_EXTSRCXCR_SEL_MOD_MASK 0x00000003
  86. #define MCDE_EXTSRCXCR_SEL_MOD_EXTERNAL_SEL 0
  87. #define MCDE_EXTSRCXCR_SEL_MOD_AUTO_TOGGLE 1
  88. #define MCDE_EXTSRCXCR_SEL_MOD_SOFTWARE_SEL 2
  89. #define MCDE_EXTSRCXCR_MULTIOVL_CTRL_PRIMARY BIT(2) /* 0 = all */
  90. #define MCDE_EXTSRCXCR_FS_DIV_DISABLE BIT(3)
  91. #define MCDE_EXTSRCXCR_FORCE_FS_DIV BIT(4)
  92. /* Only external source 6 has a second address register */
  93. #define MCDE_EXTSRC6A2 0x000002C8
  94. /* 6 overlays */
  95. #define MCDE_OVL0CR 0x00000400
  96. #define MCDE_OVL1CR 0x00000420
  97. #define MCDE_OVL2CR 0x00000440
  98. #define MCDE_OVL3CR 0x00000460
  99. #define MCDE_OVL4CR 0x00000480
  100. #define MCDE_OVL5CR 0x000004A0
  101. #define MCDE_OVLXCR_OVLEN BIT(0)
  102. #define MCDE_OVLXCR_COLCCTRL_DISABLED 0
  103. #define MCDE_OVLXCR_COLCCTRL_ENABLED_NO_SAT (1 << 1)
  104. #define MCDE_OVLXCR_COLCCTRL_ENABLED_SAT (2 << 1)
  105. #define MCDE_OVLXCR_CKEYGEN BIT(3)
  106. #define MCDE_OVLXCR_ALPHAPMEN BIT(4)
  107. #define MCDE_OVLXCR_OVLF BIT(5)
  108. #define MCDE_OVLXCR_OVLR BIT(6)
  109. #define MCDE_OVLXCR_OVLB BIT(7)
  110. #define MCDE_OVLXCR_FETCH_ROPC_SHIFT 8
  111. #define MCDE_OVLXCR_FETCH_ROPC_MASK 0x0000FF00
  112. #define MCDE_OVLXCR_STBPRIO_SHIFT 16
  113. #define MCDE_OVLXCR_STBPRIO_MASK 0x000F0000
  114. #define MCDE_OVLXCR_BURSTSIZE_SHIFT 20
  115. #define MCDE_OVLXCR_BURSTSIZE_MASK 0x00F00000
  116. #define MCDE_OVLXCR_BURSTSIZE_1W 0
  117. #define MCDE_OVLXCR_BURSTSIZE_2W 1
  118. #define MCDE_OVLXCR_BURSTSIZE_4W 2
  119. #define MCDE_OVLXCR_BURSTSIZE_8W 3
  120. #define MCDE_OVLXCR_BURSTSIZE_16W 4
  121. #define MCDE_OVLXCR_BURSTSIZE_HW_1W 8
  122. #define MCDE_OVLXCR_BURSTSIZE_HW_2W 9
  123. #define MCDE_OVLXCR_BURSTSIZE_HW_4W 10
  124. #define MCDE_OVLXCR_BURSTSIZE_HW_8W 11
  125. #define MCDE_OVLXCR_BURSTSIZE_HW_16W 12
  126. #define MCDE_OVLXCR_MAXOUTSTANDING_SHIFT 24
  127. #define MCDE_OVLXCR_MAXOUTSTANDING_MASK 0x0F000000
  128. #define MCDE_OVLXCR_MAXOUTSTANDING_1_REQ 0
  129. #define MCDE_OVLXCR_MAXOUTSTANDING_2_REQ 1
  130. #define MCDE_OVLXCR_MAXOUTSTANDING_4_REQ 2
  131. #define MCDE_OVLXCR_MAXOUTSTANDING_8_REQ 3
  132. #define MCDE_OVLXCR_MAXOUTSTANDING_16_REQ 4
  133. #define MCDE_OVLXCR_ROTBURSTSIZE_SHIFT 28
  134. #define MCDE_OVLXCR_ROTBURSTSIZE_MASK 0xF0000000
  135. #define MCDE_OVLXCR_ROTBURSTSIZE_1W 0
  136. #define MCDE_OVLXCR_ROTBURSTSIZE_2W 1
  137. #define MCDE_OVLXCR_ROTBURSTSIZE_4W 2
  138. #define MCDE_OVLXCR_ROTBURSTSIZE_8W 3
  139. #define MCDE_OVLXCR_ROTBURSTSIZE_16W 4
  140. #define MCDE_OVLXCR_ROTBURSTSIZE_HW_1W 8
  141. #define MCDE_OVLXCR_ROTBURSTSIZE_HW_2W 9
  142. #define MCDE_OVLXCR_ROTBURSTSIZE_HW_4W 10
  143. #define MCDE_OVLXCR_ROTBURSTSIZE_HW_8W 11
  144. #define MCDE_OVLXCR_ROTBURSTSIZE_HW_16W 12
  145. #define MCDE_OVL0CONF 0x00000404
  146. #define MCDE_OVL1CONF 0x00000424
  147. #define MCDE_OVL2CONF 0x00000444
  148. #define MCDE_OVL3CONF 0x00000464
  149. #define MCDE_OVL4CONF 0x00000484
  150. #define MCDE_OVL5CONF 0x000004A4
  151. #define MCDE_OVLXCONF_PPL_SHIFT 0
  152. #define MCDE_OVLXCONF_PPL_MASK 0x000007FF
  153. #define MCDE_OVLXCONF_EXTSRC_ID_SHIFT 11
  154. #define MCDE_OVLXCONF_EXTSRC_ID_MASK 0x00007800
  155. #define MCDE_OVLXCONF_LPF_SHIFT 16
  156. #define MCDE_OVLXCONF_LPF_MASK 0x07FF0000
  157. #define MCDE_OVL0CONF2 0x00000408
  158. #define MCDE_OVL1CONF2 0x00000428
  159. #define MCDE_OVL2CONF2 0x00000448
  160. #define MCDE_OVL3CONF2 0x00000468
  161. #define MCDE_OVL4CONF2 0x00000488
  162. #define MCDE_OVL5CONF2 0x000004A8
  163. #define MCDE_OVLXCONF2_BP_PER_PIXEL_ALPHA 0
  164. #define MCDE_OVLXCONF2_BP_CONSTANT_ALPHA BIT(0)
  165. #define MCDE_OVLXCONF2_ALPHAVALUE_SHIFT 1
  166. #define MCDE_OVLXCONF2_ALPHAVALUE_MASK 0x000001FE
  167. #define MCDE_OVLXCONF2_OPQ BIT(9)
  168. #define MCDE_OVLXCONF2_PIXOFF_SHIFT 10
  169. #define MCDE_OVLXCONF2_PIXOFF_MASK 0x0000FC00
  170. #define MCDE_OVLXCONF2_PIXELFETCHERWATERMARKLEVEL_SHIFT 16
  171. #define MCDE_OVLXCONF2_PIXELFETCHERWATERMARKLEVEL_MASK 0x1FFF0000
  172. #define MCDE_OVL0LJINC 0x0000040C
  173. #define MCDE_OVL1LJINC 0x0000042C
  174. #define MCDE_OVL2LJINC 0x0000044C
  175. #define MCDE_OVL3LJINC 0x0000046C
  176. #define MCDE_OVL4LJINC 0x0000048C
  177. #define MCDE_OVL5LJINC 0x000004AC
  178. #define MCDE_OVL0CROP 0x00000410
  179. #define MCDE_OVL1CROP 0x00000430
  180. #define MCDE_OVL2CROP 0x00000450
  181. #define MCDE_OVL3CROP 0x00000470
  182. #define MCDE_OVL4CROP 0x00000490
  183. #define MCDE_OVL5CROP 0x000004B0
  184. #define MCDE_OVLXCROP_TMRGN_SHIFT 0
  185. #define MCDE_OVLXCROP_TMRGN_MASK 0x003FFFFF
  186. #define MCDE_OVLXCROP_LMRGN_SHIFT 22
  187. #define MCDE_OVLXCROP_LMRGN_MASK 0xFFC00000
  188. #define MCDE_OVL0COMP 0x00000414
  189. #define MCDE_OVL1COMP 0x00000434
  190. #define MCDE_OVL2COMP 0x00000454
  191. #define MCDE_OVL3COMP 0x00000474
  192. #define MCDE_OVL4COMP 0x00000494
  193. #define MCDE_OVL5COMP 0x000004B4
  194. #define MCDE_OVLXCOMP_XPOS_SHIFT 0
  195. #define MCDE_OVLXCOMP_XPOS_MASK 0x000007FF
  196. #define MCDE_OVLXCOMP_CH_ID_SHIFT 11
  197. #define MCDE_OVLXCOMP_CH_ID_MASK 0x00007800
  198. #define MCDE_OVLXCOMP_YPOS_SHIFT 16
  199. #define MCDE_OVLXCOMP_YPOS_MASK 0x07FF0000
  200. #define MCDE_OVLXCOMP_Z_SHIFT 27
  201. #define MCDE_OVLXCOMP_Z_MASK 0x78000000
  202. /* DPI/TV configuration registers, channel A and B */
  203. #define MCDE_TVCRA 0x00000838
  204. #define MCDE_TVCRB 0x00000A38
  205. #define MCDE_TVCR_MOD_TV BIT(0) /* 0 = LCD mode */
  206. #define MCDE_TVCR_INTEREN BIT(1)
  207. #define MCDE_TVCR_IFIELD BIT(2)
  208. #define MCDE_TVCR_TVMODE_SDTV_656P (0 << 3)
  209. #define MCDE_TVCR_TVMODE_SDTV_656P_LE (3 << 3)
  210. #define MCDE_TVCR_TVMODE_SDTV_656P_BE (4 << 3)
  211. #define MCDE_TVCR_SDTVMODE_Y0CBY1CR (0 << 6)
  212. #define MCDE_TVCR_SDTVMODE_CBY0CRY1 (1 << 6)
  213. #define MCDE_TVCR_AVRGEN BIT(8)
  214. #define MCDE_TVCR_CKINV BIT(9)
  215. /* TV blanking control register 1, channel A and B */
  216. #define MCDE_TVBL1A 0x0000083C
  217. #define MCDE_TVBL1B 0x00000A3C
  218. #define MCDE_TVBL1_BEL1_SHIFT 0 /* VFP vertical front porch 11 bits */
  219. #define MCDE_TVBL1_BSL1_SHIFT 16 /* VSW vertical sync pulse width 11 bits */
  220. /* Pixel processing TV start line, channel A and B */
  221. #define MCDE_TVISLA 0x00000840
  222. #define MCDE_TVISLB 0x00000A40
  223. #define MCDE_TVISL_FSL1_SHIFT 0 /* Field 1 identification start line 11 bits */
  224. #define MCDE_TVISL_FSL2_SHIFT 16 /* Field 2 identification start line 11 bits */
  225. /* Pixel processing TV DVO offset */
  226. #define MCDE_TVDVOA 0x00000844
  227. #define MCDE_TVDVOB 0x00000A44
  228. #define MCDE_TVDVO_DVO1_SHIFT 0 /* VBP vertical back porch 0 = 0 */
  229. #define MCDE_TVDVO_DVO2_SHIFT 16
  230. /*
  231. * Pixel processing TV Timing 1
  232. * HBP horizontal back porch 11 bits horizontal offset
  233. * 0 = 1 pixel HBP, 255 = 256 pixels, so actual value - 1
  234. */
  235. #define MCDE_TVTIM1A 0x0000084C
  236. #define MCDE_TVTIM1B 0x00000A4C
  237. /* Pixel processing TV LBALW */
  238. /* 0 = 1 clock cycle, 255 = 256 clock cycles */
  239. #define MCDE_TVLBALWA 0x00000850
  240. #define MCDE_TVLBALWB 0x00000A50
  241. #define MCDE_TVLBALW_LBW_SHIFT 0 /* HSW horizonal sync width, line blanking width 11 bits */
  242. #define MCDE_TVLBALW_ALW_SHIFT 16 /* HFP horizontal front porch, active line width 11 bits */
  243. /* TV blanking control register 1, channel A and B */
  244. #define MCDE_TVBL2A 0x00000854
  245. #define MCDE_TVBL2B 0x00000A54
  246. #define MCDE_TVBL2_BEL2_SHIFT 0 /* Field 2 blanking end line 11 bits */
  247. #define MCDE_TVBL2_BSL2_SHIFT 16 /* Field 2 blanking start line 11 bits */
  248. /* Pixel processing TV background */
  249. #define MCDE_TVBLUA 0x00000858
  250. #define MCDE_TVBLUB 0x00000A58
  251. #define MCDE_TVBLU_TVBLU_SHIFT 0 /* 8 bits luminance */
  252. #define MCDE_TVBLU_TVBCB_SHIFT 8 /* 8 bits Cb chrominance */
  253. #define MCDE_TVBLU_TVBCR_SHIFT 16 /* 8 bits Cr chrominance */
  254. /* Pixel processing LCD timing 1 */
  255. #define MCDE_LCDTIM1A 0x00000860
  256. #define MCDE_LCDTIM1B 0x00000A60
  257. /* inverted vertical sync pulse for HRTFT 0 = active low, 1 active high */
  258. #define MCDE_LCDTIM1B_IVP BIT(19)
  259. /* inverted vertical sync, 0 = active high (the normal), 1 = active low */
  260. #define MCDE_LCDTIM1B_IVS BIT(20)
  261. /* inverted horizontal sync, 0 = active high (the normal), 1 = active low */
  262. #define MCDE_LCDTIM1B_IHS BIT(21)
  263. /* inverted panel clock 0 = rising edge data out, 1 = falling edge data out */
  264. #define MCDE_LCDTIM1B_IPC BIT(22)
  265. /* invert output enable 0 = active high, 1 = active low */
  266. #define MCDE_LCDTIM1B_IOE BIT(23)
  267. #define MCDE_CRC 0x00000C00
  268. #define MCDE_CRC_C1EN BIT(2)
  269. #define MCDE_CRC_C2EN BIT(3)
  270. #define MCDE_CRC_SYCEN0 BIT(7)
  271. #define MCDE_CRC_SYCEN1 BIT(8)
  272. #define MCDE_CRC_SIZE1 BIT(9)
  273. #define MCDE_CRC_SIZE2 BIT(10)
  274. #define MCDE_CRC_YUVCONVC1EN BIT(15)
  275. #define MCDE_CRC_CS1EN BIT(16)
  276. #define MCDE_CRC_CS2EN BIT(17)
  277. #define MCDE_CRC_CS1POL BIT(19)
  278. #define MCDE_CRC_CS2POL BIT(20)
  279. #define MCDE_CRC_CD1POL BIT(21)
  280. #define MCDE_CRC_CD2POL BIT(22)
  281. #define MCDE_CRC_WR1POL BIT(23)
  282. #define MCDE_CRC_WR2POL BIT(24)
  283. #define MCDE_CRC_RD1POL BIT(25)
  284. #define MCDE_CRC_RD2POL BIT(26)
  285. #define MCDE_CRC_SYNCCTRL_SHIFT 29
  286. #define MCDE_CRC_SYNCCTRL_MASK 0x60000000
  287. #define MCDE_CRC_SYNCCTRL_NO_SYNC 0
  288. #define MCDE_CRC_SYNCCTRL_DBI0 1
  289. #define MCDE_CRC_SYNCCTRL_DBI1 2
  290. #define MCDE_CRC_SYNCCTRL_PING_PONG 3
  291. #define MCDE_CRC_CLAMPC1EN BIT(31)
  292. #define MCDE_VSCRC0 0x00000C5C
  293. #define MCDE_VSCRC1 0x00000C60
  294. #define MCDE_VSCRC_VSPMIN_MASK 0x00000FFF
  295. #define MCDE_VSCRC_VSPMAX_SHIFT 12
  296. #define MCDE_VSCRC_VSPMAX_MASK 0x00FFF000
  297. #define MCDE_VSCRC_VSPDIV_SHIFT 24
  298. #define MCDE_VSCRC_VSPDIV_MASK 0x07000000
  299. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_1 0
  300. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_2 1
  301. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_4 2
  302. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_8 3
  303. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_16 4
  304. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_32 5
  305. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_64 6
  306. #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_128 7
  307. #define MCDE_VSCRC_VSPOL BIT(27) /* 0 active high, 1 active low */
  308. #define MCDE_VSCRC_VSSEL BIT(28) /* 0 VSYNC0, 1 VSYNC1 */
  309. #define MCDE_VSCRC_VSDBL BIT(29)
  310. /* Channel config 0..3 */
  311. #define MCDE_CHNL0CONF 0x00000600
  312. #define MCDE_CHNL1CONF 0x00000620
  313. #define MCDE_CHNL2CONF 0x00000640
  314. #define MCDE_CHNL3CONF 0x00000660
  315. #define MCDE_CHNLXCONF_PPL_SHIFT 0
  316. #define MCDE_CHNLXCONF_PPL_MASK 0x000007FF
  317. #define MCDE_CHNLXCONF_LPF_SHIFT 16
  318. #define MCDE_CHNLXCONF_LPF_MASK 0x07FF0000
  319. #define MCDE_MAX_WIDTH 2048
  320. /* Channel status 0..3 */
  321. #define MCDE_CHNL0STAT 0x00000604
  322. #define MCDE_CHNL1STAT 0x00000624
  323. #define MCDE_CHNL2STAT 0x00000644
  324. #define MCDE_CHNL3STAT 0x00000664
  325. #define MCDE_CHNLXSTAT_CHNLRD BIT(0)
  326. #define MCDE_CHNLXSTAT_CHNLA BIT(1)
  327. #define MCDE_CHNLXSTAT_CHNLBLBCKGND_EN BIT(16)
  328. #define MCDE_CHNLXSTAT_PPLX2_V422 BIT(17)
  329. #define MCDE_CHNLXSTAT_LPFX2_V422 BIT(18)
  330. /* Sync settings for channel 0..3 */
  331. #define MCDE_CHNL0SYNCHMOD 0x00000608
  332. #define MCDE_CHNL1SYNCHMOD 0x00000628
  333. #define MCDE_CHNL2SYNCHMOD 0x00000648
  334. #define MCDE_CHNL3SYNCHMOD 0x00000668
  335. #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SHIFT 0
  336. #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_MASK 0x00000003
  337. #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_HARDWARE 0
  338. #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_NO_SYNCH 1
  339. #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SOFTWARE 2
  340. #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_SHIFT 2
  341. #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_MASK 0x0000001C
  342. #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_FORMATTER 0
  343. #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE0 1
  344. #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE1 2
  345. /* Software sync triggers for channel 0..3 */
  346. #define MCDE_CHNL0SYNCHSW 0x0000060C
  347. #define MCDE_CHNL1SYNCHSW 0x0000062C
  348. #define MCDE_CHNL2SYNCHSW 0x0000064C
  349. #define MCDE_CHNL3SYNCHSW 0x0000066C
  350. #define MCDE_CHNLXSYNCHSW_SW_TRIG BIT(0)
  351. #define MCDE_CHNL0BCKGNDCOL 0x00000610
  352. #define MCDE_CHNL1BCKGNDCOL 0x00000630
  353. #define MCDE_CHNL2BCKGNDCOL 0x00000650
  354. #define MCDE_CHNL3BCKGNDCOL 0x00000670
  355. #define MCDE_CHNLXBCKGNDCOL_B_SHIFT 0
  356. #define MCDE_CHNLXBCKGNDCOL_B_MASK 0x000000FF
  357. #define MCDE_CHNLXBCKGNDCOL_G_SHIFT 8
  358. #define MCDE_CHNLXBCKGNDCOL_G_MASK 0x0000FF00
  359. #define MCDE_CHNLXBCKGNDCOL_R_SHIFT 16
  360. #define MCDE_CHNLXBCKGNDCOL_R_MASK 0x00FF0000
  361. #define MCDE_CHNL0MUXING 0x00000614
  362. #define MCDE_CHNL1MUXING 0x00000634
  363. #define MCDE_CHNL2MUXING 0x00000654
  364. #define MCDE_CHNL3MUXING 0x00000674
  365. #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_A 0
  366. #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_B 1
  367. #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_C0 2
  368. #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_C1 3
  369. /* Pixel processing control registers for channel A B, */
  370. #define MCDE_CRA0 0x00000800
  371. #define MCDE_CRB0 0x00000A00
  372. #define MCDE_CRX0_FLOEN BIT(0)
  373. #define MCDE_CRX0_POWEREN BIT(1)
  374. #define MCDE_CRX0_BLENDEN BIT(2)
  375. #define MCDE_CRX0_AFLICKEN BIT(3)
  376. #define MCDE_CRX0_PALEN BIT(4)
  377. #define MCDE_CRX0_DITHEN BIT(5)
  378. #define MCDE_CRX0_GAMEN BIT(6)
  379. #define MCDE_CRX0_KEYCTRL_SHIFT 7
  380. #define MCDE_CRX0_KEYCTRL_MASK 0x00000380
  381. #define MCDE_CRX0_KEYCTRL_OFF 0
  382. #define MCDE_CRX0_KEYCTRL_ALPHA_RGB 1
  383. #define MCDE_CRX0_KEYCTRL_RGB 2
  384. #define MCDE_CRX0_KEYCTRL_FALPHA_FRGB 4
  385. #define MCDE_CRX0_KEYCTRL_FRGB 5
  386. #define MCDE_CRX0_BLENDCTRL BIT(10)
  387. #define MCDE_CRX0_FLICKMODE_SHIFT 11
  388. #define MCDE_CRX0_FLICKMODE_MASK 0x00001800
  389. #define MCDE_CRX0_FLICKMODE_FORCE_FILTER_0 0
  390. #define MCDE_CRX0_FLICKMODE_ADAPTIVE 1
  391. #define MCDE_CRX0_FLICKMODE_TEST_MODE 2
  392. #define MCDE_CRX0_FLOCKFORMAT_RGB BIT(13) /* 0 = YCVCR */
  393. #define MCDE_CRX0_PALMODE_GAMMA BIT(14) /* 0 = palette */
  394. #define MCDE_CRX0_OLEDEN BIT(15)
  395. #define MCDE_CRX0_ALPHABLEND_SHIFT 16
  396. #define MCDE_CRX0_ALPHABLEND_MASK 0x00FF0000
  397. #define MCDE_CRX0_ROTEN BIT(24)
  398. #define MCDE_CRA1 0x00000804
  399. #define MCDE_CRB1 0x00000A04
  400. #define MCDE_CRX1_PCD_SHIFT 0
  401. #define MCDE_CRX1_PCD_MASK 0x000003FF
  402. #define MCDE_CRX1_PCD_BITS 10
  403. #define MCDE_CRX1_CLKSEL_SHIFT 10
  404. #define MCDE_CRX1_CLKSEL_MASK 0x00001C00
  405. #define MCDE_CRX1_CLKSEL_CLKPLL72 0
  406. #define MCDE_CRX1_CLKSEL_CLKPLL27 2
  407. #define MCDE_CRX1_CLKSEL_TV1CLK 3
  408. #define MCDE_CRX1_CLKSEL_TV2CLK 4
  409. #define MCDE_CRX1_CLKSEL_MCDECLK 5
  410. #define MCDE_CRX1_CDWIN_SHIFT 13
  411. #define MCDE_CRX1_CDWIN_MASK 0x0001E000
  412. #define MCDE_CRX1_CDWIN_8BPP_C1 0
  413. #define MCDE_CRX1_CDWIN_12BPP_C1 1
  414. #define MCDE_CRX1_CDWIN_12BPP_C2 2
  415. #define MCDE_CRX1_CDWIN_16BPP_C1 3
  416. #define MCDE_CRX1_CDWIN_16BPP_C2 4
  417. #define MCDE_CRX1_CDWIN_16BPP_C3 5
  418. #define MCDE_CRX1_CDWIN_18BPP_C1 6
  419. #define MCDE_CRX1_CDWIN_18BPP_C2 7
  420. #define MCDE_CRX1_CDWIN_24BPP 8
  421. #define MCDE_CRX1_OUTBPP_SHIFT 25
  422. #define MCDE_CRX1_OUTBPP_MASK 0x1E000000
  423. #define MCDE_CRX1_OUTBPP_MONO1 0
  424. #define MCDE_CRX1_OUTBPP_MONO2 1
  425. #define MCDE_CRX1_OUTBPP_MONO4 2
  426. #define MCDE_CRX1_OUTBPP_MONO8 3
  427. #define MCDE_CRX1_OUTBPP_8BPP 4
  428. #define MCDE_CRX1_OUTBPP_12BPP 5
  429. #define MCDE_CRX1_OUTBPP_15BPP 6
  430. #define MCDE_CRX1_OUTBPP_16BPP 7
  431. #define MCDE_CRX1_OUTBPP_18BPP 8
  432. #define MCDE_CRX1_OUTBPP_24BPP 9
  433. #define MCDE_CRX1_BCD BIT(29)
  434. #define MCDE_CRA1_CLKTYPE_TVXCLKSEL1 BIT(30) /* 0 = TVXCLKSEL1 */
  435. #define MCDE_COLKEYA 0x00000808
  436. #define MCDE_COLKEYB 0x00000A08
  437. #define MCDE_FCOLKEYA 0x0000080C
  438. #define MCDE_FCOLKEYB 0x00000A0C
  439. #define MCDE_RGBCONV1A 0x00000810
  440. #define MCDE_RGBCONV1B 0x00000A10
  441. #define MCDE_RGBCONV2A 0x00000814
  442. #define MCDE_RGBCONV2B 0x00000A14
  443. #define MCDE_RGBCONV3A 0x00000818
  444. #define MCDE_RGBCONV3B 0x00000A18
  445. #define MCDE_RGBCONV4A 0x0000081C
  446. #define MCDE_RGBCONV4B 0x00000A1C
  447. #define MCDE_RGBCONV5A 0x00000820
  448. #define MCDE_RGBCONV5B 0x00000A20
  449. #define MCDE_RGBCONV6A 0x00000824
  450. #define MCDE_RGBCONV6B 0x00000A24
  451. /* Rotation */
  452. #define MCDE_ROTACONF 0x0000087C
  453. #define MCDE_ROTBCONF 0x00000A7C
  454. /* Synchronization event configuration */
  455. #define MCDE_SYNCHCONFA 0x00000880
  456. #define MCDE_SYNCHCONFB 0x00000A80
  457. #define MCDE_SYNCHCONF_HWREQVEVENT_SHIFT 0
  458. #define MCDE_SYNCHCONF_HWREQVEVENT_VSYNC (0 << 0)
  459. #define MCDE_SYNCHCONF_HWREQVEVENT_BACK_PORCH (1 << 0)
  460. #define MCDE_SYNCHCONF_HWREQVEVENT_ACTIVE_VIDEO (2 << 0)
  461. #define MCDE_SYNCHCONF_HWREQVEVENT_FRONT_PORCH (3 << 0)
  462. #define MCDE_SYNCHCONF_HWREQVCNT_SHIFT 2 /* 14 bits */
  463. #define MCDE_SYNCHCONF_SWINTVEVENT_VSYNC (0 << 16)
  464. #define MCDE_SYNCHCONF_SWINTVEVENT_BACK_PORCH (1 << 16)
  465. #define MCDE_SYNCHCONF_SWINTVEVENT_ACTIVE_VIDEO (2 << 16)
  466. #define MCDE_SYNCHCONF_SWINTVEVENT_FRONT_PORCH (3 << 16)
  467. #define MCDE_SYNCHCONF_SWINTVCNT_SHIFT 18 /* 14 bits */
  468. /* Channel A+B control registers */
  469. #define MCDE_CTRLA 0x00000884
  470. #define MCDE_CTRLB 0x00000A84
  471. #define MCDE_CTRLX_FIFOWTRMRK_SHIFT 0
  472. #define MCDE_CTRLX_FIFOWTRMRK_MASK 0x000003FF
  473. #define MCDE_CTRLX_FIFOEMPTY BIT(12)
  474. #define MCDE_CTRLX_FIFOFULL BIT(13)
  475. #define MCDE_CTRLX_FORMID_SHIFT 16
  476. #define MCDE_CTRLX_FORMID_MASK 0x00070000
  477. #define MCDE_CTRLX_FORMID_DSI0VID 0
  478. #define MCDE_CTRLX_FORMID_DSI0CMD 1
  479. #define MCDE_CTRLX_FORMID_DSI1VID 2
  480. #define MCDE_CTRLX_FORMID_DSI1CMD 3
  481. #define MCDE_CTRLX_FORMID_DSI2VID 4
  482. #define MCDE_CTRLX_FORMID_DSI2CMD 5
  483. #define MCDE_CTRLX_FORMID_DPIA 0
  484. #define MCDE_CTRLX_FORMID_DPIB 1
  485. #define MCDE_CTRLX_FORMTYPE_SHIFT 20
  486. #define MCDE_CTRLX_FORMTYPE_MASK 0x00700000
  487. #define MCDE_CTRLX_FORMTYPE_DPITV 0
  488. #define MCDE_CTRLX_FORMTYPE_DBI 1
  489. #define MCDE_CTRLX_FORMTYPE_DSI 2
  490. #define MCDE_DSIVID0CONF0 0x00000E00
  491. #define MCDE_DSICMD0CONF0 0x00000E20
  492. #define MCDE_DSIVID1CONF0 0x00000E40
  493. #define MCDE_DSICMD1CONF0 0x00000E60
  494. #define MCDE_DSIVID2CONF0 0x00000E80
  495. #define MCDE_DSICMD2CONF0 0x00000EA0
  496. #define MCDE_DSICONF0_BLANKING_SHIFT 0
  497. #define MCDE_DSICONF0_BLANKING_MASK 0x000000FF
  498. #define MCDE_DSICONF0_VID_MODE_CMD 0
  499. #define MCDE_DSICONF0_VID_MODE_VID BIT(12)
  500. #define MCDE_DSICONF0_CMD8 BIT(13)
  501. #define MCDE_DSICONF0_BIT_SWAP BIT(16)
  502. #define MCDE_DSICONF0_BYTE_SWAP BIT(17)
  503. #define MCDE_DSICONF0_DCSVID_NOTGEN BIT(18)
  504. #define MCDE_DSICONF0_PACKING_SHIFT 20
  505. #define MCDE_DSICONF0_PACKING_MASK 0x00700000
  506. #define MCDE_DSICONF0_PACKING_RGB565 0
  507. #define MCDE_DSICONF0_PACKING_RGB666 1
  508. #define MCDE_DSICONF0_PACKING_RGB888 2
  509. #define MCDE_DSICONF0_PACKING_BGR888 3
  510. #define MCDE_DSICONF0_PACKING_HDTV 4
  511. #define MCDE_DSIVID0FRAME 0x00000E04
  512. #define MCDE_DSICMD0FRAME 0x00000E24
  513. #define MCDE_DSIVID1FRAME 0x00000E44
  514. #define MCDE_DSICMD1FRAME 0x00000E64
  515. #define MCDE_DSIVID2FRAME 0x00000E84
  516. #define MCDE_DSICMD2FRAME 0x00000EA4
  517. #define MCDE_DSIVID0PKT 0x00000E08
  518. #define MCDE_DSICMD0PKT 0x00000E28
  519. #define MCDE_DSIVID1PKT 0x00000E48
  520. #define MCDE_DSICMD1PKT 0x00000E68
  521. #define MCDE_DSIVID2PKT 0x00000E88
  522. #define MCDE_DSICMD2PKT 0x00000EA8
  523. #define MCDE_DSIVID0SYNC 0x00000E0C
  524. #define MCDE_DSICMD0SYNC 0x00000E2C
  525. #define MCDE_DSIVID1SYNC 0x00000E4C
  526. #define MCDE_DSICMD1SYNC 0x00000E6C
  527. #define MCDE_DSIVID2SYNC 0x00000E8C
  528. #define MCDE_DSICMD2SYNC 0x00000EAC
  529. #define MCDE_DSIVID0CMDW 0x00000E10
  530. #define MCDE_DSICMD0CMDW 0x00000E30
  531. #define MCDE_DSIVID1CMDW 0x00000E50
  532. #define MCDE_DSICMD1CMDW 0x00000E70
  533. #define MCDE_DSIVID2CMDW 0x00000E90
  534. #define MCDE_DSICMD2CMDW 0x00000EB0
  535. #define MCDE_DSIVIDXCMDW_CMDW_CONTINUE_SHIFT 0
  536. #define MCDE_DSIVIDXCMDW_CMDW_CONTINUE_MASK 0x0000FFFF
  537. #define MCDE_DSIVIDXCMDW_CMDW_START_SHIFT 16
  538. #define MCDE_DSIVIDXCMDW_CMDW_START_MASK 0xFFFF0000
  539. #define MCDE_DSIVID0DELAY0 0x00000E14
  540. #define MCDE_DSICMD0DELAY0 0x00000E34
  541. #define MCDE_DSIVID1DELAY0 0x00000E54
  542. #define MCDE_DSICMD1DELAY0 0x00000E74
  543. #define MCDE_DSIVID2DELAY0 0x00000E94
  544. #define MCDE_DSICMD2DELAY0 0x00000EB4
  545. #define MCDE_DSIVID0DELAY1 0x00000E18
  546. #define MCDE_DSICMD0DELAY1 0x00000E38
  547. #define MCDE_DSIVID1DELAY1 0x00000E58
  548. #define MCDE_DSICMD1DELAY1 0x00000E78
  549. #define MCDE_DSIVID2DELAY1 0x00000E98
  550. #define MCDE_DSICMD2DELAY1 0x00000EB8
  551. #endif /* __DRM_MCDE_DISPLAY_REGS */