Annotation of ntddk/src/video/miniport/jzvxl484/jzvxl484.h, revision 1.1.1.1

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_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.