|
|
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.