mdp4.xml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <database xmlns="http://nouveau.freedesktop.org/"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd">
  5. <import file="freedreno_copyright.xml"/>
  6. <import file="display/mdp_common.xml"/>
  7. <domain name="MDP4" width="32">
  8. <enum name="mdp4_pipe">
  9. <brief>pipe names, index into PIPE[]</brief>
  10. <value name="VG1" value="0"/>
  11. <value name="VG2" value="1"/>
  12. <value name="RGB1" value="2"/>
  13. <value name="RGB2" value="3"/>
  14. <value name="RGB3" value="4"/>
  15. <value name="VG3" value="5"/>
  16. <value name="VG4" value="6"/>
  17. </enum>
  18. <enum name="mdp4_mixer">
  19. <value name="MIXER0" value="0"/>
  20. <value name="MIXER1" value="1"/>
  21. <value name="MIXER2" value="2"/>
  22. </enum>
  23. <enum name="mdp4_intf">
  24. <!--
  25. A bit confusing the enums for interface selection:
  26. enum {
  27. LCDC_RGB_INTF, /* 0 */
  28. DTV_INTF = LCDC_RGB_INTF, /* 0 */
  29. MDDI_LCDC_INTF, /* 1 */
  30. MDDI_INTF, /* 2 */
  31. EBI2_INTF, /* 3 */
  32. TV_INTF = EBI2_INTF, /* 3 */
  33. DSI_VIDEO_INTF,
  34. DSI_CMD_INTF
  35. };
  36. there is some overlap, and not all the values end up getting
  37. written to hw (mdp4_display_intf_sel() remaps the last two
  38. values to MDDI_LCDC_INTF/MDDI_INTF with extra bits set).. so
  39. taking some liberties in guessing the actual meanings/names:
  40. -->
  41. <value name="INTF_LCDC_DTV" value="0"/> <!-- LCDC RGB or DTV (external) -->
  42. <value name="INTF_DSI_VIDEO" value="1"/>
  43. <value name="INTF_DSI_CMD" value="2"/>
  44. <value name="INTF_EBI2_TV" value="3"/> <!-- EBI2 or TV (external) -->
  45. </enum>
  46. <enum name="mdp4_cursor_format">
  47. <value name="CURSOR_ARGB" value="1"/>
  48. <value name="CURSOR_XRGB" value="2"/>
  49. </enum>
  50. <enum name="mdp4_frame_format">
  51. <value name="FRAME_LINEAR" value="0"/>
  52. <value name="FRAME_TILE_ARGB_4X4" value="1"/>
  53. <value name="FRAME_TILE_YCBCR_420" value="2"/>
  54. </enum>
  55. <enum name="mdp4_scale_unit">
  56. <value name="SCALE_FIR" value="0"/>
  57. <value name="SCALE_MN_PHASE" value="1"/>
  58. <value name="SCALE_PIXEL_RPT" value="2"/>
  59. </enum>
  60. <bitset name="mdp4_layermixer_in_cfg" inline="yes">
  61. <brief>appears to map pipe to mixer stage</brief>
  62. <bitfield name="PIPE0" low="0" high="2" type="mdp_mixer_stage_id"/>
  63. <bitfield name="PIPE0_MIXER1" pos="3" type="boolean"/>
  64. <bitfield name="PIPE1" low="4" high="6" type="mdp_mixer_stage_id"/>
  65. <bitfield name="PIPE1_MIXER1" pos="7" type="boolean"/>
  66. <bitfield name="PIPE2" low="8" high="10" type="mdp_mixer_stage_id"/>
  67. <bitfield name="PIPE2_MIXER1" pos="11" type="boolean"/>
  68. <bitfield name="PIPE3" low="12" high="14" type="mdp_mixer_stage_id"/>
  69. <bitfield name="PIPE3_MIXER1" pos="15" type="boolean"/>
  70. <bitfield name="PIPE4" low="16" high="18" type="mdp_mixer_stage_id"/>
  71. <bitfield name="PIPE4_MIXER1" pos="19" type="boolean"/>
  72. <bitfield name="PIPE5" low="20" high="22" type="mdp_mixer_stage_id"/>
  73. <bitfield name="PIPE5_MIXER1" pos="23" type="boolean"/>
  74. <bitfield name="PIPE6" low="24" high="26" type="mdp_mixer_stage_id"/>
  75. <bitfield name="PIPE6_MIXER1" pos="27" type="boolean"/>
  76. <bitfield name="PIPE7" low="28" high="30" type="mdp_mixer_stage_id"/>
  77. <bitfield name="PIPE7_MIXER1" pos="31" type="boolean"/>
  78. </bitset>
  79. <bitset name="MDP4_IRQ">
  80. <bitfield name="OVERLAY0_DONE" pos="0" type="boolean"/>
  81. <bitfield name="OVERLAY1_DONE" pos="1" type="boolean"/>
  82. <bitfield name="DMA_S_DONE" pos="2" type="boolean"/>
  83. <bitfield name="DMA_E_DONE" pos="3" type="boolean"/>
  84. <bitfield name="DMA_P_DONE" pos="4" type="boolean"/>
  85. <bitfield name="VG1_HISTOGRAM" pos="5" type="boolean"/>
  86. <bitfield name="VG2_HISTOGRAM" pos="6" type="boolean"/>
  87. <bitfield name="PRIMARY_VSYNC" pos="7" type="boolean"/>
  88. <bitfield name="PRIMARY_INTF_UDERRUN" pos="8" type="boolean"/>
  89. <bitfield name="EXTERNAL_VSYNC" pos="9" type="boolean"/>
  90. <bitfield name="EXTERNAL_INTF_UDERRUN" pos="10" type="boolean"/>
  91. <bitfield name="PRIMARY_RDPTR" pos="11" type="boolean"/> <!-- read pointer -->
  92. <bitfield name="DMA_P_HISTOGRAM" pos="17" type="boolean"/>
  93. <bitfield name="DMA_S_HISTOGRAM" pos="26" type="boolean"/>
  94. <bitfield name="OVERLAY2_DONE" pos="30" type="boolean"/>
  95. </bitset>
  96. <reg32 offset="0x00000" name="VERSION">
  97. <!--
  98. from mdp_probe() we can see minor rev starts at 16.. assume
  99. major is above that.. not sure the rest of bits but doesn't
  100. really seem to matter
  101. -->
  102. <bitfield name="MINOR" low="16" high="23" type="uint"/>
  103. <bitfield name="MAJOR" low="24" high="31" type="uint"/>
  104. </reg32>
  105. <reg32 offset="0x00004" name="OVLP0_KICK"/>
  106. <reg32 offset="0x00008" name="OVLP1_KICK"/>
  107. <reg32 offset="0x000d0" name="OVLP2_KICK"/>
  108. <reg32 offset="0x0000c" name="DMA_P_KICK"/>
  109. <reg32 offset="0x00010" name="DMA_S_KICK"/>
  110. <reg32 offset="0x00014" name="DMA_E_KICK"/>
  111. <reg32 offset="0x00018" name="DISP_STATUS"/>
  112. <reg32 offset="0x00038" name="DISP_INTF_SEL">
  113. <bitfield name="PRIM" low="0" high="1" type="mdp4_intf"/>
  114. <bitfield name="SEC" low="2" high="3" type="mdp4_intf"/>
  115. <bitfield name="EXT" low="4" high="5" type="mdp4_intf"/>
  116. <bitfield name="DSI_VIDEO" pos="6" type="boolean"/>
  117. <bitfield name="DSI_CMD" pos="7" type="boolean"/>
  118. </reg32>
  119. <reg32 offset="0x0003c" name="RESET_STATUS"/> <!-- only mdp4 >v2.1 -->
  120. <reg32 offset="0x0004c" name="READ_CNFG"/> <!-- something about # of pending requests.. -->
  121. <reg32 offset="0x00050" name="INTR_ENABLE" type="MDP4_IRQ"/>
  122. <reg32 offset="0x00054" name="INTR_STATUS" type="MDP4_IRQ"/>
  123. <reg32 offset="0x00058" name="INTR_CLEAR" type="MDP4_IRQ"/>
  124. <reg32 offset="0x00060" name="EBI2_LCD0"/>
  125. <reg32 offset="0x00064" name="EBI2_LCD1"/>
  126. <reg32 offset="0x00070" name="PORTMAP_MODE"/>
  127. <!-- mdp chip-select controller: -->
  128. <reg32 offset="0x000c0" name="CS_CONTROLLER0"/>
  129. <reg32 offset="0x000c4" name="CS_CONTROLLER1"/>
  130. <reg32 offset="0x100f0" name="LAYERMIXER2_IN_CFG" type="mdp4_layermixer_in_cfg"/>
  131. <reg32 offset="0x100fc" name="LAYERMIXER_IN_CFG_UPDATE_METHOD"/>
  132. <reg32 offset="0x10100" name="LAYERMIXER_IN_CFG" type="mdp4_layermixer_in_cfg"/>
  133. <reg32 offset="0x30050" name="VG2_SRC_FORMAT"/>
  134. <reg32 offset="0x31008" name="VG2_CONST_COLOR"/>
  135. <reg32 offset="0x18000" name="OVERLAY_FLUSH">
  136. <bitfield name="OVLP0" pos="0" type="boolean"/>
  137. <bitfield name="OVLP1" pos="1" type="boolean"/>
  138. <bitfield name="VG1" pos="2" type="boolean"/>
  139. <bitfield name="VG2" pos="3" type="boolean"/>
  140. <bitfield name="RGB1" pos="4" type="boolean"/>
  141. <bitfield name="RGB2" pos="5" type="boolean"/>
  142. </reg32>
  143. <array offsets="0x10000,0x18000,0x88000" name="OVLP" length="3" stride="0x8000">
  144. <reg32 offset="0x0004" name="CFG"/>
  145. <reg32 offset="0x0008" name="SIZE" type="reg_wh"/>
  146. <reg32 offset="0x000c" name="BASE"/>
  147. <reg32 offset="0x0010" name="STRIDE" type="uint"/>
  148. <reg32 offset="0x0014" name="OPMODE"/>
  149. <array offsets="0x0104,0x0124,0x0144,0x0160" name="STAGE" length="4" stride="0x1c">
  150. <reg32 offset="0x00" name="OP">
  151. <bitfield name="FG_ALPHA" low="0" high="1" type="mdp_alpha_type"/>
  152. <bitfield name="FG_INV_ALPHA" pos="2" type="boolean"/>
  153. <bitfield name="FG_MOD_ALPHA" pos="3" type="boolean"/>
  154. <bitfield name="BG_ALPHA" low="4" high="5" type="mdp_alpha_type"/>
  155. <bitfield name="BG_INV_ALPHA" pos="6" type="boolean"/>
  156. <bitfield name="BG_MOD_ALPHA" pos="7" type="boolean"/>
  157. <bitfield name="FG_TRANSP" pos="8" type="boolean"/>
  158. <bitfield name="BG_TRANSP" pos="9" type="boolean"/>
  159. </reg32>
  160. <reg32 offset="0x04" name="FG_ALPHA"/>
  161. <reg32 offset="0x08" name="BG_ALPHA"/>
  162. <reg32 offset="0x0c" name="TRANSP_LOW0"/>
  163. <reg32 offset="0x10" name="TRANSP_LOW1"/>
  164. <reg32 offset="0x14" name="TRANSP_HIGH0"/>
  165. <reg32 offset="0x18" name="TRANSP_HIGH1"/>
  166. </array>
  167. <array offsets="0x1004,0x1404,0x1804,0x1b84" name="STAGE_CO3" length="4" stride="4">
  168. <reg32 offset="0" name="SEL">
  169. <bitfield name="FG_ALPHA" pos="0" type="boolean"/> <!-- otherwise bg alpha -->
  170. </reg32>
  171. </array>
  172. <reg32 offset="0x0180" name="TRANSP_LOW0"/>
  173. <reg32 offset="0x0184" name="TRANSP_LOW1"/>
  174. <reg32 offset="0x0188" name="TRANSP_HIGH0"/>
  175. <reg32 offset="0x018c" name="TRANSP_HIGH1"/>
  176. <reg32 offset="0x0200" name="CSC_CONFIG"/>
  177. <array offset="0x2000" name="CSC" length="1" stride="0x700">
  178. <array offset="0x400" name="MV" length="9" stride="4">
  179. <reg32 offset="0" name="VAL"/>
  180. </array>
  181. <array offset="0x500" name="PRE_BV" length="3" stride="4">
  182. <reg32 offset="0" name="VAL"/>
  183. </array>
  184. <array offset="0x580" name="POST_BV" length="3" stride="4">
  185. <reg32 offset="0" name="VAL"/>
  186. </array>
  187. <array offset="0x600" name="PRE_LV" length="6" stride="4">
  188. <reg32 offset="0" name="VAL"/>
  189. </array>
  190. <array offset="0x680" name="POST_LV" length="6" stride="4">
  191. <reg32 offset="0" name="VAL"/>
  192. </array>
  193. </array>
  194. </array>
  195. <enum name="mdp4_dma">
  196. <value name="DMA_P" value="0"/>
  197. <value name="DMA_S" value="1"/>
  198. <value name="DMA_E" value="2"/>
  199. </enum>
  200. <reg32 offset="0x90070" name="DMA_P_OP_MODE"/>
  201. <array offset="0x94800" name="LUTN" length="2" stride="0x400">
  202. <array offset="0" name="LUT" length="0x100" stride="4">
  203. <reg32 offset="0" name="VAL"/>
  204. </array>
  205. </array>
  206. <reg32 offset="0xa0028" name="DMA_S_OP_MODE"/>
  207. <!-- I guess if DMA_S has an OP_MODE, it must have a LUT too.. -->
  208. <reg32 offset="0xb0070" name="DMA_E_QUANT" length="3" stride="4"/>
  209. <array offsets="0x90000,0xa0000,0xb0000" name="DMA" length="3" stride="0x10000" index="mdp4_dma">
  210. <reg32 offset="0x0000" name="CONFIG">
  211. <bitfield name="G_BPC" low="0" high="1" type="mdp_bpc"/>
  212. <bitfield name="B_BPC" low="2" high="3" type="mdp_bpc"/>
  213. <bitfield name="R_BPC" low="4" high="5" type="mdp_bpc"/>
  214. <bitfield name="PACK_ALIGN_MSB" pos="7" type="boolean"/>
  215. <bitfield name="PACK" low="8" high="15"/>
  216. <!-- bit 24 is DITHER_EN on DMA_P, DEFLKR_EN on DMA_E -->
  217. <bitfield name="DEFLKR_EN" pos="24" type="boolean"/>
  218. <bitfield name="DITHER_EN" pos="24" type="boolean"/>
  219. </reg32>
  220. <reg32 offset="0x0004" name="SRC_SIZE" type="reg_wh"/>
  221. <reg32 offset="0x0008" name="SRC_BASE"/>
  222. <reg32 offset="0x000c" name="SRC_STRIDE" type="uint"/>
  223. <reg32 offset="0x0010" name="DST_SIZE" type="reg_wh"/>
  224. <reg32 offset="0x0044" name="CURSOR_SIZE">
  225. <!-- seems the limit is 64x64: -->
  226. <bitfield name="WIDTH" low="0" high="6" type="uint"/>
  227. <bitfield name="HEIGHT" low="16" high="22" type="uint"/>
  228. </reg32>
  229. <reg32 offset="0x0048" name="CURSOR_BASE"/>
  230. <reg32 offset="0x004c" name="CURSOR_POS">
  231. <bitfield name="X" low="0" high="15" type="uint"/>
  232. <bitfield name="Y" low="16" high="31" type="uint"/>
  233. </reg32>
  234. <reg32 offset="0x0060" name="CURSOR_BLEND_CONFIG">
  235. <bitfield name="CURSOR_EN" pos="0" type="boolean"/>
  236. <bitfield name="FORMAT" low="1" high="2" type="mdp4_cursor_format"/>
  237. <bitfield name="TRANSP_EN" pos="3" type="boolean"/>
  238. </reg32>
  239. <reg32 offset="0x0064" name="CURSOR_BLEND_PARAM"/>
  240. <reg32 offset="0x0068" name="BLEND_TRANS_LOW"/>
  241. <reg32 offset="0x006c" name="BLEND_TRANS_HIGH"/>
  242. <reg32 offset="0x1004" name="FETCH_CONFIG"/>
  243. <array offset="0x3000" name="CSC" length="1" stride="0x700">
  244. <array offset="0x400" name="MV" length="9" stride="4">
  245. <reg32 offset="0" name="VAL"/>
  246. </array>
  247. <array offset="0x500" name="PRE_BV" length="3" stride="4">
  248. <reg32 offset="0" name="VAL"/>
  249. </array>
  250. <array offset="0x580" name="POST_BV" length="3" stride="4">
  251. <reg32 offset="0" name="VAL"/>
  252. </array>
  253. <array offset="0x600" name="PRE_LV" length="6" stride="4">
  254. <reg32 offset="0" name="VAL"/>
  255. </array>
  256. <array offset="0x680" name="POST_LV" length="6" stride="4">
  257. <reg32 offset="0" name="VAL"/>
  258. </array>
  259. </array>
  260. </array>
  261. <!--
  262. TODO length should be 7, but that would collide w/ OVLP2..!?!
  263. this register map is a bit strange..
  264. -->
  265. <array offset="0x20000" name="PIPE" length="6" stride="0x10000" index="mdp4_pipe">
  266. <reg32 offset="0x0000" name="SRC_SIZE" type="reg_wh"/>
  267. <reg32 offset="0x0004" name="SRC_XY" type="reg_xy"/>
  268. <reg32 offset="0x0008" name="DST_SIZE" type="reg_wh"/>
  269. <reg32 offset="0x000c" name="DST_XY" type="reg_xy"/>
  270. <reg32 offset="0x0010" name="SRCP0_BASE"/>
  271. <reg32 offset="0x0014" name="SRCP1_BASE"/>
  272. <reg32 offset="0x0018" name="SRCP2_BASE"/>
  273. <reg32 offset="0x001c" name="SRCP3_BASE"/>
  274. <reg32 offset="0x0040" name="SRC_STRIDE_A">
  275. <bitfield name="P0" low="0" high="15" type="uint"/>
  276. <bitfield name="P1" low="16" high="31" type="uint"/>
  277. </reg32>
  278. <reg32 offset="0x0044" name="SRC_STRIDE_B">
  279. <bitfield name="P2" low="0" high="15" type="uint"/>
  280. <bitfield name="P3" low="16" high="31" type="uint"/>
  281. </reg32>
  282. <reg32 offset="0x0048" name="SSTILE_FRAME_SIZE" type="reg_wh"/>
  283. <reg32 offset="0x0050" name="SRC_FORMAT">
  284. <bitfield name="G_BPC" low="0" high="1" type="mdp_bpc"/>
  285. <bitfield name="B_BPC" low="2" high="3" type="mdp_bpc"/>
  286. <bitfield name="R_BPC" low="4" high="5" type="mdp_bpc"/>
  287. <bitfield name="A_BPC" low="6" high="7" type="mdp_bpc_alpha"/>
  288. <bitfield name="ALPHA_ENABLE" pos="8" type="boolean"/>
  289. <bitfield name="CPP" low="9" high="10" type="uint">
  290. <brief>8bit characters per pixel minus 1</brief>
  291. </bitfield>
  292. <bitfield name="ROTATED_90" pos="12" type="boolean"/>
  293. <bitfield name="UNPACK_COUNT" low="13" high="14" type="uint"/>
  294. <bitfield name="UNPACK_TIGHT" pos="17" type="boolean"/>
  295. <bitfield name="UNPACK_ALIGN_MSB" pos="18" type="boolean"/>
  296. <bitfield name="FETCH_PLANES" low="19" high="20" type="uint"/>
  297. <bitfield name="SOLID_FILL" pos="22" type="boolean"/>
  298. <bitfield name="CHROMA_SAMP" low="26" high="27" type="mdp_chroma_samp_type"/>
  299. <bitfield name="FRAME_FORMAT" low="29" high="30" type="mdp4_frame_format"/>
  300. </reg32>
  301. <reg32 offset="0x0054" name="SRC_UNPACK" type="mdp_unpack_pattern"/>
  302. <reg32 offset="0x0058" name="OP_MODE">
  303. <bitfield name="SCALEX_EN" pos="0" type="boolean"/>
  304. <bitfield name="SCALEY_EN" pos="1" type="boolean"/>
  305. <bitfield name="SCALEX_UNIT_SEL" low="2" high="3" type="mdp4_scale_unit"/>
  306. <bitfield name="SCALEY_UNIT_SEL" low="4" high="5" type="mdp4_scale_unit"/>
  307. <bitfield name="SRC_YCBCR" pos="9" type="boolean"/>
  308. <bitfield name="DST_YCBCR" pos="10" type="boolean"/>
  309. <bitfield name="CSC_EN" pos="11" type="boolean"/>
  310. <bitfield name="FLIP_LR" pos="13" type="boolean"/>
  311. <bitfield name="FLIP_UD" pos="14" type="boolean"/>
  312. <bitfield name="DITHER_EN" pos="15" type="boolean"/>
  313. <bitfield name="IGC_LUT_EN" pos="16" type="boolean"/>
  314. <bitfield name="DEINT_EN" pos="18" type="boolean"/>
  315. <bitfield name="DEINT_ODD_REF" pos="19" type="boolean"/>
  316. </reg32>
  317. <reg32 offset="0x005c" name="PHASEX_STEP"/>
  318. <reg32 offset="0x0060" name="PHASEY_STEP"/>
  319. <reg32 offset="0x1004" name="FETCH_CONFIG"/>
  320. <reg32 offset="0x1008" name="SOLID_COLOR"/>
  321. <array offset="0x4000" name="CSC" length="1" stride="0x700">
  322. <array offset="0x400" name="MV" length="9" stride="4">
  323. <reg32 offset="0" name="VAL"/>
  324. </array>
  325. <array offset="0x500" name="PRE_BV" length="3" stride="4">
  326. <reg32 offset="0" name="VAL"/>
  327. </array>
  328. <array offset="0x580" name="POST_BV" length="3" stride="4">
  329. <reg32 offset="0" name="VAL"/>
  330. </array>
  331. <array offset="0x600" name="PRE_LV" length="6" stride="4">
  332. <reg32 offset="0" name="VAL"/>
  333. </array>
  334. <array offset="0x680" name="POST_LV" length="6" stride="4">
  335. <reg32 offset="0" name="VAL"/>
  336. </array>
  337. </array>
  338. </array>
  339. <!--
  340. ENCODERS
  341. LCDC and DSI seem the same, DTV is just slightly different..
  342. -->
  343. <bitset name="mdp4_ctrl_polarity" inline="yes">
  344. <!-- not entirely sure if these bits mean hi or low.. -->
  345. <bitfield name="HSYNC_LOW" pos="0" type="boolean"/>
  346. <bitfield name="VSYNC_LOW" pos="1" type="boolean"/>
  347. <bitfield name="DATA_EN_LOW" pos="2" type="boolean"/>
  348. </bitset>
  349. <bitset name="mdp4_active_hctl" inline="yes">
  350. <bitfield name="START" low="0" high="14" type="uint"/>
  351. <bitfield name="END" low="16" high="30" type="uint"/>
  352. <bitfield name="ACTIVE_START_X" pos="31" type="boolean"/>
  353. </bitset>
  354. <bitset name="mdp4_display_hctl" inline="yes">
  355. <bitfield name="START" low="0" high="15" type="uint"/>
  356. <bitfield name="END" low="16" high="31" type="uint"/>
  357. </bitset>
  358. <bitset name="mdp4_hsync_ctrl" inline="yes">
  359. <bitfield name="PULSEW" low="0" high="15" type="uint"/>
  360. <bitfield name="PERIOD" low="16" high="31" type="uint"/>
  361. </bitset>
  362. <bitset name="mdp4_underflow_clr" inline="yes">
  363. <bitfield name="COLOR" low="0" high="23"/>
  364. <bitfield name="ENABLE_RECOVERY" pos="31" type="boolean"/>
  365. </bitset>
  366. <!-- offset is 0xe0000 on !mdp4.. -->
  367. <array offset="0xc0000" name="LCDC" length="1" stride="0x1000">
  368. <reg32 offset="0x0000" name="ENABLE"/>
  369. <reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
  370. <reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
  371. <reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
  372. <reg32 offset="0x0010" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
  373. <reg32 offset="0x0014" name="DISPLAY_VSTART" type="uint"/>
  374. <reg32 offset="0x0018" name="DISPLAY_VEND" type="uint"/>
  375. <reg32 offset="0x001c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
  376. <reg32 offset="0x0020" name="ACTIVE_VSTART" type="uint"/>
  377. <reg32 offset="0x0024" name="ACTIVE_VEND" type="uint"/>
  378. <reg32 offset="0x0028" name="BORDER_CLR"/>
  379. <reg32 offset="0x002c" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
  380. <reg32 offset="0x0030" name="HSYNC_SKEW"/>
  381. <reg32 offset="0x0034" name="TEST_CNTL"/>
  382. <reg32 offset="0x0038" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
  383. </array>
  384. <reg32 offset="0xc2000" name="LCDC_LVDS_INTF_CTL">
  385. <bitfield name="MODE_SEL" pos="2" type="boolean"/>
  386. <bitfield name="RGB_OUT" pos="3" type="boolean"/>
  387. <bitfield name="CH_SWAP" pos="4" type="boolean"/>
  388. <bitfield name="CH1_RES_BIT" pos="5" type="boolean"/>
  389. <bitfield name="CH2_RES_BIT" pos="6" type="boolean"/>
  390. <bitfield name="ENABLE" pos="7" type="boolean"/>
  391. <bitfield name="CH1_DATA_LANE0_EN" pos="8" type="boolean"/>
  392. <bitfield name="CH1_DATA_LANE1_EN" pos="9" type="boolean"/>
  393. <bitfield name="CH1_DATA_LANE2_EN" pos="10" type="boolean"/>
  394. <bitfield name="CH1_DATA_LANE3_EN" pos="11" type="boolean"/>
  395. <bitfield name="CH2_DATA_LANE0_EN" pos="12" type="boolean"/>
  396. <bitfield name="CH2_DATA_LANE1_EN" pos="13" type="boolean"/>
  397. <bitfield name="CH2_DATA_LANE2_EN" pos="14" type="boolean"/>
  398. <bitfield name="CH2_DATA_LANE3_EN" pos="15" type="boolean"/>
  399. <bitfield name="CH1_CLK_LANE_EN" pos="16" type="boolean"/>
  400. <bitfield name="CH2_CLK_LANE_EN" pos="17" type="boolean"/>
  401. </reg32>
  402. <array offset="0xc2014" name="LCDC_LVDS_MUX_CTL" length="4" stride="0x8">
  403. <reg32 offset="0x0" name="3_TO_0">
  404. <bitfield name="BIT0" low="0" high="7"/>
  405. <bitfield name="BIT1" low="8" high="15"/>
  406. <bitfield name="BIT2" low="16" high="23"/>
  407. <bitfield name="BIT3" low="24" high="31"/>
  408. </reg32>
  409. <reg32 offset="0x4" name="6_TO_4">
  410. <bitfield name="BIT4" low="0" high="7"/>
  411. <bitfield name="BIT5" low="8" high="15"/>
  412. <bitfield name="BIT6" low="16" high="23"/>
  413. </reg32>
  414. </array>
  415. <reg32 offset="0xc2034" name="LCDC_LVDS_PHY_RESET"/>
  416. <reg32 offset="0xc3000" name="LVDS_PHY_PLL_CTRL_0"/>
  417. <reg32 offset="0xc3004" name="LVDS_PHY_PLL_CTRL_1"/>
  418. <reg32 offset="0xc3008" name="LVDS_PHY_PLL_CTRL_2"/>
  419. <reg32 offset="0xc300c" name="LVDS_PHY_PLL_CTRL_3"/>
  420. <reg32 offset="0xc3014" name="LVDS_PHY_PLL_CTRL_5"/>
  421. <reg32 offset="0xc3018" name="LVDS_PHY_PLL_CTRL_6"/>
  422. <reg32 offset="0xc301c" name="LVDS_PHY_PLL_CTRL_7"/>
  423. <reg32 offset="0xc3020" name="LVDS_PHY_PLL_CTRL_8"/>
  424. <reg32 offset="0xc3024" name="LVDS_PHY_PLL_CTRL_9"/>
  425. <reg32 offset="0xc3080" name="LVDS_PHY_PLL_LOCKED"/>
  426. <reg32 offset="0xc3108" name="LVDS_PHY_CFG2"/>
  427. <reg32 offset="0xc3100" name="LVDS_PHY_CFG0">
  428. <bitfield name="SERIALIZATION_ENBLE" pos="4" type="boolean"/>
  429. <bitfield name="CHANNEL0" pos="6" type="boolean"/>
  430. <bitfield name="CHANNEL1" pos="7" type="boolean"/>
  431. </reg32>
  432. <array offset="0xd0000" name="DTV" length="1" stride="0x1000">
  433. <reg32 offset="0x0000" name="ENABLE"/>
  434. <reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
  435. <reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
  436. <reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
  437. <reg32 offset="0x0018" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
  438. <reg32 offset="0x001c" name="DISPLAY_VSTART" type="uint"/>
  439. <reg32 offset="0x0020" name="DISPLAY_VEND" type="uint"/>
  440. <reg32 offset="0x002c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
  441. <reg32 offset="0x0030" name="ACTIVE_VSTART" type="uint"/>
  442. <reg32 offset="0x0038" name="ACTIVE_VEND" type="uint"/>
  443. <reg32 offset="0x0040" name="BORDER_CLR"/>
  444. <reg32 offset="0x0044" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
  445. <reg32 offset="0x0048" name="HSYNC_SKEW"/>
  446. <reg32 offset="0x004c" name="TEST_CNTL"/>
  447. <reg32 offset="0x0050" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
  448. </array>
  449. <array offset="0xe0000" name="DSI" length="1" stride="0x1000">
  450. <reg32 offset="0x0000" name="ENABLE"/>
  451. <reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
  452. <reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
  453. <reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
  454. <reg32 offset="0x0010" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
  455. <reg32 offset="0x0014" name="DISPLAY_VSTART" type="uint"/>
  456. <reg32 offset="0x0018" name="DISPLAY_VEND" type="uint"/>
  457. <reg32 offset="0x001c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
  458. <reg32 offset="0x0020" name="ACTIVE_VSTART" type="uint"/>
  459. <reg32 offset="0x0024" name="ACTIVE_VEND" type="uint"/>
  460. <reg32 offset="0x0028" name="BORDER_CLR"/>
  461. <reg32 offset="0x002c" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
  462. <reg32 offset="0x0030" name="HSYNC_SKEW"/>
  463. <reg32 offset="0x0034" name="TEST_CNTL"/>
  464. <reg32 offset="0x0038" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
  465. </array>
  466. </domain>
  467. </database>