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

1.1       root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
                      2: 
                      3: Copyright (c) 1991-1993  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     jazzvdeo.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     This header file defines the Jazz display controller registers.
                     12:     It currently has support for both the G300 and G364 video cards.
                     13: 
                     14: Revision History:
                     15: 
                     16: --*/
                     17: 
                     18: //
                     19: // Define value of video id register for different video boards.
                     20: //
                     21: 
                     22: #define VIDEO_G300    0            // original g300 video board
                     23: #define VIDEO_G364    1            // id value for g364 video board.
                     24: #define VIDEO_BT_I860 2            // brooktree board with i860.
                     25: 
                     26: 
                     27: 
                     28: //
                     29: // Define video controller parameters.
                     30: //
                     31: 
                     32: #define DISPLAY_BITS_PER_PIXEL 8        // display bits per pixel
                     33: #define NUMBER_OF_COLORS 256            // number of colors
                     34: 
                     35: #define CURSOR_WIDTH 64                 // width of hardware cursor
                     36: #define CURSOR_HEIGHT 64                // height of hardware cursor
                     37: #define CURSOR_BITS_PER_PIXEL 2         // hardware cursor bits per pixel
                     38: #define CURSOR_MAXIMUM                         \
                     39:     ((CURSOR_WIDTH * CURSOR_HEIGHT *           \
                     40:     CURSOR_BITS_PER_PIXEL) / (sizeof(USHORT) * 8)) // max hardware cursor pixels
                     41: 
                     42: //
                     43: // G300B Video Controller Definitions.
                     44: //
                     45: // Define video register format.
                     46: //
                     47: 
                     48: typedef struct _VIDEO_REGISTER {
                     49:     ULONG Long;
                     50:     ULONG Fill[1];
                     51: } VIDEO_REGISTER, *PVIDEO_REGISTER;
                     52: 
                     53: //
                     54: // Define video control registers structure.
                     55: //
                     56: 
                     57: typedef struct _G300_VIDEO_REGISTERS {
                     58:     VIDEO_REGISTER ColorMapData[256];
                     59:     VIDEO_REGISTER Fill1[33];
                     60:     VIDEO_REGISTER HorizonalSync;
                     61:     VIDEO_REGISTER BackPorch;
                     62:     VIDEO_REGISTER Display;
                     63:     VIDEO_REGISTER ShortDisplay;
                     64:     VIDEO_REGISTER BroadPulse;
                     65:     VIDEO_REGISTER VerticalSync;
                     66:     VIDEO_REGISTER VerticalBlank;
                     67:     VIDEO_REGISTER VerticalDisplay;
                     68:     VIDEO_REGISTER LineTime;
                     69:     VIDEO_REGISTER LineStart;
                     70:     VIDEO_REGISTER DmaDisplay;
                     71:     VIDEO_REGISTER TransferDelay;
                     72:     VIDEO_REGISTER Fill2[19];
                     73:     VIDEO_REGISTER PixelMask;
                     74:     VIDEO_REGISTER Fill3[31];
                     75:     VIDEO_REGISTER Parameters;
                     76:     VIDEO_REGISTER Fill4[31];
                     77:     VIDEO_REGISTER TopOfScreen;
                     78:     VIDEO_REGISTER Fill5[31];
                     79:     VIDEO_REGISTER Boot;
                     80: } G300_VIDEO_REGISTERS, *PG300_VIDEO_REGISTERS;
                     81: 
                     82: typedef struct _G364_VIDEO_REGISTERS {
                     83:     VIDEO_REGISTER Boot;
                     84:     VIDEO_REGISTER Fill0[0x1F];
                     85:     VIDEO_REGISTER Fill1;
                     86:     VIDEO_REGISTER HorizontalSync;
                     87:     VIDEO_REGISTER BackPorch;
                     88:     VIDEO_REGISTER Display;
                     89:     VIDEO_REGISTER ShortDisplay;
                     90:     VIDEO_REGISTER BroadPulse;
                     91:     VIDEO_REGISTER VerticalSync;
                     92:     VIDEO_REGISTER VerticalPreEqualize;
                     93:     VIDEO_REGISTER VerticalPostEqualize;
                     94:     VIDEO_REGISTER VerticalBlank;
                     95:     VIDEO_REGISTER VerticalDisplay;
                     96:     VIDEO_REGISTER LineTime;
                     97:     VIDEO_REGISTER LineStart;
                     98:     VIDEO_REGISTER DmaDisplay;
                     99:     VIDEO_REGISTER TransferDelay;
                    100:     VIDEO_REGISTER Fill2;
                    101:     VIDEO_REGISTER Fill3[0x10];
                    102:     VIDEO_REGISTER PixelMask;
                    103:     VIDEO_REGISTER Fill4[0x1F];
                    104:     VIDEO_REGISTER Parameters;
                    105:     VIDEO_REGISTER Fill5[0x1F];
                    106:     VIDEO_REGISTER TopOfScreen;
                    107:     VIDEO_REGISTER Fill6[0x1F];
                    108:     VIDEO_REGISTER Fill7;
                    109:     VIDEO_REGISTER CursorPalette[3];
                    110:     VIDEO_REGISTER Fill8[0x1C];
                    111:     VIDEO_REGISTER Fill9[0x7];
                    112:     VIDEO_REGISTER CursorPosition;
                    113:     VIDEO_REGISTER Fill10[0x18];
                    114:     VIDEO_REGISTER Fill11[0x20];
                    115:     VIDEO_REGISTER ColorMapData[0x100];
                    116:     VIDEO_REGISTER CursorMemory[0x200];
                    117: } G364_VIDEO_REGISTERS, *PG364_VIDEO_REGISTERS;
                    118: 
                    119: 
                    120: //
                    121: // Define video controller register values.
                    122: //
                    123: 
                    124: #define LINE_START_VALUE 0              // line start timing
                    125: #define G300_PIXEL_MASK_VALUE 0xFF      // pixel mask value
                    126: #define G364_PIXEL_MASK_VALUE 0xFFFFFF  // pixel mask value
                    127: #define PREEQUALIZE_VALUE     6         // vertical pre-equilize timing
                    128: #define POSTEQUALIZE_VALUE    6         // vertical post-equilize timing
                    129: 
                    130: 
                    131: //
                    132: // Define video parameter register structure.
                    133: //
                    134: 
                    135: typedef struct _G300_VIDEO_PARAMETERS {
                    136:     ULONG EnableVideo       : 1;
                    137:     ULONG Interlace         : 1;
                    138:     ULONG SlaveMode         : 1;
                    139:     ULONG PlainWave         : 1;
                    140:     ULONG SeparateSync      : 1;
                    141:     ULONG VideoOnly         : 1;
                    142:     ULONG Fill1             : 1;
                    143:     ULONG UcharMode         : 1;
                    144:     ULONG Mode2             : 1;
                    145:     ULONG DelaySync         : 3;
                    146:     ULONG Black             : 1;
                    147:     ULONG Fill2             : 1;
                    148:     ULONG DisableDma        : 1;
                    149:     ULONG DisableBlanking   : 1;
                    150:     ULONG BlankOutput       : 1;
                    151:     ULONG BitsPerPixel      : 2;
                    152:     ULONG AddressStep       : 2;
                    153:     ULONG CcirFormat        : 1;
                    154:     ULONG Fill3             : 1;
                    155:     ULONG DisableDelay      : 1;
                    156:     ULONG Fill4             : 8;
                    157: } G300_VIDEO_PARAMETERS, *PG300_VIDEO_PARAMETERS;
                    158: 
                    159: typedef struct _G364_VIDEO_PARAMETERS {
                    160:     ULONG EnableVideo       : 1;
                    161:     ULONG Interlace         : 1;
                    162:     ULONG CcirFormat        : 1;
                    163:     ULONG SlaveMode         : 1;
                    164:     ULONG PlainSync         : 1;
                    165:     ULONG SeparateSync      : 1;
                    166:     ULONG VideoOnly         : 1;
                    167:     ULONG BlankingPedestal  : 1;
                    168:     ULONG CBlankOutput      : 1;
                    169:     ULONG UndelayedCBlank   : 1;
                    170:     ULONG ForceBlanking     : 1;
                    171:     ULONG DisableBlanking   : 1;
                    172:     ULONG AddressStep       : 2;
                    173:     ULONG DisableDma        : 1;
                    174:     ULONG DelaySync         : 3;
                    175:     ULONG Interleaving      : 1;
                    176:     ULONG DelaySampling     : 1;
                    177:     ULONG BitsPerPixel      : 3;
                    178:     ULONG DisableCursor     : 1;
                    179:     ULONG Fill              : 8;
                    180: } G364_VIDEO_PARAMETERS, *PG364_VIDEO_PARAMETERS;
                    181: 
                    182: //
                    183: // Define delay synchronization cycles value.
                    184: //
                    185: 
                    186: #define G300_DELAY_SYNC_CYCLES 1        // cycles to delay sync and blank
                    187: #define G364_DELAY_SYNC_CYCLES 0        // cycles to delay sync and blank
                    188: 
                    189: //
                    190: // Define bits per pixel codes.
                    191: //
                    192: 
                    193: #define ONE_BIT_PER_PIXEL 0             // 1-bit per pixel
                    194: #define TWO_BITS_PER_PIXEL 1            // 2-bits per pixel
                    195: #define FOUR_BITS_PER_PIXEL 2           // 4-bits per pixel
                    196: #define EIGHT_BITS_PER_PIXEL 3          // 8-bits per pixel
                    197: 
                    198: //
                    199: // For g364 only
                    200: //
                    201: 
                    202: #define FIFTEEN_BITS_PER_PIXEL 4        // 15-bits per pixel (RGB = 5,5,5)
                    203: #define SIXTEEN_BITS_PER_PIXEL 5        // 16-bits per pixel (RGB = 6,6,4)
                    204: 
                    205: //
                    206: // Colors for the Pointer
                    207: //
                    208: 
                    209: #define NUM_G300_POINTER_COLORS     0   // Colors for the pointer are the
                    210:                                         // default display colors
                    211: #define NUM_G364_POINTER_COLORS     2   // The G364 supports two colors
                    212:                                         // (apart from transparent) for the
                    213:                                         // pointer
                    214: 
                    215: //
                    216: // Define address step value.
                    217: //
                    218: 
                    219: #define G300_ADDRESS_STEP_INCREMENT 1   // vram transfer address increment
                    220: #define G364_ADDRESS_STEP_INCREMENT 3   // vram transfer address increment
                    221: 
                    222: 
                    223: //
                    224: // Define video boot register structure.
                    225: //
                    226: 
                    227: typedef struct _G300_VIDEO_BOOT {
                    228:     ULONG Multiplier      : 5;
                    229:     ULONG ClockSelect     : 1;
                    230:     ULONG Fill1           : 26;
                    231: } G300_VIDEO_BOOT, *PG300_VIDEO_BOOT;
                    232: 
                    233: typedef struct _G364_VIDEO_BOOT {
                    234:     ULONG Multiplier      : 5;
                    235:     ULONG ClockSelect     : 1;
                    236:     ULONG MicroPort64Bits : 1;
                    237:     ULONG Fill1           : 25;
                    238: } G364_VIDEO_BOOT, *PG364_VIDEO_BOOT;
                    239: 
                    240: 
                    241: //
                    242: // BT431 Cursor Controller Definitions.
                    243: //
                    244: // Define cursor register format.
                    245: //
                    246: 
                    247: typedef struct _CURSOR_REGISTER {
                    248:     USHORT Short;
                    249:     USHORT Fill[3];
                    250: } CURSOR_REGISTER, *PCURSOR_REGISTER;
                    251: 
                    252: //
                    253: // Define cursor control registers structure.
                    254: //
                    255: 
                    256: typedef struct _CURSOR_REGISTERS {
                    257:     CURSOR_REGISTER AddressPointer0;
                    258:     CURSOR_REGISTER AddressPointer1;
                    259:     CURSOR_REGISTER CursorMemory;
                    260:     CURSOR_REGISTER CursorControl;
                    261: } CURSOR_REGISTERS, *PCURSOR_REGISTERS;
                    262: 
                    263: //
                    264: // Define cursor address register values.
                    265: //
                    266: 
                    267: #define CURSOR_MEMORY_ADDRESS (0x0 * 0x101) // starting address of cursor memory
                    268: #define CURSOR_CONTROL_ADDRESS (0x0 * 0x101) // cursor command register address
                    269: #define CURSOR_X_LOW_ADDRESS (0x1 * 0x101) // cursor x low address
                    270: #define CURSOR_X_HIGH_ADDRESS (0x2 * 0x101) // cursor x high address
                    271: #define CURSOR_Y_LOW_ADDRESS (0x3 * 0x101) // cursor y low address
                    272: #define CURSOR_Y_HIGH_ADDRESS (0x4 * 0x101) // cursor y high address
                    273: #define WINDOW_X_LOW_ADDRESS (0x5 * 0x101) // window x low address
                    274: #define WINDOW_X_HIGH_ADDRESS (0x6 * 0x101) // window x high address
                    275: #define WINDOW_Y_LOW_ADDRESS (0x7 * 0x101) // window y low address
                    276: #define WINDOW_Y_HIGH_ADDRESS (0x8 * 0x101) // window y high address
                    277: #define WINDOW_WIDTH_LOW_ADDRESS (0x9 * 0x101) // window width low address
                    278: #define WINDOW_WIDTH_HIGH_ADDRESS (0xa * 0x101) // window width high address
                    279: #define WINDOW_HEIGHT_LOW_ADDRESS (0xb * 0x101) // window height low address
                    280: #define WINDOW_HEIGHT_HIGH_ADDRESS (0xc * 0x101) // window height high address
                    281: 
                    282: //
                    283: // Define cursor command register structure.
                    284: //
                    285: 
                    286: typedef struct _CURSOR_COMMAND {
                    287:     USHORT CrossHairThickness1 : 2;
                    288:     USHORT MultiplexControl1 : 2;
                    289:     USHORT CursorFormat1 : 1;
                    290:     USHORT CrossHairEnable1 : 1;
                    291:     USHORT CursorEnable1 : 1;
                    292:     USHORT Fill1 : 1;
                    293:     USHORT CrossHairThickness2 : 2;
                    294:     USHORT MultiplexControl2 : 2;
                    295:     USHORT CursorFormat2 : 1;
                    296:     USHORT CrossHairEnable2 : 1;
                    297:     USHORT CursorEnable2 : 1;
                    298:     USHORT Fill2 : 1;
                    299: } CURSOR_COMMAND, *PCURSOR_COMMAND;
                    300: 
                    301: //
                    302: // Define cross hair thickness values.
                    303: //
                    304: 
                    305: #define ONE_PIXEL_THICK 0x0             // one pixel in thickness
                    306: #define THREE_PIXELS_THICK 0x1          // three pixels in thickness
                    307: #define FIVE_PIXELS_THICK 0x2           // five pixels in thickness
                    308: #define SEVEN_PIXELS_THICK 0x3          // seven pixels in thickness
                    309: 
                    310: //
                    311: // Define multiplexer control values.
                    312: //
                    313: 
                    314: #define ONE_TO_ONE 0x0                  // 1:1 multiplexing
                    315: #define FOUR_TO_ONE 0x1                 // 4:1 multiplexing
                    316: #define FIVE_TO_ONE 0x2                 // 5:1 multiplexing
                    317: 
                    318: //
                    319: // Define cursor origin values.
                    320: //
                    321: 
                    322: #define CURSOR_X_ORIGIN (((2 * HORIZONAL_SYNC_VALUE) + BACK_PORCH_VALUE) * 4 - 36)
                    323: #define CURSOR_Y_ORIGIN ((VERTICAL_BLANK_VALUE / 2) + 24)
                    324: 
                    325: //
                    326: // Define G300 configuration data structure.
                    327: //
                    328: 
                    329: typedef struct _JAZZ_G300_CONFIGURATION_DATA {
                    330:     USHORT Version;
                    331:     USHORT Revision;
                    332:     USHORT Irql;
                    333:     USHORT Vector;
                    334:     ULONG ControlBase;
                    335:     ULONG ControlSize;
                    336:     ULONG CursorBase;
                    337:     ULONG CursorSize;
                    338:     ULONG FrameBase;
                    339:     ULONG FrameSize;
                    340: } JAZZ_G300_CONFIGURATION_DATA, *PJAZZ_G300_CONFIGURATION_DATA;
                    341: 
                    342: typedef JAZZ_G300_CONFIGURATION_DATA JAZZ_G364_CONFIGURATION_DATA;
                    343: typedef PJAZZ_G300_CONFIGURATION_DATA PJAZZ_G364_CONFIGURATION_DATA;
                    344: 
                    345: //
                    346: // Define generic display configuration data structure found in ARC
                    347: // machine PROM
                    348: //
                    349: 
                    350: typedef struct _MONITOR_CONFIG_DATA {
                    351:     USHORT Version;
                    352:     USHORT Revision;
                    353:     USHORT HorizontalResolution;
                    354:     USHORT HorizontalDisplayTime;
                    355:     USHORT HorizontalBackPorch;
                    356:     USHORT HorizontalFrontPorch;
                    357:     USHORT HorizontalSync;
                    358:     USHORT VerticalResolution;
                    359:     USHORT VerticalBackPorch;
                    360:     USHORT VerticalFrontPorch;
                    361:     USHORT VerticalSync;
                    362:     USHORT HorizontalScreenSize;
                    363:     USHORT VerticalScreenSize;
                    364: } MONITOR_CONFIG_DATA, *PMONITOR_CONFIG_DATA;

unix.superglobalmegacorp.com

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