17ec681f3Smrg<?xml version="1.0" encoding="UTF-8"?>
27ec681f3Smrg<database xmlns="http://nouveau.freedesktop.org/"
37ec681f3Smrgxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
47ec681f3Smrgxsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
57ec681f3Smrg<import file="freedreno_copyright.xml"/>
67ec681f3Smrg<import file="mdp/mdp_common.xml"/>
77ec681f3Smrg
87ec681f3Smrg<domain name="MDP4" width="32">
97ec681f3Smrg	<enum name="mdp4_pipe">
107ec681f3Smrg		<brief>pipe names, index into PIPE[]</brief>
117ec681f3Smrg		<value name="VG1" value="0"/>
127ec681f3Smrg		<value name="VG2" value="1"/>
137ec681f3Smrg		<value name="RGB1" value="2"/>
147ec681f3Smrg		<value name="RGB2" value="3"/>
157ec681f3Smrg		<value name="RGB3" value="4"/>
167ec681f3Smrg		<value name="VG3" value="5"/>
177ec681f3Smrg		<value name="VG4" value="6"/>
187ec681f3Smrg	</enum>
197ec681f3Smrg
207ec681f3Smrg	<enum name="mdp4_mixer">
217ec681f3Smrg		<value name="MIXER0" value="0"/>
227ec681f3Smrg		<value name="MIXER1" value="1"/>
237ec681f3Smrg		<value name="MIXER2" value="2"/>
247ec681f3Smrg	</enum>
257ec681f3Smrg
267ec681f3Smrg	<enum name="mdp4_intf">
277ec681f3Smrg		<!--
287ec681f3Smrg			A bit confusing the enums for interface selection:
297ec681f3Smrg				enum {
307ec681f3Smrg					LCDC_RGB_INTF,			/* 0 */
317ec681f3Smrg					DTV_INTF = LCDC_RGB_INTF,	/* 0 */
327ec681f3Smrg					MDDI_LCDC_INTF,			/* 1 */
337ec681f3Smrg					MDDI_INTF,			/* 2 */
347ec681f3Smrg					EBI2_INTF,			/* 3 */
357ec681f3Smrg					TV_INTF = EBI2_INTF,		/* 3 */
367ec681f3Smrg					DSI_VIDEO_INTF,
377ec681f3Smrg					DSI_CMD_INTF
387ec681f3Smrg				};
397ec681f3Smrg			there is some overlap, and not all the values end up getting
407ec681f3Smrg			written to hw (mdp4_display_intf_sel() remaps the last two
417ec681f3Smrg			values to MDDI_LCDC_INTF/MDDI_INTF with extra bits set).. so
427ec681f3Smrg			taking some liberties in guessing the actual meanings/names:
437ec681f3Smrg		 -->
447ec681f3Smrg		<value name="INTF_LCDC_DTV" value="0"/>  <!-- LCDC RGB or DTV (external) -->
457ec681f3Smrg		<value name="INTF_DSI_VIDEO" value="1"/>
467ec681f3Smrg		<value name="INTF_DSI_CMD" value="2"/>
477ec681f3Smrg		<value name="INTF_EBI2_TV" value="3"/>   <!-- EBI2 or TV (external) -->
487ec681f3Smrg	</enum>
497ec681f3Smrg	<enum name="mdp4_cursor_format">
507ec681f3Smrg		<value name="CURSOR_ARGB" value="1"/>
517ec681f3Smrg		<value name="CURSOR_XRGB" value="2"/>
527ec681f3Smrg	</enum>
537ec681f3Smrg	<enum name="mdp4_frame_format">
547ec681f3Smrg		<value name="FRAME_LINEAR" value="0"/>
557ec681f3Smrg		<value name="FRAME_TILE_ARGB_4X4" value="1"/>
567ec681f3Smrg		<value name="FRAME_TILE_YCBCR_420" value="2"/>
577ec681f3Smrg	</enum>
587ec681f3Smrg	<enum name="mdp4_scale_unit">
597ec681f3Smrg		<value name="SCALE_FIR" value="0"/>
607ec681f3Smrg		<value name="SCALE_MN_PHASE" value="1"/>
617ec681f3Smrg		<value name="SCALE_PIXEL_RPT" value="2"/>
627ec681f3Smrg	</enum>
637ec681f3Smrg
647ec681f3Smrg	<bitset name="mdp4_layermixer_in_cfg" inline="yes">
657ec681f3Smrg		<brief>appears to map pipe to mixer stage</brief>
667ec681f3Smrg		<bitfield name="PIPE0" low="0"  high="2"  type="mdp_mixer_stage_id"/>
677ec681f3Smrg		<bitfield name="PIPE0_MIXER1" pos="3" type="boolean"/>
687ec681f3Smrg		<bitfield name="PIPE1" low="4"  high="6"  type="mdp_mixer_stage_id"/>
697ec681f3Smrg		<bitfield name="PIPE1_MIXER1" pos="7" type="boolean"/>
707ec681f3Smrg		<bitfield name="PIPE2" low="8"  high="10" type="mdp_mixer_stage_id"/>
717ec681f3Smrg		<bitfield name="PIPE2_MIXER1" pos="11" type="boolean"/>
727ec681f3Smrg		<bitfield name="PIPE3" low="12" high="14" type="mdp_mixer_stage_id"/>
737ec681f3Smrg		<bitfield name="PIPE3_MIXER1" pos="15" type="boolean"/>
747ec681f3Smrg		<bitfield name="PIPE4" low="16" high="18" type="mdp_mixer_stage_id"/>
757ec681f3Smrg		<bitfield name="PIPE4_MIXER1" pos="19" type="boolean"/>
767ec681f3Smrg		<bitfield name="PIPE5" low="20" high="22" type="mdp_mixer_stage_id"/>
777ec681f3Smrg		<bitfield name="PIPE5_MIXER1" pos="23" type="boolean"/>
787ec681f3Smrg		<bitfield name="PIPE6" low="24" high="26" type="mdp_mixer_stage_id"/>
797ec681f3Smrg		<bitfield name="PIPE6_MIXER1" pos="27" type="boolean"/>
807ec681f3Smrg		<bitfield name="PIPE7" low="28" high="30" type="mdp_mixer_stage_id"/>
817ec681f3Smrg		<bitfield name="PIPE7_MIXER1" pos="31" type="boolean"/>
827ec681f3Smrg	</bitset>
837ec681f3Smrg
847ec681f3Smrg	<bitset name="MDP4_IRQ">
857ec681f3Smrg		<bitfield name="OVERLAY0_DONE" pos="0" type="boolean"/>
867ec681f3Smrg		<bitfield name="OVERLAY1_DONE" pos="1" type="boolean"/>
877ec681f3Smrg		<bitfield name="DMA_S_DONE" pos="2" type="boolean"/>
887ec681f3Smrg		<bitfield name="DMA_E_DONE" pos="3" type="boolean"/>
897ec681f3Smrg		<bitfield name="DMA_P_DONE" pos="4" type="boolean"/>
907ec681f3Smrg		<bitfield name="VG1_HISTOGRAM" pos="5" type="boolean"/>
917ec681f3Smrg		<bitfield name="VG2_HISTOGRAM" pos="6" type="boolean"/>
927ec681f3Smrg		<bitfield name="PRIMARY_VSYNC" pos="7" type="boolean"/>
937ec681f3Smrg		<bitfield name="PRIMARY_INTF_UDERRUN" pos="8" type="boolean"/>
947ec681f3Smrg		<bitfield name="EXTERNAL_VSYNC" pos="9" type="boolean"/>
957ec681f3Smrg		<bitfield name="EXTERNAL_INTF_UDERRUN" pos="10" type="boolean"/>
967ec681f3Smrg		<bitfield name="PRIMARY_RDPTR" pos="11" type="boolean"/>  <!-- read pointer -->
977ec681f3Smrg		<bitfield name="DMA_P_HISTOGRAM" pos="17" type="boolean"/>
987ec681f3Smrg		<bitfield name="DMA_S_HISTOGRAM" pos="26" type="boolean"/>
997ec681f3Smrg		<bitfield name="OVERLAY2_DONE" pos="30" type="boolean"/>
1007ec681f3Smrg	</bitset>
1017ec681f3Smrg
1027ec681f3Smrg	<group name="mdp4_csc">
1037ec681f3Smrg		<array offset="0x400" name="MV" length="9" stride="4">
1047ec681f3Smrg			<reg32 offset="0" name="VAL"/>
1057ec681f3Smrg		</array>
1067ec681f3Smrg		<array offset="0x500" name="PRE_BV" length="3" stride="4">
1077ec681f3Smrg			<reg32 offset="0" name="VAL"/>
1087ec681f3Smrg		</array>
1097ec681f3Smrg		<array offset="0x580" name="POST_BV" length="3" stride="4">
1107ec681f3Smrg			<reg32 offset="0" name="VAL"/>
1117ec681f3Smrg		</array>
1127ec681f3Smrg		<array offset="0x600" name="PRE_LV" length="6" stride="4">
1137ec681f3Smrg			<reg32 offset="0" name="VAL"/>
1147ec681f3Smrg		</array>
1157ec681f3Smrg		<array offset="0x680" name="POST_LV" length="6" stride="4">
1167ec681f3Smrg			<reg32 offset="0" name="VAL"/>
1177ec681f3Smrg		</array>
1187ec681f3Smrg	</group>
1197ec681f3Smrg
1207ec681f3Smrg	<reg32 offset="0x00000" name="VERSION">
1217ec681f3Smrg		<!--
1227ec681f3Smrg			from mdp_probe() we can see minor rev starts at 16.. assume
1237ec681f3Smrg			major is above that.. not sure the rest of bits but doesn't
1247ec681f3Smrg			really seem to matter
1257ec681f3Smrg		 -->
1267ec681f3Smrg		<bitfield name="MINOR" low="16" high="23" type="uint"/>
1277ec681f3Smrg		<bitfield name="MAJOR" low="24" high="31" type="uint"/>
1287ec681f3Smrg	</reg32>
1297ec681f3Smrg	<reg32 offset="0x00004" name="OVLP0_KICK"/>
1307ec681f3Smrg	<reg32 offset="0x00008" name="OVLP1_KICK"/>
1317ec681f3Smrg	<reg32 offset="0x000d0" name="OVLP2_KICK"/>
1327ec681f3Smrg	<reg32 offset="0x0000c" name="DMA_P_KICK"/>
1337ec681f3Smrg	<reg32 offset="0x00010" name="DMA_S_KICK"/>
1347ec681f3Smrg	<reg32 offset="0x00014" name="DMA_E_KICK"/>
1357ec681f3Smrg	<reg32 offset="0x00018" name="DISP_STATUS"/>
1367ec681f3Smrg
1377ec681f3Smrg	<reg32 offset="0x00038" name="DISP_INTF_SEL">
1387ec681f3Smrg		<bitfield name="PRIM" low="0" high="1" type="mdp4_intf"/>
1397ec681f3Smrg		<bitfield name="SEC" low="2" high="3" type="mdp4_intf"/>
1407ec681f3Smrg		<bitfield name="EXT" low="4" high="5" type="mdp4_intf"/>
1417ec681f3Smrg		<bitfield name="DSI_VIDEO" pos="6" type="boolean"/>
1427ec681f3Smrg		<bitfield name="DSI_CMD" pos="7" type="boolean"/>
1437ec681f3Smrg	</reg32>
1447ec681f3Smrg	<reg32 offset="0x0003c" name="RESET_STATUS"/>  <!-- only mdp4 >v2.1 -->
1457ec681f3Smrg	<reg32 offset="0x0004c" name="READ_CNFG"/>  <!-- something about # of pending requests.. -->
1467ec681f3Smrg	<reg32 offset="0x00050" name="INTR_ENABLE" type="MDP4_IRQ"/>
1477ec681f3Smrg	<reg32 offset="0x00054" name="INTR_STATUS" type="MDP4_IRQ"/>
1487ec681f3Smrg	<reg32 offset="0x00058" name="INTR_CLEAR" type="MDP4_IRQ"/>
1497ec681f3Smrg	<reg32 offset="0x00060" name="EBI2_LCD0"/>
1507ec681f3Smrg	<reg32 offset="0x00064" name="EBI2_LCD1"/>
1517ec681f3Smrg	<reg32 offset="0x00070" name="PORTMAP_MODE"/>
1527ec681f3Smrg
1537ec681f3Smrg	<!-- mdp chip-select controller: -->
1547ec681f3Smrg	<reg32 offset="0x000c0" name="CS_CONTROLLER0"/>
1557ec681f3Smrg	<reg32 offset="0x000c4" name="CS_CONTROLLER1"/>
1567ec681f3Smrg
1577ec681f3Smrg	<reg32 offset="0x100f0" name="LAYERMIXER2_IN_CFG" type="mdp4_layermixer_in_cfg"/>
1587ec681f3Smrg	<reg32 offset="0x100fc" name="LAYERMIXER_IN_CFG_UPDATE_METHOD"/>
1597ec681f3Smrg	<reg32 offset="0x10100" name="LAYERMIXER_IN_CFG" type="mdp4_layermixer_in_cfg"/>
1607ec681f3Smrg
1617ec681f3Smrg	<reg32 offset="0x30050" name="VG2_SRC_FORMAT"/>
1627ec681f3Smrg	<reg32 offset="0x31008" name="VG2_CONST_COLOR"/>
1637ec681f3Smrg
1647ec681f3Smrg	<reg32 offset="0x18000" name="OVERLAY_FLUSH">
1657ec681f3Smrg		<bitfield name="OVLP0" pos="0" type="boolean"/>
1667ec681f3Smrg		<bitfield name="OVLP1" pos="1" type="boolean"/>
1677ec681f3Smrg		<bitfield name="VG1" pos="2" type="boolean"/>
1687ec681f3Smrg		<bitfield name="VG2" pos="3" type="boolean"/>
1697ec681f3Smrg		<bitfield name="RGB1" pos="4" type="boolean"/>
1707ec681f3Smrg		<bitfield name="RGB2" pos="5" type="boolean"/>
1717ec681f3Smrg	</reg32>
1727ec681f3Smrg
1737ec681f3Smrg	<array offsets="0x10000,0x18000,0x88000" name="OVLP" length="3" stride="0x8000">
1747ec681f3Smrg		<reg32 offset="0x0004" name="CFG"/>
1757ec681f3Smrg		<reg32 offset="0x0008" name="SIZE" type="reg_wh"/>
1767ec681f3Smrg		<reg32 offset="0x000c" name="BASE"/>
1777ec681f3Smrg		<reg32 offset="0x0010" name="STRIDE" type="uint"/>
1787ec681f3Smrg		<reg32 offset="0x0014" name="OPMODE"/>
1797ec681f3Smrg
1807ec681f3Smrg		<array offsets="0x0104,0x0124,0x0144,0x0160" name="STAGE" length="4" stride="0x1c">
1817ec681f3Smrg			<reg32 offset="0x00" name="OP">
1827ec681f3Smrg				<bitfield name="FG_ALPHA" low="0" high="1" type="mdp_alpha_type"/>
1837ec681f3Smrg				<bitfield name="FG_INV_ALPHA" pos="2" type="boolean"/>
1847ec681f3Smrg				<bitfield name="FG_MOD_ALPHA" pos="3" type="boolean"/>
1857ec681f3Smrg				<bitfield name="BG_ALPHA" low="4" high="5" type="mdp_alpha_type"/>
1867ec681f3Smrg				<bitfield name="BG_INV_ALPHA" pos="6" type="boolean"/>
1877ec681f3Smrg				<bitfield name="BG_MOD_ALPHA" pos="7" type="boolean"/>
1887ec681f3Smrg				<bitfield name="FG_TRANSP" pos="8" type="boolean"/>
1897ec681f3Smrg				<bitfield name="BG_TRANSP" pos="9" type="boolean"/>
1907ec681f3Smrg			</reg32>
1917ec681f3Smrg			<reg32 offset="0x04" name="FG_ALPHA"/>
1927ec681f3Smrg			<reg32 offset="0x08" name="BG_ALPHA"/>
1937ec681f3Smrg			<reg32 offset="0x0c" name="TRANSP_LOW0"/>
1947ec681f3Smrg			<reg32 offset="0x10" name="TRANSP_LOW1"/>
1957ec681f3Smrg			<reg32 offset="0x14" name="TRANSP_HIGH0"/>
1967ec681f3Smrg			<reg32 offset="0x18" name="TRANSP_HIGH1"/>
1977ec681f3Smrg		</array>
1987ec681f3Smrg
1997ec681f3Smrg		<array offsets="0x1004,0x1404,0x1804,0x1b84" name="STAGE_CO3" length="4" stride="4">
2007ec681f3Smrg			<reg32 offset="0" name="SEL">
2017ec681f3Smrg				<bitfield name="FG_ALPHA" pos="0" type="boolean"/> <!-- otherwise bg alpha -->
2027ec681f3Smrg			</reg32>
2037ec681f3Smrg		</array>
2047ec681f3Smrg
2057ec681f3Smrg		<reg32 offset="0x0180" name="TRANSP_LOW0"/>
2067ec681f3Smrg		<reg32 offset="0x0184" name="TRANSP_LOW1"/>
2077ec681f3Smrg		<reg32 offset="0x0188" name="TRANSP_HIGH0"/>
2087ec681f3Smrg		<reg32 offset="0x018c" name="TRANSP_HIGH1"/>
2097ec681f3Smrg
2107ec681f3Smrg		<reg32 offset="0x0200" name="CSC_CONFIG"/>
2117ec681f3Smrg
2127ec681f3Smrg		<array offset="0x2000" name="CSC" length="1" stride="0x700">
2137ec681f3Smrg			<use-group ref="mdp4_csc"/>
2147ec681f3Smrg		</array>
2157ec681f3Smrg	</array>
2167ec681f3Smrg
2177ec681f3Smrg	<enum name="mdp4_dma">
2187ec681f3Smrg		<value name="DMA_P" value="0"/>
2197ec681f3Smrg		<value name="DMA_S" value="1"/>
2207ec681f3Smrg		<value name="DMA_E" value="2"/>
2217ec681f3Smrg	</enum>
2227ec681f3Smrg	<reg32 offset="0x90070" name="DMA_P_OP_MODE"/>
2237ec681f3Smrg	<array offset="0x94800" name="LUTN" length="2" stride="0x400">
2247ec681f3Smrg		<array offset="0" name="LUT" length="0x100" stride="4">
2257ec681f3Smrg			<reg32 offset="0" name="VAL"/>
2267ec681f3Smrg		</array>
2277ec681f3Smrg	</array>
2287ec681f3Smrg	<reg32 offset="0xa0028" name="DMA_S_OP_MODE"/>
2297ec681f3Smrg	<!-- I guess if DMA_S has an OP_MODE, it must have a LUT too.. -->
2307ec681f3Smrg	<reg32 offset="0xb0070" name="DMA_E_QUANT" length="3" stride="4"/>
2317ec681f3Smrg	<array offsets="0x90000,0xa0000,0xb0000" name="DMA" length="3" stride="0x10000" index="mdp4_dma">
2327ec681f3Smrg		<reg32 offset="0x0000" name="CONFIG">
2337ec681f3Smrg			<bitfield name="G_BPC" low="0" high="1" type="mdp_bpc"/>
2347ec681f3Smrg			<bitfield name="B_BPC" low="2" high="3" type="mdp_bpc"/>
2357ec681f3Smrg			<bitfield name="R_BPC" low="4" high="5" type="mdp_bpc"/>
2367ec681f3Smrg			<bitfield name="PACK_ALIGN_MSB" pos="7" type="boolean"/>
2377ec681f3Smrg			<bitfield name="PACK" low="8" high="15"/>
2387ec681f3Smrg			<!-- bit 24 is DITHER_EN on DMA_P, DEFLKR_EN on DMA_E -->
2397ec681f3Smrg			<bitfield name="DEFLKR_EN" pos="24" type="boolean"/>
2407ec681f3Smrg			<bitfield name="DITHER_EN" pos="24" type="boolean"/>
2417ec681f3Smrg		</reg32>
2427ec681f3Smrg		<reg32 offset="0x0004" name="SRC_SIZE" type="reg_wh"/>
2437ec681f3Smrg		<reg32 offset="0x0008" name="SRC_BASE"/>
2447ec681f3Smrg		<reg32 offset="0x000c" name="SRC_STRIDE" type="uint"/>
2457ec681f3Smrg		<reg32 offset="0x0010" name="DST_SIZE" type="reg_wh"/>
2467ec681f3Smrg
2477ec681f3Smrg		<reg32 offset="0x0044" name="CURSOR_SIZE">
2487ec681f3Smrg			<!-- seems the limit is 64x64: -->
2497ec681f3Smrg			<bitfield name="WIDTH" low="0" high="6" type="uint"/>
2507ec681f3Smrg			<bitfield name="HEIGHT" low="16" high="22" type="uint"/>
2517ec681f3Smrg		</reg32>
2527ec681f3Smrg		<reg32 offset="0x0048" name="CURSOR_BASE"/>
2537ec681f3Smrg		<reg32 offset="0x004c" name="CURSOR_POS">
2547ec681f3Smrg			<bitfield name="X" low="0" high="15" type="uint"/>
2557ec681f3Smrg			<bitfield name="Y" low="16" high="31" type="uint"/>
2567ec681f3Smrg		</reg32>
2577ec681f3Smrg		<reg32 offset="0x0060" name="CURSOR_BLEND_CONFIG">
2587ec681f3Smrg			<bitfield name="CURSOR_EN" pos="0" type="boolean"/>
2597ec681f3Smrg			<bitfield name="FORMAT" low="1" high="2" type="mdp4_cursor_format"/>
2607ec681f3Smrg			<bitfield name="TRANSP_EN" pos="3" type="boolean"/>
2617ec681f3Smrg		</reg32>
2627ec681f3Smrg		<reg32 offset="0x0064" name="CURSOR_BLEND_PARAM"/>
2637ec681f3Smrg		<reg32 offset="0x0068" name="BLEND_TRANS_LOW"/>
2647ec681f3Smrg		<reg32 offset="0x006c" name="BLEND_TRANS_HIGH"/>
2657ec681f3Smrg
2667ec681f3Smrg		<reg32 offset="0x1004" name="FETCH_CONFIG"/>
2677ec681f3Smrg		<array offset="0x3000" name="CSC" length="1" stride="0x700">
2687ec681f3Smrg			<use-group ref="mdp4_csc"/>
2697ec681f3Smrg		</array>
2707ec681f3Smrg	</array>
2717ec681f3Smrg
2727ec681f3Smrg	<!--
2737ec681f3Smrg		TODO length should be 7, but that would collide w/ OVLP2..!?!
2747ec681f3Smrg		this register map is a bit strange..
2757ec681f3Smrg	 -->
2767ec681f3Smrg	<array offset="0x20000" name="PIPE" length="6" stride="0x10000" index="mdp4_pipe">
2777ec681f3Smrg		<reg32 offset="0x0000" name="SRC_SIZE" type="reg_wh"/>
2787ec681f3Smrg		<reg32 offset="0x0004" name="SRC_XY" type="reg_xy"/>
2797ec681f3Smrg		<reg32 offset="0x0008" name="DST_SIZE" type="reg_wh"/>
2807ec681f3Smrg		<reg32 offset="0x000c" name="DST_XY" type="reg_xy"/>
2817ec681f3Smrg		<reg32 offset="0x0010" name="SRCP0_BASE"/>
2827ec681f3Smrg		<reg32 offset="0x0014" name="SRCP1_BASE"/>
2837ec681f3Smrg		<reg32 offset="0x0018" name="SRCP2_BASE"/>
2847ec681f3Smrg		<reg32 offset="0x001c" name="SRCP3_BASE"/>
2857ec681f3Smrg		<reg32 offset="0x0040" name="SRC_STRIDE_A">
2867ec681f3Smrg			<bitfield name="P0" low="0" high="15" type="uint"/>
2877ec681f3Smrg			<bitfield name="P1" low="16" high="31" type="uint"/>
2887ec681f3Smrg		</reg32>
2897ec681f3Smrg		<reg32 offset="0x0044" name="SRC_STRIDE_B">
2907ec681f3Smrg			<bitfield name="P2" low="0" high="15" type="uint"/>
2917ec681f3Smrg			<bitfield name="P3" low="16" high="31" type="uint"/>
2927ec681f3Smrg		</reg32>
2937ec681f3Smrg		<reg32 offset="0x0048" name="SSTILE_FRAME_SIZE" type="reg_wh"/>
2947ec681f3Smrg		<reg32 offset="0x0050" name="SRC_FORMAT">
2957ec681f3Smrg			<bitfield name="G_BPC" low="0" high="1" type="mdp_bpc"/>
2967ec681f3Smrg			<bitfield name="B_BPC" low="2" high="3" type="mdp_bpc"/>
2977ec681f3Smrg			<bitfield name="R_BPC" low="4" high="5" type="mdp_bpc"/>
2987ec681f3Smrg			<bitfield name="A_BPC" low="6" high="7" type="mdp_bpc_alpha"/>
2997ec681f3Smrg			<bitfield name="ALPHA_ENABLE" pos="8" type="boolean"/>
3007ec681f3Smrg			<bitfield name="CPP" low="9" high="10" type="uint">
3017ec681f3Smrg				<brief>8bit characters per pixel minus 1</brief>
3027ec681f3Smrg			</bitfield>
3037ec681f3Smrg			<bitfield name="ROTATED_90" pos="12" type="boolean"/>
3047ec681f3Smrg			<bitfield name="UNPACK_COUNT" low="13" high="14" type="uint"/>
3057ec681f3Smrg			<bitfield name="UNPACK_TIGHT" pos="17" type="boolean"/>
3067ec681f3Smrg			<bitfield name="UNPACK_ALIGN_MSB" pos="18" type="boolean"/>
3077ec681f3Smrg			<bitfield name="FETCH_PLANES" low="19" high="20" type="uint"/>
3087ec681f3Smrg			<bitfield name="SOLID_FILL" pos="22" type="boolean"/>
3097ec681f3Smrg			<bitfield name="CHROMA_SAMP" low="26" high="27" type="mdp_chroma_samp_type"/>
3107ec681f3Smrg			<bitfield name="FRAME_FORMAT" low="29" high="30" type="mdp4_frame_format"/>
3117ec681f3Smrg		</reg32>
3127ec681f3Smrg		<reg32 offset="0x0054" name="SRC_UNPACK" type="mdp_unpack_pattern"/>
3137ec681f3Smrg		<reg32 offset="0x0058" name="OP_MODE">
3147ec681f3Smrg			<bitfield name="SCALEX_EN" pos="0" type="boolean"/>
3157ec681f3Smrg			<bitfield name="SCALEY_EN" pos="1" type="boolean"/>
3167ec681f3Smrg			<bitfield name="SCALEX_UNIT_SEL" low="2" high="3" type="mdp4_scale_unit"/>
3177ec681f3Smrg			<bitfield name="SCALEY_UNIT_SEL" low="4" high="5" type="mdp4_scale_unit"/>
3187ec681f3Smrg			<bitfield name="SRC_YCBCR" pos="9" type="boolean"/>
3197ec681f3Smrg			<bitfield name="DST_YCBCR" pos="10" type="boolean"/>
3207ec681f3Smrg			<bitfield name="CSC_EN" pos="11" type="boolean"/>
3217ec681f3Smrg			<bitfield name="FLIP_LR" pos="13" type="boolean"/>
3227ec681f3Smrg			<bitfield name="FLIP_UD" pos="14" type="boolean"/>
3237ec681f3Smrg			<bitfield name="DITHER_EN" pos="15" type="boolean"/>
3247ec681f3Smrg			<bitfield name="IGC_LUT_EN" pos="16" type="boolean"/>
3257ec681f3Smrg			<bitfield name="DEINT_EN" pos="18" type="boolean"/>
3267ec681f3Smrg			<bitfield name="DEINT_ODD_REF" pos="19" type="boolean"/>
3277ec681f3Smrg		</reg32>
3287ec681f3Smrg		<reg32 offset="0x005c" name="PHASEX_STEP"/>
3297ec681f3Smrg		<reg32 offset="0x0060" name="PHASEY_STEP"/>
3307ec681f3Smrg		<reg32 offset="0x1004" name="FETCH_CONFIG"/>
3317ec681f3Smrg		<reg32 offset="0x1008" name="SOLID_COLOR"/>
3327ec681f3Smrg
3337ec681f3Smrg		<array offset="0x4000" name="CSC" length="1" stride="0x700">
3347ec681f3Smrg			<use-group ref="mdp4_csc"/>
3357ec681f3Smrg		</array>
3367ec681f3Smrg	</array>
3377ec681f3Smrg
3387ec681f3Smrg	<!--
3397ec681f3Smrg		ENCODERS
3407ec681f3Smrg			LCDC and DSI seem the same, DTV is just slightly different..
3417ec681f3Smrg	 -->
3427ec681f3Smrg
3437ec681f3Smrg	<bitset name="mdp4_ctrl_polarity" inline="yes">
3447ec681f3Smrg		<!-- not entirely sure if these bits mean hi or low.. -->
3457ec681f3Smrg		<bitfield name="HSYNC_LOW" pos="0" type="boolean"/>
3467ec681f3Smrg		<bitfield name="VSYNC_LOW" pos="1" type="boolean"/>
3477ec681f3Smrg		<bitfield name="DATA_EN_LOW" pos="2" type="boolean"/>
3487ec681f3Smrg	</bitset>
3497ec681f3Smrg
3507ec681f3Smrg	<bitset name="mdp4_active_hctl" inline="yes">
3517ec681f3Smrg		<bitfield name="START" low="0" high="14" type="uint"/>
3527ec681f3Smrg		<bitfield name="END" low="16" high="30" type="uint"/>
3537ec681f3Smrg		<bitfield name="ACTIVE_START_X" pos="31" type="boolean"/>
3547ec681f3Smrg	</bitset>
3557ec681f3Smrg
3567ec681f3Smrg	<bitset name="mdp4_display_hctl" inline="yes">
3577ec681f3Smrg		<bitfield name="START" low="0" high="15" type="uint"/>
3587ec681f3Smrg		<bitfield name="END" low="16" high="31" type="uint"/>
3597ec681f3Smrg	</bitset>
3607ec681f3Smrg
3617ec681f3Smrg	<bitset name="mdp4_hsync_ctrl" inline="yes">
3627ec681f3Smrg		<bitfield name="PULSEW" low="0" high="15" type="uint"/>
3637ec681f3Smrg		<bitfield name="PERIOD" low="16" high="31" type="uint"/>
3647ec681f3Smrg	</bitset>
3657ec681f3Smrg
3667ec681f3Smrg	<bitset name="mdp4_underflow_clr" inline="yes">
3677ec681f3Smrg		<bitfield name="COLOR" low="0" high="23"/>
3687ec681f3Smrg		<bitfield name="ENABLE_RECOVERY" pos="31" type="boolean"/>
3697ec681f3Smrg	</bitset>
3707ec681f3Smrg
3717ec681f3Smrg	<!-- offset is 0xe0000 on !mdp4.. -->
3727ec681f3Smrg	<array offset="0xc0000" name="LCDC" length="1" stride="0x1000">
3737ec681f3Smrg		<reg32 offset="0x0000" name="ENABLE"/>
3747ec681f3Smrg		<reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
3757ec681f3Smrg		<reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
3767ec681f3Smrg		<reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
3777ec681f3Smrg		<reg32 offset="0x0010" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
3787ec681f3Smrg		<reg32 offset="0x0014" name="DISPLAY_VSTART" type="uint"/>
3797ec681f3Smrg		<reg32 offset="0x0018" name="DISPLAY_VEND" type="uint"/>
3807ec681f3Smrg		<reg32 offset="0x001c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
3817ec681f3Smrg		<reg32 offset="0x0020" name="ACTIVE_VSTART" type="uint"/>
3827ec681f3Smrg		<reg32 offset="0x0024" name="ACTIVE_VEND" type="uint"/>
3837ec681f3Smrg		<reg32 offset="0x0028" name="BORDER_CLR"/>
3847ec681f3Smrg		<reg32 offset="0x002c" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
3857ec681f3Smrg		<reg32 offset="0x0030" name="HSYNC_SKEW"/>
3867ec681f3Smrg		<reg32 offset="0x0034" name="TEST_CNTL"/>
3877ec681f3Smrg		<reg32 offset="0x0038" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
3887ec681f3Smrg	</array>
3897ec681f3Smrg
3907ec681f3Smrg	<reg32 offset="0xc2000" name="LCDC_LVDS_INTF_CTL">
3917ec681f3Smrg		<bitfield name="MODE_SEL"           pos="2"  type="boolean"/>
3927ec681f3Smrg		<bitfield name="RGB_OUT"            pos="3"  type="boolean"/>
3937ec681f3Smrg		<bitfield name="CH_SWAP"            pos="4"  type="boolean"/>
3947ec681f3Smrg		<bitfield name="CH1_RES_BIT"        pos="5"  type="boolean"/>
3957ec681f3Smrg		<bitfield name="CH2_RES_BIT"        pos="6"  type="boolean"/>
3967ec681f3Smrg		<bitfield name="ENABLE"             pos="7"  type="boolean"/>
3977ec681f3Smrg		<bitfield name="CH1_DATA_LANE0_EN"  pos="8"  type="boolean"/>
3987ec681f3Smrg		<bitfield name="CH1_DATA_LANE1_EN"  pos="9"  type="boolean"/>
3997ec681f3Smrg		<bitfield name="CH1_DATA_LANE2_EN"  pos="10" type="boolean"/>
4007ec681f3Smrg		<bitfield name="CH1_DATA_LANE3_EN"  pos="11" type="boolean"/>
4017ec681f3Smrg		<bitfield name="CH2_DATA_LANE0_EN"  pos="12" type="boolean"/>
4027ec681f3Smrg		<bitfield name="CH2_DATA_LANE1_EN"  pos="13" type="boolean"/>
4037ec681f3Smrg		<bitfield name="CH2_DATA_LANE2_EN"  pos="14" type="boolean"/>
4047ec681f3Smrg		<bitfield name="CH2_DATA_LANE3_EN"  pos="15" type="boolean"/>
4057ec681f3Smrg		<bitfield name="CH1_CLK_LANE_EN"    pos="16" type="boolean"/>
4067ec681f3Smrg		<bitfield name="CH2_CLK_LANE_EN"    pos="17" type="boolean"/>
4077ec681f3Smrg	</reg32>
4087ec681f3Smrg
4097ec681f3Smrg	<array offset="0xc2014" name="LCDC_LVDS_MUX_CTL" length="4" stride="0x8">
4107ec681f3Smrg		<reg32 offset="0x0" name="3_TO_0">
4117ec681f3Smrg			<bitfield name="BIT0" low="0"  high="7"/>
4127ec681f3Smrg			<bitfield name="BIT1" low="8"  high="15"/>
4137ec681f3Smrg			<bitfield name="BIT2" low="16" high="23"/>
4147ec681f3Smrg			<bitfield name="BIT3" low="24" high="31"/>
4157ec681f3Smrg		</reg32>
4167ec681f3Smrg		<reg32 offset="0x4" name="6_TO_4">
4177ec681f3Smrg			<bitfield name="BIT4" low="0"  high="7"/>
4187ec681f3Smrg			<bitfield name="BIT5" low="8"  high="15"/>
4197ec681f3Smrg			<bitfield name="BIT6" low="16" high="23"/>
4207ec681f3Smrg		</reg32>
4217ec681f3Smrg	</array>
4227ec681f3Smrg
4237ec681f3Smrg	<reg32 offset="0xc2034" name="LCDC_LVDS_PHY_RESET"/>
4247ec681f3Smrg
4257ec681f3Smrg	<reg32 offset="0xc3000" name="LVDS_PHY_PLL_CTRL_0"/>
4267ec681f3Smrg	<reg32 offset="0xc3004" name="LVDS_PHY_PLL_CTRL_1"/>
4277ec681f3Smrg	<reg32 offset="0xc3008" name="LVDS_PHY_PLL_CTRL_2"/>
4287ec681f3Smrg	<reg32 offset="0xc300c" name="LVDS_PHY_PLL_CTRL_3"/>
4297ec681f3Smrg	<reg32 offset="0xc3014" name="LVDS_PHY_PLL_CTRL_5"/>
4307ec681f3Smrg	<reg32 offset="0xc3018" name="LVDS_PHY_PLL_CTRL_6"/>
4317ec681f3Smrg	<reg32 offset="0xc301c" name="LVDS_PHY_PLL_CTRL_7"/>
4327ec681f3Smrg	<reg32 offset="0xc3020" name="LVDS_PHY_PLL_CTRL_8"/>
4337ec681f3Smrg	<reg32 offset="0xc3024" name="LVDS_PHY_PLL_CTRL_9"/>
4347ec681f3Smrg	<reg32 offset="0xc3080" name="LVDS_PHY_PLL_LOCKED"/>
4357ec681f3Smrg	<reg32 offset="0xc3108" name="LVDS_PHY_CFG2"/>
4367ec681f3Smrg
4377ec681f3Smrg	<reg32 offset="0xc3100" name="LVDS_PHY_CFG0">
4387ec681f3Smrg		<bitfield name="SERIALIZATION_ENBLE" pos="4" type="boolean"/>
4397ec681f3Smrg		<bitfield name="CHANNEL0" pos="6" type="boolean"/>
4407ec681f3Smrg		<bitfield name="CHANNEL1" pos="7" type="boolean"/>
4417ec681f3Smrg	</reg32>
4427ec681f3Smrg
4437ec681f3Smrg	<array offset="0xd0000" name="DTV" length="1" stride="0x1000">
4447ec681f3Smrg		<reg32 offset="0x0000" name="ENABLE"/>
4457ec681f3Smrg		<reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
4467ec681f3Smrg		<reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
4477ec681f3Smrg		<reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
4487ec681f3Smrg		<reg32 offset="0x0018" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
4497ec681f3Smrg		<reg32 offset="0x001c" name="DISPLAY_VSTART" type="uint"/>
4507ec681f3Smrg		<reg32 offset="0x0020" name="DISPLAY_VEND" type="uint"/>
4517ec681f3Smrg		<reg32 offset="0x002c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
4527ec681f3Smrg		<reg32 offset="0x0030" name="ACTIVE_VSTART" type="uint"/>
4537ec681f3Smrg		<reg32 offset="0x0038" name="ACTIVE_VEND" type="uint"/>
4547ec681f3Smrg		<reg32 offset="0x0040" name="BORDER_CLR"/>
4557ec681f3Smrg		<reg32 offset="0x0044" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
4567ec681f3Smrg		<reg32 offset="0x0048" name="HSYNC_SKEW"/>
4577ec681f3Smrg		<reg32 offset="0x004c" name="TEST_CNTL"/>
4587ec681f3Smrg		<reg32 offset="0x0050" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
4597ec681f3Smrg	</array>
4607ec681f3Smrg
4617ec681f3Smrg	<array offset="0xe0000" name="DSI" length="1" stride="0x1000">
4627ec681f3Smrg		<reg32 offset="0x0000" name="ENABLE"/>
4637ec681f3Smrg		<reg32 offset="0x0004" name="HSYNC_CTRL" type="mdp4_hsync_ctrl"/>
4647ec681f3Smrg		<reg32 offset="0x0008" name="VSYNC_PERIOD" type="uint"/>
4657ec681f3Smrg		<reg32 offset="0x000c" name="VSYNC_LEN" type="uint"/>
4667ec681f3Smrg		<reg32 offset="0x0010" name="DISPLAY_HCTRL" type="mdp4_display_hctl"/>
4677ec681f3Smrg		<reg32 offset="0x0014" name="DISPLAY_VSTART" type="uint"/>
4687ec681f3Smrg		<reg32 offset="0x0018" name="DISPLAY_VEND" type="uint"/>
4697ec681f3Smrg		<reg32 offset="0x001c" name="ACTIVE_HCTL" type="mdp4_active_hctl"/>
4707ec681f3Smrg		<reg32 offset="0x0020" name="ACTIVE_VSTART" type="uint"/>
4717ec681f3Smrg		<reg32 offset="0x0024" name="ACTIVE_VEND" type="uint"/>
4727ec681f3Smrg		<reg32 offset="0x0028" name="BORDER_CLR"/>
4737ec681f3Smrg		<reg32 offset="0x002c" name="UNDERFLOW_CLR" type="mdp4_underflow_clr"/>
4747ec681f3Smrg		<reg32 offset="0x0030" name="HSYNC_SKEW"/>
4757ec681f3Smrg		<reg32 offset="0x0034" name="TEST_CNTL"/>
4767ec681f3Smrg		<reg32 offset="0x0038" name="CTRL_POLARITY" type="mdp4_ctrl_polarity"/>
4777ec681f3Smrg	</array>
4787ec681f3Smrg</domain>
4797ec681f3Smrg
4807ec681f3Smrg</database>
481