|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1992 Microsoft Corporation
4:
5: Module Name:
6:
7: jzvxl484.h
8:
9: Abstract:
10:
11: This header file containd VXL register definitions.
12: This includes Jaguar registers, BT484 registers and
13: Memory addresses.
14:
15: Author:
16:
17: Lluis Abello (lluis) 20-May-92
18:
19: Environment:
20:
21:
22: --*/
23:
24: #ifndef _JZVXL484_
25: #define _JZVXL484_
26:
27: //
28: // Base address definitions.
29: //
30:
31: #define VXL_ROM_BASE_OFFSET 0x000000
32: #define VXL_BT484_BASE_OFFSET 0x100000
33: #define VXL_CLOCK_BASE_OFFSET 0x200000
34: #define VXL_JAGUAR_BASE_OFFSET 0x300000
35: #define VXL_FIFO_BASE_OFFSET 0x400000
36:
37: //
38: // Define register alignment structures.
39: // All VXL register are 8 byte aligned.
40: //
41:
42: typedef struct _VXL_BYTE_REGISTER {
43: UCHAR Byte;
44: UCHAR Fill[7];
45: } VXL_BYTE_REGISTER, * PVXL_BYTE_REGISTER;
46:
47: typedef struct _VXL_SHORT_REGISTER {
48: USHORT Short;
49: USHORT Fill[3];
50: } VXL_SHORT_REGISTER, * PVXL_SHORT_REGISTER;
51:
52: typedef struct _VXL_LONG_REGISTER {
53: ULONG Long;
54: ULONG Fill[1];
55: } VXL_LONG_REGISTER, * PVXL_LONG_REGISTER;
56:
57: //
58: // Define BrookTree registers data structure.
59: //
60:
61: typedef struct _BT484_REGISTERS {
62: VXL_BYTE_REGISTER PaletteCursorWrAddress;
63: VXL_BYTE_REGISTER PaletteColor;
64: VXL_BYTE_REGISTER PixelMask;
65: VXL_BYTE_REGISTER PaletteCursorRdAddress;
66: VXL_BYTE_REGISTER CursorColorWrAddress;
67: VXL_BYTE_REGISTER CursorColor;
68: VXL_BYTE_REGISTER Command0;
69: VXL_BYTE_REGISTER CursorColorRdAddress;
70: VXL_BYTE_REGISTER Command1;
71: VXL_BYTE_REGISTER Command2;
72: VXL_BYTE_REGISTER Status;
73: VXL_BYTE_REGISTER CursorRam;
74: VXL_BYTE_REGISTER CursorXLow;
75: VXL_BYTE_REGISTER CursorXHigh;
76: VXL_BYTE_REGISTER CursorYLow;
77: VXL_BYTE_REGISTER CursorYHigh;
78: } BT484_REGISTERS, * PBT484_REGISTERS;
79:
80: //
81: // BT484 Command register bit definitions.
82: //
83:
84: typedef struct _BT484_COMMAND0 {
85: UCHAR PowerDownEnable : 1;
86: UCHAR DacResolution : 1;
87: UCHAR RedSyncEnable : 1;
88: UCHAR GreenSyncEnable : 1;
89: UCHAR BlueSyncEnable : 1;
90: UCHAR SetupEnable : 1;
91: UCHAR ClockDisable : 1;
92: UCHAR Fill : 1;
93: } BT484_COMMAND0, *PBT484_COMMAND0;
94:
95: typedef struct _BT484_COMMAND1 {
96: UCHAR PortSwitchCtrl16 : 1;
97: UCHAR RealTimeSwitch16 : 1;
98: UCHAR MuxRate16 : 1;
99: UCHAR ColorFormat16 : 1;
100: UCHAR TrueColorBypass : 1;
101: UCHAR BitsPerPixel : 2;
102: UCHAR Fill : 1;
103: } BT484_COMMAND1, *PBT484_COMMAND1;
104:
105: typedef struct _BT484_COMMAND2 {
106: UCHAR CursorMode : 2;
107: UCHAR PaletteIndexing : 1;
108: UCHAR InterlacedDisplay : 1;
109: UCHAR PclkSelect : 1;
110: UCHAR PortselMask : 1;
111: UCHAR TestEnable : 1;
112: UCHAR SclkDisable : 1;
113: } BT484_COMMAND2, *PBT484_COMMAND2;
114:
115: typedef struct _BT484_COMMAND3 {
116: UCHAR AddressCounter : 2;
117: UCHAR CursorSelect : 1;
118: UCHAR ClockMultiplier : 1;
119: UCHAR Reserved : 4;
120: } BT484_COMMAND3, *PBT484_COMMAND3;
121:
122: //
123: // Define Bits/Pixel
124: //
125: #define VXL_FOUR_BITS_PER_PIXEL 3
126: #define VXL_EIGHT_BITS_PER_PIXEL 2
127: #define VXL_SIXTEEN_BITS_PER_PIXEL 1
128: #define VXL_TWENTYFOUR_BITS_PER_PIXEL 0
129: #define VXL_THIRTYTWO_BITS_PER_PIXEL 0
130:
131: //
132: // Define Cursor Modes
133: //
134: #define BT_CURSOR_DISABLED 0
135: #define BT_CURSOR_3_COLOR 1
136: #define BT_CURSOR_WINDOWS 2
137: #define BT_CURSOR_X_WINDOWS 3
138:
139: //
140: // Define 16 Bit/Pixel Palette Indexing mode
141: //
142: #define SPARSE_PALETTE 0
143: #define CONTIGUOUS_PALETTE 1
144:
145: //
146: // Define Command Fifo data structure.
147: // This registers are written at a different than read.
148: //
149:
150: typedef struct _JAGUAR_FIFO {
151: VXL_LONG_REGISTER DstAddr;
152: VXL_LONG_REGISTER SrcAddr;
153: VXL_LONG_REGISTER XYCmd;
154: } JAGUAR_FIFO, * PJAGUAR_FIFO;
155:
156: //
157: // define Command values
158: //
159: #define JAGUAR_TEXT_TRANSPARENT 0
160: #define JAGUAR_TEXT_OPAQUE 1
161: #define JAGUAR_SOLID_FILL 2
162: #define JAGUAR_BITBLT_LEFTRIGHT 4
163: #define JAGUAR_BITBLT_RIGHTLEFT 5
164: #define JAGUAR_BITBLT_LINEAR_SRC 6
165: #define JAGUAR_BITBLT_LINEAR_DST 7
166:
167: //
168: // define shift values for fields in XYCMD register.
169: //
170:
171: #define XYCMD_CMD_SHIFT 21
172: #define XYCMD_Y_SHIFT 11
173: #define XYCMD_X_SHIFT 0
174:
175: typedef struct _XYCMD_REGISTER {
176: ULONG X : 11;
177: ULONG Y : 10;
178: ULONG Cmd : 3;
179: ULONG Fill: 8;
180: } XYCMD_REGISTER, *PXYCMD_REGISTER;
181:
182: //
183: // Define Jaguar Registers data structure.
184: //
185:
186: typedef struct _JAGUAR_REGISTERS {
187: JAGUAR_FIFO Fifo; // 0x0,0x8,0x10
188: VXL_SHORT_REGISTER FifoCounter; // 0x018
189: VXL_BYTE_REGISTER FifoUsedEntries; // 0x020
190: VXL_BYTE_REGISTER FifoThreshold; // 0x028
191: VXL_SHORT_REGISTER DataFifoCounter; // 0x030
192: VXL_LONG_REGISTER Fill1; //
193: VXL_BYTE_REGISTER BitBltControl; // 0x040
194: VXL_LONG_REGISTER ForegroundColor; // 0x048
195: VXL_LONG_REGISTER BackgroundColor; // 0x050
196: VXL_SHORT_REGISTER HorizontalDisplay;// 0x058
197: VXL_BYTE_REGISTER InterruptSource; // 0x060
198: VXL_BYTE_REGISTER InterruptEnable; // 0x068
199: VXL_BYTE_REGISTER SetGdiInterrupt; // 0x070
200: VXL_LONG_REGISTER Fill2; //
201: VXL_BYTE_REGISTER MonitorControl; // 0x080
202: VXL_SHORT_REGISTER TopOfScreen; // 0x088
203: VXL_SHORT_REGISTER HorizontalBlank; // 0x090
204: VXL_SHORT_REGISTER HorizontalBeginSync; // 0x098
205: VXL_SHORT_REGISTER HorizontalEndSync; // 0x0A0
206: VXL_SHORT_REGISTER HorizontalLine; // 0x0A8
207: VXL_SHORT_REGISTER VerticalBlank; // 0x0B0
208: VXL_SHORT_REGISTER VerticalBeginSync; // 0x0B8
209: VXL_SHORT_REGISTER VerticalEndSync; // 0x0C0
210: VXL_SHORT_REGISTER VerticalLine; // 0x0C8
211: VXL_SHORT_REGISTER XferLength; // 0x0D0
212: VXL_SHORT_REGISTER VerticalInterruptLine; // 0x0D8
213: VXL_LONG_REGISTER TransferDiag; // 0x0E0
214: VXL_LONG_REGISTER SyncDiag; // 0x0E8
215: VXL_LONG_REGISTER Fill3;
216: VXL_LONG_REGISTER Fill4;
217: VXL_BYTE_REGISTER RemoteSpeed0; // 0x100
218: VXL_BYTE_REGISTER RemoteSpeed1; // 0x108
219: VXL_BYTE_REGISTER RemoteSpeed2; // 0x110
220: VXL_BYTE_REGISTER RemoteSpeed3; // 0x118
221: VXL_BYTE_REGISTER Version; // 0x120
222: VXL_LONG_REGISTER Fill5;
223: VXL_LONG_REGISTER Fill6;
224: VXL_LONG_REGISTER Fill7;
225: VXL_BYTE_REGISTER HostAccess; // 0x140
226: } JAGUAR_REGISTERS, *PJAGUAR_REGISTERS;
227:
228: //
229: // Define ICS1494-531 Frequency selectors.
230: //
231: #define CLOCK_38MHZ 0x06
232: #define CLOCK_64MHZ 0x18
233: #define CLOCK_110MHZ 0x1F
234:
235:
236: #define MONITOR_TIMING_ENABLE 0x01
237: #define MONITOR_TIMING_DISABLE 0x00
238: #define MONITOR_TIMING_RESET 0x02
239:
240: #define VXL_INTERRUPT_VERTICAL_RETRACE 0x01
241: #define VXL_INTERRUPT_COMMAND_FIFO 0x02
242: #define VXL_INTERRUPT_GDI 0x04
243:
244: #define VXL_BT484_COMMAND0 0x0A
245: #define VXL_BT484_COMMAND1 0x48
246: #define VXL_BT484_COMMAND2_CURSOR_DISABLE 0x34
247: #define VXL_BT484_COMMAND2_CURSOR_ENABLE 0x36
248:
249: //
250: // 8 bit per pixel should not be hard coded into this header file!
251: //
252:
253: #define NUM_VXL_POINTER_COLORS 2 // VXL Bt484 supports two colors
254: #define DISPLAY_BITS_PER_PIXEL 8 // display bits per pixel
255: #define NUMBER_OF_COLORS 256 // number of colors
256:
257: #define VXL_CURSOR_WIDTH 32 // width of hardware cursor
258: #define VXL_CURSOR_HEIGHT 32 // height of hardware cursor
259: #define VXL_CURSOR_BITS_PER_PIXEL 2 // hardware cursor bits per pixel
260:
261: #define VXL_CURSOR_NUMBER_OF_BYTES VXL_CURSOR_WIDTH/8 * VXL_CURSOR_HEIGHT * 2
262:
263: typedef struct _JAZZ_Vxl_CONFIGURATION_DATA {
264: USHORT Version;
265: USHORT Revision;
266: USHORT Irql;
267: USHORT Vector;
268: ULONG ControlBase;
269: ULONG ControlSize;
270: ULONG CursorBase;
271: ULONG CursorSize;
272: ULONG FrameBase;
273: ULONG FrameSize;
274: } JAZZ_Vxl_CONFIGURATION_DATA, *PJAZZ_Vxl_CONFIGURATION_DATA;
275:
276:
277: //
278: // Define private IO_CTL Code and structure to allow the user proces
279: // to query Jaguar info.
280: //
281: #define IOCTL_VIDEO_QUERY_JAGUAR \
282: CTL_CODE (FILE_DEVICE_VIDEO, 2048, METHOD_BUFFERED, FILE_ANY_ACCESS)
283:
284: typedef struct _VIDEO_JAGUAR_INFO {
285: PVOID VideoControlVirtualBase;
286: PVOID FifoVirtualBase;
287: ULONG VideoMemoryLength;
288: } VIDEO_JAGUAR_INFO, *PVIDEO_JAGUAR_INFO;
289:
290: //
291: // Define number of mini port queue entries
292: //
293:
294: #define MINI_PORT_QUEUE_ENTRIES 256
295:
296: //
297: // Jaguar command queue entry for the mini port driver
298: //
299:
300: typedef struct _JAGUAR_QUEUE_ENTRY {
301: ULONG DestinationAddress;
302: ULONG SourceAddress;
303: ULONG XYCMD;
304: } JAGUAR_QUEUE_ENTRY,*PJAGUAR_QUEUE_ENTRY;
305:
306: //
307: // Structure for passing pointer attribute data to the mini-port driver
308: //
309:
310: typedef struct _VXL_POINTER_ATTRIBUTES {
311: SHORT Column;
312: SHORT Row;
313: ULONG Enable;
314: UCHAR Pixels[VXL_CURSOR_NUMBER_OF_BYTES];
315: } VXL_POINTER_ATTRIBUTES, *PVXL_POINTER_ATTRIBUTES;
316:
317: #endif // _JZVXL484_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.