summaryrefslogblamecommitdiffstats
path: root/private/ntos/nthals/halr96b/mips/rgb525.h
blob: a4e53e09eab596f8b73729ce8b9ee3329ccf6598 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468



















































































































































































































































































































































































































































































                                                                                  
// #pragma comment(exestr, "@(#) rgb525.h 1.2 95/09/28 18:38:14 nec")
/************************************************************************
 *                                                                      *
 *  Copyright (c) 1994  3Dlabs Inc. Ltd.                                *
 *  All rights reserved                                                 *
 *                                                                      *
 * This software and its associated documentation contains proprietary, *
 * confidential and trade secret information of 3Dlabs Inc. Ltd. and    *
 * except as provided by written agreement with 3Dlabs Inc. Ltd.        *
 *                                                                      *
 * a) no part may be disclosed, distributed, reproduced, transmitted,   *
 *    transcribed, stored in a retrieval system, adapted or translated  *
 *    in any form or by any means electronic, mechanical, magnetic,     *
 *    optical, chemical, manual or otherwise,                           *
 *                                                                      *
 *    and                                                               *
 *                                                                      *
 * b) the recipient is not entitled to discover through reverse         *
 *    engineering or reverse compiling or other such techniques or      *
 *    processes the trade secrets contained therein or in the           *
 *    documentation.                                                    *
 *                                                                      *
 ************************************************************************/

#ifndef __RGB525_H__
#define __RGB525_H__

/************************************************************************/
/*	DIRECT ACCESS REGISTERS						*/
/************************************************************************/

/* direct registers on 64-bit boundaries */

#define	__RGB525_PalAddrWrite		0x00
#define __RGB525_PaletteData		0x08
#define __RGB525_PixelMask		0x10
#define __RGB525_PalAddrRead		0x18
#define __RGB525_IndexLow		0x20
#define __RGB525_IndexHigh		0x28
#define __RGB525_IndexedData		0x30
#define __RGB525_IndexControl		0x38

/************************************************************************/
/*	INDEXED REGISTERS - MISCELLANEOUS CONTROL			*/
/************************************************************************/

#define __RGB525_MiscControlOne			0x0070
#define __RGB525_MiscControlTwo			0x0071
#define __RGB525_MiscControlThree		0x0072
#define __RGB525_MiscClockControl		0x0002
#define __RGB525_SyncControl			0x0003
#define __RGB525_HSyncControl			0x0004
#define __RGB525_PowerManagement		0x0005
#define __RGB525_DACOperation			0x0006
#define __RGB525_PaletteControl			0x0007

/* MiscControlOne */

#define RGB525_MISR_CNTL_OFF			(0 << 7)
#define RGB525_MISR_CNTL_ON			(1 << 7)
#define RGB525_VMSK_CNTL_OFF			(0 << 6)
#define RGB525_VMSK_CNTL_ON			(1 << 6)
#define RGB525_PADR_RFMT_READ_ADDR		(0 << 5)
#define RGB525_PADR_RFMT_PAL_STATE		(1 << 5)
#define RGB525_SENS_DSAB_ENABLE			(0 << 4)
#define RGB525_SENS_DSAB_DISABLE		(1 << 4)
#define RGB525_SENS_SEL_BIT3			(0 << 3)
#define RGB525_SENS_SEL_BIT7			(1 << 3)
#define RGB525_VRAM_SIZE_32			(0 << 0)
#define RGB525_VRAM_SIZE_64			(1 << 0)

/* MiscControlTwo */

#define RGB525_PCLK_SEL_LCLK			(0 << 6)
#define RGB525_PCLK_SEL_PLL			(1 << 6)
#define RGB525_PCLK_SEL_EXT			(2 << 6)
#define RGB525_INTL_MODE_DISABLE		(0 << 5)
#define RGB525_INTL_MODE_ENABLE			(1 << 5)
#define RGB525_BLANK_CNTL_NORMAL		(0 << 4)
#define RGB525_BLANK_CNTL_BLANKED		(1 << 4)
#define RGB525_COL_RES_6_BIT			(0 << 2)
#define RGB525_COL_RES_8_BIT			(1 << 2)
#define RGB525_PORT_SEL_VGA			(0 << 0)
#define RGB525_PORT_SEL_VRAM			(1 << 0)

/* MiscControlThree */

#define RGB525_SWAP_RB_DISABLE			(0 << 7)
#define RGB525_SWAP_RB_ENABLE			(1 << 7)
#define RGB525_SWAP_WORD_31_00_FIRST		(0 << 4)
#define RGB525_SWAP_WORD_63_32_FIRST		(1 << 4)
#define RGB525_SWAP_NIB_07_04_FIRST		(0 << 2)
#define RGB525_SWAP_NIB_03_00_FIRST		(1 << 2)

/* MiscClockControl */

#define RGB525_DDOTCLK_ENABLE			(0 << 7)
#define RGB525_DDOTCLK_DISABLE			(1 << 7)
#define RGB525_SCLK_ENABLE			(0 << 6)
#define RGB525_SCLK_DISABLE			(1 << 6)
#define RGB525_B24P_DDOT_DIV_PLL		(0 << 5)
#define RGB525_B24P_DDOT_SCLK			(1 << 5)
#define RGB525_DDOT_PLL_DIV_1			(0 << 1)
#define RGB525_DDOT_PLL_DIV_2			(1 << 1)
#define RGB525_DDOT_PLL_DIV_4			(2 << 1)
#define RGB525_DDOT_PLL_DIV_8			(3 << 1)
#define RGB525_DDOT_PLL_DIV_16			(4 << 1)
#define RGB525_PLL_DISABLE			(0 << 0)
#define RGB525_PLL_ENABLE			(1 << 0)

/* SyncControl */

#define RGB525_DLY_CNTL_ADD			(0 << 7)
#define RGB525_DLY_SYNC_NOADD			(1 << 7)
#define RGB525_CSYN_INVT_DISABLE		(0 << 6)
#define RGB525_CSYN_INVT_ENABLE			(1 << 6)
#define RGB525_VSYN_INVT_DISABLE		(0 << 5)
#define RGB525_VSYN_INVT_ENABLE			(1 << 5)
#define RGB525_HSYN_INVT_DISABLE		(0 << 4)
#define RGB525_HSYN_INVT_ENABLE			(1 << 4)
#define RGB525_VSYN_CNTL_NORMAL			(0 << 2)
#define RGB525_VSYN_CNTL_HIGH			(1 << 2)
#define RGB525_VSYN_CNTL_LOW			(2 << 2)
#define RGB525_VSYN_CNTL_DISABLE		(3 << 2)
#define RGB525_HSYN_CNTL_NORMAL			(0 << 0)
#define RGB525_HSYN_CNTL_HIGH			(1 << 0)
#define RGB525_HSYN_CNTL_LOW			(2 << 0)
#define RGB525_HSYN_CNTL_DISABLE		(3 << 0)

/* HSyncControl */

#define RGB525_HSYN_POS(n)			((n) & 0xF)

/* PowerManagement */

#define RGB525_SCLK_PWR_NORMAL			(0 << 4)
#define RGB525_SCLK_PWR_DISABLE			(1 << 4)
#define RGB525_DDOT_PWR_NORMAL			(0 << 3)
#define RGB525_DDOT_PWR_DISABLE			(1 << 3)
#define RGB525_SYNC_PWR_NORMAL			(0 << 2)
#define RGB525_SYNC_PWR_DISABLE			(1 << 2)
#define RGB525_ICLK_PWR_NORMAL			(0 << 1)
#define RGB525_ICLK_PWR_DISABLE			(1 << 1)
#define RGB525_DAC_PWR_NORMAL			(0 << 0)
#define RGB525_DAC_PWR_DISABLE			(1 << 0)

/* DACOperation */

#define RGB525_SOG_DISABLE			(0 << 3)
#define RGB525_SOG_ENABLE			(1 << 3)
#define RGB525_BRB_NORMAL			(0 << 2)
#define RGB525_BRB_ALWAYS			(1 << 2)
#define RGB525_DSR_SLOW				(0 << 1)
#define RGB525_DSR_FAST				(1 << 1)
#define RGB525_DPE_DISABLE			(0 << 0)
#define RGB525_DPE_ENABLE			(1 << 0)

/* PaletteControl */

#define RGB525_6BIT_LINEAR_ENABLE		(0 << 7)
#define RGB525_6BIT_LINEAR_DISABLE		(1 << 7)
#define RGB525_PALETTE_PARTITION(n)		((n) & 0xF)

/************************************************************************/
/*	INDEXED REGISTERS - PIXEL REPRESENTATION			*/
/************************************************************************/

#define __RGB525_PixelFormat			0x000A
#define __RGB525_8BitPixelControl		0x000B
#define __RGB525_16BitPixelControl		0x000C
#define __RGB525_24BitPixelControl		0x000D
#define __RGB525_32BitPixelControl		0x000E

/* PixelFormat */

#define RGB525_PIXEL_FORMAT_4_BPP		(2 << 0)
#define RGB525_PIXEL_FORMAT_8_BPP		(3 << 0)
#define RGB525_PIXEL_FORMAT_16_BPP		(4 << 0)
#define RGB525_PIXEL_FORMAT_24_BPP		(5 << 0)
#define RGB525_PIXEL_FORMAT_32_BPP		(6 << 0)

/* 8BitPixelControl */

#define RGB525_B8_DCOL_INDIRECT			(0 << 0)
#define RGB525_B8_DCOL_DIRECT			(1 << 0)

/* 16BitPixelControl */

#define RGB525_B16_DCOL_INDIRECT		(0 << 6)
#define RGB525_B16_DCOL_DYNAMIC			(1 << 6)
#define RGB525_B16_DCOL_DIRECT			(3 << 6)
#define RGB525_B16_POL_FORCES_BYPASS		(0 << 5)
#define RGB525_B16_POL_FORCES_LOOKUP		(1 << 5)
#define RGB525_B16_ZIB				(0 << 2)
#define RGB525_B16_LINEAR			(1 << 2)
#define RGB525_B16_555				(0 << 1)
#define RGB525_B16_565				(1 << 1)
#define RGB525_B16_SPARSE			(0 << 0)
#define RGB525_B16_CONTIGUOUS			(1 << 0)

/* 24BitPixelControl */

#define RGB525_B24_DCOL_INDIRECT		(0 << 0)
#define RGB525_B24_DCOL_DIRECT			(1 << 0)

/* 32BitPixelControl */

#define RGB525_B32_POL_FORCES_BYPASS		(0 << 2)
#define RGB525_B32_POL_FORCES_LOOKUP		(1 << 2)
#define RGB525_B32_DCOL_INDIRECT		(0 << 0)
#define RGB525_B32_DCOL_DYNAMIC			(1 << 0)
#define RGB525_B32_DCOL_DIRECT			(3 << 0)

/************************************************************************/
/*	INDEXED REGISTERS - FREQUENCY CONTROL				*/
/************************************************************************/

#define __RGB525_PLLControlOne			0x0010
#define __RGB525_PLLControlTwo			0x0011
#define __RGB525_PLLRefDivCount			0x0014

#define __RGB525_F0				0x0020
#define __RGB525_F1				0x0021
#define __RGB525_F2				0x0022
#define __RGB525_F3				0x0023
#define __RGB525_F4				0x0024
#define __RGB525_F5				0x0025
#define __RGB525_F6				0x0026
#define __RGB525_F7				0x0027
#define __RGB525_F8				0x0028
#define __RGB525_F9				0x0029
#define __RGB525_F10				0x002A
#define __RGB525_F11				0x002B
#define __RGB525_F12				0x002C
#define __RGB525_F13				0x002D
#define __RGB525_F14				0x002E
#define __RGB525_F15				0x002F

#define __RGB525_M0				0x0020
#define __RGB525_M1				0x0022
#define __RGB525_M2				0x0024
#define __RGB525_M3				0x0026
#define __RGB525_M4				0x0028
#define __RGB525_M5				0x002A
#define __RGB525_M6				0x002C
#define __RGB525_M7				ox002E

#define __RGB525_N0				0x0021
#define __RGB525_N1				0x0023
#define __RGB525_N2				0x0025
#define __RGB525_N3				0x0027
#define __RGB525_N4				0x0029
#define __RGB525_N5				0x002B
#define __RGB525_N6				0x002D
#define __RGB525_N7				ox002F

/* PLLControlOne */

#define RGB525_REF_SRC_REFCLK			(0 << 4)
#define RGB525_REF_SRC_EXTCLK			(1 << 4)
#define RGB525_PLL_EXT_FS_DIRECT		(0 << 0)
#define RGB525_PLL_EXT_FS_M_N			(1 << 0)
#define RGB525_PLL_INT_FS_DIRECT		(2 << 0)
#define RGB525_PLL_INT_FS_M_N			(3 << 0)

/* PLLControlTwo */

#define RGB525_PLL_INT_FS(n)			((n) & 0xF)

/* PLLRefDivCount */

#define RGB525_REF_DIV_COUNT(n)			((n) & 0x1F)

#define RGB525_PLL_REFCLK_4_MHz			(0x02)
#define RGB525_PLL_REFCLK_6_MHz			(0x03)
#define RGB525_PLL_REFCLK_8_MHz			(0x04)
#define RGB525_PLL_REFCLK_10_MHz		(0x05)
#define RGB525_PLL_REFCLK_12_MHz		(0x06)
#define RGB525_PLL_REFCLK_14_MHz		(0x07)
#define RGB525_PLL_REFCLK_16_MHz		(0x08)
#define RGB525_PLL_REFCLK_18_MHz		(0x09)
#define RGB525_PLL_REFCLK_20_MHz		(0x0A)
#define RGB525_PLL_REFCLK_22_MHz		(0x0B)
#define RGB525_PLL_REFCLK_24_MHz		(0x0C)
#define RGB525_PLL_REFCLK_26_MHz		(0x0D)
#define RGB525_PLL_REFCLK_28_MHz		(0x0E)
#define RGB525_PLL_REFCLK_30_MHz		(0x0F)
#define RGB525_PLL_REFCLK_32_MHz		(0x10)
#define RGB525_PLL_REFCLK_34_MHz		(0x11)
#define RGB525_PLL_REFCLK_36_MHz		(0x12)
#define RGB525_PLL_REFCLK_38_MHz		(0x13)
#define RGB525_PLL_REFCLK_40_MHz		(0x14)
#define RGB525_PLL_REFCLK_42_MHz		(0x15)
#define RGB525_PLL_REFCLK_44_MHz		(0x16)
#define RGB525_PLL_REFCLK_46_MHz		(0x17)
#define RGB525_PLL_REFCLK_48_MHz		(0x18)
#define RGB525_PLL_REFCLK_50_MHz		(0x19)
#define RGB525_PLL_REFCLK_52_MHz		(0x1A)
#define RGB525_PLL_REFCLK_54_MHz		(0x1B)
#define RGB525_PLL_REFCLK_56_MHz		(0x1C)
#define RGB525_PLL_REFCLK_58_MHz		(0x1D)
#define RGB525_PLL_REFCLK_60_MHz		(0x1E)
#define RGB525_PLL_REFCLK_62_MHz		(0x1F)

/* F0-F15[7:0] */

#define RGB525_DF(n)				(((n) & 0x3) << 6)
#define RGB525_VCO_DIV_COUNT(n)			((n) & 0x3F)

/************************************************************************/
/*	INDEXED REGISTERS - CURSOR					*/
/************************************************************************/

#define __RGB525_CursorControl			0x0030
#define __RGB525_CursorXLow			0x0031
#define __RGB525_CursorXHigh			0x0032
#define __RGB525_CursorYLow			0x0033
#define __RGB525_CursorYHigh			0x0034
#define __RGB525_CursorHotSpotX			0x0035
#define __RGB525_CursorHotSpotY			0x0036
#define __RGB525_CursorColor1Red		0x0040
#define __RGB525_CursorColor1Green		0x0041
#define __RGB525_CursorColor1Blue		0x0042
#define __RGB525_CursorColor2Red		0x0043
#define __RGB525_CursorColor2Green		0x0044
#define __RGB525_CursorColor2Blue		0x0045
#define __RGB525_CursorColor3Red		0x0046
#define __RGB525_CursorColor3Green		0x0047
#define __RGB525_CursorColor3Blue		0x0048

/* CursorControl */

#define RGB525_SMLC_PART_0			(0 << 6)
#define RGB525_SMLC_PART_1			(1 << 6)
#define RGB525_SMLC_PART_2			(2 << 6)
#define RGB525_SMLC_PART_3			(3 << 6)
#define RGB525_PIX_ORDER_RIGHT_TO_LEFT		(0 << 5)
#define RGB525_PIX_ORDER_LEFT_TO_RIGHT		(1 << 5)
#define RGB525_LOC_READ_LAST_WRITTEN		(0 << 4)
#define RGB525_LOC_READ_ACTUAL_LOCATION		(1 << 4)
#define RGB525_UPDT_CNTL_DELAYED		(0 << 3)
#define RGB525_UPDT_CNTL_IMMEDIATE		(1 << 3)
#define RGB525_CURSOR_SIZE_32			(0 << 2)
#define RGB525_CURSOR_SIZE_64			(1 << 2)
#define RGB525_CURSOR_MODE_OFF			(0 << 0)
#define RGB525_CURSOR_MODE_3_COLOR		(1 << 0)
#define RGB525_CURSOR_MODE_2_COLOR_HL		(2 << 0)
#define RGB525_CURSOR_MODE_2_COLOR		(3 << 0)

/************************************************************************/
/*	INDEXED REGISTERS - BORDER COLOR				*/
/************************************************************************/

#define __RGB525_BorderColorRed			0x0060
#define __RGB525_BorderColorGreen		0x0061
#define __RGB525_BorderColorBlue		0x0062

/************************************************************************/
/*	INDEXED REGISTERS - DIAGNOSTIC SUPPORT				*/
/************************************************************************/

#define __RGB525_RevisionLevel			0x0000
#define __RGB525_ProductID			0x0001
#define __RGB525_DACSense			0x0082
#define __RGB525_MISRRed			0x0084
#define __RGB525_MISRGreen			0x0086
#define __RGB525_MISRBlue			0x0088
#define __RGB525_PLLVCODivInput			0x008E
#define __RGB525_PLLVCORefInput			0x008F
#define __RGB525_VramMaskLow			0x0090
#define __RGB525_VramMaskHigh			0x0091

/* RevisionLevel */

#define RGB525_PRODUCT_REV_LEVEL		0xF0

/* ProductID */

#define RGB525_PRODUCT_ID_CODE			0x01

/************************************************************************/
/*	INDEXED REGISTERS - CURSOR ARRAY				*/
/************************************************************************/

#define __RGB525_CursorArray			0x0100

/************************************************************************/
/*	DIRECT ACCESS MACROS							*/
/************************************************************************/
/*
 *  The pixel clock must be running to access the palette and the cursor
 *  array, and the timings for the microprocessor signals are specified
 *  in units of pixel clocks. Six clocks must be allowed for an internal
 *  access to complete, following a palette or cursor access.
 *
 *  In the worst case (VGA 640x480 resolution) the pixel clock is 40 ns,
 *  giving a time of 280 ns for seven pixel clocks. Assuming the fastest
 *  host clock is 100 MHz, a delay of 28 host clocks is required. Again
 *  assuming that the loop below takes 3 clocks per iteration, it should
 *  be executed at least 10 times.
 */

#define RGB525_DELAY							\
{									\
	volatile DWORD __rgb525_dly;					\
									\
	for (__rgb525_dly = 0; __rgb525_dly < 10; __rgb525_dly++);	\
}

/*
 *  All RGB525 accesses are followed by a short delay, as required by
 *  the AC Characteristics table in the RGB525 Databook. However, the
 *  text implies that non-palette or cursor-array accesses can happen
 *  closer together.  Everything is delayed here for simplicity.
 */

#define RGB525_ADDR(base, offset)			\
(							\
/*	(DWORD) ((volatile BYTE *)(base) + (offset)) */	\
	(DWORD) ((base) + (offset))	\
)

#define RGB525_WRITE(dac, offset, data)				\
{								\
/*	DWORD_WRITE(RGB525_ADDR((dac),(offset)), (data)); */ \
	WRITE_REGISTER_UCHAR(RGB525_ADDR((dac),(offset)), (UCHAR)(data));	\
	RGB525_DELAY;						\
}

#define RGB525_READ_BYTE(dac, offset, data)			\
{								\
	DWORD __rgb525_tmp;					\
								\
/*	DWORD_READ(RGB525_ADDR((dac),(offset)), __rgb525_tmp); */ \
	__rgb525_tmp = READ_REGISTER_UCHAR(RGB525_ADDR((dac),(offset)));	\
/*	(data) = (BYTE) (__rgb525_tmp & BYTE_MAX); */	\
	(data) = (UCHAR) (__rgb525_tmp & 0xff);			\
	RGB525_DELAY;						\
}

/************************************************************************/
/*	INDEXED ACCESS MACROS						*/
/************************************************************************/

#define RGB525_SET_INDEX(dac, index)					\
{									\
	RGB525_WRITE((dac), __RGB525_IndexLow, (index));		\
/*	RGB525_WRITE((dac), __RGB525_IndexHigh, (index) >> BYTE_BITS); */	\
	RGB525_WRITE((dac), __RGB525_IndexHigh, (index) >> 8);	\
}

#define RGB525_SET_REG(dac, index, data)			\
{								\
	RGB525_SET_INDEX((dac), (index));			\
	RGB525_WRITE((dac), __RGB525_IndexedData, (data));	\
}

#define RGB525_GET_REG(dac, index, data)			\
{								\
	RGB525_SET_INDEX((dac), (index));			\
	RGB525_READ_BYTE((dac), __RGB525_IndexedData, (data));	\
}

/************************************************************************/

#endif /* __RGB525_H__ */

/************************************************************************/