Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

340 lines
8.9 KiB

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
jzvxl484.h
Abstract:
This header file containd VXL register definitions.
This includes Jaguar registers, BT484 registers and
Memory addresses.
Author:
Lluis Abello (lluis) 20-May-92
Environment:
--*/
#ifndef _JZVXL484_
#define _JZVXL484_
//
// Base address definitions.
//
#define VXL_ROM_BASE_OFFSET 0x000000
#define VXL_BT484_BASE_OFFSET 0x100000
#define VXL_CLOCK_BASE_OFFSET 0x200000
#define VXL_JAGUAR_BASE_OFFSET 0x300000
#define VXL_FIFO_BASE_OFFSET 0x400000
//
// Define register alignment structures.
// All VXL register are 8 byte aligned.
//
typedef struct _VXL_BYTE_REGISTER {
UCHAR Byte;
UCHAR Fill[7];
} VXL_BYTE_REGISTER, * PVXL_BYTE_REGISTER;
typedef struct _VXL_SHORT_REGISTER {
USHORT Short;
USHORT Fill[3];
} VXL_SHORT_REGISTER, * PVXL_SHORT_REGISTER;
typedef struct _VXL_LONG_REGISTER {
ULONG Long;
ULONG Fill[1];
} VXL_LONG_REGISTER, * PVXL_LONG_REGISTER;
//
// Define BrookTree registers data structure.
//
typedef struct _BT484_REGISTERS {
VXL_BYTE_REGISTER PaletteCursorWrAddress;
VXL_BYTE_REGISTER PaletteColor;
VXL_BYTE_REGISTER PixelMask;
VXL_BYTE_REGISTER PaletteCursorRdAddress;
VXL_BYTE_REGISTER CursorColorWrAddress;
VXL_BYTE_REGISTER CursorColor;
VXL_BYTE_REGISTER Command0;
VXL_BYTE_REGISTER CursorColorRdAddress;
VXL_BYTE_REGISTER Command1;
VXL_BYTE_REGISTER Command2;
VXL_BYTE_REGISTER Status;
VXL_BYTE_REGISTER CursorRam;
VXL_BYTE_REGISTER CursorXLow;
VXL_BYTE_REGISTER CursorXHigh;
VXL_BYTE_REGISTER CursorYLow;
VXL_BYTE_REGISTER CursorYHigh;
} BT484_REGISTERS, * PBT484_REGISTERS;
//
// BT484 Command register bit definitions.
//
typedef struct _BT484_COMMAND0 {
UCHAR PowerDownEnable : 1;
UCHAR DacResolution : 1;
UCHAR RedSyncEnable : 1;
UCHAR GreenSyncEnable : 1;
UCHAR BlueSyncEnable : 1;
UCHAR SetupEnable : 1;
UCHAR ClockDisable : 1;
UCHAR Fill : 1;
} BT484_COMMAND0, *PBT484_COMMAND0;
typedef struct _BT484_COMMAND1 {
UCHAR PortSwitchCtrl16 : 1;
UCHAR RealTimeSwitch16 : 1;
UCHAR MuxRate16 : 1;
UCHAR ColorFormat16 : 1;
UCHAR TrueColorBypass : 1;
UCHAR BitsPerPixel : 2;
UCHAR Fill : 1;
} BT484_COMMAND1, *PBT484_COMMAND1;
typedef struct _BT484_COMMAND2 {
UCHAR CursorMode : 2;
UCHAR PaletteIndexing : 1;
UCHAR InterlacedDisplay : 1;
UCHAR PclkSelect : 1;
UCHAR PortselMask : 1;
UCHAR TestEnable : 1;
UCHAR SclkDisable : 1;
} BT484_COMMAND2, *PBT484_COMMAND2;
typedef struct _BT484_COMMAND3 {
UCHAR AddressCounter : 2;
UCHAR CursorSelect : 1;
UCHAR ClockMultiplier : 1;
UCHAR Reserved : 4;
} BT484_COMMAND3, *PBT484_COMMAND3;
//
// Define Bits/Pixel
//
#define VXL_FOUR_BITS_PER_PIXEL 3
#define VXL_EIGHT_BITS_PER_PIXEL 2
#define VXL_SIXTEEN_BITS_PER_PIXEL 1
#define VXL_TWENTYFOUR_BITS_PER_PIXEL 0
#define VXL_THIRTYTWO_BITS_PER_PIXEL 0
//
// Define Cursor Modes
//
#define BT_CURSOR_DISABLED 0
#define BT_CURSOR_3_COLOR 1
#define BT_CURSOR_WINDOWS 2
#define BT_CURSOR_X_WINDOWS 3
//
// Define 16 Bit/Pixel Palette Indexing mode
//
#define SPARSE_PALETTE 0
#define CONTIGUOUS_PALETTE 1
//
// Define Command Fifo data structure.
// This registers are written at a different than read.
//
typedef struct _JAGUAR_FIFO {
VXL_LONG_REGISTER DstAddr;
VXL_LONG_REGISTER SrcAddr;
VXL_LONG_REGISTER XYCmd;
} JAGUAR_FIFO, * PJAGUAR_FIFO;
//
// define Command values
//
#define JAGUAR_TEXT_TRANSPARENT 0
#define JAGUAR_TEXT_OPAQUE 1
#define JAGUAR_SOLID_FILL 2
#define JAGUAR_BITBLT_LEFTRIGHT 4
#define JAGUAR_BITBLT_RIGHTLEFT 5
#define JAGUAR_BITBLT_LINEAR_SRC 6
#define JAGUAR_BITBLT_LINEAR_DST 7
//
// define shift values for fields in XYCMD register.
//
#define XYCMD_CMD_SHIFT 21
#define XYCMD_Y_SHIFT 11
#define XYCMD_X_SHIFT 0
typedef struct _XYCMD_REGISTER {
ULONG X : 11;
ULONG Y : 10;
ULONG Cmd : 3;
ULONG Fill: 8;
} XYCMD_REGISTER, *PXYCMD_REGISTER;
//
// Define Jaguar Registers data structure.
//
typedef struct _JAGUAR_REGISTERS {
JAGUAR_FIFO Fifo; // 0x0,0x8,0x10
VXL_SHORT_REGISTER FifoCounter; // 0x018
VXL_BYTE_REGISTER FifoUsedEntries; // 0x020
VXL_BYTE_REGISTER FifoThreshold; // 0x028
VXL_SHORT_REGISTER DataFifoCounter; // 0x030
VXL_LONG_REGISTER Fill1; //
VXL_BYTE_REGISTER BitBltControl; // 0x040
VXL_LONG_REGISTER ForegroundColor; // 0x048
VXL_LONG_REGISTER BackgroundColor; // 0x050
VXL_SHORT_REGISTER HorizontalDisplay;// 0x058
VXL_BYTE_REGISTER InterruptSource; // 0x060
VXL_BYTE_REGISTER InterruptEnable; // 0x068
VXL_BYTE_REGISTER SetGdiInterrupt; // 0x070
VXL_LONG_REGISTER Fill2; //
VXL_BYTE_REGISTER MonitorControl; // 0x080
VXL_SHORT_REGISTER TopOfScreen; // 0x088
VXL_SHORT_REGISTER HorizontalBlank; // 0x090
VXL_SHORT_REGISTER HorizontalBeginSync; // 0x098
VXL_SHORT_REGISTER HorizontalEndSync; // 0x0A0
VXL_SHORT_REGISTER HorizontalLine; // 0x0A8
VXL_SHORT_REGISTER VerticalBlank; // 0x0B0
VXL_SHORT_REGISTER VerticalBeginSync; // 0x0B8
VXL_SHORT_REGISTER VerticalEndSync; // 0x0C0
VXL_SHORT_REGISTER VerticalLine; // 0x0C8
VXL_SHORT_REGISTER XferLength; // 0x0D0
VXL_SHORT_REGISTER VerticalInterruptLine; // 0x0D8
VXL_LONG_REGISTER TransferDiag; // 0x0E0
VXL_LONG_REGISTER SyncDiag; // 0x0E8
VXL_LONG_REGISTER Fill3;
VXL_LONG_REGISTER Fill4;
VXL_BYTE_REGISTER RemoteSpeed0; // 0x100
VXL_BYTE_REGISTER RemoteSpeed1; // 0x108
VXL_BYTE_REGISTER RemoteSpeed2; // 0x110
VXL_BYTE_REGISTER RemoteSpeed3; // 0x118
VXL_BYTE_REGISTER Version; // 0x120
VXL_LONG_REGISTER Fill5;
VXL_LONG_REGISTER Fill6;
VXL_LONG_REGISTER Fill7;
VXL_BYTE_REGISTER HostAccess; // 0x140
} JAGUAR_REGISTERS, *PJAGUAR_REGISTERS;
//
// Define ICS1494-531 Frequency selectors.
//
#define CLOCK_38MHZ 0x06
#define CLOCK_64MHZ 0x18
#define CLOCK_110MHZ 0x1F
#define MONITOR_TIMING_ENABLE 0x01
#define MONITOR_TIMING_DISABLE 0x00
#define MONITOR_TIMING_RESET 0x02
#define VXL_INTERRUPT_VERTICAL_RETRACE 0x01
#define VXL_INTERRUPT_COMMAND_FIFO 0x02
#define VXL_INTERRUPT_GDI 0x04
#define VXL_BT484_COMMAND0 0x0A
#define VXL_BT484_COMMAND1 0x48
#define VXL_BT484_COMMAND2_CURSOR_DISABLE 0x34
#define VXL_BT484_COMMAND2_CURSOR_ENABLE 0x36
//
// 8 bit per pixel should not be hard coded into this header file!
//
#define NUM_VXL_POINTER_COLORS 2 // VXL Bt484 supports two colors
#define DISPLAY_BITS_PER_PIXEL 8 // display bits per pixel
#define NUMBER_OF_COLORS 256 // number of colors
#define VXL_CURSOR_WIDTH 32 // width of hardware cursor
#define VXL_CURSOR_HEIGHT 32 // height of hardware cursor
#define VXL_CURSOR_BITS_PER_PIXEL 2 // hardware cursor bits per pixel
#define VXL_CURSOR_NUMBER_OF_BYTES VXL_CURSOR_WIDTH/8 * VXL_CURSOR_HEIGHT * 2
typedef struct _JAZZ_Vxl_CONFIGURATION_DATA {
USHORT Version;
USHORT Revision;
USHORT Irql;
USHORT Vector;
ULONG ControlBase;
ULONG ControlSize;
ULONG CursorBase;
ULONG CursorSize;
ULONG FrameBase;
ULONG FrameSize;
} JAZZ_Vxl_CONFIGURATION_DATA, *PJAZZ_Vxl_CONFIGURATION_DATA;
//
// Define private IO_CTL Code and structure to allow the user proces
// to query Jaguar info.
//
#define IOCTL_VIDEO_QUERY_JAGUAR \
CTL_CODE (FILE_DEVICE_VIDEO, 2048, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _VIDEO_JAGUAR_INFO {
PVOID VideoControlVirtualBase;
PVOID FifoVirtualBase;
ULONG VideoMemoryLength;
} VIDEO_JAGUAR_INFO, *PVIDEO_JAGUAR_INFO;
//
// Define number of mini port queue entries
//
#define MINI_PORT_QUEUE_ENTRIES 256
//
// Jaguar command queue entry for the mini port driver
//
typedef struct _JAGUAR_QUEUE_ENTRY {
ULONG DestinationAddress;
ULONG SourceAddress;
ULONG XYCMD;
} JAGUAR_QUEUE_ENTRY,*PJAGUAR_QUEUE_ENTRY;
//
// Structure for passing pointer attribute data to the mini-port driver
//
typedef struct _VXL_POINTER_ATTRIBUTES {
SHORT Column;
SHORT Row;
ULONG Enable;
UCHAR Pixels[VXL_CURSOR_NUMBER_OF_BYTES];
} VXL_POINTER_ATTRIBUTES, *PVXL_POINTER_ATTRIBUTES;
//
// Define structures for initializing timing parameters
//
typedef struct _JAGUAR_REG_INIT {
UCHAR ClockFreq;
UCHAR Bt485Multiply;
UCHAR BitBltControl;
USHORT TopOfScreen;
USHORT HorizontalBlank;
USHORT HorizontalBeginSync;
USHORT HorizontalEndSync;
USHORT HorizontalLine;
USHORT VerticalBlank;
USHORT VerticalBeginSync;
USHORT VerticalEndSync;
USHORT VerticalLine;
USHORT XferLength;
USHORT VerticalInterruptLine;
USHORT HorizontalDisplay;
} JAGUAR_REG_INIT, *PJAGUAR_REG_INIT;
#endif // _JZVXL484_