summaryrefslogtreecommitdiff
path: root/drivers/video/kyro/STG4000Reg.h
blob: 50f4670e92523a629cb2834cbac6e09e729003df (plain)
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
/*
 *  linux/drivers/video/kyro/STG4000Reg.h
 *
 *  Copyright (C) 2002 STMicroelectronics
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file COPYING in the main directory of this archive
 * for more details.
 */

#ifndef _STG4000REG_H
#define _STG4000REG_H

#define DWFILL unsigned long :32
#define WFILL unsigned short :16

/*
 * Macros that access memory mapped card registers in PCI space
 * Add an appropriate section for your OS or processor architecture.
 */
#if defined(__KERNEL__)
#include <asm/page.h>
#include <asm/io.h>
#define STG_WRITE_REG(reg,data) (writel(data,&pSTGReg->reg))
#define STG_READ_REG(reg)      (readl(&pSTGReg->reg))
#else
#define STG_WRITE_REG(reg,data) (pSTGReg->reg = data)
#define STG_READ_REG(reg)      (pSTGReg->reg)
#endif /* __KERNEL__ */

#define SET_BIT(n) (1<<(n))
#define CLEAR_BIT(n) (tmp &= ~(1<<n))
#define CLEAR_BITS_FRM_TO(frm, to) \
{\
int i; \
    for(i = frm; i<= to; i++) \
	{ \
	    tmp &= ~(1<<i); \
	} \
}

#define CLEAR_BIT_2(n) (usTemp &= ~(1<<n))
#define CLEAR_BITS_FRM_TO_2(frm, to) \
{\
int i; \
    for(i = frm; i<= to; i++) \
	{ \
	    usTemp &= ~(1<<i); \
	} \
}

/* LUT select */
typedef enum _LUT_USES {
	NO_LUT = 0, RESERVED, GRAPHICS, OVERLAY
} LUT_USES;

/* Primary surface pixel format select */
typedef enum _PIXEL_FORMAT {
	_8BPP = 0, _15BPP, _16BPP, _24BPP, _32BPP
} PIXEL_FORMAT;

/* Overlay blending mode select */
typedef enum _BLEND_MODE {
	GRAPHICS_MODE = 0, COLOR_KEY, PER_PIXEL_ALPHA, GLOBAL_ALPHA,
	CK_PIXEL_ALPHA, CK_GLOBAL_ALPHA
} OVRL_BLEND_MODE;

/* Overlay Pixel format select */
typedef enum _OVRL_PIX_FORMAT {
	UYVY, VYUY, YUYV, YVYU
} OVRL_PIX_FORMAT;

/* Register Table */
typedef struct {
	/* 0h  */
	volatile u32 Thread0Enable;	/* 0x0000 */
	volatile u32 Thread1Enable;	/* 0x0004 */
	volatile u32 Thread0Recover;	/* 0x0008 */
	volatile u32 Thread1Recover;	/* 0x000C */
	volatile u32 Thread0Step;	/* 0x0010 */
	volatile u32 Thread1Step;	/* 0x0014 */
	volatile u32 VideoInStatus;	/* 0x0018 */
	volatile u32 Core2InSignStart;	/* 0x001C */
	volatile u32 Core1ResetVector;	/* 0x0020 */
	volatile u32 Core1ROMOffset;	/* 0x0024 */
	volatile u32 Core1ArbiterPriority;	/* 0x0028 */
	volatile u32 VideoInControl;	/* 0x002C */
	volatile u32 VideoInReg0CtrlA;	/* 0x0030 */
	volatile u32 VideoInReg0CtrlB;	/* 0x0034 */
	volatile u32 VideoInReg1CtrlA;	/* 0x0038 */
	volatile u32 VideoInReg1CtrlB;	/* 0x003C */
	volatile u32 Thread0Kicker;	/* 0x0040 */
	volatile u32 Core2InputSign;	/* 0x0044 */
	volatile u32 Thread0ProgCtr;	/* 0x0048 */
	volatile u32 Thread1ProgCtr;	/* 0x004C */
	volatile u32 Thread1Kicker;	/* 0x0050 */
	volatile u32 GPRegister1;	/* 0x0054 */
	volatile u32 GPRegister2;	/* 0x0058 */
	volatile u32 GPRegister3;	/* 0x005C */
	volatile u32 GPRegister4;	/* 0x0060 */
	volatile u32 SerialIntA;	/* 0x0064 */

	volatile u32 Fill0[6];	/* GAP 0x0068 - 0x007C */

	volatile u32 SoftwareReset;	/* 0x0080 */
	volatile u32 SerialIntB;	/* 0x0084 */

	volatile u32 Fill1[37];	/* GAP 0x0088 - 0x011C */

	volatile u32 ROMELQV;	/* 0x011C */
	volatile u32 WLWH;	/* 0x0120 */
	volatile u32 ROMELWL;	/* 0x0124 */

	volatile u32 dwFill_1;	/* GAP 0x0128 */

	volatile u32 IntStatus;	/* 0x012C */
	volatile u32 IntMask;	/* 0x0130 */
	volatile u32 IntClear;	/* 0x0134 */

	volatile u32 Fill2[6];	/* GAP 0x0138 - 0x014C */

	volatile u32 ROMGPIOA;	/* 0x0150 */
	volatile u32 ROMGPIOB;	/* 0x0154 */
	volatile u32 ROMGPIOC;	/* 0x0158 */
	volatile u32 ROMGPIOD;	/* 0x015C */

	volatile u32 Fill3[2];	/* GAP 0x0160 - 0x0168 */

	volatile u32 AGPIntID;	/* 0x0168 */
	volatile u32 AGPIntClassCode;	/* 0x016C */
	volatile u32 AGPIntBIST;	/* 0x0170 */
	volatile u32 AGPIntSSID;	/* 0x0174 */
	volatile u32 AGPIntPMCSR;	/* 0x0178 */
	volatile u32 VGAFrameBufBase;	/* 0x017C */
	volatile u32 VGANotify;	/* 0x0180 */
	volatile u32 DACPLLMode;	/* 0x0184 */
	volatile u32 Core1VideoClockDiv;	/* 0x0188 */
	volatile u32 AGPIntStat;	/* 0x018C */

	/*
	   volatile u32 Fill4[0x0400/4 - 0x0190/4]; //GAP 0x0190 - 0x0400
	   volatile u32 Fill5[0x05FC/4 - 0x0400/4]; //GAP 0x0400 - 0x05FC Fog Table
	   volatile u32 Fill6[0x0604/4 - 0x0600/4]; //GAP 0x0600 - 0x0604
	   volatile u32 Fill7[0x0680/4 - 0x0608/4]; //GAP 0x0608 - 0x0680
	   volatile u32 Fill8[0x07FC/4 - 0x0684/4]; //GAP 0x0684 - 0x07FC
	 */
	volatile u32 Fill4[412];	/* 0x0190 - 0x07FC */

	volatile u32 TACtrlStreamBase;	/* 0x0800 */
	volatile u32 TAObjDataBase;	/* 0x0804 */
	volatile u32 TAPtrDataBase;	/* 0x0808 */
	volatile u32 TARegionDataBase;	/* 0x080C */
	volatile u32 TATailPtrBase;	/* 0x0810 */
	volatile u32 TAPtrRegionSize;	/* 0x0814 */
	volatile u32 TAConfiguration;	/* 0x0818 */
	volatile u32 TAObjDataStartAddr;	/* 0x081C */
	volatile u32 TAObjDataEndAddr;	/* 0x0820 */
	volatile u32 TAXScreenClip;	/* 0x0824 */
	volatile u32 TAYScreenClip;	/* 0x0828 */
	volatile u32 TARHWClamp;	/* 0x082C */
	volatile u32 TARHWCompare;	/* 0x0830 */
	volatile u32 TAStart;	/* 0x0834 */
	volatile u32 TAObjReStart;	/* 0x0838 */
	volatile u32 TAPtrReStart;	/* 0x083C */
	volatile u32 TAStatus1;	/* 0x0840 */
	volatile u32 TAStatus2;	/* 0x0844 */
	volatile u32 TAIntStatus;	/* 0x0848 */
	volatile u32 TAIntMask;	/* 0x084C */

	volatile u32 Fill5[235];	/* GAP 0x0850 - 0x0BF8 */

	volatile u32 TextureAddrThresh;	/* 0x0BFC */
	volatile u32 Core1Translation;	/* 0x0C00 */
	volatile u32 TextureAddrReMap;	/* 0x0C04 */
	volatile u32 RenderOutAGPRemap;	/* 0x0C08 */
	volatile u32 _3DRegionReadTrans;	/* 0x0C0C */
	volatile u32 _3DPtrReadTrans;	/* 0x0C10 */
	volatile u32 _3DParamReadTrans;	/* 0x0C14 */
	volatile u32 _3DRegionReadThresh;	/* 0x0C18 */
	volatile u32 _3DPtrReadThresh;	/* 0x0C1C */
	volatile u32 _3DParamReadThresh;	/* 0x0C20 */
	volatile u32 _3DRegionReadAGPRemap;	/* 0x0C24 */
	volatile u32 _3DPtrReadAGPRemap;	/* 0x0C28 */
	volatile u32 _3DParamReadAGPRemap;	/* 0x0C2C */
	volatile u32 ZBufferAGPRemap;	/* 0x0C30 */
	volatile u32 TAIndexAGPRemap;	/* 0x0C34 */
	volatile u32 TAVertexAGPRemap;	/* 0x0C38 */
	volatile u32 TAUVAddrTrans;	/* 0x0C3C */
	volatile u32 TATailPtrCacheTrans;	/* 0x0C40 */
	volatile u32 TAParamWriteTrans;	/* 0x0C44 */
	volatile u32 TAPtrWriteTrans;	/* 0x0C48 */
	volatile u32 TAParamWriteThresh;	/* 0x0C4C */
	volatile u32 TAPtrWriteThresh;	/* 0x0C50 */
	volatile u32 TATailPtrCacheAGPRe;	/* 0x0C54 */
	volatile u32 TAParamWriteAGPRe;	/* 0x0C58 */
	volatile u32 TAPtrWriteAGPRe;	/* 0x0C5C */
	volatile u32 SDRAMArbiterConf;	/* 0x0C60 */
	volatile u32 SDRAMConf0;	/* 0x0C64 */
	volatile u32 SDRAMConf1;	/* 0x0C68 */
	volatile u32 SDRAMConf2;	/* 0x0C6C */
	volatile u32 SDRAMRefresh;	/* 0x0C70 */
	volatile u32 SDRAMPowerStat;	/* 0x0C74 */

	volatile u32 Fill6[2];	/* GAP 0x0C78 - 0x0C7C */

	volatile u32 RAMBistData;	/* 0x0C80 */
	volatile u32 RAMBistCtrl;	/* 0x0C84 */
	volatile u32 FIFOBistKey;	/* 0x0C88 */
	volatile u32 RAMBistResult;	/* 0x0C8C */
	volatile u32 FIFOBistResult;	/* 0x0C90 */

	/*
	   volatile u32 Fill11[0x0CBC/4 - 0x0C94/4]; //GAP 0x0C94 - 0x0CBC
	   volatile u32 Fill12[0x0CD0/4 - 0x0CC0/4]; //GAP 0x0CC0 - 0x0CD0 3DRegisters
	 */

	volatile u32 Fill7[16];	/* 0x0c94 - 0x0cd0 */

	volatile u32 SDRAMAddrSign;	/* 0x0CD4 */
	volatile u32 SDRAMDataSign;	/* 0x0CD8 */
	volatile u32 SDRAMSignConf;	/* 0x0CDC */

	/* DWFILL; //GAP 0x0CE0 */
	volatile u32 dwFill_2;

	volatile u32 ISPSignature;	/* 0x0CE4 */

	volatile u32 Fill8[454];	/*GAP 0x0CE8 - 0x13FC */

	volatile u32 DACPrimAddress;	/* 0x1400 */
	volatile u32 DACPrimSize;	/* 0x1404 */
	volatile u32 DACCursorAddr;	/* 0x1408 */
	volatile u32 DACCursorCtrl;	/* 0x140C */
	volatile u32 DACOverlayAddr;	/* 0x1410 */
	volatile u32 DACOverlayUAddr;	/* 0x1414 */
	volatile u32 DACOverlayVAddr;	/* 0x1418 */
	volatile u32 DACOverlaySize;	/* 0x141C */
	volatile u32 DACOverlayVtDec;	/* 0x1420 */

	volatile u32 Fill9[9];	/* GAP 0x1424 - 0x1444 */

	volatile u32 DACVerticalScal;	/* 0x1448 */
	volatile u32 DACPixelFormat;	/* 0x144C */
	volatile u32 DACHorizontalScal;	/* 0x1450 */
	volatile u32 DACVidWinStart;	/* 0x1454 */
	volatile u32 DACVidWinEnd;	/* 0x1458 */
	volatile u32 DACBlendCtrl;	/* 0x145C */
	volatile u32 DACHorTim1;	/* 0x1460 */
	volatile u32 DACHorTim2;	/* 0x1464 */
	volatile u32 DACHorTim3;	/* 0x1468 */
	volatile u32 DACVerTim1;	/* 0x146C */
	volatile u32 DACVerTim2;	/* 0x1470 */
	volatile u32 DACVerTim3;	/* 0x1474 */
	volatile u32 DACBorderColor;	/* 0x1478 */
	volatile u32 DACSyncCtrl;	/* 0x147C */
	volatile u32 DACStreamCtrl;	/* 0x1480 */
	volatile u32 DACLUTAddress;	/* 0x1484 */
	volatile u32 DACLUTData;	/* 0x1488 */
	volatile u32 DACBurstCtrl;	/* 0x148C */
	volatile u32 DACCrcTrigger;	/* 0x1490 */
	volatile u32 DACCrcDone;	/* 0x1494 */
	volatile u32 DACCrcResult1;	/* 0x1498 */
	volatile u32 DACCrcResult2;	/* 0x149C */
	volatile u32 DACLinecount;	/* 0x14A0 */

	volatile u32 Fill10[151];	/*GAP 0x14A4 - 0x16FC */

	volatile u32 DigVidPortCtrl;	/* 0x1700 */
	volatile u32 DigVidPortStat;	/* 0x1704 */

	/*
	   volatile u32 Fill11[0x1FFC/4 - 0x1708/4]; //GAP 0x1708 - 0x1FFC
	   volatile u32 Fill17[0x3000/4 - 0x2FFC/4]; //GAP 0x2000 - 0x2FFC ALUT
	 */

	volatile u32 Fill11[1598];

	/* DWFILL; //GAP 0x3000          ALUT 256MB offset */
	volatile u32 Fill_3;

} STG4000REG;

#endif /* _STG4000REG_H */