xref: /haiku/src/add-ons/media/media-add-ons/radeon/TheatreReg.h (revision 97f865f72a5e3084e47caa02d8749b10f0c201b9)
1ffec4cb1Sshadow303 /******************************************************************************
2ffec4cb1Sshadow303 /
3ffec4cb1Sshadow303 /	File:			Theater.cpp
4ffec4cb1Sshadow303 /
5ffec4cb1Sshadow303 /	Description:	ATI Rage Theater Video Decoder interface.
6ffec4cb1Sshadow303 /
7ffec4cb1Sshadow303 /	Copyright 2001, Carlos Hasan
8ffec4cb1Sshadow303 /
9ffec4cb1Sshadow303 *******************************************************************************/
10ffec4cb1Sshadow303 
11ffec4cb1Sshadow303 #ifndef _THEATRE_REG_H
12ffec4cb1Sshadow303 #define _THEATRE_REG_H
13ffec4cb1Sshadow303 
14ffec4cb1Sshadow303 enum theater_register {
15ffec4cb1Sshadow303 	// TVOut Front End Datapath
16ffec4cb1Sshadow303 	VIP_RGB_CNTL					= 0x0048,
17ffec4cb1Sshadow303 		RGB_IS_888_PACK				= BITS(0:0),	// Select 24/16 bit (888/565) RGB mode
18ffec4cb1Sshadow303 		UV_DITHER_EN				= BITS(3:2),	// Select dithering mode for U/V data
19ffec4cb1Sshadow303 		SWITCH_TO_BLUE				= BITS(4:4),	// Replace input video with blue screen
20ffec4cb1Sshadow303 
21ffec4cb1Sshadow303 	VIP_TVO_SYNC_PAT_ACCUM			= 0x0108,
22ffec4cb1Sshadow303 		H_PATTERN_ACCUM				= BITS(10:0),
23ffec4cb1Sshadow303 		SCAN_REF_OFFSET				= BITS(15:11),
24ffec4cb1Sshadow303 		BYTE0						= BITS(23:16),
25ffec4cb1Sshadow303 		BYTE1						= BITS(31:24),
26ffec4cb1Sshadow303 
27ffec4cb1Sshadow303 	VIP_TV0_SYNC_THRESHOLD			= 0x010c,
28ffec4cb1Sshadow303 		MAX_H_PATTERNS				= BITS(10:0),
29ffec4cb1Sshadow303 		MIN_H_PATTERNS				= BITS(27:16),
30ffec4cb1Sshadow303 
31ffec4cb1Sshadow303 	VIP_TVO_SYNC_PAT_EXPECT			= 0x0110,
32ffec4cb1Sshadow303 		SYNC_PAT_EXPECT_W0			= BITS(15:0),
33ffec4cb1Sshadow303 		SYNC_PAT_EXPECT_W1			= BITS(23:16),
34ffec4cb1Sshadow303 
35ffec4cb1Sshadow303 	VIP_DELAY_ONE_MAP_A				= 0x0114,
36ffec4cb1Sshadow303 		DELAY_ONE_MAP_W0			= BITS(15:0),
37ffec4cb1Sshadow303 		DELAY_ONE_MAP_W1			= BITS(31:16),
38ffec4cb1Sshadow303 
39ffec4cb1Sshadow303 	VIP_DELAY_ONE_MAP_B				= 0x0118,
40ffec4cb1Sshadow303 		DELAY_ONE_MAP_W2			= BITS(15:0),
41ffec4cb1Sshadow303 
42ffec4cb1Sshadow303 	VIP_DELAY_ZERO_MAP_A			= 0x011c,
43ffec4cb1Sshadow303 		DELAY_ZERO_MAP_W0			= BITS(15:0),
44ffec4cb1Sshadow303 		DELAY_ZERO_MAP_W1			= BITS(31:16),
45ffec4cb1Sshadow303 
46ffec4cb1Sshadow303 	VIP_DELAY_ZERO_MAP_B			= 0x0120,
47ffec4cb1Sshadow303 		DELAY_ZERO_MAP_W2			= BITS(15:0),
48ffec4cb1Sshadow303 
49ffec4cb1Sshadow303 	VIP_TVO_DATA_DELAY_A			= 0x0140,
50ffec4cb1Sshadow303 		TVO_DATA0_DELAY				= BITS(5:0),
51ffec4cb1Sshadow303 		TVO_DATA1_DELAY				= BITS(13:8),
52ffec4cb1Sshadow303 		TVO_DATA2_DELAY				= BITS(21:16),
53ffec4cb1Sshadow303 		TVO_DATA3_DELAY				= BITS(29:24),
54ffec4cb1Sshadow303 
55ffec4cb1Sshadow303 	VIP_TVO_DATA_DELAY_B			= 0x0144,
56ffec4cb1Sshadow303 		TVO_DATA4_DELAY				= BITS(5:0),
57ffec4cb1Sshadow303 		TVO_DATA5_DELAY				= BITS(13:8),
58ffec4cb1Sshadow303 		TVO_DATA6_DELAY				= BITS(21:16),
59ffec4cb1Sshadow303 		TVO_DATA7_DELAY				= BITS(29:24),
60ffec4cb1Sshadow303 
61ffec4cb1Sshadow303 	VIP_VSCALER_CNTL1				= 0x01c0,
62ffec4cb1Sshadow303 		UV_INC						= BITS(15:0),	// Vertical scaling of CRTC UV data
63ffec4cb1Sshadow303 		UV_THINNER					= BITS(22:16),	// Number of lines in the UV data that
64ffec4cb1Sshadow303 													// are not blended to create a line on TV
65ffec4cb1Sshadow303 		Y_W_EN						= BITS(24:24),
66ffec4cb1Sshadow303 		Y_DEL_W_SIG					= BITS(27:26),
67ffec4cb1Sshadow303 
68ffec4cb1Sshadow303 	VIP_VSCALER_CNTL2				= 0x01c8,
69ffec4cb1Sshadow303 		DITHER_MODE					= BITS(0:0),	// Select dithering mode
70ffec4cb1Sshadow303 		Y_OUTPUT_DITHER_EN			= BITS(1:1),
71ffec4cb1Sshadow303 		UV_OUTPUT_DITHER_EN			= BITS(2:2),
72ffec4cb1Sshadow303 		UV_TO_BUF_DITHER_EN			= BITS(3:3),
73ffec4cb1Sshadow303 		UV_ACCUM_INIT				= BITS(31:24),
74ffec4cb1Sshadow303 
75ffec4cb1Sshadow303 	VIP_Y_FALL_CNTL					= 0x01cc,
76ffec4cb1Sshadow303 		Y_FALL_ACCUM_INIT			= BITS(15:0),
77ffec4cb1Sshadow303 		Y_FALL_PING_PONG			= BITS(16:16),
78ffec4cb1Sshadow303 		Y_COEF_EN					= BITS(17:17),
79ffec4cb1Sshadow303 		Y_COEF_VALUE				= BITS(31:24),
80ffec4cb1Sshadow303 
81ffec4cb1Sshadow303 	VIP_Y_RISE_CNTL					= 0x01d0,
82ffec4cb1Sshadow303 		Y_RISE_ACCUM_INIT			= BITS(15:0),
83ffec4cb1Sshadow303 		Y_RISE_PING_PONG			= BITS(16:16),
84ffec4cb1Sshadow303 
85ffec4cb1Sshadow303 	VIP_Y_SAW_TOOTH_CNTL			= 0x01d4,
86ffec4cb1Sshadow303 		Y_SAW_TOOTH_MAP				= BITS(15:0),
87ffec4cb1Sshadow303 		Y_SAW_TOOTH_SLOPE			= BITS(31:16),
88ffec4cb1Sshadow303 
89ffec4cb1Sshadow303 	// TVOut Shadow CRTC
90ffec4cb1Sshadow303 	VIP_HTOTAL						= 0x0080,
91ffec4cb1Sshadow303 		D_HTOTAL					= BITS(10:0),	// Number of clocks per line (-1)
92ffec4cb1Sshadow303 
93ffec4cb1Sshadow303 	VIP_HDISP						= 0x0084,
94ffec4cb1Sshadow303 		D_HDISP						= BITS(9:0),	// Number of active pixels per line (-1)
95ffec4cb1Sshadow303 
96ffec4cb1Sshadow303 	VIP_HSIZE						= 0x0088,
97ffec4cb1Sshadow303 		D_HSIZE						= BITS(9:0),	// Unused in Rage Theater A21 and later
98ffec4cb1Sshadow303 
99ffec4cb1Sshadow303 	VIP_HSTART						= 0x008c,
100ffec4cb1Sshadow303 		D_HSTART					= BITS(10:0),
101ffec4cb1Sshadow303 
102ffec4cb1Sshadow303 	VIP_HCOUNT						= 0x0090,		// Current horizontal CRT pixel within
103ffec4cb1Sshadow303 		D_HCOUNT					= BITS(10:0),	// a line being processed
104ffec4cb1Sshadow303 
105ffec4cb1Sshadow303 	VIP_VTOTAL						= 0x0094,		// Number of lines per frame (-1)
106ffec4cb1Sshadow303 		D_VTOTAL					= BITS(9:0),
107ffec4cb1Sshadow303 
108ffec4cb1Sshadow303 	VIP_VDISP						= 0x0098,		// Number of active lines (-1)
109ffec4cb1Sshadow303 		D_VDISP						= BITS(9:0),
110ffec4cb1Sshadow303 
111ffec4cb1Sshadow303 	VIP_VCOUNT						= 0x009c,		// Current vertical CRT line being processed
112ffec4cb1Sshadow303 		D_VCOUNT					= BITS(9:0),
113ffec4cb1Sshadow303 
114ffec4cb1Sshadow303 	VIP_VFTOTAL						= 0x00a0,		// Number of CRT frames that occur during
115ffec4cb1Sshadow303 		D_FTOTAL					= BITS(3:0),	// one complete cycle of the TV timing (-1)
116ffec4cb1Sshadow303 
117ffec4cb1Sshadow303 	VIP_DFCOUNT						= 0x00a4,		// Current CRT frame count, equivalent to the
118ffec4cb1Sshadow303 		D_FCOUNT					= BITS(3:0),	// field number in a complete TV cycle
119ffec4cb1Sshadow303 
120ffec4cb1Sshadow303 	VIP_DFRESTART					= 0x00a8,		// The frame/field during which a restart
121ffec4cb1Sshadow303 		D_FRESTART					= BITS(3:0),	// will be generated when TV_MASTER is 0
122ffec4cb1Sshadow303 
123ffec4cb1Sshadow303 	VIP_DHRESTART					= 0x00ac,		// Horizontal pixel during which a restart
124ffec4cb1Sshadow303 		D_HRESTART					= BITS(10:0),	// will be generated when TV_MASTER is 0
125ffec4cb1Sshadow303 
126ffec4cb1Sshadow303 	VIP_DVRESTART					= 0x00b0,		// Vertical line during which a restart
127ffec4cb1Sshadow303 		D_VRESTART					= BITS(9:0),	// will be generated when TV_MASTER is 0
128ffec4cb1Sshadow303 
129ffec4cb1Sshadow303 	VIP_SYNC_SIZE					= 0x00b4,		// Number of pixels expected in the
130ffec4cb1Sshadow303 		D_SYNC_SIZE					= BITS(9:0),	// synchronization line
131ffec4cb1Sshadow303 
132ffec4cb1Sshadow303 	VIP_FRAME_LOCK_CNTL				= 0x0100,
133ffec4cb1Sshadow303 		MAX_LOCK_STR				= BITS(3:0),
134ffec4cb1Sshadow303 		FIELD_SYNC_EN				= BITS(4:4),
135ffec4cb1Sshadow303 		FIELD_SYNC_TRIGGER			= BITS(5:5),
136ffec4cb1Sshadow303 		ACTUAL_LOCK_STR				= BITS(11:8),
137ffec4cb1Sshadow303 		AVG_MISSED_SYNC				= BITS(15:12),
138ffec4cb1Sshadow303 
139ffec4cb1Sshadow303 	VIP_SYNC_LOCK_CNTL				= 0x0104,
140ffec4cb1Sshadow303 		PRI_TVO_DATA_LINE_SEL		= BITS(2:0),
141ffec4cb1Sshadow303 		SEC_SYNC_CHECK_DEL			= BITS(13:8),
142ffec4cb1Sshadow303 		MPP_ACTIVE_AS_MASK			= BITS(14:14),
143ffec4cb1Sshadow303 		MPP_ACTIVE_DS_MASK			= BITS(15:15),
144ffec4cb1Sshadow303 		SYNC_COMMAND				= BITS(18:16),
145ffec4cb1Sshadow303 		SYNC_LOCK_TRIGGER			= BITS(21:21),
146ffec4cb1Sshadow303 		DETECT_EN					= BITS(24:24),
147ffec4cb1Sshadow303 		SELF_LOCK_EN				= BITS(25:25),
148ffec4cb1Sshadow303 		MAN_LOCK_EN					= BITS(26:26),
149ffec4cb1Sshadow303 		MAX_REF_OFFSET				= BITS(31:27),
150ffec4cb1Sshadow303 
151ffec4cb1Sshadow303 	// TVOut Up Sampling Filter
152ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF0_0				= 0x0340,
153ffec4cb1Sshadow303 		COEFF0_0					= BITS(5:0),
154ffec4cb1Sshadow303 		COEFF0_1					= BITS(14:8),
155ffec4cb1Sshadow303 		COEFF0_2					= BITS(22:16),
156ffec4cb1Sshadow303 		COEFF0_3					= BITS(29:24),
157ffec4cb1Sshadow303 
158ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF0_1				= 0x0344,
159ffec4cb1Sshadow303 		COEFF0_4					= BITS(7:0),
160ffec4cb1Sshadow303 		COEFF0_5					= BITS(15:8),
161ffec4cb1Sshadow303 		COEFF0_6					= BITS(21:16),
162ffec4cb1Sshadow303 		COEFF0_7					= BITS(30:24),
163ffec4cb1Sshadow303 
164ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF0_2				= 0x0348,
165ffec4cb1Sshadow303 		COEFF0_8					= BITS(6:0),
166ffec4cb1Sshadow303 		COEFF0_9					= BITS(13:8),
167ffec4cb1Sshadow303 
168ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF1_0				= 0x034c,
169ffec4cb1Sshadow303 		COEFF1_0					= BITS(5:0),
170ffec4cb1Sshadow303 		COEFF1_1					= BITS(14:8),
171ffec4cb1Sshadow303 		COEFF1_2					= BITS(22:16),
172ffec4cb1Sshadow303 		COEFF1_3					= BITS(29:24),
173ffec4cb1Sshadow303 
174ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF1_1				= 0x0350,
175ffec4cb1Sshadow303 		COEFF1_4					= BITS(7:0),
176ffec4cb1Sshadow303 		COEFF1_5					= BITS(15:8),
177ffec4cb1Sshadow303 		COEFF1_6					= BITS(21:16),
178ffec4cb1Sshadow303 		COEFF1_7					= BITS(30:24),
179ffec4cb1Sshadow303 
180ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF1_2				= 0x0354,
181ffec4cb1Sshadow303 		COEFF1_8					= BITS(6:0),
182ffec4cb1Sshadow303 		COEFF1_9					= BITS(13:8),
183ffec4cb1Sshadow303 
184ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF2_0				= 0x0358,
185ffec4cb1Sshadow303 		COEFF2_0					= BITS(5:0),
186ffec4cb1Sshadow303 		COEFF2_1					= BITS(14:8),
187ffec4cb1Sshadow303 		COEFF2_2					= BITS(22:16),
188ffec4cb1Sshadow303 		COEFF2_3					= BITS(29:24),
189ffec4cb1Sshadow303 
190ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF2_1				= 0x035c,
191ffec4cb1Sshadow303 		COEFF2_4					= BITS(7:0),
192ffec4cb1Sshadow303 		COEFF2_5					= BITS(15:8),
193ffec4cb1Sshadow303 		COEFF2_6					= BITS(21:16),
194ffec4cb1Sshadow303 		COEFF2_7					= BITS(30:24),
195ffec4cb1Sshadow303 
196ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF2_2				= 0x0360,
197ffec4cb1Sshadow303 		COEFF2_8					= BITS(6:0),
198ffec4cb1Sshadow303 		COEFF2_9					= BITS(13:8),
199ffec4cb1Sshadow303 
200ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF3_0				= 0x0364,
201ffec4cb1Sshadow303 		COEFF3_0					= BITS(5:0),
202ffec4cb1Sshadow303 		COEFF3_1					= BITS(14:8),
203ffec4cb1Sshadow303 		COEFF3_2					= BITS(22:16),
204ffec4cb1Sshadow303 		COEFF3_3					= BITS(29:24),
205ffec4cb1Sshadow303 
206ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF3_1				= 0x0368,
207ffec4cb1Sshadow303 		COEFF3_4					= BITS(7:0),
208ffec4cb1Sshadow303 		COEFF3_5					= BITS(15:8),
209ffec4cb1Sshadow303 		COEFF3_6					= BITS(21:16),
210ffec4cb1Sshadow303 		COEFF3_7					= BITS(30:24),
211ffec4cb1Sshadow303 
212ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF3_2				= 0x036c,
213ffec4cb1Sshadow303 		COEFF3_8					= BITS(6:0),
214ffec4cb1Sshadow303 		COEFF3_9					= BITS(13:8),
215ffec4cb1Sshadow303 
216ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF4_0				= 0x0370,
217ffec4cb1Sshadow303 		COEFF4_0					= BITS(5:0),
218ffec4cb1Sshadow303 		COEFF4_1					= BITS(14:8),
219ffec4cb1Sshadow303 		COEFF4_2					= BITS(22:16),
220ffec4cb1Sshadow303 		COEFF4_3					= BITS(29:24),
221ffec4cb1Sshadow303 
222ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF4_1				= 0x0374,
223ffec4cb1Sshadow303 		COEFF4_4					= BITS(7:0),
224ffec4cb1Sshadow303 		COEFF4_5					= BITS(15:8),
225ffec4cb1Sshadow303 		COEFF4_6					= BITS(21:16),
226ffec4cb1Sshadow303 		COEFF4_7					= BITS(30:24),
227ffec4cb1Sshadow303 
228ffec4cb1Sshadow303 	VIP_UPSAMP_COEFF4_2				= 0x0378,
229ffec4cb1Sshadow303 		COEFF4_8					= BITS(6:0),
230ffec4cb1Sshadow303 		COEFF4_9					= BITS(13:8),
231ffec4cb1Sshadow303 
232ffec4cb1Sshadow303 	// TVOut Encoder
233ffec4cb1Sshadow303 	VIP_SYNC_CNTL					= 0x0050,
234ffec4cb1Sshadow303 		SYNC_OE						= BITS(0:0),	// Sync output enable
235ffec4cb1Sshadow303 		SYNC_OUT					= BITS(1:1),	// Sync output data
236ffec4cb1Sshadow303 		SYNC_IN						= BITS(2:2),	// Sync input data
237ffec4cb1Sshadow303 		SYNC_PUB					= BITS(3:3),	// Sync pull-up enable
238ffec4cb1Sshadow303 		SYNC_PD						= BITS(4:4),	// Sync pull-down enable
239ffec4cb1Sshadow303 		SYNC_DRV					= BITS(5:5),	// Sync drive select
240ffec4cb1Sshadow303 		SYNC_MX						= BITS(11:8),	// Sync mux
241ffec4cb1Sshadow303 
242ffec4cb1Sshadow303 	VIP_HOST_READ_DATA				= 0x0180,
243ffec4cb1Sshadow303 		HOST_RD_DATA_W0				= BITS(15:0),
244ffec4cb1Sshadow303 		HOST_RD_DATA_W1				= BITS(27:16),
245ffec4cb1Sshadow303 
246ffec4cb1Sshadow303 	VIP_HOST_WRITE_DATA				= 0x0184,
247ffec4cb1Sshadow303 		HOST_WR_DATA_W0				= BITS(15:0),
248ffec4cb1Sshadow303 		HOST_WR_DATA_W1				= BITS(27:16),
249ffec4cb1Sshadow303 
250ffec4cb1Sshadow303 	VIP_HOST_RD_WT_CNTL				= 0x0188,
251ffec4cb1Sshadow303 		HOST_ADR					= BITS(8:0),
252ffec4cb1Sshadow303 		HOST_FIFO_RD				= BITS(12:12),
253ffec4cb1Sshadow303 		HOST_FIFO_RD_ACK			= BITS(13:13),
254ffec4cb1Sshadow303 		HOST_FIFO_WT				= BITS(14:14),
255ffec4cb1Sshadow303 		HOST_FIFO_WT_ACK			= BITS(15:15),
256ffec4cb1Sshadow303 
257ffec4cb1Sshadow303 	VIP_TIMING_CNTL					= 0x01c4,
258ffec4cb1Sshadow303 		H_INC						= BITS(11:0),	// Horizontal scaling of the TV image
259ffec4cb1Sshadow303 		REQ_DELAY					= BITS(18:16),
260ffec4cb1Sshadow303 		REQ_Y_FIRST					= BITS(19:19),
261ffec4cb1Sshadow303 		FORCE_BURST_ALWAYS			= BITS(21:21),
262ffec4cb1Sshadow303 		UV_POST_SCALE_BYPASS		= BITS(23:23),
263ffec4cb1Sshadow303 		UV_OUTPUT_POST_SCALE		= BITS(31:24),
264ffec4cb1Sshadow303 
265ffec4cb1Sshadow303 	VIP_UPSAMP_AND_GAIN_CNTL		= 0x01e0,
266ffec4cb1Sshadow303 		YUPSAMP_EN					= BITS(0:0),	// Enable Y upsampling filter
267ffec4cb1Sshadow303 		YUPSAMP_FLAT				= BITS(1:1),	// Force Y upsampling to use centre tap
268ffec4cb1Sshadow303 		UVUPSAMP_EN					= BITS(2:2),	// Enable U/V upsampling filters
269ffec4cb1Sshadow303 		UVUPSAMP_FLAT				= BITS(3:3),	// Force U/V upsampling to use centre tap
270ffec4cb1Sshadow303 		Y_BREAK_EN					= BITS(8:8),	// Enable Y break point
271ffec4cb1Sshadow303 		UV_BREAK_EN					= BITS(10:10),	// Enable U/V break point
272ffec4cb1Sshadow303 
273ffec4cb1Sshadow303 	VIP_GAIN_LIMIT_SETTINGS			= 0x01e4,
274ffec4cb1Sshadow303 		Y_GAIN_LIMIT				= BITS(10:0),	// Gain limit for the luminance (Y)
275ffec4cb1Sshadow303 		UV_GAIN_LIMIT				= BITS(24:16),	// Gain limit for the chrominance (U/V)
276ffec4cb1Sshadow303 
277ffec4cb1Sshadow303 	VIP_LINEAR_GAIN_SETTINGS		= 0x01e8,
278ffec4cb1Sshadow303 		Y_GAIN						= BITS(8:0),	// Gain for the luminance (1.8 fixed point)
279ffec4cb1Sshadow303 		UV_GAIN						= BITS(24:16),	// Gain for the chrominance (1.8 fixed point)
280ffec4cb1Sshadow303 
281ffec4cb1Sshadow303 	VIP_MODULATOR_CNTL1				= 0x0200,
282ffec4cb1Sshadow303 		YFLT_EN						= BITS(2:2),	// Enable Composite/SVideo Y filter
283ffec4cb1Sshadow303 		UVFLT_EN					= BITS(3:3),	// Enable U/V filters
284ffec4cb1Sshadow303 		ALT_PHASE_EN				= BITS(6:6),	// Phase alternating line (0=NTSC, 1=PAL)
285ffec4cb1Sshadow303 		SYNC_TIP_LEVEL				= BITS(7:7),	// Composite Y sync tip level
286ffec4cb1Sshadow303 		SET_UP_LEVEL				= BITS(14:8),	// Video setup level
287ffec4cb1Sshadow303 		BLANK_LEVEL					= BITS(22:16),	// Video blank level
288ffec4cb1Sshadow303 		SLEW_RATE_LIMIT				= BITS(23:23),
289ffec4cb1Sshadow303 		FORCE_BLACK_WHITE			= BITS(24:24),	// Force B&W video
290ffec4cb1Sshadow303 		Y_FILT_BLEND				= BITS(31:28),	// Sharpness of Y filters
291ffec4cb1Sshadow303 
292ffec4cb1Sshadow303 	VIP_MODULATOR_CNTL2				= 0x0204,
293ffec4cb1Sshadow303 		U_BURST_LEVEL				= BITS(8:0),
294ffec4cb1Sshadow303 		V_BUST_LEVEL				= BITS(24:16),
295ffec4cb1Sshadow303 
296ffec4cb1Sshadow303 	VIP_PRE_DAC_MUX_CNTL			= 0x0240,
297ffec4cb1Sshadow303 		Y_RED_EN					= BITS(0:0),
298ffec4cb1Sshadow303 		C_GRN_EN					= BITS(1:1),
299ffec4cb1Sshadow303 		CMP_BLU_EN					= BITS(2:2),
300ffec4cb1Sshadow303 		DAC_DITHER_EN				= BITS(3:3),
301ffec4cb1Sshadow303 		RED_MX						= BITS(7:4),
302ffec4cb1Sshadow303 		GRN_MX						= BITS(11:8),
303ffec4cb1Sshadow303 		BLU_MX						= BITS(15:12),
304ffec4cb1Sshadow303 		FORCE_DAC_DATA				= BITS(25:16),
305ffec4cb1Sshadow303 		YUPFILT_DISABLE				= BITS(26:26),
306ffec4cb1Sshadow303 		CVUPFILT_DISABLE			= BITS(27:27),
307ffec4cb1Sshadow303 		UUPFILT_DISABLE				= BITS(28:28),
308ffec4cb1Sshadow303 
309ffec4cb1Sshadow303 	VIP_TV_DAC_CNTL					= 0x0280,
310ffec4cb1Sshadow303 		NBLANK						= BITS(0:0),
311ffec4cb1Sshadow303 		NHOLD						= BITS(1:1),
312ffec4cb1Sshadow303 		PEDESTAL					= BITS(2:2),
313ffec4cb1Sshadow303 		DASLEEP						= BITS(3:3),
314ffec4cb1Sshadow303 		DETECT						= BITS(4:4),
315ffec4cb1Sshadow303 		CMPOUT						= BITS(5:5),
316ffec4cb1Sshadow303 		BGSLEEP						= BITS(6:6),
317ffec4cb1Sshadow303 		STD							= BITS(9:8),
318ffec4cb1Sshadow303 		MON							= BITS(15:12),
319ffec4cb1Sshadow303 
320ffec4cb1Sshadow303 	VIP_CRC_CNTL					= 0x02c0,
321ffec4cb1Sshadow303 		V_COMP_DATA_EN				= BITS(1:0),
322ffec4cb1Sshadow303 		V_COMP_GATE					= BITS(2:2),
323ffec4cb1Sshadow303 		V_COMP_EN					= BITS(3:3),
324ffec4cb1Sshadow303 		RST_SUBC_ONRSTRT			= BITS(4:4),
325ffec4cb1Sshadow303 		CRC_TV_RSTRT_SEL			= BITS(5:5),
326ffec4cb1Sshadow303 
327ffec4cb1Sshadow303 	VIP_VIDEO_PORT_SIG				= 0x02c4,
328ffec4cb1Sshadow303 		CRC_SIG						= BITS(29:0),
329ffec4cb1Sshadow303 
330ffec4cb1Sshadow303 	VIP_UV_ADR						= 0x0300,
331ffec4cb1Sshadow303 		MAX_UV_ADDR					= BITS(7:0),
332ffec4cb1Sshadow303 		TABLE1_BOT_ADR				= BITS(15:8),
333ffec4cb1Sshadow303 		TABLE3_TOP_ADR				= BITS(23:16),
334ffec4cb1Sshadow303 		HCODE_TABLE_SEL				= BITS(26:25),
335ffec4cb1Sshadow303 		VCODE_TABLE_SEL				= BITS(28:27),
336ffec4cb1Sshadow303 		SWITCH_TABLE_REQ			= BITS(31:31),
337ffec4cb1Sshadow303 
338ffec4cb1Sshadow303 	 // TVOut VBI Control
339ffec4cb1Sshadow303 	VIP_VBI_CC_CNTL					= 0x02c8,
340ffec4cb1Sshadow303 		VBI_CC_DATA					= BITS(15:0),	// VBI data for CC
341ffec4cb1Sshadow303 		VBI_CC_WT					= BITS(24:24),	// Initiates a write cycle using VBI_CC_DATA
342ffec4cb1Sshadow303 		VBI_CC_WT_ACK				= BITS(25:25),
343ffec4cb1Sshadow303 		VBI_CC_HOLD					= BITS(26:26),
344ffec4cb1Sshadow303 		VBI_DECODE_EN				= BITS(31:31),
345ffec4cb1Sshadow303 
346ffec4cb1Sshadow303 	VIP_VBI_EDS_CNTL				= 0x02cc,
347ffec4cb1Sshadow303 		VBI_EDS_DATA				= BITS(15:0),
348ffec4cb1Sshadow303 		VBI_EDS_WT					= BITS(24:24),
349ffec4cb1Sshadow303 		VBI_EDS_WT_ACK				= BITS(25:25),
350ffec4cb1Sshadow303 		VBI_EDS_HOLD				= BITS(26:26),
351ffec4cb1Sshadow303 
352ffec4cb1Sshadow303 	VIP_VBI_20BIT_CNTL				= 0x02d0,
353ffec4cb1Sshadow303 		VBI_20BIT_DATA0				= BITS(15:0),
354ffec4cb1Sshadow303 		VBI_20BIT_DATA1				= BITS(19:16),
355ffec4cb1Sshadow303 		VBI_20BIT_WT				= BITS(24:24),
356ffec4cb1Sshadow303 		VBI_20BIT_WT_ACK			= BITS(25:25),
357ffec4cb1Sshadow303 		VBI_20BIT_HOLD				= BITS(26:26),
358ffec4cb1Sshadow303 
359ffec4cb1Sshadow303 	VIP_VBI_DTO_CNTL				= 0x02d4,
360ffec4cb1Sshadow303 		VBI_CC_DTO_P				= BITS(15:0),
361ffec4cb1Sshadow303 		VBI_20BIT_DTO_P				= BITS(31:16),
362ffec4cb1Sshadow303 
363ffec4cb1Sshadow303 	VIP_VBI_LEVEL_CNTL				= 0x02d8,
364ffec4cb1Sshadow303 		VBI_CC_LEVEL				= BITS(6:0),
365ffec4cb1Sshadow303 		VBI_20BIT_LEVEL				= BITS(14:8),
366ffec4cb1Sshadow303 		VBI_CLK_RUNIN_GAIN			= BITS(24:16),
367ffec4cb1Sshadow303 
368ffec4cb1Sshadow303 	// Video Decoder Horizontal Sync PLL Control
369ffec4cb1Sshadow303 	VIP_HS_PLINE					= 0x0480,		// Pixels per line (910)
370ffec4cb1Sshadow303 		HS_LINE_TOTAL				= BITS(10:0),
371ffec4cb1Sshadow303 
372ffec4cb1Sshadow303 	VIP_HS_DTOINC					= 0x0484,		// ???
373ffec4cb1Sshadow303 		HS_DTO_INC					= BITS(19:0),
374ffec4cb1Sshadow303 
375ffec4cb1Sshadow303 	VIP_HS_PLLGAIN					= 0x0488,
376ffec4cb1Sshadow303 		HS_PLL_SGAIN				= BITS(3:0),
377ffec4cb1Sshadow303 		HS_PLL_FGAIN				= BITS(7:4),
378ffec4cb1Sshadow303 
379ffec4cb1Sshadow303 	VIP_HS_MINMAXWIDTH				= 0x048c,
380ffec4cb1Sshadow303 		MIN_PULSE_WIDTH				= BITS(7:0),
381ffec4cb1Sshadow303 		MAX_PULSE_WIDTH				= BITS(15:8),
382ffec4cb1Sshadow303 
383ffec4cb1Sshadow303 	VIP_HS_GENLOCKDELAY				= 0x0490,
384ffec4cb1Sshadow303 		GEN_LOCK_DELAY				= BITS(7:0),
385ffec4cb1Sshadow303 
386ffec4cb1Sshadow303 	VIP_HS_WINDOW_LIMIT				= 0x0494,
387ffec4cb1Sshadow303 		WIN_CLOSE_LIMIT				= BITS(10:0),
388ffec4cb1Sshadow303 		WIN_OPEN_LIMIT				= BITS(26:16),
389ffec4cb1Sshadow303 
390ffec4cb1Sshadow303 	VIP_HS_WINDOW_OC_SPEED			= 0x0498,
391ffec4cb1Sshadow303 		WIN_CLOSE_SPEED				= BITS(3:0),
392ffec4cb1Sshadow303 		WIN_OPEN_SPEED				= BITS(7:4),
393ffec4cb1Sshadow303 
394ffec4cb1Sshadow303 	VIP_HS_PULSE_WIDTH				= 0x049c,
395ffec4cb1Sshadow303 		H_SYNC_PULSE_WIDTH			= BITS(7:0),
396ffec4cb1Sshadow303 		HS_GENLOCKED				= BITS(8:8),	//   HPLL is locked?
397ffec4cb1Sshadow303 		HS_SYNC_IN_WIN				= BITS(9:9),	//   Sync in Hwindow?
398ffec4cb1Sshadow303 
399ffec4cb1Sshadow303 	VIP_HS_PLL_ERROR				= 0x04a0,
400ffec4cb1Sshadow303 		HS_PLL_ERROR				= BITS(14:0),
401ffec4cb1Sshadow303 
402ffec4cb1Sshadow303 	VIP_HS_PLL_FS_PATH				= 0x04a4,
403ffec4cb1Sshadow303 		HS_PLL_FAST_PATH			= BITS(14:0),
404ffec4cb1Sshadow303 		HS_PLL_SLOW_PATH			= BITS(30:16),
405ffec4cb1Sshadow303 
406ffec4cb1Sshadow303 	// Video Decoder Comb Filter
407ffec4cb1Sshadow303 	VIP_COMB_CNTL0					= 0x0440,
408ffec4cb1Sshadow303 		COMB_HCK					= BITS(7:0),
409ffec4cb1Sshadow303 		COMB_VCK					= BITS(15:8),
410ffec4cb1Sshadow303 		COMB_FILTER_EN				= BITS(16:16),	// 0=fast AGC, CLAMP, and Chroma AGC loops (A41 ASIC only)
411ffec4cb1Sshadow303 		COMB_ADAPTIVE_EN			= BITS(17:17),
412ffec4cb1Sshadow303 		COMB_BPFMUXSEL				= BITS(20:18),
413ffec4cb1Sshadow303 		COMB_COUTSEL				= BITS(22:21),
414ffec4cb1Sshadow303 		COMB_SUMDIFF0SEL			= BITS(23:23),
415ffec4cb1Sshadow303 		COMB_SUMDIFF1SEL			= BITS(25:24),
416ffec4cb1Sshadow303 		COMB_YVLPFSEL				= BITS(26:26),
417ffec4cb1Sshadow303 		COMB_DLYLINESEL				= BITS(28:27),
418ffec4cb1Sshadow303 		COMB_YDLYINSEL				= BITS(30:29),
419ffec4cb1Sshadow303 		COMB_YSUBBW					= BITS(31:31),
420ffec4cb1Sshadow303 
421ffec4cb1Sshadow303 	VIP_COMB_CNTL1					= 0x0444,
422ffec4cb1Sshadow303 		COMB_YDLYOUTSEL				= BITS(1:0),
423ffec4cb1Sshadow303 		COMB_CORESIZE				= BITS(3:2),
424ffec4cb1Sshadow303 		COMB_YSUBEN					= BITS(4:4),
425ffec4cb1Sshadow303 		COMB_YOUTSEL				= BITS(5:5),
426ffec4cb1Sshadow303 		COMB_SYNCLPFSEL				= BITS(7:6),
427ffec4cb1Sshadow303 		COMB_SYNCLPFRST				= BITS(8:8),
428ffec4cb1Sshadow303 		COMB_DEBUG					= BITS(9:9),
429ffec4cb1Sshadow303 
430ffec4cb1Sshadow303 	VIP_COMB_CNTL2					= 0x0448,
431ffec4cb1Sshadow303 		COMB_HYK0					= BITS(7:0),
432ffec4cb1Sshadow303 		COMB_VYK0					= BITS(15:8),
433ffec4cb1Sshadow303 		COMB_HYK1					= BITS(23:16),
434ffec4cb1Sshadow303 		COMB_VYK1					= BITS(31:24),
435ffec4cb1Sshadow303 
436ffec4cb1Sshadow303 	VIP_COMB_LINE_LENGTH			= 0x044c,
437ffec4cb1Sshadow303 		COMB_TAP0LENGTH				= BITS(10:0),
438ffec4cb1Sshadow303 		COMB_TAP1LENGTH				= BITS(27:16),
439ffec4cb1Sshadow303 
440ffec4cb1Sshadow303 	VIP_NOISE_CNTL0					= 0x0450,
441ffec4cb1Sshadow303 		NR_EN						= BITS(0:0),
442ffec4cb1Sshadow303 		NR_GAIN_CNTL				= BITS(3:1),
443ffec4cb1Sshadow303 		NR_BW_TRESH					= BITS(9:4),
444ffec4cb1Sshadow303 		NR_GC_TRESH					= BITS(14:10),
445ffec4cb1Sshadow303 		NR_COEF_DESPEC_IMODE		= BITS(15:15),
446ffec4cb1Sshadow303 
447ffec4cb1Sshadow303 	// Video Decoder ADC Control
448ffec4cb1Sshadow303 	VIP_ADC_CNTL					= 0x0400,
449ffec4cb1Sshadow303 		INPUT_SELECT				= BITS(2:0),	// Video input mux select
450ffec4cb1Sshadow303 			INPUT_SELECT_COMP0		= 0 << 0,		//   Tuner
451ffec4cb1Sshadow303 			INPUT_SELECT_COMP1		= 1 << 0,		//   Front Comp1
452ffec4cb1Sshadow303 			INPUT_SELECT_COMP2		= 2 << 0,		//   Rear Comp1
453ffec4cb1Sshadow303 			INPUT_SELECT_YF_COMP3	= 3 << 0,		//   Front Comp2
454ffec4cb1Sshadow303 			INPUT_SELECT_YR_COMP4	= 4 << 0,		//   Rear Comp2
455ffec4cb1Sshadow303 			INPUT_SELECT_YCF_COMP3	= 5 << 0,		//   Front YC
456ffec4cb1Sshadow303 			INPUT_SELECT_YCR_COMP4	= 6 << 0,		//   Rear YC
457ffec4cb1Sshadow303 		I_CLAMP_SEL					= BITS(4:3),	// Clamp charge-pump current select
458ffec4cb1Sshadow303 			I_CLAMP_SEL_0_3			= 0 << 3,		//   0.3 uA
459ffec4cb1Sshadow303 			I_CLAMP_SEL_7			= 1 << 3,		//   7.0 uA
460ffec4cb1Sshadow303 			I_CLAMP_SEL_15			= 2 << 3,		//   15.0 uA
461ffec4cb1Sshadow303 			I_CLAMP_SEL_22			= 3 << 3,		//   22.0 uA
462ffec4cb1Sshadow303 		I_AGC_SEL					= BITS(6:5),	// AGC charge-pump current select
463ffec4cb1Sshadow303 			I_AGC_SEL_0_3			= 0 << 5,		//   0.3 uA
464ffec4cb1Sshadow303 			I_AGC_SEL_7				= 1 << 5,		//   7.0 uA
465ffec4cb1Sshadow303 			I_AGC_SEL_15			= 2 << 5,		//   15.0 uA
466ffec4cb1Sshadow303 			I_AGC_SEL_22			= 3 << 5,		//   22.0 uA
467ffec4cb1Sshadow303 		ADC_PDWN					= BITS(7:7),	// AGC power-down select
468ffec4cb1Sshadow303 			ADC_PDWN_UP				= 0 << 7,		//   Power up (for capture mode)
469ffec4cb1Sshadow303 			ADC_PDWN_DOWN			= 1 << 7,		//   Power down
470ffec4cb1Sshadow303 		EXT_CLAMP_CAP				= BITS(8:8),	// Clamp charge cap select
471ffec4cb1Sshadow303 			EXT_CLAMP_CAP_INTERNAL	= 0 << 8,		//   Use internal Clamp Cap.
472ffec4cb1Sshadow303 			EXT_CLAMP_CAP_EXTERNAL	= 1 << 8,		//   Use external Clamp Cap.
473ffec4cb1Sshadow303 		EXT_AGC_CAP					= BITS(9:9),	// AGC charge Cap. select
474ffec4cb1Sshadow303 			EXT_AGC_CAP_INTERNAL	= 0 << 9,		//   Use internal AGC Cap.
475ffec4cb1Sshadow303 			EXT_AGC_CAP_EXTERNAL	= 1 << 9,		//   Use external AGC Cap.
476ffec4cb1Sshadow303 		ADC_DECI_BYPASS				= BITS(10:10),	// ADC video data decimation filter select
477ffec4cb1Sshadow303 			ADC_DECI_WITH_FILTER	= 0 << 10,		//   Decimate ADC data with filtering
478ffec4cb1Sshadow303 			ADC_DECI_WITHOUT_FILTER	= 1 << 10,		//   Decimate ADC data with no filtering
479ffec4cb1Sshadow303 		VBI_DECI_BYPASS				= BITS(11:11),	// ADC VBI data decimation filter select
480ffec4cb1Sshadow303 			VBI_DECI_WITH_FILTER	= 0 << 11,		//   Decimate VBI data from ADC with filtering
481ffec4cb1Sshadow303 			VBI_DECI_WITHOUT_FILTER	= 1 << 11,		//   Decimate VBI data from ADC with no filtering
482ffec4cb1Sshadow303 		DECI_DITHER_EN				= BITS(12:12),	// Decimation filter output dither enable
483ffec4cb1Sshadow303 		ADC_CLK_SEL					= BITS(13:13),	// ADC clock select
484ffec4cb1Sshadow303 			ADC_CLK_SEL_4X			= 0 << 13,		//   Run ADC at 4x Fsc
485ffec4cb1Sshadow303 			ADC_CLK_SEL_8X			= 1 << 13,		//   Run ADC at 8x Fsc
486ffec4cb1Sshadow303 		ADC_BYPASS					= BITS(15:14),	// ADC data path select
487ffec4cb1Sshadow303 			ADC_BYPASS_INTERNAL		= 0 << 14,		//   Use internal ADC
488ffec4cb1Sshadow303 			ADC_BYPASS_EXTERNAL		= 1 << 14,		//   Use external ADC
489ffec4cb1Sshadow303 			ADC_BYPASS_SINGLE		= 2 << 14,		//   Use single step data
490ffec4cb1Sshadow303 		ADC_CH_GAIN_SEL				= BITS(17:16),	// Analog Chroma gain select
491ffec4cb1Sshadow303 			ADC_CH_GAIN_SEL_NTSC	= 0 << 16,		//   Set chroma gain for NTSC
492ffec4cb1Sshadow303 			ADC_CH_GAIN_SEL_PAL		= 1 << 16,		//   Set chroma gain for PAL
493ffec4cb1Sshadow303 		ADC_PAICM					= BITS(19:18),	// AMP common mode voltage select
494ffec4cb1Sshadow303 		ADC_PDCBIAS					= BITS(21:20),	// DC 1.5V bias programmable select
495ffec4cb1Sshadow303 		ADC_PREFHI					= BITS(23:22),	// ADC voltage reference high
496ffec4cb1Sshadow303 			ADC_PREFHI_2_7			= 0 << 22,		//   2.7V (recommended)
497ffec4cb1Sshadow303 			ADC_PREFHI_2_6			= 1 << 22,		//   2.6V
498ffec4cb1Sshadow303 			ADC_PREFHI_2_5			= 2 << 22,		//   2.5V
499ffec4cb1Sshadow303 			ADC_PREFHI_2_4			= 3 << 22,		//   2.4V
500ffec4cb1Sshadow303 		ADC_PREFLO					= BITS(25:24),	// ADC voltage reference low
501ffec4cb1Sshadow303 			ADC_PREFLO_1_8			= 0 << 24,		//   1.8V
502ffec4cb1Sshadow303 			ADC_PREFLO_1_7			= 1 << 24,		//   1.7V
503ffec4cb1Sshadow303 			ADC_PREFLO_1_6			= 2 << 24,		//   1.6V
504ffec4cb1Sshadow303 			ADC_PREFLO_1_5			= 3 << 24,		//   1.5V (recommended)
505ffec4cb1Sshadow303 		ADC_IMUXOFF					= BITS(26:26),
506ffec4cb1Sshadow303 		ADC_CPRESET					= BITS(27:27),	// AGC charge pump reset
507ffec4cb1Sshadow303 
508ffec4cb1Sshadow303 	VIP_ADC_DEBUG					= 0x0404,
509ffec4cb1Sshadow303 		ADC_PTST					= BITS(0:0),	// AGC test mode enable
510ffec4cb1Sshadow303 		ADC_PYPDN					= BITS(1:1),
511ffec4cb1Sshadow303 		ADC_PCPDN					= BITS(2:2),	// Chroma AGC path power down mode
512ffec4cb1Sshadow303 		ADC_PTSTA0					= BITS(3:3),	// AGC test mux A select bit 0
513ffec4cb1Sshadow303 		ADC_PTSTA1					= BITS(4:4),	// AGC test mux A select bit 1
514ffec4cb1Sshadow303 		ADC_PTSTB0					= BITS(5:5),	// AGC test mux B select bit 0
515ffec4cb1Sshadow303 		ADC_PTSTB1					= BITS(6:6),	// AGC test mux B select bit 1
516ffec4cb1Sshadow303 		ADC_TSTADC					= BITS(7:7),	// Luma & Chroma ADC test mode
517ffec4cb1Sshadow303 		ADC_TSTPROBEY				= BITS(8:8),	// Luma AGC/ADC test mode
518ffec4cb1Sshadow303 		ADC_TSTPROBEC				= BITS(9:9),	// Chroma AGC/ADC test mode
519ffec4cb1Sshadow303 		ADC_TSTPROBEADC				= BITS(10:10),	// Chroma ADC test structure probe mode
520ffec4cb1Sshadow303 		ADC_TSTADCBIAS				= BITS(11:11),	// Chroma ADC bias node probe mode
521ffec4cb1Sshadow303 		ADC_TSTADCREFM				= BITS(12:12),	// Middle reference point for Luma & Chroma ADC probe
522ffec4cb1Sshadow303 		ADC_TSTADCFBP				= BITS(13:13),	// Chroma ADC folding block positive output probe mode
523ffec4cb1Sshadow303 		ADC_TSTADCFBN				= BITS(14:14),	// Chroma ADC folding block negative output probe mode
524ffec4cb1Sshadow303 		ADC_TSTADCCMP1				= BITS(15:15),	// Chroma ADC comparator #1 output probe mode
525ffec4cb1Sshadow303 		ADC_TSTADCCMP9				= BITS(16:16),	// Chroma ADC comparator #9 output probe mode
526ffec4cb1Sshadow303 		ADC_TSTADCCMP17				= BITS(17:17),	// Chroma ADC comparator #19 output probe mode
527ffec4cb1Sshadow303 		ADC_TSTADCLATCH				= BITS(18:18),	// Dummy latch test mode
528ffec4cb1Sshadow303 		ADC_TSTADCCOMP				= BITS(19:19),	// Dummy comparator test mode
529ffec4cb1Sshadow303 
530ffec4cb1Sshadow303 	VIP_THERMO2BIN_STATUS			= 0x040c,
531ffec4cb1Sshadow303 		YOVERFLOW					= BITS(0:0),
532ffec4cb1Sshadow303 		YUNDERFLOW					= BITS(1:1),
533ffec4cb1Sshadow303 		YMSB_LOW_BY_ONE				= BITS(2:2),
534ffec4cb1Sshadow303 		YMSB_HI_BY_ONE				= BITS(3:3),
535ffec4cb1Sshadow303 		COVERFLOW					= BITS(4:4),
536ffec4cb1Sshadow303 		CUNDERFLOW					= BITS(5:5),
537ffec4cb1Sshadow303 		CMSB_LOW_BY_ONE				= BITS(6:6),
538ffec4cb1Sshadow303 		CMSB_HI_BY_ONE				= BITS(7:7),
539ffec4cb1Sshadow303 
540ffec4cb1Sshadow303 	// Video Decoder Sync Generator
541ffec4cb1Sshadow303 	VIP_SG_BLACK_GATE				= 0x04c0,		// horizontal blank
542ffec4cb1Sshadow303 		BLANK_INT_START				= BITS(7:0),	//   start of horizontal blank (49)
543ffec4cb1Sshadow303 		BLANK_INT_LENGTH			= BITS(11:8),
544ffec4cb1Sshadow303 
545ffec4cb1Sshadow303 	VIP_SG_SYNCTIP_GATE				= 0x04c4,		// synctip pulse
546ffec4cb1Sshadow303 		SYNC_TIP_START				= BITS(10:0),	//   start of sync pulse (882)
547ffec4cb1Sshadow303 		SYNC_TIP_LENGTH				= BITS(15:12),
548ffec4cb1Sshadow303 
549ffec4cb1Sshadow303 	VIP_SG_UVGATE_GATE				= 0x04c8,		// chroma burst
550ffec4cb1Sshadow303 		UV_INT_START				= BITS(7:0),	//   start of chroma burst (59)
551ffec4cb1Sshadow303 		U_INT_LENGTH				= BITS(11:8),
552ffec4cb1Sshadow303 		V_INT_LENGTH				= BITS(15:12),
553ffec4cb1Sshadow303 
554ffec4cb1Sshadow303 	// Video Decoder Luminance Processor
555ffec4cb1Sshadow303 	VIP_LP_AGC_CLAMP_CNTL0			= 0x0500,		// Luma AGC Clamp control
556ffec4cb1Sshadow303 		SYNCTIP_REF0				= BITS(7:0),	//   40 IRE reference
557ffec4cb1Sshadow303 		SYNCTIP_REF1				= BITS(15:8),
558ffec4cb1Sshadow303 		CLAMP_REF					= BITS(23:16),
559ffec4cb1Sshadow303 		AGC_PEAKWHITE				= BITS(31:24),
560ffec4cb1Sshadow303 
561ffec4cb1Sshadow303 	VIP_LP_AGC_CLAMP_CNTL1			= 0x0504,		// Luma AGC Clamp control
562ffec4cb1Sshadow303 		VBI_PEAKWHITE				= BITS(7:0),	//
563ffec4cb1Sshadow303 		CLAMPLOOP_EN				= BITS(24:24),	//   Run Clamp loop
564ffec4cb1Sshadow303 		CLAMPLOOP_INV				= BITS(25:25),	//   Negative Clamp Loop
565ffec4cb1Sshadow303 		AGCLOOP_EN					= BITS(26:26),	//   Run AGC loop
566ffec4cb1Sshadow303 		AGCLOOP_INV					= BITS(27:27),	//   Negative AGC loop
567ffec4cb1Sshadow303 
568ffec4cb1Sshadow303 	VIP_LP_BRIGHTNESS				= 0x0508,		// Luma Brightness control
569ffec4cb1Sshadow303 		BRIGHTNESS					= BITS(13:0),	//   Brightness level
570ffec4cb1Sshadow303 		LUMAFLT_SEL					= BITS(15:15),	//   Select flat filter
571ffec4cb1Sshadow303 
572ffec4cb1Sshadow303 	VIP_LP_CONTRAST					= 0x050c,		// Luma Contrast level
573ffec4cb1Sshadow303 		CONTRAST					= BITS(7:0),	//   Contrast level
574ffec4cb1Sshadow303 		DITHER_SEL					= BITS(9:8),	//   Dither selection
575ffec4cb1Sshadow303 			DITHER_SEL_TRUNC		= 0 << 8,		//     Truncation
576ffec4cb1Sshadow303 			DITHER_SEL_ROUND		= 1 << 8,		//     Round
577ffec4cb1Sshadow303 			DITHER_SEL_4BIT			= 2 << 8,		//     4 bit error
578ffec4cb1Sshadow303 			DITHER_SEL_9BIT			= 3 << 9,		//     9 bit error
579ffec4cb1Sshadow303 
580ffec4cb1Sshadow303 	VIP_LP_SLICE_LIMIT				= 0x0510,
581ffec4cb1Sshadow303 		SLICE_LIMIT_HI				= BITS(7:0),
582ffec4cb1Sshadow303 		SLICE_LIMIT_LO				= BITS(15:8),
583ffec4cb1Sshadow303 		SLICE_LIMIT					= BITS(23:16),
584ffec4cb1Sshadow303 
585ffec4cb1Sshadow303 	VIP_LP_WPA_CNTL0				= 0x0514,
586ffec4cb1Sshadow303 		WPA_THRESHOLD				= BITS(10:0),
587ffec4cb1Sshadow303 
588ffec4cb1Sshadow303 	VIP_LP_WPA_CNTL1				= 0x0518,
589ffec4cb1Sshadow303 		WPA_TRIGGER_LO				= BITS(9:0),
590ffec4cb1Sshadow303 		WPA_TRIGGER_HI				= BITS(25:16),
591ffec4cb1Sshadow303 
592ffec4cb1Sshadow303 	VIP_LP_BLACK_LEVEL				= 0x051c,
593ffec4cb1Sshadow303 		BLACK_LEVEL					= BITS(12:0),
594ffec4cb1Sshadow303 
595ffec4cb1Sshadow303 	VIP_LP_SLICE_LEVEL				= 0x0520,
596ffec4cb1Sshadow303 		SLICE_LEVEL					= BITS(7:0),
597ffec4cb1Sshadow303 
598ffec4cb1Sshadow303 	VIP_LP_SYNCTIP_LEVEL			= 0x0524,
599ffec4cb1Sshadow303 		SYNCTIP_LEVEL				= BITS(12:0),
600ffec4cb1Sshadow303 
601ffec4cb1Sshadow303 	VIP_LP_VERT_LOCKOUT				= 0x0528,
602ffec4cb1Sshadow303 		LP_LOCKOUT_START			= BITS(9:0),
603ffec4cb1Sshadow303 		LP_LOCKOUT_END				= BITS(25:16),
604ffec4cb1Sshadow303 
605ffec4cb1Sshadow303 	// Video Decoder Vertical Sync Detector/Counter
606ffec4cb1Sshadow303 	VIP_VS_DETECTOR_CNTL			= 0x0540,
607ffec4cb1Sshadow303 		VSYNC_INT_TRIGGER			= BITS(10:0),
608ffec4cb1Sshadow303 		VSYNC_INT_HOLD				= BITS(26:16),
609ffec4cb1Sshadow303 
610ffec4cb1Sshadow303 	VIP_VS_BLANKING_CNTL			= 0x0544,
611ffec4cb1Sshadow303 		VS_FIELD_BLANK_START		= BITS(9:0),
612ffec4cb1Sshadow303 		VS_FIELD_BLANK_END			= BITS(25:16),
613ffec4cb1Sshadow303 
614ffec4cb1Sshadow303 	VIP_VS_FIELD_ID_CNTL			= 0x0548,
615ffec4cb1Sshadow303 		VS_FIELD_ID_LOCATION		= BITS(8:0),
616ffec4cb1Sshadow303 
617ffec4cb1Sshadow303 	VIP_VS_COUNTER_CNTL				= 0x054c,		// Vertical Sync Counter control
618ffec4cb1Sshadow303 		FIELD_DETECT_MODE			= BITS(1:0),	//   Field detection mode
619ffec4cb1Sshadow303 			FIELD_DETECT_ARTIFICIAL	= 0 << 0,		//     Use artificial field
620ffec4cb1Sshadow303 			FIELD_DETECT_DETECTED	= 1 << 0,		//     Use detected field
621ffec4cb1Sshadow303 			FIELD_DETECT_AUTO		= 2 << 0,		//     Auto switch to Artificial if interlace is lost
622ffec4cb1Sshadow303 			FIELD_DETECT_FORCE		= 3 << 0,		//     Use field force bit
623ffec4cb1Sshadow303 		FIELD_FLIP_EN				= BITS(2:2),	// 	 Flip the fields
624ffec4cb1Sshadow303 		FIELD_FORCE_EN				= BITS(3:3),	//   Force field number
625ffec4cb1Sshadow303 		VSYNC_WINDOW_EN				= BITS(4:4),	//   Enable VSYNC window
626ffec4cb1Sshadow303 
627ffec4cb1Sshadow303 	VIP_VS_FRAME_TOTAL				= 0x0550,
628ffec4cb1Sshadow303 		VS_FRAME_TOTAL				= BITS(9:0),	// number of lines per frame
629ffec4cb1Sshadow303 
630ffec4cb1Sshadow303 	VIP_VS_LINE_COUNT				= 0x0554,
631ffec4cb1Sshadow303 		VS_LINE_COUNT				= BITS(9:0),	// current line counter
632ffec4cb1Sshadow303 		VS_ITU656_VB				= BITS(13:13),
633ffec4cb1Sshadow303 		VS_ITU656_FID				= BITS(14:14),
634ffec4cb1Sshadow303 		VS_INTERLACE_DETECTED		= BITS(15:15),
635ffec4cb1Sshadow303 		VS_DETECTED_LINES			= BITS(25:16),	// detected number of lines per frame
636ffec4cb1Sshadow303 		CURRENT_FIELD				= BITS(27:27),	// current field number (odd or even)
637ffec4cb1Sshadow303 		PREVIOUS_FIELD				= BITS(28:28),	// previous field number (odd or even)
638ffec4cb1Sshadow303 		ARTIFICIAL_FIELD			= BITS(29:29),
639ffec4cb1Sshadow303 		VS_WINDOW_COUNT				= BITS(31:30),
640ffec4cb1Sshadow303 
641ffec4cb1Sshadow303 	// Video Decoder Chroma Processor
642ffec4cb1Sshadow303 	VIP_CP_PLL_CNTL0				= 0x0580,
643ffec4cb1Sshadow303 		CH_DTO_INC					= BITS(23:0),
644ffec4cb1Sshadow303 		CH_PLL_SGAIN				= BITS(27:24),
645ffec4cb1Sshadow303 		CH_PLL_FGAIN				= BITS(31:28),
646ffec4cb1Sshadow303 
647ffec4cb1Sshadow303 	VIP_CP_PLL_CNTL1				= 0x0584,
648ffec4cb1Sshadow303 		VFIR						= BITS(0:0),	// 0=disable, 1=enable phase filter FIR
649ffec4cb1Sshadow303 		PFLIP						= BITS(1:1),	// 0=Use PAL/SECAM Vswitch as detected
650ffec4cb1Sshadow303 													// 1=Flip detected PAL/SECAM Vswitch
651ffec4cb1Sshadow303 		PFILT						= BITS(2:2),	// 0=Use sign bit of phase error for PAL Vswitch
652ffec4cb1Sshadow303 													// 1=Use PAL Vswitch filter
653ffec4cb1Sshadow303 
654ffec4cb1Sshadow303 	VIP_CP_HUE_CNTL					= 0x0588,
655ffec4cb1Sshadow303 		HUE_ADJ						= BITS(7:0),	// Hue adjustment
656ffec4cb1Sshadow303 
657ffec4cb1Sshadow303 	VIP_CP_BURST_GAIN				= 0x058c,
658ffec4cb1Sshadow303 		CR_BURST_GAIN				= BITS(8:0),
659ffec4cb1Sshadow303 		CB_BURST_GAIN				= BITS(24:16),
660ffec4cb1Sshadow303 
661ffec4cb1Sshadow303 	VIP_CP_AGC_CNTL					= 0x0590,
662ffec4cb1Sshadow303 		CH_HEIGHT					= BITS(7:0),
663ffec4cb1Sshadow303 		CH_KILL_LEVEL				= BITS(15:8),
664ffec4cb1Sshadow303 		CH_AGC_ERROR_LIM			= BITS(17:16),	// Force error to 0, 1, 2 or 3
665ffec4cb1Sshadow303 		CH_AGC_FILTER_EN			= BITS(18:18),	// 0=disable, 1=enable filter
666ffec4cb1Sshadow303 		CH_AGC_LOOP_SPEED			= BITS(19:19),	// 0=slow, 1=fast
667ffec4cb1Sshadow303 
668ffec4cb1Sshadow303 	VIP_CP_ACTIVE_GAIN				= 0x0594,
669ffec4cb1Sshadow303 		CRDR_ACTIVE_GAIN			= BITS(9:0),	// Saturation adjustment
670ffec4cb1Sshadow303 		CBDB_ACTIVE_GAIN			= BITS(25:16),
671ffec4cb1Sshadow303 
672ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS0				= 0x0598,
673ffec4cb1Sshadow303 		CH_GAIN_ACC0				= BITS(13:0),
674ffec4cb1Sshadow303 		CH_GAIN_ACC1				= BITS(29:16),
675ffec4cb1Sshadow303 
676ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS1				= 0x059c,
677ffec4cb1Sshadow303 		CH_VINT_OUT					= BITS(18:0),
678ffec4cb1Sshadow303 
679ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS2				= 0x05a0,
680ffec4cb1Sshadow303 		CH_UINT_OUT					= BITS(12:0),
681ffec4cb1Sshadow303 		CH_VSWITCH					= BITS(16:16),
682ffec4cb1Sshadow303 		CH_SECAM_SWITCH				= BITS(17:17),
683ffec4cb1Sshadow303 		CH_PAL_SWITCH				= BITS(18:18),
684ffec4cb1Sshadow303 		CH_PAL_FLT_STAT				= BITS(21:19),
685ffec4cb1Sshadow303 		CH_COLOR_KILL				= BITS(22:22),
686ffec4cb1Sshadow303 
687ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS3				= 0x05a4,
688ffec4cb1Sshadow303 		CH_ERROR_INT0				= BITS(20:0),
689ffec4cb1Sshadow303 
690ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS4				= 0x05a8,
691ffec4cb1Sshadow303 		CH_ERROR_INT1				= BITS(20:0),
692ffec4cb1Sshadow303 
693ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS5				= 0x05ac,
694ffec4cb1Sshadow303 		CH_FAST_PATH				= BITS(24:0),
695ffec4cb1Sshadow303 
696ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS6				= 0x05b0,
697ffec4cb1Sshadow303 		CH_SLOW_PATH				= BITS(24:0),
698ffec4cb1Sshadow303 
699ffec4cb1Sshadow303 	VIP_CP_PLL_STATUS7				= 0x05b4,
700ffec4cb1Sshadow303 		FIELD_BPHASE_COUNT			= BITS(5:0),
701ffec4cb1Sshadow303 		BPHASE_BURST_COUNT			= BITS(13:8),
702ffec4cb1Sshadow303 
703ffec4cb1Sshadow303 	VIP_CP_DEBUG_FORCE				= 0x05b8,
704ffec4cb1Sshadow303 		GAIN_FORCE_DATA				= BITS(11:0),
705ffec4cb1Sshadow303 		GAIN_FORCE_EN				= BITS(12:12),	// 0=disable, 1==enable force chroma gain
706ffec4cb1Sshadow303 
707ffec4cb1Sshadow303 	VIP_CP_VERT_LOCKOUT				= 0x05bc,
708ffec4cb1Sshadow303 		CP_LOCKOUT_START			= BITS(9:0),
709ffec4cb1Sshadow303 		CP_LOCKOUT_END				= BITS(25:16),
710ffec4cb1Sshadow303 
711ffec4cb1Sshadow303 	// Video Decoder Clip Engine and VBI Control
712ffec4cb1Sshadow303 	VIP_H_ACTIVE_WINDOW				= 0x05c0,
713ffec4cb1Sshadow303 		H_ACTIVE_START				= BITS(10:0),	// Horizotal active window
714ffec4cb1Sshadow303 		H_ACTIVE_END				= BITS(26:16),
715ffec4cb1Sshadow303 
716ffec4cb1Sshadow303 	VIP_V_ACTIVE_WINDOW				= 0x05c4,
717ffec4cb1Sshadow303 		V_ACTIVE_START				= BITS(9:0),	// Vertical active window
718ffec4cb1Sshadow303 		V_ACTIVE_END				= BITS(25:16),
719ffec4cb1Sshadow303 
720ffec4cb1Sshadow303 	VIP_H_VBI_WINDOW				= 0x05c8,
721ffec4cb1Sshadow303 		H_VBI_WIND_START			= BITS(10:0),	// Horizontal VBI window
722ffec4cb1Sshadow303 		H_VBI_WIND_END				= BITS(26:16),
723ffec4cb1Sshadow303 
724ffec4cb1Sshadow303 	VIP_V_VBI_WINDOW				= 0x05cc,
725ffec4cb1Sshadow303 		V_VBI_WIND_START			= BITS(9:0),	// Vertical VBI window
726ffec4cb1Sshadow303 		V_VBI_WIND_END				= BITS(25:16),
727ffec4cb1Sshadow303 
728ffec4cb1Sshadow303 	VIP_VBI_CONTROL					= 0x05d0,
729ffec4cb1Sshadow303 		VBI_CAPTURE_ENABLE			= BITS(1:0),	// Select VBI capture
730ffec4cb1Sshadow303 			VBI_CAPTURE_DIS			= 0 << 0,		//   Disable VBI capture
731ffec4cb1Sshadow303 			VBI_CAPTURE_EN			= 1 << 0,		//   Enable VBI capture
732ffec4cb1Sshadow303 			VBI_CAPTURE_RAW			= 2 << 0,		//   Enable Raw Video capture
733ffec4cb1Sshadow303 
734ffec4cb1Sshadow303 
735ffec4cb1Sshadow303 	// Video Decoder Standard
736ffec4cb1Sshadow303 	VIP_STANDARD_SELECT				= 0x0408,
737ffec4cb1Sshadow303 		STANDARD_SEL				= BITS(1:0),	// Select video standard
738ffec4cb1Sshadow303 			STANDARD_NTSC			= 0 << 0,		//   NTSC
739ffec4cb1Sshadow303 			STANDARD_PAL			= 1 << 0,		//   PAL
740ffec4cb1Sshadow303 			STANDARD_SECAM			= 2 << 0,		//   SECAM
741ffec4cb1Sshadow303 		YC_MODE						= BITS(2:2),	// Select YC video mode
742ffec4cb1Sshadow303 			YC_MODE_COMPOSITE		= 0 << 2,		//   Composite
743ffec4cb1Sshadow303 			YC_MODE_SVIDEO			= 1 << 2,		//   SVideo
744ffec4cb1Sshadow303 
745ffec4cb1Sshadow303 	// Video In Scaler and DVS Port
746ffec4cb1Sshadow303 	VIP_SCALER_IN_WINDOW			= 0x0618,		// Scaler In Window
747ffec4cb1Sshadow303 		H_IN_WIND_START				= BITS(10:0),	//   Horizontal start
748ffec4cb1Sshadow303 		V_IN_WIND_START				= BITS(25:16),	//   Vertical start
749ffec4cb1Sshadow303 
750ffec4cb1Sshadow303 	VIP_SCALER_OUT_WINDOW			= 0x061c,		// Scaler Out Window
751ffec4cb1Sshadow303 		H_OUT_WIND_WIDTH			= BITS(9:0),	//   Horizontal output window width
752ffec4cb1Sshadow303 		V_OUT_WIND_HEIGHT			= BITS(24:16),	//   Vertical output window height
753ffec4cb1Sshadow303 
754ffec4cb1Sshadow303 	VIP_H_SCALER_CONTROL			= 0x0600,		// Horizontal Scaler control
755ffec4cb1Sshadow303 		H_SCALE_RATIO				= BITS(20:0),	//   Horizontal scale ratio (5.16 fixed point)
756ffec4cb1Sshadow303 		H_SHARPNESS					= BITS(28:25),	//   Sharpness control (15=6dB high frequency boost)
757ffec4cb1Sshadow303 		H_BYPASS					= BITS(30:30),	//   Horizontal bypass enable
758ffec4cb1Sshadow303 
759ffec4cb1Sshadow303 	VIP_V_SCALER_CONTROL			= 0x0604,		// Vertical Scaler control
760ffec4cb1Sshadow303 		V_SCALE_RATIO				= BITS(11:0),	//   Vertical scaling ratio (1.11 fixed point)
761ffec4cb1Sshadow303 		V_DEINTERLACE_ON			= BITS(12:12),	//   Enable deinterlacing
762ffec4cb1Sshadow303 		V_FIELD_FLIP				= BITS(13:13),	//   Invert field flag
763ffec4cb1Sshadow303 		V_BYPASS					= BITS(14:14),	//   Enable vertical bypass
764ffec4cb1Sshadow303 		V_DITHER_ON					= BITS(15:15),	//   Vertical path dither enable
765ffec4cb1Sshadow303 
766ffec4cb1Sshadow303 	VIP_V_DEINTERLACE_CONTROL		= 0x0608,		// Deinterlace control
767ffec4cb1Sshadow303 		EVENF_OFFSET				= BITS(10:0),	//   Even Field offset
768ffec4cb1Sshadow303 		ODDF_OFFSET					= BITS(21:11),	//   Odd Field offset
769ffec4cb1Sshadow303 
770ffec4cb1Sshadow303 	VIP_VBI_SCALER_CONTROL			= 0x060c,		// VBI Scaler control
771ffec4cb1Sshadow303 		VBI_SCALING_RATIO			= BITS(16:0),	//   Scaling ratio for VBI data (1.16 fixed point)
772ffec4cb1Sshadow303 		VBI_ALIGNER_ENABLE			= BITS(17:17),	//   VBI/Raw data aligner enable
773ffec4cb1Sshadow303 
774ffec4cb1Sshadow303 	VIP_DVS_PORT_CTRL				= 0x0610,		// DVS Port control
775ffec4cb1Sshadow303 		DVS_DIRECTION				= BITS(0:0),	//   DVS direction
776ffec4cb1Sshadow303 			DVS_DIRECTION_INPUT		= 0 << 0,		//     Input mode
777ffec4cb1Sshadow303 			DVS_DIRECTION_OUTPUT	= 1 << 0,		//     Output mode
778ffec4cb1Sshadow303 		DVS_VBI_BYTE_SWAP			= BITS(1:1),	//   Output video stream type
779ffec4cb1Sshadow303 			DVS_VBI_BYTE_SEQUENTIAL	= 0 << 1,		//     Sequential
780ffec4cb1Sshadow303 			DVS_VBI_BYTE_SWAPPED	= 1 << 1,		//     Byte swapped
781ffec4cb1Sshadow303 		DVS_CLK_SELECT				= BITS(2:2),	//   DVS output clock select
782ffec4cb1Sshadow303 			DVS_CLK_SELECT_8X		= 0 << 2,		//     8x Fsc
783ffec4cb1Sshadow303 			DVS_CLK_SELECT_27MHz	= 1 << 2,		//     27 MHz
784ffec4cb1Sshadow303 		CONTINUOUS_STREAM			= BITS(3:3),	//   Enable continuous stream mode
785ffec4cb1Sshadow303 		DVSOUT_CLK_DRV				= BITS(4:4),	// 0=high, 1=low DVS port output clock buffer drive strength
786ffec4cb1Sshadow303 		DVSOUT_DATA_DRV				= BITS(5:5),	// 0=high, 1=low DVS port output data buffers driver strength
787ffec4cb1Sshadow303 
788ffec4cb1Sshadow303 	VIP_DVS_PORT_READBACK			= 0x0614,		// DVS Port readback
789ffec4cb1Sshadow303 		DVS_OUTPUT_READBACK			= BITS(7:0),	//   Data from DVS port fifo
790ffec4cb1Sshadow303 
791ffec4cb1Sshadow303 	// Clock and Reset Control
792ffec4cb1Sshadow303 	VIP_CLKOUT_GPIO_CNTL			= 0x0038,
793ffec4cb1Sshadow303 		CLKOUT0_SEL					= BITS(2:0),	// Select output to CLKOUT0_GPIO0 pin
794ffec4cb1Sshadow303 			CLKOUT0_SEL_REF_CLK		= 0 << 0,		//   Reference Clock
795ffec4cb1Sshadow303 			CLKOUT0_SEL_L54_CLK		= 1 << 0,		//   Lockable 54 MHz Clock
796ffec4cb1Sshadow303 			CLKOUT0_SEL_AUD_CLK		= 2 << 0,		//   Audio Source Clock
797ffec4cb1Sshadow303 			CLKOUT0_SEL_DIV_AUD_CLK	= 3 << 0,		//   Divided Audio Source Clock
798ffec4cb1Sshadow303 			CLKOUT0_SEL_BYTE_CLK	= 4 << 0,		//   Byte Clock
799ffec4cb1Sshadow303 			CLKOUT0_SEL_PIXEL_CLK	= 5 << 0,		//   Pixel Clock
800ffec4cb1Sshadow303 			CLKOUT0_SEL_TEST_MUX	= 6 << 0,		//   Clock Test Mux Output
801ffec4cb1Sshadow303 			CLKOUT0_SEL_GPIO0_OUT	= 7 << 0,		//   GPIO0_OUT
802ffec4cb1Sshadow303 		CLKOUT0_DRV					= BITS(3:3),	// Set drive strength for CLKOUT0_GPIO0 pin
803ffec4cb1Sshadow303 			CLKOUT0_DRV_8mA			= 0 << 3,		//   8 mA
804ffec4cb1Sshadow303 			CLKOUT0_DRV_4mA			= 1 << 3,		//   4 mA
805ffec4cb1Sshadow303 		CLKOUT1_SEL					= BITS(6:4),	// Select output to CLKOUT1_GPIO1 pin
806ffec4cb1Sshadow303 			CLKOUT1_SEL_REF_CLK		= 0 << 4,		//   Reference Clock
807ffec4cb1Sshadow303 			CLKOUT1_SEL_L54_CLK		= 1 << 4,		//   Lockable 54 MHz Clock
808ffec4cb1Sshadow303 			CLKOUT1_SEL_AUD_CLK		= 2 << 4,		//   Audio Source Clock
809ffec4cb1Sshadow303 			CLKOUT1_SEL_DIV_AUD_CLK	= 3 << 4,		//   Divided Audio Source Clock
810ffec4cb1Sshadow303 			CLKOUT1_SEL_PIXEL_CLK	= 4 << 4,		//   Pixel Clock
811ffec4cb1Sshadow303 			CLKOUT1_SEL_SPDIF_CLK	= 5 << 4,		//   SPDIF Clock
812ffec4cb1Sshadow303 			CLKOUT1_SEL_REG_CLK		= 6 << 4,		//   Register Clock
813ffec4cb1Sshadow303 			CLKOUT1_SEL_GPIO1_OUT	= 7 << 4,		//   GPIO1_OUT
814ffec4cb1Sshadow303 		CLKOUT1_DRV					= BITS(7:7),	// Set drive strength for CLKOUT1_GPIO1 pin
815ffec4cb1Sshadow303 			CLKOUT1_DRV_8mA			= 0 << 7,		//   8 mA
816ffec4cb1Sshadow303 			CLKOUT1_DRV_4mA			= 1 << 7,		//   4 mA
817ffec4cb1Sshadow303 		CLKOUT2_SEL					= BITS(10:8),	// Select output to CLKOUT2_GPIO2 pin
818ffec4cb1Sshadow303 			CLKOUT2_SEL_REF_CLK		= 0 << 0,		//   Reference Clock
819ffec4cb1Sshadow303 			CLKOUT2_SEL_L54_CLK		= 1 << 0,		//   Lockable 54 MHz Clock
820ffec4cb1Sshadow303 			CLKOUT2_SEL_AUD_CLK		= 2 << 0,		//   Audio Source Clock
821ffec4cb1Sshadow303 			CLKOUT2_SEL_DIV_AUD_CLK	= 3 << 0,		//   Divided Audio Source Clock
822ffec4cb1Sshadow303 			CLKOUT2_SEL_VIN_CLK		= 4 << 0,		//   Video In Clock
823ffec4cb1Sshadow303 			CLKOUT2_SEL_VIN_SC_CLK	= 5 << 0,		//   Video In Scaler Clock
824ffec4cb1Sshadow303 			CLKOUT2_SEL_TV_CLK		= 6 << 0,		//   TV Clock
825ffec4cb1Sshadow303 			CLKOUT2_SEL_GPIO2_OUT	= 7 << 0,		//   GPIO2_OUT
826ffec4cb1Sshadow303 		CLKOUT2_DRV					= BITS(11:11),	// Set drive strength for CLKOUT2_GPIO2 pin
827ffec4cb1Sshadow303 			CLKOUT2_DRV_8mA			= 0 << 11,		//   8 mA
828ffec4cb1Sshadow303 			CLKOUT2_DRV_4mA			= 1 << 11,		//   4 mA
829ffec4cb1Sshadow303 		CLKOUT1_DIV					= BITS(23:16),	// Postdivider for CLKOUT1
830ffec4cb1Sshadow303 		CLKOUT2_DIV					= BITS(31:24),	// Postdivider for CLKOUT2
831ffec4cb1Sshadow303 
832ffec4cb1Sshadow303 	VIP_MASTER_CNTL					= 0x0040,		// Master control
833ffec4cb1Sshadow303 		TV_ASYNC_RST				= BITS(0:0),	//   Reset several blocks that use the TV Clock
834ffec4cb1Sshadow303 		CRT_ASYNC_RST				= BITS(1:1),	//   Reset several blocks that use the CRT Clock
835ffec4cb1Sshadow303 		RESTART_PHASE_FIX			= BITS(3:3),	//
836ffec4cb1Sshadow303 		TV_FIFO_ASYNC_RST			= BITS(4:4),	//
837ffec4cb1Sshadow303 		VIN_ASYNC_RST				= BITS(5:5),	//   Reset several blocks that use the VIN, ADC or SIN Clock
838ffec4cb1Sshadow303 		AUD_ASYNC_RST				= BITS(6:6),	//   Reset several blocks that use the SPDIF or I2S Clock
839ffec4cb1Sshadow303 		DVS_ASYNC_RST				= BITS(7:7),	//   Reset several blocks that use the DVSOUT Clock
840ffec4cb1Sshadow303 		CLKOUT_CLK_SEL				= BITS(8:8),	//   External BYTE clock
841ffec4cb1Sshadow303 		CRT_FIFO_CE_EN				= BITS(9:9),	//
842ffec4cb1Sshadow303 		TV_FIFO_CE_EN				= BITS(10:10),
843ffec4cb1Sshadow303 
844ffec4cb1Sshadow303 	VIP_CLKOUT_CNTL					= 0x004c,
845ffec4cb1Sshadow303 		CLKOUT_OE					= BITS(0:0),
846ffec4cb1Sshadow303 		CLKOUT_PUB					= BITS(3:3),
847ffec4cb1Sshadow303 		CLKOUT_PD					= BITS(4:4),
848ffec4cb1Sshadow303 		CLKOUT_DRV					= BITS(5:5),
849ffec4cb1Sshadow303 
850ffec4cb1Sshadow303 	VIP_TV_PLL_CNTL					= 0x00c0,
851ffec4cb1Sshadow303 		TV_M0_LO					= BITS(7:0),
852ffec4cb1Sshadow303 		TV_N0_LO					= BITS(16:8),
853ffec4cb1Sshadow303 		TV_M0_HI					= BITS(20:18),
854ffec4cb1Sshadow303 		TV_N0_HI					= BITS(22:21),
855ffec4cb1Sshadow303 		TV_SLIP_EN					= BITS(23:23),
856ffec4cb1Sshadow303 		TV_P						= BITS(27:24),
857ffec4cb1Sshadow303 		TV_DTO_EN					= BITS(28:28),
858ffec4cb1Sshadow303 		TV_DTO_TYPE					= BITS(29:29),
859ffec4cb1Sshadow303 		TV_REF_CLK_SEL				= BITS(31:30),
860ffec4cb1Sshadow303 
861ffec4cb1Sshadow303 	VIP_CRT_PLL_CNTL				= 0x00c4,
862ffec4cb1Sshadow303 		CRT_M0_LO					= BITS(7:0),
863ffec4cb1Sshadow303 		CRT_N0_LO					= BITS(16:8),
864ffec4cb1Sshadow303 		CRT_M0_HI					= BITS(20:18),
865ffec4cb1Sshadow303 		CRT_N0_HI					= BITS(22:21),
866ffec4cb1Sshadow303 		CRTCLK_USE_CLKBY2			= BITS(25:25),
867ffec4cb1Sshadow303 		CRT_MNFLIP_EN				= BITS(26:26),
868ffec4cb1Sshadow303 		CRT_SLIP_EN					= BITS(27:27),
869ffec4cb1Sshadow303 		CRT_DTO_EN					= BITS(28:28),
870ffec4cb1Sshadow303 		CRT_DTO_TYPE				= BITS(29:29),
871ffec4cb1Sshadow303 		CRT_REF_CLK_SEL				= BITS(31:30),
872ffec4cb1Sshadow303 
873ffec4cb1Sshadow303 	VIP_PLL_CNTL0					= 0x00c8,
874ffec4cb1Sshadow303 		TVRST						= BITS(1:1),
875ffec4cb1Sshadow303 		CRTRST						= BITS(2:2),
876ffec4cb1Sshadow303 		TVSLEEPB					= BITS(3:3),
877ffec4cb1Sshadow303 		CRTSLEEPB					= BITS(4:4),
878ffec4cb1Sshadow303 		TVPCP						= BITS(10:8),
879ffec4cb1Sshadow303 		TVPVG						= BITS(12:11),
880ffec4cb1Sshadow303 		TVPDC						= BITS(15:13),
881ffec4cb1Sshadow303 		CRTPCP						= BITS(18:16),
882ffec4cb1Sshadow303 		CRTPVG						= BITS(20:19),
883ffec4cb1Sshadow303 		CRTPDC						= BITS(23:21),
884ffec4cb1Sshadow303 		CKMONEN						= BITS(24:24),
885ffec4cb1Sshadow303 
886ffec4cb1Sshadow303 	VIP_PLL_TEST_CNTL				= 0x00cc,
887ffec4cb1Sshadow303 		PLL_TEST					= BITS(0:0),
888ffec4cb1Sshadow303 		PLL_TST_RST					= BITS(1:1),
889ffec4cb1Sshadow303 		PLL_TST_DIV					= BITS(2:2),
890ffec4cb1Sshadow303 		PLL_TST_CNT_RST				= BITS(3:3),
891ffec4cb1Sshadow303 		STOP_REF_CLK				= BITS(7:7),
892ffec4cb1Sshadow303 		PLL_TST_SEL					= BITS(13:8),
893ffec4cb1Sshadow303 		PLL_TEST_COUNT				= BITS(31:16),
894ffec4cb1Sshadow303 
895ffec4cb1Sshadow303 	VIP_CLOCK_SEL_CNTL				= 0x00d0,
896ffec4cb1Sshadow303 		TV_CLK_SEL					= BITS(0:0),
897ffec4cb1Sshadow303 		CRT_CLK_SEL					= BITS(1:1),
898ffec4cb1Sshadow303 		BYT_CLK_SEL					= BITS(3:2),
899ffec4cb1Sshadow303 		PIX_CLK_SEL					= BITS(4:4),
900ffec4cb1Sshadow303 		REG_CLK_SEL					= BITS(5:5),
901ffec4cb1Sshadow303 		TST_CLK_SEL					= BITS(6:6),
902ffec4cb1Sshadow303 		VIN_CLK_SEL					= BITS(7:7),	// Select VIN clock
903ffec4cb1Sshadow303 			VIN_CLK_SEL_REF_CLK		= 0 << 7,		//   Select reference clock
904ffec4cb1Sshadow303 			VIN_CLK_SEL_VIPLL_CLK	= 1 << 7,		//   Select VIN PLL clock
905ffec4cb1Sshadow303 		BYT_CLK_DEL					= BITS(10:8),
906ffec4cb1Sshadow303 		AUD_CLK_SEL					= BITS(11:11),
907ffec4cb1Sshadow303 		L54_CLK_SEL					= BITS(12:12),
908ffec4cb1Sshadow303 		MV_ZONE_1_PHASE				= BITS(13:13),
909ffec4cb1Sshadow303 		MV_ZONE_2_PHASE				= BITS(14:14),
910ffec4cb1Sshadow303 		MV_ZONE_3_PHASE				= BITS(15:15),
911ffec4cb1Sshadow303 
912ffec4cb1Sshadow303 	VIP_VIN_PLL_CNTL				= 0x00d4,		// VIN PLL control
913ffec4cb1Sshadow303 		VIN_M0						= BITS(10:0),	//   Reference divider
914ffec4cb1Sshadow303 		VIN_N0						= BITS(21:11),	//   Feedback divider
915ffec4cb1Sshadow303 		VIN_MNFLIP_EN				= BITS(22:22),	//   M/N flip enable
916ffec4cb1Sshadow303 		VIN_P						= BITS(27:24),	//   Post divider
917ffec4cb1Sshadow303 		VIN_REF_CLK_SEL				= BITS(31:30),	//   VIN reference source select
918ffec4cb1Sshadow303 			VIN_REF_CLK				= 0 << 30,		//     Reference clock
919ffec4cb1Sshadow303 			VIN_SEC_REF_CLK			= 1 << 30,		//     Secondary Reference Clock
920*97f865f7SJérôme Duval 			VIN_L54_CLK				= 2U << 30,		//     L54 PLL Clock
921*97f865f7SJérôme Duval 			VIN_SLIP_L54_CLK		= 3U << 30,		//     Slippable L54 PLL Clock
922ffec4cb1Sshadow303 
923ffec4cb1Sshadow303 	VIP_VIN_PLL_FINE_CNTL			= 0x00d8,
924ffec4cb1Sshadow303 		VIN_M1						= BITS(10:0),
925ffec4cb1Sshadow303 		VIN_N1						= BITS(21:11),
926ffec4cb1Sshadow303 		VIN_DIVIDER_SEL				= BITS(22:22),
927ffec4cb1Sshadow303 		VIN_MNFLIP_REQ				= BITS(23:23),
928ffec4cb1Sshadow303 		VIN_MNFLIP_DONE				= BITS(24:24),
929ffec4cb1Sshadow303 		TV_LOCK_TO_VIN				= BITS(27:27),
930ffec4cb1Sshadow303 		TV_P_FOR_VINCLK				= BITS(31:28),
931ffec4cb1Sshadow303 
932ffec4cb1Sshadow303 	VIP_AUD_PLL_CNTL				= 0x00e0,
933ffec4cb1Sshadow303 		AUD_M0						= BITS(10:0),
934ffec4cb1Sshadow303 		AUD_N0						= BITS(21:11),
935ffec4cb1Sshadow303 		AUD_MNFLIP_EN				= BITS(22:22),
936ffec4cb1Sshadow303 		AUD_SLIP_EN					= BITS(23:23),
937ffec4cb1Sshadow303 		AUD_P						= BITS(27:24),
938ffec4cb1Sshadow303 		AUD_DTO_EN					= BITS(28:28),
939ffec4cb1Sshadow303 		AUD_DTO_TYPE				= BITS(29:29),
940ffec4cb1Sshadow303 		AUD_REF_CLK_SEL				= BITS(31:30),
941ffec4cb1Sshadow303 
942ffec4cb1Sshadow303 	VIP_AUD_PLL_FINE_CNTL			= 0x00e4,
943ffec4cb1Sshadow303 		AUD_M1						= BITS(10:0),
944ffec4cb1Sshadow303 		AUD_N1						= BITS(21:11),
945ffec4cb1Sshadow303 		AUD_DIVIDER_SEL				= BITS(22:22),
946ffec4cb1Sshadow303 		AUD_MNFLIP_REQ				= BITS(23:23),
947ffec4cb1Sshadow303 		AUD_MNFLIP_DONE				= BITS(24:24),
948ffec4cb1Sshadow303 		AUD_SLIP_REQ				= BITS(25:25),
949ffec4cb1Sshadow303 		AID_SLIP_DONE				= BITS(26:26),
950ffec4cb1Sshadow303 		AUD_SLIP_COUNT				= BITS(31:28),
951ffec4cb1Sshadow303 
952ffec4cb1Sshadow303 	VIP_AUD_CLK_DIVIDERS			= 0x00e8,
953ffec4cb1Sshadow303 		SPDIF_P						= BITS(3:0),
954ffec4cb1Sshadow303 		I2S_P						= BITS(7:4),
955ffec4cb1Sshadow303 		DIV_AUD_P					= BITS(11:8),
956ffec4cb1Sshadow303 
957ffec4cb1Sshadow303 	VIP_AUD_DTO_INCREMENTS			= 0x00ec,
958ffec4cb1Sshadow303 		AUD_DTO_INC0				= BITS(15:0),
959ffec4cb1Sshadow303 		AUD_DTO_INC1				= BITS(31:16),
960ffec4cb1Sshadow303 
961ffec4cb1Sshadow303 	VIP_L54_PLL_CNTL				= 0x00f0,
962ffec4cb1Sshadow303 		L54_M0						= BITS(7:0),
963ffec4cb1Sshadow303 		L54_N0						= BITS(21:11),
964ffec4cb1Sshadow303 		L54_MNFLIP_EN				= BITS(22:22),
965ffec4cb1Sshadow303 		L54_SLIP_EN					= BITS(23:23),
966ffec4cb1Sshadow303 		L54_P						= BITS(27:24),
967ffec4cb1Sshadow303 		L54_DTO_EN					= BITS(28:28),
968ffec4cb1Sshadow303 		L54_DTO_TYPE				= BITS(29:29),
969ffec4cb1Sshadow303 		L54_REF_CLK_SEL				= BITS(30:30),
970ffec4cb1Sshadow303 
971ffec4cb1Sshadow303 	VIP_L54_PLL_FINE_CNTL			= 0x00f4,
972ffec4cb1Sshadow303 		L54_M1						= BITS(7:0),
973ffec4cb1Sshadow303 		L54_N1						= BITS(21:11),
974ffec4cb1Sshadow303 		L54_DIVIDER_SEL				= BITS(22:22),
975ffec4cb1Sshadow303 		L54_MNFLIP_REQ				= BITS(23:23),
976ffec4cb1Sshadow303 		L54_MNFLIP_DONE				= BITS(24:24),
977ffec4cb1Sshadow303 		L54_SLIP_REQ				= BITS(25:25),
978ffec4cb1Sshadow303 		L54_SLIP_DONE				= BITS(26:26),
979ffec4cb1Sshadow303 		L54_SLIP_COUNT				= BITS(31:28),
980ffec4cb1Sshadow303 
981ffec4cb1Sshadow303 	VIP_L54_DTO_INCREMENTS			= 0x00f8,
982ffec4cb1Sshadow303 		L54_DTO_INC0				= BITS(15:0),
983ffec4cb1Sshadow303 		L54_DTO_INC1				= BITS(31:16),
984ffec4cb1Sshadow303 
985ffec4cb1Sshadow303 	VIP_PLL_CNTL1					= 0x00fc,
986ffec4cb1Sshadow303 		VINRST						= BITS(1:1),	// 0=active, 1=reset
987ffec4cb1Sshadow303 		AUDRST						= BITS(2:2),
988ffec4cb1Sshadow303 		L54RST						= BITS(3:3),
989ffec4cb1Sshadow303 		VINSLEEPB					= BITS(4:4),
990ffec4cb1Sshadow303 		AUDSLEEPB					= BITS(5:5),
991ffec4cb1Sshadow303 		L54SLEEPB					= BITS(6:6),
992ffec4cb1Sshadow303 		VINPCP						= BITS(10:8),
993ffec4cb1Sshadow303 		VINPVG						= BITS(12:11),
994ffec4cb1Sshadow303 		VINPDC						= BITS(15:13),
995ffec4cb1Sshadow303 		AUDPCP						= BITS(18:16),
996ffec4cb1Sshadow303 		AUDPVG						= BITS(20:19),
997ffec4cb1Sshadow303 		L54PCP						= BITS(26:24),
998ffec4cb1Sshadow303 		L54PVG						= BITS(28:27),
999ffec4cb1Sshadow303 		L54PDC						= BITS(31:29),
1000ffec4cb1Sshadow303 
1001ffec4cb1Sshadow303 	// Audio Interfaces
1002ffec4cb1Sshadow303 	VIP_FIFOA_CONFIG				= 0x0800,
1003ffec4cb1Sshadow303 		ENT_FIFOA					= BITS(8:0),
1004ffec4cb1Sshadow303 		START_FIFOA					= BITS(17:16),
1005ffec4cb1Sshadow303 			START_FIFOA_ADDR_0		= 0 << 16,
1006ffec4cb1Sshadow303 			START_FIFOA_ADDR_64		= 1 << 16,
1007ffec4cb1Sshadow303 			START_FIFOA_ADDR_128	= 2 << 16,
1008ffec4cb1Sshadow303 			START_FIFOA_ADDR_192	= 3 << 16,
1009ffec4cb1Sshadow303 		END_FIFOA					= BITS(19:18),
1010ffec4cb1Sshadow303 			END_FIFOA_ADDR_63		= 0 << 18,
1011ffec4cb1Sshadow303 			END_FIFOA_ADDR_127		= 1 << 18,
1012ffec4cb1Sshadow303 			END_FIFOA_ADDR_191		= 2 << 18,
1013ffec4cb1Sshadow303 			END_FIFOA_ADDR_255		= 3 << 18,
1014ffec4cb1Sshadow303 		TEST_EN_FIFOA				= BITS(20:20),
1015ffec4cb1Sshadow303 		RST_FIFOA					= BITS(21:21),
1016ffec4cb1Sshadow303 		WT_FIFOA_FULL				= BITS(22:22),
1017ffec4cb1Sshadow303 		EMPTY_FIFOA					= BITS(23:23),
1018ffec4cb1Sshadow303 
1019ffec4cb1Sshadow303 	VIP_FIFOB_CONFIG				= 0x0804,
1020ffec4cb1Sshadow303 		ENT_FIFOB					= BITS(8:0),
1021ffec4cb1Sshadow303 		START_FIFOB					= BITS(17:16),
1022ffec4cb1Sshadow303 		END_FIFOB					= BITS(19:18),
1023ffec4cb1Sshadow303 		TEST_EN_FIFOB				= BITS(20:20),
1024ffec4cb1Sshadow303 		RST_FIFOB					= BITS(21:21),
1025ffec4cb1Sshadow303 		WT_FIFOB_FULL				= BITS(22:22),
1026ffec4cb1Sshadow303 		EMPTY_FIFOB					= BITS(23:23),
1027ffec4cb1Sshadow303 
1028ffec4cb1Sshadow303 	VIP_FIFOC_CONFIG				= 0x0808,
1029ffec4cb1Sshadow303 		ENT_FIFOC					= BITS(8:0),
1030ffec4cb1Sshadow303 		START_FIFOC					= BITS(17:16),
1031ffec4cb1Sshadow303 		END_FIFOC					= BITS(19:18),
1032ffec4cb1Sshadow303 		TEST_EN_FIFOC				= BITS(20:20),
1033ffec4cb1Sshadow303 		RST_FIFOC					= BITS(21:21),
1034ffec4cb1Sshadow303 		WT_FIFOC_FULL				= BITS(22:22),
1035ffec4cb1Sshadow303 		EMPTY_FIFOC					= BITS(23:23),
1036ffec4cb1Sshadow303 
1037ffec4cb1Sshadow303 	VIP_SPDIF_PORT_CNTL				= 0x080c,
1038ffec4cb1Sshadow303 		SPDIF_PORT_EN				= BITS(0:0),
1039ffec4cb1Sshadow303 		AC3_BURST_TRIGGER			= BITS(1:1),
1040ffec4cb1Sshadow303 		AC3_BURST_ACTIVE			= BITS(2:2),
1041ffec4cb1Sshadow303 		AC3_STREAM_MODE				= BITS(3:3),
1042ffec4cb1Sshadow303 		SWAP_AC3_ORDER				= BITS(4:4),
1043ffec4cb1Sshadow303 		TX_ON_NOT_EMPTY				= BITS(5:5),
1044ffec4cb1Sshadow303 		SPDIF_UNDERFLOW_CLEAR		= BITS(6:6),
1045ffec4cb1Sshadow303 		SPDIF_UNDERFLOW				= BITS(7:7),
1046ffec4cb1Sshadow303 		SPDIF_UNDERFLOW_CNT			= BITS(15:8),
1047ffec4cb1Sshadow303 		SPDIF_OE					= BITS(16:16),
1048ffec4cb1Sshadow303 		SPDIF_DRV					= BITS(19:19),
1049ffec4cb1Sshadow303 		PREAMBLE_AND_IDLE_SW		= BITS(24:24),
1050ffec4cb1Sshadow303 
1051ffec4cb1Sshadow303 	VIP_SPDIF_CHANNEL_STAT			= 0x0810,
1052ffec4cb1Sshadow303 		SPDIF_STATUS_BLOCK			= BITS(0:0),
1053ffec4cb1Sshadow303 		SPDIF_DATA_TYPE				= BITS(1:1),
1054ffec4cb1Sshadow303 		SPDIF_DIGITAL_COPY			= BITS(2:2),
1055ffec4cb1Sshadow303 		SPDIF_PREEMPHASIS			= BITS(5:3),
1056ffec4cb1Sshadow303 		SPDIF_MODE					= BITS(7:6),
1057ffec4cb1Sshadow303 		SPDIF_CATEGORY				= BITS(15:8),
1058ffec4cb1Sshadow303 		SPDIF_SRC_NUM				= BITS(19:16),
1059ffec4cb1Sshadow303 		SPDIF_NUM_CHANNELS			= BITS(23:20),
1060ffec4cb1Sshadow303 		SPDIF_SAMP_FREQ				= BITS(27:24),
1061ffec4cb1Sshadow303 		SPDIF_CLOCK_ACC				= BITS(29:28),
1062ffec4cb1Sshadow303 
1063ffec4cb1Sshadow303 	VIP_SPDIF_AC3_PREAMBLE			= 0x0814,
1064ffec4cb1Sshadow303 		AC3_DATA_TYPE				= BITS(4:0),
1065ffec4cb1Sshadow303 		AC3_ERR_FLAG				= BITS(7:7),
1066ffec4cb1Sshadow303 		AC3_DATA_DEPEN				= BITS(12:8),
1067ffec4cb1Sshadow303 		AC3_STREAM_NUM				= BITS(15:13),
1068ffec4cb1Sshadow303 		AC3_LENGTH_CODE				= BITS(31:16),
1069ffec4cb1Sshadow303 
1070ffec4cb1Sshadow303 	VIP_I2S_TRANSMIT_CNTL			= 0x0818,
1071ffec4cb1Sshadow303 		IISTX_PORT_EN				= BITS(0:0),
1072ffec4cb1Sshadow303 		IISTX_UNDERFLOW_CLEAR		= BITS(6:6),
1073ffec4cb1Sshadow303 		IISTX_UNDERFLOW				= BITS(7:7),
1074ffec4cb1Sshadow303 		IISTX_UNDERFLOW_FRAMES		= BITS(15:8),
1075ffec4cb1Sshadow303 		IIS_BITS_PER_CHAN			= BITS(21:16),
1076ffec4cb1Sshadow303 		IIS_SLAVE_EN				= BITS(24:24),
1077ffec4cb1Sshadow303 		IIS_LOOPBACK_EN				= BITS(25:25),
1078ffec4cb1Sshadow303 		ADO_OE						= BITS(26:26),
1079ffec4cb1Sshadow303 		ADIO_OE						= BITS(29:29),
1080ffec4cb1Sshadow303 		WS_OE						= BITS(30:30),
1081ffec4cb1Sshadow303 		BITCLK_OE					= BITS(31:31),
1082ffec4cb1Sshadow303 
1083ffec4cb1Sshadow303 	VIP_I2S_RECEIVE_CNTL			= 0x081c,
1084ffec4cb1Sshadow303 		IISRX_PORT_EN				= BITS(0:0),
1085ffec4cb1Sshadow303 		LOOPBACK_NO_UNDERFLOW		= BITS(5:5),
1086ffec4cb1Sshadow303 		IISRX_OVERFLOW_CLEAR		= BITS(6:6),
1087ffec4cb1Sshadow303 		IISRX_OVERFLOW				= BITS(7:7),
1088ffec4cb1Sshadow303 		IISRX_OVERFLOW_FRAMES		= BITS(15:8),
1089ffec4cb1Sshadow303 
1090ffec4cb1Sshadow303 	VIP_SPDIF_TX_CNT_REG			= 0x0820,
1091ffec4cb1Sshadow303 		SPDIF_TX_CNT				= BITS(23:0),
1092ffec4cb1Sshadow303 		SPDIF_TX_CNT_CLR			= BITS(24:24),
1093ffec4cb1Sshadow303 
1094ffec4cb1Sshadow303 	VIP_IIS_TX_CNT_REG				= 0x0824,
1095ffec4cb1Sshadow303 		IIS_TX_CNT					= BITS(23:0),
1096ffec4cb1Sshadow303 		IIS_TX_CNT_CLR				= BITS(24:24),
1097ffec4cb1Sshadow303 
1098ffec4cb1Sshadow303 	// Miscellaneous Registers
1099ffec4cb1Sshadow303 	VIP_HW_DEBUG					= 0x0010,
1100ffec4cb1Sshadow303 		HW_DEBUG_TBD				= BITS(15:0),
1101ffec4cb1Sshadow303 
1102ffec4cb1Sshadow303 	VIP_SW_SCRATCH					= 0x0014,
1103ffec4cb1Sshadow303 		SW_SCRATCH_TBD				= BITS(15:0),
1104ffec4cb1Sshadow303 
1105ffec4cb1Sshadow303 	VIP_I2C_CNTL_0					= 0x0020,
1106ffec4cb1Sshadow303 		I2C_DONE					= BITS(0:0),
1107ffec4cb1Sshadow303 		I2C_NACK					= BITS(1:1),
1108ffec4cb1Sshadow303 		I2C_HALT					= BITS(2:2),
1109ffec4cb1Sshadow303 		I2C_SOFT_RST				= BITS(5:5),
1110ffec4cb1Sshadow303 		SDA_DRIVE_EN				= BITS(6:6),
1111ffec4cb1Sshadow303 		I2C_DRIVE_SEL				= BITS(7:7),
1112ffec4cb1Sshadow303 		I2C_START					= BITS(8:8),
1113ffec4cb1Sshadow303 		I2C_STOP					= BITS(9:9),
1114ffec4cb1Sshadow303 		I2C_RECEIVE					= BITS(10:10),
1115ffec4cb1Sshadow303 		I2C_ABORT					= BITS(11:11),
1116ffec4cb1Sshadow303 		I2C_GO						= BITS(12:12),
1117ffec4cb1Sshadow303 		I2C_PRESCALE				= BITS(31:16),
1118ffec4cb1Sshadow303 
1119ffec4cb1Sshadow303 	VIP_I2C_CNTL_1					= 0x0024,
1120ffec4cb1Sshadow303 		I2C_DATA_COUNT				= BITS(3:0),
1121ffec4cb1Sshadow303 		I2C_ADDR_COUNT				= BITS(10:8),
1122ffec4cb1Sshadow303 		SCL_DRIVE_EN				= BITS(16:16),
1123ffec4cb1Sshadow303 		I2C_SEL						= BITS(17:17),
1124ffec4cb1Sshadow303 		I2C_TIME_LIMIT				= BITS(31:24),
1125ffec4cb1Sshadow303 
1126ffec4cb1Sshadow303 	VIP_I2C_DATA					= 0x0028,
1127ffec4cb1Sshadow303 		I2C_DATA					= BITS(7:0),
1128ffec4cb1Sshadow303 
1129ffec4cb1Sshadow303 	VIP_INT_CNTL					= 0x002c,
1130ffec4cb1Sshadow303 		I2C_INT_EN					= BITS(0:0),
1131ffec4cb1Sshadow303 		SPDIF_UF_INT_EN				= BITS(1:1),
1132ffec4cb1Sshadow303 		IISTX_UF_INT_EN				= BITS(2:2),
1133ffec4cb1Sshadow303 		IISTX_OF_INT_EN				= BITS(3:3),
1134ffec4cb1Sshadow303 		VIN_VSYNC_INT_EN			= BITS(4:4),
1135ffec4cb1Sshadow303 		VIN_VACTIVE_END_INT_EN		= BITS(5:5),
1136ffec4cb1Sshadow303 		VSYNC_DIFF_OVER_LIMIT_INT_EN= BITS(6:6),
1137ffec4cb1Sshadow303 		I2C_INT_AK					= BITS(16:16),
1138ffec4cb1Sshadow303 		I2C_INT						= BITS(16:16),
1139ffec4cb1Sshadow303 		SPDIF_UF_INT_AK				= BITS(17:17),
1140ffec4cb1Sshadow303 		SPDIF_UF_INT				= BITS(17:17),
1141ffec4cb1Sshadow303 		IISTX_UF_INT_AK				= BITS(18:18),
1142ffec4cb1Sshadow303 		IISTX_UF_INT				= BITS(18:18),
1143ffec4cb1Sshadow303 		IISRX_OF_INT_AK				= BITS(19:19),
1144ffec4cb1Sshadow303 		IISRX_OF_INT				= BITS(19:19),
1145ffec4cb1Sshadow303 		VIN_VSYNC_INT_AK			= BITS(20:20),
1146ffec4cb1Sshadow303 		VIN_VSYNC_INT				= BITS(20:20),
1147ffec4cb1Sshadow303 		VIN_VACTIVE_END_INT_AK		= BITS(21:21),
1148ffec4cb1Sshadow303 		VIN_VACTIVE_END_INT			= BITS(21:21),
1149ffec4cb1Sshadow303 		VSYNC_DIFF_OVER_LIMIT_INT_AK= BITS(22:22),
1150ffec4cb1Sshadow303 		VSYNC_DIFF_OVER_LIMIT_INT	= BITS(22:22),
1151ffec4cb1Sshadow303 
1152ffec4cb1Sshadow303 	VIP_GPIO_INOUT					= 0x0030,
1153ffec4cb1Sshadow303 		CLKOUT0_GPIO0_OUT			= BITS(0:0),
1154ffec4cb1Sshadow303 		CLKOUT0_GPIO1_OUT			= BITS(1:1),
1155ffec4cb1Sshadow303 		CLKOUT0_GPIO2_OUT			= BITS(2:2),
1156ffec4cb1Sshadow303 		GPIO_6TO3_OUT				= BITS(6:3),
1157ffec4cb1Sshadow303 		SPDIF_GPIO_OUT				= BITS(7:7),
1158ffec4cb1Sshadow303 		ADO_GPIO_OUT				= BITS(8:8),
1159ffec4cb1Sshadow303 		ADIO_GPIO_OUT				= BITS(9:9),
1160ffec4cb1Sshadow303 		WS_GPIO_OUT					= BITS(10:10),
1161ffec4cb1Sshadow303 		BITCLK_GPIO_OUT				= BITS(11:11),
1162ffec4cb1Sshadow303 		HAD_GPIO_OUT				= BITS(13:12),
1163ffec4cb1Sshadow303 		CLKOUT0_GPIO0_IN			= BITS(16:16),
1164ffec4cb1Sshadow303 		CLKOUT0_GPIO1_IN			= BITS(17:17),
1165ffec4cb1Sshadow303 		CLKOUT0_GPIO2_IN			= BITS(18:18),
1166ffec4cb1Sshadow303 		GPIO_6TO3_IN				= BITS(22:19),
1167ffec4cb1Sshadow303 		SPDIF_GPIO_IN				= BITS(23:23),
1168ffec4cb1Sshadow303 		ADO_GPIO_IN					= BITS(24:24),
1169ffec4cb1Sshadow303 		ADIO_GPIO_IN				= BITS(25:25),
1170ffec4cb1Sshadow303 		WS_GPIO_IN					= BITS(26:26),
1171ffec4cb1Sshadow303 		BITCLK_GPIO_IN				= BITS(27:27),
1172ffec4cb1Sshadow303 		HAD_GPIO_IN					= BITS(29:28),
1173ffec4cb1Sshadow303 
1174ffec4cb1Sshadow303 	VIP_GPIO_CNTL					= 0x0034,
1175ffec4cb1Sshadow303 		CLKOUT0_GPIO0_OE			= BITS(0:0),
1176ffec4cb1Sshadow303 		CLKOUT1_GPIO1_OE			= BITS(1:1),
1177ffec4cb1Sshadow303 		CLKOUT2_GPIO2_OE			= BITS(2:2),
1178ffec4cb1Sshadow303 		GPIO_6TO3_OE				= BITS(6:3),
1179ffec4cb1Sshadow303 		SPDIF_GPIO_OE				= BITS(7:7),
1180ffec4cb1Sshadow303 		ADO_GPIO_OE					= BITS(8:8),
1181ffec4cb1Sshadow303 		ADIO_GPIO_OE				= BITS(9:9),
1182ffec4cb1Sshadow303 		WS_GPIO_OE					= BITS(10:10),
1183ffec4cb1Sshadow303 		BITCLK_GPIO_OE				= BITS(11:11),
1184ffec4cb1Sshadow303 		HAD_GPIO_OE					= BITS(13:12),
1185ffec4cb1Sshadow303 		GPIO_6TO1_STRAPS			= BITS(22:17),
1186ffec4cb1Sshadow303 
1187ffec4cb1Sshadow303 	VIP_RIPINTF_PORT_CNTL			= 0x003c,
1188ffec4cb1Sshadow303 		MPP_DATA_DRV				= BITS(2:2),
1189ffec4cb1Sshadow303 		HAD_DRV						= BITS(3:3),
1190ffec4cb1Sshadow303 		HCTL_DRV					= BITS(4:4),
1191ffec4cb1Sshadow303 		SRDY_IRQb_DRV				= BITS(5:5),
1192ffec4cb1Sshadow303 		SUB_SYS_ID_EN				= BITS(16:16),
1193ffec4cb1Sshadow303 
1194ffec4cb1Sshadow303 	VIP_DECODER_DEBUG_CNTL			= 0x05d4,
1195ffec4cb1Sshadow303 		CHIP_DEBUG_SEL				= BITS(7:0),
1196ffec4cb1Sshadow303 		CHIP_DEBUG_EN				= BITS(8:8),
1197ffec4cb1Sshadow303 		DECODER_DEBUG_SEL			= BITS(15:12),
1198ffec4cb1Sshadow303 
1199ffec4cb1Sshadow303 	VIP_SINGLE_STEP_DATA			= 0x05d8,
1200ffec4cb1Sshadow303 		SS_C						= BITS(7:0),
1201ffec4cb1Sshadow303 		SS_Y						= BITS(15:8),
1202ffec4cb1Sshadow303 
1203ffec4cb1Sshadow303 	VIP_I2C_CNTL					= 0x0054,
1204ffec4cb1Sshadow303 		I2C_CLK_OE					= BITS(0:0),
1205ffec4cb1Sshadow303 		I2C_CLK_OUT					= BITS(1:1),
1206ffec4cb1Sshadow303 		I2C_CLK_IN					= BITS(2:2),
1207ffec4cb1Sshadow303 		I2C_DAT_OE					= BITS(4:4),
1208ffec4cb1Sshadow303 		I2C_DAT_OUT					= BITS(5:5),
1209ffec4cb1Sshadow303 		I2C_DAT_IN					= BITS(6:6),
1210ffec4cb1Sshadow303 		I2C_CLK_PUB					= BITS(8:8),
1211ffec4cb1Sshadow303 		I2C_CLK_PD					= BITS(9:9),
1212ffec4cb1Sshadow303 		I2C_CLK_DRV					= BITS(10:10),
1213ffec4cb1Sshadow303 		I2C_DAT_PUB					= BITS(12:12),
1214ffec4cb1Sshadow303 		I2C_DAT_PD					= BITS(13:13),
1215ffec4cb1Sshadow303 		I2C_DAT_DRV					= BITS(14:14),
1216ffec4cb1Sshadow303 		I2C_CLK_MX					= BITS(19:16),
1217ffec4cb1Sshadow303 		I2C_DAT_MX					= BITS(23:20),
1218ffec4cb1Sshadow303 		DELAY_TEST_MODE				= BITS(25:24),
1219ffec4cb1Sshadow303 
1220ffec4cb1Sshadow303 	// Undocumented Registers
1221ffec4cb1Sshadow303 	VIP_TV_PLL_FINE_CNTL			= 0x00b8,
1222ffec4cb1Sshadow303 	VIP_CRT_PLL_FINE_CNTL			= 0x00bc,
1223ffec4cb1Sshadow303 	VIP_MV_MODE_CNTL				= 0x0208,
1224ffec4cb1Sshadow303 	VIP_MV_STRIPE_CNTL				= 0x020c,
1225ffec4cb1Sshadow303 	VIP_MV_LEVEL_CNTL1				= 0x0210,
1226ffec4cb1Sshadow303 	VIP_MV_LEVEL_CNTL2				= 0x0214,
1227ffec4cb1Sshadow303 	VIP_MV_STATUS					= 0x0330,
1228ffec4cb1Sshadow303 	VIP_TV_DTO_INCREMENTS			= 0x0390,
1229ffec4cb1Sshadow303 	VIP_CRT_DTO_INCREMENTS			= 0x0394,
1230ffec4cb1Sshadow303 	VIP_VSYNC_DIFF_CNTL				= 0x03a0,
1231ffec4cb1Sshadow303 	VIP_VSYNC_DIFF_LIMITS			= 0x03a4,
1232863634b8SAxel Dörfler 	VIP_VSYNC_DIFF_RD_DATA			= 0x03a8,
1233863634b8SAxel Dörfler 
1234863634b8SAxel Dörfler 	DSP_OK							= 0x21,
1235863634b8SAxel Dörfler 	DSP_INVALID_PARAMETER			= 0x22,
1236863634b8SAxel Dörfler 	DSP_MISSING_PARAMETER			= 0x23,
1237863634b8SAxel Dörfler 	DSP_UNKNOWN_COMMAND				= 0x24,
1238863634b8SAxel Dörfler 	DSP_UNSUCCESS					= 0x25,
1239863634b8SAxel Dörfler 	DSP_BUSY						= 0x26,
1240863634b8SAxel Dörfler 	DSP_RESET_REQUIRED				= 0x27,
1241863634b8SAxel Dörfler 	DSP_UNKNOWN_RESULT				= 0x28,
1242863634b8SAxel Dörfler 	DSP_CRC_ERROR					= 0x29,
1243863634b8SAxel Dörfler 	DSP_AUDIO_GAIN_ADJ_FAIL			= 0x2a,
1244863634b8SAxel Dörfler 	DSP_AUDIO_GAIN_CHK_ERROR		= 0x2b,
1245863634b8SAxel Dörfler 	DSP_WARNING						= 0x2c,
1246863634b8SAxel Dörfler 	DSP_POWERDOWN_MODE				= 0x2d,
1247863634b8SAxel Dörfler 
1248863634b8SAxel Dörfler 	RT200_NTSC_M					= 0x01,
1249863634b8SAxel Dörfler 	RT200_NTSC_433					= 0x03,
1250863634b8SAxel Dörfler 	RT200_NTSC_J					= 0x04,
1251863634b8SAxel Dörfler 	RT200_PAL_B						= 0x05,
1252863634b8SAxel Dörfler 	RT200_PAL_D						= 0x06,
1253863634b8SAxel Dörfler 	RT200_PAL_G						= 0x07,
1254863634b8SAxel Dörfler 	RT200_PAL_H						= 0x08,
1255863634b8SAxel Dörfler 	RT200_PAL_I						= 0x09,
1256863634b8SAxel Dörfler 	RT200_PAL_N						= 0x0a,
1257863634b8SAxel Dörfler 	RT200_PAL_Ncomb					= 0x0b,
1258863634b8SAxel Dörfler 	RT200_PAL_M						= 0x0c,
1259863634b8SAxel Dörfler 	RT200_PAL_60					= 0x0d,
1260863634b8SAxel Dörfler 	RT200_SECAM						= 0x0e,
1261863634b8SAxel Dörfler 	RT200_SECAM_B					= 0x0f,
1262863634b8SAxel Dörfler 	RT200_SECAM_D					= 0x10,
1263863634b8SAxel Dörfler 	RT200_SECAM_G					= 0x11,
1264863634b8SAxel Dörfler 	RT200_SECAM_H					= 0x12,
1265863634b8SAxel Dörfler 	RT200_SECAM_K					= 0x13,
1266863634b8SAxel Dörfler 	RT200_SECAM_K1					= 0x14,
1267863634b8SAxel Dörfler 	RT200_SECAM_L					= 0x15,
1268863634b8SAxel Dörfler 	RT200_SECAM_L1					= 0x16,
1269863634b8SAxel Dörfler 	RT200_480i						= 0x17,
1270863634b8SAxel Dörfler 	RT200_480p						= 0x18,
1271863634b8SAxel Dörfler 	RT200_576i						= 0x19,
1272863634b8SAxel Dörfler 	RT200_720p						= 0x1a,
1273863634b8SAxel Dörfler 	RT200_1080i						= 0x1b
1274863634b8SAxel Dörfler 
1275863634b8SAxel Dörfler };
1276863634b8SAxel Dörfler 
1277863634b8SAxel Dörfler 
1278863634b8SAxel Dörfler /* RT200 stuff there's no way I'm converting these to enums...*/
1279863634b8SAxel Dörfler /* RT200 */
1280863634b8SAxel Dörfler #define VIP_INT_CNTL__FB_INT0                      0x02000000
1281863634b8SAxel Dörfler #define VIP_INT_CNTL__FB_INT0_CLR                  0x02000000
1282863634b8SAxel Dörfler #define VIP_GPIO_INOUT                             0x0030
1283863634b8SAxel Dörfler #define VIP_GPIO_CNTL                              0x0034
1284863634b8SAxel Dörfler #define VIP_CLKOUT_GPIO_CNTL                       0x0038
1285863634b8SAxel Dörfler #define VIP_RIPINTF_PORT_CNTL                      0x003c
1286863634b8SAxel Dörfler 
1287863634b8SAxel Dörfler /* RT200 */
1288863634b8SAxel Dörfler #define VIP_GPIO_INOUT                             0x0030
1289863634b8SAxel Dörfler #define VIP_GPIO_CNTL                              0x0034
1290863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL                     0x003c
1291863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SN    0x00000008
1292863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SP    0x00000080
1293863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SR    0x00000100
1294863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__SUB_SYS_ID_EN      0x00010000
1295863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFO_RW_MODE       0x00300000
1296863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOA_ENDIAN_SWAP  0x00c00000
1297863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOB_ENDIAN_SWAP  0x03000000
1298863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOC_ENDIAN_SWAP  0x0c000000
1299863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOD_ENDIAN_SWAP  0x30000000
1300863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOE_ENDIAN_SWAP  0xc0000000
1301863634b8SAxel Dörfler 
1302863634b8SAxel Dörfler /* RT200 */
1303863634b8SAxel Dörfler #define VIP_DSP_PLL_CNTL                           0x0bc
1304863634b8SAxel Dörfler 
1305863634b8SAxel Dörfler /* RT200 */
1306863634b8SAxel Dörfler #define VIP_TC_SOURCE                              0x300
1307863634b8SAxel Dörfler #define VIP_TC_DESTINATION                         0x304
1308863634b8SAxel Dörfler #define VIP_TC_COMMAND                             0x308
1309863634b8SAxel Dörfler 
1310863634b8SAxel Dörfler /* RT200 */
1311863634b8SAxel Dörfler #define VIP_TC_STATUS                              0x030c
1312863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_CHAN_BUSY                0x00007fff
1313863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_WRITE_PENDING            0x00008000
1314863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_4_EMPTY             0x00040000
1315863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_6_EMPTY             0x00080000
1316863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_8_EMPTY             0x00100000
1317863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_10_EMPTY            0x00200000
1318863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_4_FULL              0x04000000
1319863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_6_FULL              0x08080000
1320863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_8_FULL              0x10080000
1321863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_10_FULL             0x20080000
1322863634b8SAxel Dörfler #define VIP_TC_STATUS__DSP_ILLEGAL_OP              0x80080000
1323863634b8SAxel Dörfler 
1324863634b8SAxel Dörfler /* RT200 */
1325863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD                            0x0310
1326863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD__TC_DONE_MASK              0x00003fff
1327863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD__TC_RESET_MODE             0x00060000
1328863634b8SAxel Dörfler 
1329863634b8SAxel Dörfler /* RT200 */
1330863634b8SAxel Dörfler #define VIP_FB_INT                                 0x0314
1331863634b8SAxel Dörfler #define VIP_FB_INT__INT_7                          0x00000080
1332863634b8SAxel Dörfler #define VIP_FB_SCRATCH0                            0x0318
1333863634b8SAxel Dörfler #define VIP_FB_SCRATCH1                            0x031c
1334863634b8SAxel Dörfler 
1335863634b8SAxel Dörfler struct rt200_microc_head
1336863634b8SAxel Dörfler {
1337863634b8SAxel Dörfler 	unsigned int device_id;
1338863634b8SAxel Dörfler 	unsigned int vendor_id;
1339863634b8SAxel Dörfler 	unsigned int revision_id;
1340863634b8SAxel Dörfler 	unsigned int num_seg;
1341863634b8SAxel Dörfler };
1342863634b8SAxel Dörfler 
1343863634b8SAxel Dörfler struct rt200_microc_seg
1344863634b8SAxel Dörfler {
1345863634b8SAxel Dörfler 	unsigned int num_bytes;
1346863634b8SAxel Dörfler 	unsigned int download_dst;
1347863634b8SAxel Dörfler 	unsigned int crc_val;
1348863634b8SAxel Dörfler 
1349863634b8SAxel Dörfler 	unsigned char* data;
1350863634b8SAxel Dörfler 	struct rt200_microc_seg* next;
1351863634b8SAxel Dörfler };
1352863634b8SAxel Dörfler 
1353863634b8SAxel Dörfler 
1354863634b8SAxel Dörfler struct rt200_microc_data
1355863634b8SAxel Dörfler {
1356863634b8SAxel Dörfler 	struct rt200_microc_head		microc_head;
1357863634b8SAxel Dörfler 	struct rt200_microc_seg*		microc_seg_list;
1358ffec4cb1Sshadow303 };
1359ffec4cb1Sshadow303 
1360ffec4cb1Sshadow303 #endif
1361