Annotation of ntddk/src/video/miniport/jzvxl484/jzvxl484.h, revision 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.