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