1310600Smmel/*-
2310600Smmel * Copyright 1992-2015 Michal Meloun
3310600Smmel * All rights reserved.
4310600Smmel *
5310600Smmel * Redistribution and use in source and binary forms, with or without
6310600Smmel * modification, are permitted provided that the following conditions
7310600Smmel * are met:
8310600Smmel * 1. Redistributions of source code must retain the above copyright
9310600Smmel *    notice, this list of conditions and the following disclaimer.
10310600Smmel * 2. Redistributions in binary form must reproduce the above copyright
11310600Smmel *    notice, this list of conditions and the following disclaimer in the
12310600Smmel *    documentation and/or other materials provided with the distribution.
13310600Smmel *
14310600Smmel * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15310600Smmel * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16310600Smmel * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17310600Smmel * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18310600Smmel * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19310600Smmel * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20310600Smmel * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21310600Smmel * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22310600Smmel * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23310600Smmel * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24310600Smmel * SUCH DAMAGE.
25310600Smmel *
26310600Smmel * $FreeBSD: stable/11/sys/arm/nvidia/drm2/tegra_dc_reg.h 310600 2016-12-26 14:36:05Z mmel $
27310600Smmel */
28310600Smmel#ifndef _TEGRA_DC_REG_H_
29310600Smmel#define	_TEGRA_DC_REG_H_
30310600Smmel
31310600Smmel/*
32310600Smmel * !!! WARNING !!!
33310600Smmel * Tegra manual uses registers index (and not register addreses).
34310600Smmel * We follow the TRM notation and index is converted to offset in
35310600Smmel * WR4 / RD4 macros
36310600Smmel */
37310600Smmel
38310600Smmel/* --------------------------- DC CMD -------------------------------------- */
39310600Smmel#define	DC_CMD_GENERAL_INCR_SYNCPT		0x000
40310600Smmel#define	DC_CMD_GENERAL_INCR_SYNCPT_CNTRL	0x001
41310600Smmel#define	 SYNCPT_CNTRL_NO_STALL				(1 << 8)
42310600Smmel#define	 SYNCPT_CNTRL_SOFT_RESET			(1 << 0)
43310600Smmel
44310600Smmel#define	DC_CMD_GENERAL_INCR_SYNCPT_ERROR	0x002
45310600Smmel#define	DC_CMD_WIN_A_INCR_SYNCPT		0x008
46310600Smmel#define	DC_CMD_WIN_A_INCR_SYNCPT_CNTRL		0x009
47310600Smmel#define	DC_CMD_WIN_A_INCR_SYNCPT_ERROR		0x00a
48310600Smmel#define	DC_CMD_WIN_B_INCR_SYNCPT		0x010
49310600Smmel#define	DC_CMD_WIN_B_INCR_SYNCPT_CNTRL		0x011
50310600Smmel#define	DC_CMD_WIN_B_INCR_SYNCPT_ERROR		0x012
51310600Smmel#define	DC_CMD_WIN_C_INCR_SYNCPT		0x018
52310600Smmel#define	DC_CMD_WIN_C_INCR_SYNCPT_CNTRL		0x019
53310600Smmel#define	DC_CMD_WIN_C_INCR_SYNCPT_ERROR		0x01a
54310600Smmel#define	DC_CMD_CONT_SYNCPT_VSYNC		0x028
55310600Smmel#define	 SYNCPT_VSYNC_ENABLE				(1 << 8)
56310600Smmel
57310600Smmel#define	DC_CMD_CTXSW				0x030
58310600Smmel#define	DC_CMD_DISPLAY_COMMAND_OPTION0		0x031
59310600Smmel#define	DC_CMD_DISPLAY_COMMAND			0x032
60310600Smmel#define	 DISPLAY_CTRL_MODE(x)				((x) << 5)
61310600Smmel#define	   CTRL_MODE_STOP					0
62310600Smmel#define	   CTRL_MODE_C_DISPLAY					1
63310600Smmel#define	   CTRL_MODE_NC_DISPLAY					2
64310600Smmel
65310600Smmel#define	DC_CMD_SIGNAL_RAISE			0x033
66310600Smmel#define	DC_CMD_DISPLAY_POWER_CONTROL		0x036
67310600Smmel#define	 PM1_ENABLE					(1 << 18)
68310600Smmel#define	 PM0_ENABLE					(1 << 16)
69310600Smmel#define	 PW4_ENABLE					(1 <<  8)
70310600Smmel#define	 PW3_ENABLE					(1 <<  6)
71310600Smmel#define	 PW2_ENABLE					(1 <<  4)
72310600Smmel#define	 PW1_ENABLE					(1 <<  2)
73310600Smmel#define	 PW0_ENABLE					(1 <<  0)
74310600Smmel
75310600Smmel#define	DC_CMD_INT_STATUS			0x037
76310600Smmel#define	DC_CMD_INT_MASK				0x038
77310600Smmel#define	DC_CMD_INT_ENABLE			0x039
78310600Smmel#define	DC_CMD_INT_TYPE				0x03a
79310600Smmel#define	DC_CMD_INT_POLARITY			0x03b
80310600Smmel#define	 WIN_T_UF_INT					(1 << 25)
81310600Smmel#define	 WIN_D_UF_INT					(1 << 24)
82310600Smmel#define	 HC_UF_INT					(1 << 23)
83310600Smmel#define	 CMU_LUT_CONFLICT_INT				(1 << 22)
84310600Smmel#define	 WIN_C_OF_INT					(1 << 16)
85310600Smmel#define	 WIN_B_OF_INT					(1 << 15)
86310600Smmel#define	 WIN_A_OF_INT					(1 << 14)
87310600Smmel#define	 SSF_INT					(1 << 13)
88310600Smmel#define	 MSF_INT					(1 << 12)
89310600Smmel#define	 WIN_C_UF_INT					(1 << 10)
90310600Smmel#define	 WIN_B_UF_INT					(1 << 9)
91310600Smmel#define	 WIN_A_UF_INT					(1 << 8)
92310600Smmel#define	 SPI_BUSY_INT					(1 << 6)
93310600Smmel#define	 V_PULSE2_INT					(1 << 5)
94310600Smmel#define	 V_PULSE3_INT					(1 << 4)
95310600Smmel#define	 HBLANK_INT					(1 << 3)
96310600Smmel#define	 VBLANK_INT					(1 << 2)
97310600Smmel#define	 FRAME_END_INT					(1 << 1)
98310600Smmel
99310600Smmel#define	DC_CMD_STATE_ACCESS			0x040
100310600Smmel#define	 WRITE_MUX					(1 << 2)
101310600Smmel#define	 READ_MUX					(1 << 0)
102310600Smmel
103310600Smmel#define	DC_CMD_STATE_CONTROL			0x041
104310600Smmel#define	 NC_HOST_TRIG					(1 << 24)
105310600Smmel#define	 CURSOR_UPDATE					(1 << 15)
106310600Smmel#define	 WIN_C_UPDATE					(1 << 11)
107310600Smmel#define	 WIN_B_UPDATE					(1 << 10)
108310600Smmel#define	 WIN_A_UPDATE					(1 <<  9)
109310600Smmel#define	  WIN_UPDATE(x)					(1 <<  (9 + (x)))
110310600Smmel#define	 GENERAL_UPDATE					(1 <<  8)
111310600Smmel#define	 CURSOR_ACT_REQ					(1 <<  7)
112310600Smmel#define	 WIN_D_ACT_REQ					(1 <<  4)
113310600Smmel#define	 WIN_C_ACT_REQ					(1 <<  3)
114310600Smmel#define	 WIN_B_ACT_REQ					(1 <<  2)
115310600Smmel#define	 WIN_A_ACT_REQ					(1 <<  1)
116310600Smmel#define	 WIN_ACT_REQ(x)					(1 <<  (1 + (x)))
117310600Smmel#define	 GENERAL_ACT_REQ				(1 <<  0)
118310600Smmel
119310600Smmel#define	DC_CMD_DISPLAY_WINDOW_HEADER		0x042
120310600Smmel#define	 WINDOW_D_SELECT				(1 << 7)
121310600Smmel#define	 WINDOW_C_SELECT				(1 << 6)
122310600Smmel#define	 WINDOW_B_SELECT				(1 << 5)
123310600Smmel#define	 WINDOW_A_SELECT				(1 << 4)
124310600Smmel#define	 WINDOW_SELECT(x)				(1 << (4 + (x)))
125310600Smmel
126310600Smmel#define	DC_CMD_REG_ACT_CONTROL			0x043
127310600Smmel#define	DC_CMD_WIN_D_INCR_SYNCPT		0x04c
128310600Smmel#define	DC_CMD_WIN_D_INCR_SYNCPT_CNTRL		0x04d
129310600Smmel#define	DC_CMD_WIN_D_INCR_SYNCPT_ERROR		0x04e
130310600Smmel
131310600Smmel/* ---------------------------- DC COM ------------------------------------- */
132310600Smmel
133310600Smmel/* --------------------------- DC DISP ------------------------------------- */
134310600Smmel
135310600Smmel#define	DC_DISP_DISP_SIGNAL_OPTIONS0		0x400
136310600Smmel#define	 M1_ENABLE					(1 << 26)
137310600Smmel#define	 M0_ENABLE					(1 << 24)
138310600Smmel#define	 V_PULSE2_ENABLE				(1 << 18)
139310600Smmel#define	 V_PULSE1_ENABLE				(1 << 16)
140310600Smmel#define	 V_PULSE0_ENABLE				(1 << 14)
141310600Smmel#define	 H_PULSE2_ENABLE				(1 << 12)
142310600Smmel#define	 H_PULSE1_ENABLE				(1 << 10)
143310600Smmel#define	 H_PULSE0_ENABLE				(1 <<  8)
144310600Smmel
145310600Smmel#define	DC_DISP_DISP_SIGNAL_OPTIONS1		0x401
146310600Smmel
147310600Smmel#define	DC_DISP_DISP_WIN_OPTIONS		0x402
148310600Smmel#define	 HDMI_ENABLE					(1 << 30)
149310600Smmel#define	 DSI_ENABLE					(1 << 29)
150310600Smmel#define	 SOR1_TIMING_CYA				(1 << 27)
151310600Smmel#define	 SOR1_ENABLE					(1 << 26)
152310600Smmel#define	 SOR_ENABLE					(1 << 25)
153310600Smmel#define	 CURSOR_ENABLE					(1 << 16)
154310600Smmel
155310600Smmel#define	DC_DISP_DISP_TIMING_OPTIONS		0x405
156310600Smmel#define	 VSYNC_H_POSITION(x)				(((x) & 0xfff) << 0)
157310600Smmel
158310600Smmel#define	DC_DISP_REF_TO_SYNC			0x406
159310600Smmel#define	DC_DISP_SYNC_WIDTH			0x407
160310600Smmel#define	DC_DISP_BACK_PORCH			0x408
161310600Smmel#define	DC_DISP_DISP_ACTIVE			0x409
162310600Smmel#define	DC_DISP_FRONT_PORCH			0x40a
163310600Smmel#define	DC_DISP_H_PULSE0_CONTROL		0x40b
164310600Smmel#define	DC_DISP_H_PULSE0_POSITION_A		0x40c
165310600Smmel#define	DC_DISP_H_PULSE0_POSITION_B		0x40d
166310600Smmel#define	DC_DISP_H_PULSE0_POSITION_C		0x40e
167310600Smmel#define	DC_DISP_H_PULSE0_POSITION_D		0x40f
168310600Smmel#define	DC_DISP_H_PULSE1_CONTROL		0x410
169310600Smmel#define	DC_DISP_H_PULSE1_POSITION_A		0x411
170310600Smmel#define	DC_DISP_H_PULSE1_POSITION_B		0x412
171310600Smmel#define	DC_DISP_H_PULSE1_POSITION_C		0x413
172310600Smmel#define	DC_DISP_H_PULSE1_POSITION_D		0x414
173310600Smmel#define	DC_DISP_H_PULSE2_CONTROL		0x415
174310600Smmel#define	DC_DISP_H_PULSE2_POSITION_A		0x416
175310600Smmel#define	DC_DISP_H_PULSE2_POSITION_B		0x417
176310600Smmel#define	DC_DISP_H_PULSE2_POSITION_C		0x418
177310600Smmel#define	DC_DISP_H_PULSE2_POSITION_D		0x419
178310600Smmel#define	DC_DISP_V_PULSE0_CONTROL		0x41a
179310600Smmel#define	DC_DISP_V_PULSE0_POSITION_A		0x41b
180310600Smmel#define	DC_DISP_V_PULSE0_POSITION_B		0x41c
181310600Smmel#define	DC_DISP_V_PULSE0_POSITION_C		0x41d
182310600Smmel#define	DC_DISP_V_PULSE1_CONTROL		0x41e
183310600Smmel#define	DC_DISP_V_PULSE1_POSITION_A		0x41f
184310600Smmel#define	DC_DISP_V_PULSE1_POSITION_B		0x420
185310600Smmel#define	DC_DISP_V_PULSE1_POSITION_C		0x421
186310600Smmel#define	DC_DISP_V_PULSE2_CONTROL		0x422
187310600Smmel#define	DC_DISP_V_PULSE2_POSITION_A		0x423
188310600Smmel#define	DC_DISP_V_PULSE3_CONTROL		0x424
189310600Smmel#define	 PULSE_CONTROL_LAST(x)				(((x) & 0x7f) << 8)
190310600Smmel#define	  LAST_START_A						0
191310600Smmel#define	  LAST_END_A						1
192310600Smmel#define	  LAST_START_B						2
193310600Smmel#define	  LAST_END_B						3
194310600Smmel#define	  LAST_START_C						4
195310600Smmel#define	  LAST_END_C						5
196310600Smmel#define	  LAST_START_D						6
197310600Smmel#define	  LAST_END_D						7
198310600Smmel#define	 PULSE_CONTROL_QUAL(x)				(((x) & 0x3) << 8)
199310600Smmel#define	  QUAL_ALWAYS						0
200310600Smmel#define	  QUAL_VACTIVE						2
201310600Smmel#define	  QUAL_VACTIVE1						3
202310600Smmel#define	 PULSE_POLARITY					(1 << 4)
203310600Smmel#define	 PULSE_MODE					(1 << 3)
204310600Smmel
205310600Smmel#define	DC_DISP_V_PULSE3_POSITION_A		0x425
206310600Smmel#define	 PULSE_END(x)					(((x) & 0xfff) << 16)
207310600Smmel#define	 PULSE_START(x)					(((x) & 0xfff) <<  0)
208310600Smmel
209310600Smmel
210310600Smmel#define	DC_DISP_DISP_CLOCK_CONTROL		0x42e
211310600Smmel#define	 PIXEL_CLK_DIVIDER(x)				(((x) & 0xf) <<  8)
212310600Smmel#define	  PCD1							 0
213310600Smmel#define	  PCD1H							 1
214310600Smmel#define	  PCD2							 2
215310600Smmel#define	  PCD3							 3
216310600Smmel#define	  PCD4							 4
217310600Smmel#define	  PCD6							 5
218310600Smmel#define	  PCD8							 6
219310600Smmel#define	  PCD9							 7
220310600Smmel#define	  PCD12							 8
221310600Smmel#define	  PCD16							 9
222310600Smmel#define	  PCD18							10
223310600Smmel#define	  PCD24							11
224310600Smmel#define	  PCD13							12
225310600Smmel#define	 SHIFT_CLK_DIVIDER(x)				((x) & 0xff)
226310600Smmel
227310600Smmel#define	DC_DISP_DISP_INTERFACE_CONTROL		0x42f
228310600Smmel#define	 DISP_ORDER_BLUE_RED				( 1 << 9)
229310600Smmel#define	 DISP_ALIGNMENT_LSB				( 1 << 8)
230310600Smmel#define	 DISP_DATA_FORMAT(x)				(((x) & 0xf) <<  8)
231310600Smmel#define	  DF1P1C						 0
232310600Smmel#define	  DF1P2C24B						 1
233310600Smmel#define	  DF1P2C18B						 2
234310600Smmel#define	  DF1P2C16B						 3
235310600Smmel#define	  DF1S							 4
236310600Smmel#define	  DF2S							 5
237310600Smmel#define	  DF3S							 6
238310600Smmel#define	  DFSPI							 7
239310600Smmel#define	  DF1P3C24B						 8
240310600Smmel#define	  DF2P1C18B						 9
241310600Smmel#define	  DFDUAL1P1C18B						10
242310600Smmel
243310600Smmel#define	DC_DISP_DISP_COLOR_CONTROL		0x430
244310600Smmel#define	 NON_BASE_COLOR					(1 << 18)
245310600Smmel#define	 BLANK_COLOR					(1 << 17)
246310600Smmel#define	 DISP_COLOR_SWAP				(1 << 16)
247310600Smmel#define	 ORD_DITHER_ROTATION(x)				(((x) & 0x3) << 12)
248310600Smmel#define	 DITHER_CONTROL(x)				(((x) & 0x3) <<  8)
249310600Smmel#define	  DITHER_DISABLE					0
250310600Smmel#define	  DITHER_ORDERED					2
251310600Smmel#define	  DITHER_TEMPORAL					3
252310600Smmel#define	 BASE_COLOR_SIZE(x)				(((x) & 0xF) <<  0)
253310600Smmel#define	  SIZE_BASE666						0
254310600Smmel#define	  SIZE_BASE111						1
255310600Smmel#define	  SIZE_BASE222						2
256310600Smmel#define	  SIZE_BASE333						3
257310600Smmel#define	  SIZE_BASE444						4
258310600Smmel#define	  SIZE_BASE555						5
259310600Smmel#define	  SIZE_BASE565						6
260310600Smmel#define	  SIZE_BASE332						7
261310600Smmel#define	  SIZE_BASE888						8
262310600Smmel
263310600Smmel#define	DC_DISP_CURSOR_START_ADDR		0x43e
264310600Smmel#define	 CURSOR_CLIP(x)					(((x) & 0x3) << 28)
265310600Smmel#define	  CC_DISPLAY						0
266310600Smmel#define	  CC_WA							1
267310600Smmel#define	  CC_WB							2
268310600Smmel#define	  CC_WC							3
269310600Smmel#define	 CURSOR_SIZE(x)					(((x) & 0x3) << 24)
270310600Smmel#define	  C32x32						0
271310600Smmel#define	  C64x64						1
272310600Smmel#define	  C128x128						2
273310600Smmel#define	  C256x256						3
274310600Smmel#define	 CURSOR_START_ADDR(x)				(((x) >> 10) & 0x3FFFFF)
275310600Smmel
276310600Smmel#define	DC_DISP_CURSOR_POSITION			0x440
277310600Smmel#define	 CURSOR_POSITION(h, v)		((((h) & 0x3fff) <<  0) |	\
278310600Smmel					 (((v) & 0x3fff) << 16))
279310600Smmel#define	DC_DISP_CURSOR_UNDERFLOW_CTRL		0x4eb
280310600Smmel#define	DC_DISP_BLEND_CURSOR_CONTROL		0x4f1
281310600Smmel#define	 CURSOR_MODE_SELECT				(1 << 24)
282310600Smmel#define	 CURSOR_DST_BLEND_FACTOR_SELECT(x)		(((x) & 0x3) << 16)
283310600Smmel#define	  DST_BLEND_ZERO					0
284310600Smmel#define	  DST_BLEND_K1						1
285310600Smmel#define	  DST_NEG_K1_TIMES_SRC					2
286310600Smmel#define	 CURSOR_SRC_BLEND_FACTOR_SELECT(x)		(((x) & 0x3) <<  8)
287310600Smmel#define	  SRC_BLEND_K1						0
288310600Smmel#define	  SRC_BLEND_K1_TIMES_SRC				1
289310600Smmel#define	 CURSOR_ALPHA(x)				(((x) & 0xFF) << 0)
290310600Smmel
291310600Smmel#define	DC_DISP_CURSOR_UFLOW_DBG_PIXEL		0x4f3
292310600Smmel#define	 CURSOR_UFLOW_CYA				(1 << 7)
293310600Smmel#define	 CURSOR_UFLOW_CTRL_DBG_MODE			(1 << 0)
294310600Smmel/* --------------------------- DC WIN ------------------------------------- */
295310600Smmel
296310600Smmel#define	DC_WINC_COLOR_PALETTE			0x500
297310600Smmel#define	DC_WINC_CSC_YOF				0x611
298310600Smmel#define	DC_WINC_CSC_KYRGB			0x612
299310600Smmel#define	DC_WINC_CSC_KUR				0x613
300310600Smmel#define	DC_WINC_CSC_KVR				0x614
301310600Smmel#define	DC_WINC_CSC_KUG				0x615
302310600Smmel#define	DC_WINC_CSC_KVG				0x616
303310600Smmel#define	DC_WINC_CSC_KUB				0x617
304310600Smmel#define	DC_WINC_CSC_KVB				0x618
305310600Smmel
306310600Smmel#define	DC_WINC_WIN_OPTIONS			0x700
307310600Smmel#define	 H_FILTER_MODE					(1U << 31)
308310600Smmel#define	 WIN_ENABLE					(1 << 30)
309310600Smmel#define	 INTERLACE_ENABLE				(1 << 23)
310310600Smmel#define	 YUV_RANGE_EXPAND				(1 << 22)
311310600Smmel#define	 DV_ENABLE					(1 << 20)
312310600Smmel#define	 CSC_ENABLE					(1 << 18)
313310600Smmel#define	 CP_ENABLE					(1 << 16)
314310600Smmel#define	 V_FILTER_UV_ALIGN				(1 << 14)
315310600Smmel#define	 V_FILTER_OPTIMIZE				(1 << 12)
316310600Smmel#define	 V_FILTER_ENABLE				(1 << 10)
317310600Smmel#define	 H_FILTER_ENABLE				(1 <<  8)
318310600Smmel#define	 COLOR_EXPAND					(1 <<  6)
319310600Smmel#define	 SCAN_COLUMN					(1 <<  4)
320310600Smmel#define	 V_DIRECTION					(1 <<  2)
321310600Smmel#define	 H_DIRECTION					(1 <<  0)
322310600Smmel
323310600Smmel#define	DC_WIN_BYTE_SWAP			0x701
324310600Smmel#define	 BYTE_SWAP(x)					(((x) & 0x7) << 0)
325310600Smmel#define	  NOSWAP						0
326310600Smmel#define	  SWAP2							1
327310600Smmel#define	  SWAP4							2
328310600Smmel#define	  SWAP4HW						3
329310600Smmel#define	  SWAP02						4
330310600Smmel#define	  SWAPLEFT						5
331310600Smmel
332310600Smmel#define	DC_WIN_COLOR_DEPTH			0x703
333310600Smmel#define	WIN_COLOR_DEPTH_P8					 3
334310600Smmel#define	WIN_COLOR_DEPTH_B4G4R4A4				 4
335310600Smmel#define	WIN_COLOR_DEPTH_B5G5R5A					 5
336310600Smmel#define	WIN_COLOR_DEPTH_B5G6R5					 6
337310600Smmel#define	WIN_COLOR_DEPTH_AB5G5R5					 7
338310600Smmel#define	WIN_COLOR_DEPTH_B8G8R8A8				12
339310600Smmel#define	WIN_COLOR_DEPTH_R8G8B8A8				13
340310600Smmel#define	WIN_COLOR_DEPTH_YCbCr422				16
341310600Smmel#define	WIN_COLOR_DEPTH_YUV422					17
342310600Smmel#define	WIN_COLOR_DEPTH_YCbCr420P				18
343310600Smmel#define	WIN_COLOR_DEPTH_YUV420P					19
344310600Smmel#define	WIN_COLOR_DEPTH_YCbCr422P				20
345310600Smmel#define	WIN_COLOR_DEPTH_YUV422P					21
346310600Smmel#define	WIN_COLOR_DEPTH_YCbCr422R				22
347310600Smmel#define	WIN_COLOR_DEPTH_YUV422R					23
348310600Smmel#define	WIN_COLOR_DEPTH_YCbCr422RA				24
349310600Smmel#define	WIN_COLOR_DEPTH_YUV422RA				25
350310600Smmel
351310600Smmel#define	DC_WIN_POSITION				0x704
352310600Smmel#define	 WIN_POSITION(h, v)		((((h) & 0x1fff) <<  0) |	\
353310600Smmel					 (((v) & 0x1fff) << 16))
354310600Smmel
355310600Smmel#define	DC_WIN_SIZE				0x705
356310600Smmel#define	 WIN_SIZE(h, v)			((((h) & 0x1fff) <<  0) |	\
357310600Smmel					 (((v) & 0x1fff) << 16))
358310600Smmel
359310600Smmel#define	DC_WIN_PRESCALED_SIZE			0x706
360310600Smmel#define	 WIN_PRESCALED_SIZE(h, v)	((((h) & 0x7fff) <<  0) |	\
361310600Smmel					 (((v) & 0x1fff) << 16))
362310600Smmel
363310600Smmel
364310600Smmel#define	DC_WIN_H_INITIAL_DDA			0x707
365310600Smmel#define	DC_WIN_V_INITIAL_DDA			0x708
366310600Smmel#define	DC_WIN_DDA_INCREMENT			0x709
367310600Smmel#define	 WIN_DDA_INCREMENT(h, v)	((((h) & 0xffff) <<  0) |	\
368310600Smmel					 (((v) & 0xffff) << 16))
369310600Smmel#define	DC_WIN_LINE_STRIDE			0x70a
370310600Smmel
371310600Smmel/* -------------------------- DC WINBUF ------------------------------------ */
372310600Smmel
373310600Smmel#define	DC_WINBUF_START_ADDR			0x800
374310600Smmel#define	DC_WINBUF_START_ADDR_NS			0x801
375310600Smmel#define	DC_WINBUF_START_ADDR_U			0x802
376310600Smmel#define	DC_WINBUF_START_ADDR_U_NS		0x803
377310600Smmel#define	DC_WINBUF_START_ADDR_V			0x804
378310600Smmel#define	DC_WINBUF_START_ADDR_V_NS		0x805
379310600Smmel#define	DC_WINBUF_ADDR_H_OFFSET			0x806
380310600Smmel#define	DC_WINBUF_ADDR_H_OFFSET_NS		0x807
381310600Smmel#define	DC_WINBUF_ADDR_V_OFFSET			0x808
382310600Smmel#define	DC_WINBUF_ADDR_V_OFFSET_NS		0x809
383310600Smmel#define	DC_WINBUF_UFLOW_STATUS			0x80a
384310600Smmel#define	DC_WINBUF_SURFACE_KIND			0x80b
385310600Smmel#define	 SURFACE_KIND_BLOCK_HEIGHT(x) 			(((x) & 0x7) << 4)
386310600Smmel#define	 SURFACE_KIND_PITCH				0
387310600Smmel#define	 SURFACE_KIND_TILED				1
388310600Smmel#define	 SURFACE_KIND_BL_16B2				2
389310600Smmel#define	DC_WINBUF_SURFACE_WEIGHT		0x80c
390310600Smmel#define	DC_WINBUF_START_ADDR_HI			0x80d
391310600Smmel#define	DC_WINBUF_START_ADDR_HI_NS		0x80e
392310600Smmel#define	DC_WINBUF_START_ADDR_U_HI		0x80f
393310600Smmel#define	DC_WINBUF_START_ADDR_U_HI_NS		0x810
394310600Smmel#define	DC_WINBUF_START_ADDR_V_HI		0x811
395310600Smmel#define	DC_WINBUF_START_ADDR_V_HI_NS		0x812
396310600Smmel#define	DC_WINBUF_UFLOW_CTRL			0x824
397310600Smmel#define	 UFLOW_CTR_ENABLE				(1 << 0)
398310600Smmel#define	DC_WINBUF_UFLOW_DBG_PIXEL		0x825
399310600Smmel
400310600Smmel#endif /* _TEGRA_DC_REG_H_ */
401