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.
 
 
 
 
 
 

142 lines
4.8 KiB

/*
* Copyright (c) 1995 FirePower Systems, Inc.
* (Do Not Distribute without permission)
*
* $RCSfile: fpdcc.h $
* $Revision: 1.11 $
* $Date: 1996/01/11 07:06:16 $
* $Locker: $
*
* This file contains references to registers in the display controller chip
* known as the DCC. This chip control's vram setup and works in conjunction
* with the ram dac which, in this case is a Brooktree Bt445.
*
*/
#ifndef FPDCC_H
#define FPDCC_H
//
// Prototype declarations for routines in fpDcc.c
// The dcc registers are not memory mapped but are indexed map through the
// dcc Index register. To access any dcc specific register, write the register
// value to the index register and either read or write data through the data
// register. See fpio.h for the macros to write to these registers
//
// register and address offset
//-----------------------------
//
#define dccIndex DCC_INDEX
#define dccID 0x00 // ID register
#define dccMonId 0x01 // Monitor and Panel ID
#define dccGpioA 0x02 // General Purpose I/O register A
#define dccIntReg 0x03 // Interrupt Status
#define dccPLL 0x04 // PLL Interface Register
#define dccTimingA 0x05 // Timing Register A
#define dccConfigA 0x06 // Configuration Register A
#define dccConfigB 0x07 // Configuration Register B
#define dccHCntLow 0x08 // Hoizontal Count Low
#define dccHCntHigh 0x09 // Hoizontal Count High
#define dccVCntLow 0x0A // Vertical Count Low
#define dccVCntHigh 0x0B // Vertical Count High
#define dccHSyncStop 0x0C // Hoizontal Sync Stop
#define dccHBlankStopLow 0x0D // Horizontal Blank Stop low
#define dccHBlankStopHigh 0x0E // Horizontal Blank Stop High
#define dccHDataStopLow 0x0F // Horizontal Data Stop Low
#define dccHDataStopHigh 0x10 // Horizontal Data Stop High
#define dccVSyncStop 0x11 // Vertical Sync Stop
#define dccVBlankStop 0x12 // Vertical Blank Stop
#define dccVDataStopLow 0x13 // Vertical Data Stop Low
#define dccVDataStopHigh 0x14 // Vertical Data Stop High
#define dccCSynicStartLow 0x15 // Composite Sync Start Low
#define dccCSyncStartHigh 0x16 // Composite Sync Start High
#define dccLineStart 0x17 // Line Start
#define dccLineStop 0x18 // Line Stop
#define dccFrameStart 0x19 // Frame Start
#define dccFrameStop 0x1a // Frame Stop
#define dccIntTriggerLow 0x1B // Interrupt Trigger Low
#define dccIntTriggerHigh 0x1C // Interrupt Trigger High
#define dccTimingB 0x1D // Timing Register B
#define dccGpioB 0x1E // General Purpose I/O register B
//
// 0x1E - 0x3F reserved;
//
//
// Inidividual bit mappings for register use:
#define INT_BIT 0x01 // LSB of Interrupt Register: dccIntReg
#define PLL_CLK 0x01 // PLL clock bit in Pll Interface: dccPLL
#define PLL_DATA 0x02 // Data Bit for the PLL port.
#define PLL_WnotR 0x04 // this bit activates the Pll data driver.
#define HV_SYNC_DELAY 0x0f
#define CSYNC_DELAY 0xf0
//
// Configuration Register A
//
#define HSYNC_ENABLE 0x01 // enable Horizontal Sync pulse
#define VSYNC_ENABLE 0x02 // enable Vertical Sync pulse
#define CSYNC_ENABLE 0x04 // enable Composite Sync pulse
#define FRAME_ENABLE 0x08 // enable Frame pulse
#define LINE_ENABLE 0x10 // enable Line pulse
#define A_1to1_32BitDac 0x00 // 1:1 mux mode, frequency = DispClk
#define AB_2to1_32BitDac 0x20 // 2:1 mux mode, frequency = 1/2DispClk
#define A_1to1_64BitDac 0x80 // 1:1 mux, 64 bit Data width, f=DispClk
#define A_2to1_32BitDac 0xA0 // 2:1 mux, 32 bit width, f=1/2(DispClk)
#define A_2to1_64BitDac 0xC0 // 2:1 mux, 64 bit width, f=1/2(DispClk)
#define A_4to1_32BitDac 0xE0 // 4:1 mux, 32 bit width, f=1/4(DispClk)
//
// Configuration Register B
//
#define HSYNC_ACTV_HIGH 0x01 // Active High state for Horizontal Sync
#define VSYNC_ACTV_HIGH 0x02 // Active High state for Vertical Sync
#define CSYNC_ACTV_HIGH 0x04 // Active High state for Composite Sync
#define FRAME_ACTV_HIGH 0x08 // Active High state for Frame Pulse
#define LINE_ACTV_HIGH 0x10 // Active High state for Line Pulse
#define BLANK_ACTV_HIGH 0x20 // Active High state for Blanking Pulse
#define DCC_HALT_CLK 0x80 // Disables and Resets all counters and state
// machines. Xbus interface is still active.
// DCC Definitions
#define INT_STATUS 0x03
#define PLL_INTERFACE 0x04
#define TIMING_A 0x05
#define CONFIG_A 0x06
#define CONFIG_B 0x07
#define HZNTL_COUNT_L 0x08
#define HZNTL_COUNT_H 0x09
#define VERT_COUNT_L 0x0a
#define VERT_COUNT_H 0x0b
#define HZNTL_SYNC_STOP 0x0c
#define HZNTL_BLK_STP_L 0x0d
#define HZNTL_BLK_STP_H 0x0e
#define HZNTL_DTA_STP_L 0x0f
#define HZNTL_DTA_STP_H 0x10
#define VERT_SYNC_STOP 0x11
#define VERT_BLK_STOP 0x12
#define VERT_DTA_STP_L 0x13
#define VERT_DTA_STP_H 0x14
#define GPIO_B 0x1e
//
// VRAM width list.
//
typedef enum _DCC_VRAM_WIDTH {
VRAM_32BIT = 0,
VRAM_64BIT,
VRAM_128BIT,
NUMBER_OF_VRAM_WIDTH_TYPES
} DCC_VRAM_WIDTH;
#endif