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.
 
 
 
 
 
 

326 lines
13 KiB

/*++
Copyright (c) 1993 NeTpower Incorporated
Module Name:
pcieisa.h
Abstract:
This module is the header file that describes virtual
register address used by the EISA System Component (ESC)
device (82374EB).
Author:
Hector R. Briones (hector) 29-Nov-1993
Revision History:
--*/
#ifndef _PCIEISA_
#define _PCIEISA_
#define ESC_DMA0_ADDRESS (EISA_CONTROL_VIRTUAL_BASE)
#define ESC_DMA0_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0x1)
#define ESC_DMA1_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0x2)
#define ESC_DMA1_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0x3)
#define ESC_DMA2_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0x4)
#define ESC_DMA2_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0x5)
#define ESC_DMA3_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0x6)
#define ESC_DMA3_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0x7)
#define ESC_DMA0_3_CMD (EISA_CONTROL_VIRTUAL_BASE + 0x8)
#define ESC_DMA0_3_STATUS (EISA_CONTROL_VIRTUAL_BASE + 0x8)
#define ESC_DMA0_3_REQ (EISA_CONTROL_VIRTUAL_BASE + 0x9)
#define ESC_DMA0_3_MASKSB (EISA_CONTROL_VIRTUAL_BASE + 0xa)
#define ESC_DMA0_3_MODE (EISA_CONTROL_VIRTUAL_BASE + 0xb)
#define ESC_DMA0_3_CLRBP (EISA_CONTROL_VIRTUAL_BASE + 0xc)
#define ESC_DMA0_3_MASTER_CLR (EISA_CONTROL_VIRTUAL_BASE + 0xd)
#define ESC_DMA0_3_CLRMASK (EISA_CONTROL_VIRTUAL_BASE + 0xe)
#define ESC_DMA0_3_ALLBITMASK (EISA_CONTROL_VIRTUAL_BASE + 0xf)
#define ESC_INT_CONTROL1 (EISA_CONTROL_VIRTUAL_BASE + 0x20)
#define ESC_INT_MASK1 (EISA_CONTROL_VIRTUAL_BASE + 0x21)
#define ESC_TC1_COUNTER0 (EISA_CONTROL_VIRTUAL_BASE + 0x40)
#define ESC_TC1_COUNTER1 (EISA_CONTROL_VIRTUAL_BASE + 0x41)
#define ESC_TC1_COUNTER2 (EISA_CONTROL_VIRTUAL_BASE + 0x42)
#define ESC_TC1_CONTROL (EISA_CONTROL_VIRTUAL_BASE + 0x43)
#define ESC_TC1_RBCMD (EISA_CONTROL_VIRTUAL_BASE + 0x43)
#define ESC_TC1_LATCH_CMD (EISA_CONTROL_VIRTUAL_BASE + 0x43)
#define ESC_TC2_COUNTER0 (EISA_CONTROL_VIRTUAL_BASE + 0x48)
#define ESC_TC2_COUNTER2 (EISA_CONTROL_VIRTUAL_BASE + 0x4a)
#define ESC_TC2_CONTROL (EISA_CONTROL_VIRTUAL_BASE + 0x4b)
#define ESC_TC2_RBCMD (EISA_CONTROL_VIRTUAL_BASE + 0x4b)
#define ESC_TC2_LATCH_CMD (EISA_CONTROL_VIRTUAL_BASE + 0x4b)
#define ESC_RST_UBUS_IRQ12 (EISA_CONTROL_VIRTUAL_BASE + 0x60)
#define ESC_NMI_CONTROL_STATUS (EISA_CONTROL_VIRTUAL_BASE + 0x61)
#define ESC_NMI_RTC (EISA_CONTROL_VIRTUAL_BASE + 0x70)
#define ESC_CMOS_RAM_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0x70)
#define ESC_CMOS_RAM_DATA (EISA_CONTROL_VIRTUAL_BASE + 0x71)
#define ESC_BIOS_TIMER (EISA_CONTROL_VIRTUAL_BASE + 0x78)
#define ESC_DMA0_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x87)
#define ESC_DMA1_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x83)
#define ESC_DMA2_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x81)
#define ESC_DMA3_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x82)
#define ESC_DMA5_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x8b)
#define ESC_DMA6_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x89)
#define ESC_DMA7_PAGE (EISA_CONTROL_VIRTUAL_BASE + 0x8a)
#define ESC_DMA_LPAGE_REF (EISA_CONTROL_VIRTUAL_BASE + 0x8f)
#define ESC_PORT_92 (EISA_CONTROL_VIRTUAL_BASE + 0x8f)
#define ESC_INT_CONTROL2 (EISA_CONTROL_VIRTUAL_BASE + 0xa0)
#define ESC_INT_MASK2 (EISA_CONTROL_VIRTUAL_BASE + 0xa1)
#define ESC_DMA4_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0xc0)
#define ESC_DMA4_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0xc2)
#define ESC_DMA5_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0xc4)
#define ESC_DMA5_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0xc6)
#define ESC_DMA6_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0xc8)
#define ESC_DMA6_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0xca)
#define ESC_DMA7_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0xcc)
#define ESC_DMA7_COUNTER (EISA_CONTROL_VIRTUAL_BASE + 0xce)
#define ESC_DMA4_7_CMD (EISA_CONTROL_VIRTUAL_BASE + 0xd0)
#define ESC_DMA4_7_STATUS (EISA_CONTROL_VIRTUAL_BASE + 0xd0)
#define ESC_DMA4_7_REQ (EISA_CONTROL_VIRTUAL_BASE + 0xd2)
#define ESC_DMA4_7_MASKSB (EISA_CONTROL_VIRTUAL_BASE + 0xd4)
#define ESC_DMA4_7_MODE (EISA_CONTROL_VIRTUAL_BASE + 0xd6)
#define ESC_DMA4_7_CLRBP (EISA_CONTROL_VIRTUAL_BASE + 0xd8)
#define ESC_DMA4_7_MASTER_CLR (EISA_CONTROL_VIRTUAL_BASE + 0xda)
#define ESC_DMA4_7_CLRMASK (EISA_CONTROL_VIRTUAL_BASE + 0xdc)
#define ESC_DMA4_7_ALLBITMASK (EISA_CONTROL_VIRTUAL_BASE + 0xde)
#define ESC_FLOP2_DOR (EISA_CONTROL_VIRTUAL_BASE + 0x372)
#define ESC_FLOP1_DOR (EISA_CONTROL_VIRTUAL_BASE + 0x3f2)
#define ESC_DMA_SGINT_STAT (EISA_CONTROL_VIRTUAL_BASE + 0x40a)
#define ESC_DMA0_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x410)
#define ESC_DMA1_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x411)
#define ESC_DMA2_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x412)
#define ESC_DMA3_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x413)
#define ESC_DMA5_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x415)
#define ESC_DMA6_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x416)
#define ESC_DMA7_SGCMD (EISA_CONTROL_VIRTUAL_BASE + 0x417)
#define ESC_DMA0_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x418)
#define ESC_DMA1_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x419)
#define ESC_DMA2_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x41a)
#define ESC_DMA3_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x41b)
#define ESC_DMA5_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x41d)
#define ESC_DMA6_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x41e)
#define ESC_DMA7_SGSTAT (EISA_CONTROL_VIRTUAL_BASE + 0x41f)
#define ESC_DMA0_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x420)
#define ESC_DMA1_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x424)
#define ESC_DMA2_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x428)
#define ESC_DMA3_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x42c)
#define ESC_DMA5_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x434)
#define ESC_DMA6_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x438)
#define ESC_DMA7_SGDPTR (EISA_CONTROL_VIRTUAL_BASE + 0x43c)
#define ESC_NMI_EXT (EISA_CONTROL_VIRTUAL_BASE + 0x461)
#define ESC_SW_NMI (EISA_CONTROL_VIRTUAL_BASE + 0x462)
#define ESC_DMA0_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x487)
#define ESC_DMA1_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x483)
#define ESC_DMA2_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x481)
#define ESC_DMA3_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x482)
#define ESC_DMA5_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x48b)
#define ESC_DMA6_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x489)
#define ESC_DMA7_HIPAGE (EISA_CONTROL_VIRTUAL_BASE + 0x48a)
#define ESC_EDGE_LEVEL1 (EISA_CONTROL_VIRTUAL_BASE + 0x4d0)
#define ESC_EDGE_LEVEL2 (EISA_CONTROL_VIRTUAL_BASE + 0x4d1)
#define ESC_DMA_EXT_MODE (EISA_CONTROL_VIRTUAL_BASE + 0x4d6)
//
// Timer/Counter Control Word definitions
//
#define ESC_TC_CNTRLW_RB_CMD 0xc0 // Read Back command
#define ESC_TC_CNTRLW_SC(x) (x<<6) // Select counter (0-2)
#define ESC_TC_CNTRLW_SC2 0x80 // Select counter 2
#define ESC_TC_CNTRLW_SC1 0x40 // Select counter 1
#define ESC_TC_CNTRLW_SC0 0x00 // Select counter 0
#define ESC_TC_CNTRLW_CLC 0x00 // Counter Latch command
#define ESC_TC_CNTRLW_16B 0x30 // R/W LSB then MSB
#define ESC_TC_CNTRLW_MSB 0x20 // R/W Most sig. byte (MSB)
#define ESC_TC_CNTRLW_LSB 0x10 // R/W Least sig. byte (LSB)
#define ESC_TC_CNTRLW_MODE(x) (x<<1) // Select mode (0-5)
#define ESC_TC_CNTRLW_BCD 0x01 // Binary/BCD countdown type
//
// Timer/Counter Modes
//
#define ESC_TC_MODE_ITC 0 // Sel mode0 (int. on term count)
#define ESC_TC_MODE_HROS 1 // Sel mode1 (hw retrig. 1 shot)
#define ESC_TC_MODE_RGEN 2 // Sel mode2 (rate generator)
#define ESC_TC_MODE_SQW 3 // Sel mode3 (square wave mode)
#define ESC_TC_MODE_STS 4 // Sel mode4 (sw triggerable strobe)
#define ESC_TC_MODE_HTS 5 // Sel mode5 (hw triggerable strobe)
//
// Timer/Counter Read Back Command register
//
#define ESC_TC_NOLATCH_STATUS 0x20 // Do not Latch status - selected cntrs
#define ESC_TC_NOLATCH_CNTR 0x10 // Do not Latch count of selected cntrs
#define ESC_TC_LATCH_CNTR 0x00 // Latch count of selected cntrs
#define ESC_TC_LATCH_STATUS 0x00 // Latch status - selected cntrs
#define ESC_TC_RBCMD_SEL_CNT2 0x08 // Read Back Cmd, select counter2
#define ESC_TC_RBCMD_SEL_CNT1 0x04 // Read Back Cmd, select counter1
#define ESC_TC_RBCMD_SEL_CNT0 0x02 // Read Back Cmd, select counter0
//
// With a divisor of 11930 (0x2e9a), counter0 will produces a square
// wave with a period of 10ms. If clock frequency (1.193MHz) is divided
// by the divisor(11930), it gives a result of 100. If the recipricol of
// the result (100) is done, it equals 10ms.
//
#define NANOSECONDS 1
#define MICROSECONDS ( 1000 * NANOSECONDS )
#define MILLISECONDS ( 1000 * MICROSECONDS )
#define SECONDS ( 1000 * MILLISECONDS )
#define COUNTER_PERIOD ( 838 * NANOSECONDS )
#define COUNTER_10MS ( ( ( 10 * MILLISECONDS ) / COUNTER_PERIOD ) )
#define COUNTER_1MS ( ( ( 1 * MILLISECONDS ) / COUNTER_PERIOD ) )
//
// NMI Status and Control Register
//
#define ESC_NCS_T1C2_OUT 0x20 // Output of Timer 1, Counter 2
#define ESC_NCS_SPEAKER_ENABLE 0x02 // Enable Speaker, used for Interval Timer PMP v2
#define ESC_NCS_T1C2_ENABLE 0x01 // Enable Timer 1, Counter 2
//
// The ESC Configuration registers are accessed through
// and indexing scheme. The Index address register is
// located at I/O address 0x22 and the index data register
// is located at I/O address 0x23. The register data
// written into the index address register selects the
// desired configuration register. Data for the selected
// configuration register can be read from or written to,
// by performing a read or write to the index data register.
//
#define ESC_CONFIG_INDEX_ADDRESS (EISA_CONTROL_VIRTUAL_BASE + 0x22)
#define ESC_CONFIG_INDEX_DATA (EISA_CONTROL_VIRTUAL_BASE + 0x23)
#define ESC_CONFIG_ID 0x2
#define ESC_CONFIG_REVID 0x8
#define ESC_CONFIG_MODE_SEL 0x40
#define ESC_CONFIG_BIOS_CSA 0x42
#define ESC_CONFIG_BIOS_CSB 0x43
#define ESC_CONFIG_EISA_CLK_DIV 0x4d
#define ESC_CONFIG_PERIPH_CSA 0x4e
#define ESC_CONFIG_PERIPH_CSB 0x4f
#define ESC_CONFIG_EISA_ID0 0x50
#define ESC_CONFIG_EISA_ID1 0x51
#define ESC_CONFIG_EISA_ID2 0x52
#define ESC_CONFIG_EISA_ID3 0x53
#define ESC_CONFIG_SGRBA 0x57
#define ESC_CONFIG_PIRQ0 0x60
#define ESC_CONFIG_PIRQ1 0x61
#define ESC_CONFIG_PIRQ2 0x62
#define ESC_CONFIG_PIRQ3 0x63
#define ESC_CONFIG_GPCSLA0 0x64
#define ESC_CONFIG_GPCSHA0 0x65
#define ESC_CONFIG_GPCSMASK0 0x66
#define ESC_CONFIG_GPCSLA1 0x68
#define ESC_CONFIG_GPCSHA1 0x69
#define ESC_CONFIG_GPCSMASK1 0x6a
#define ESC_CONFIG_GPCSLA2 0x6c
#define ESC_CONFIG_GPCSHA2 0x6d
#define ESC_CONFIG_GPCSMASK2 0x6e
#define ESC_CONFIG_GPXBC 0x6f
#define ESC_CONFIG_TEST_CNTRL 0x88
//
// Bit definitions for ESC configuration registers.
//
#define ESC_CONFIG_IDEN_BYTE 0x0f // Enable access to config registers
#define ESC_BIOS_CSA_LOWBIOS1 0x01 // Addrs range 0xfffe0000 - 0xfffe3fff
#define ESC_BIOS_CSA_LOWBIOS2 0x02 // Addrs range 0xfffe4000 - 0xfffe7fff
#define ESC_BIOS_CSA_LOWBIOS3 0x04 // Addrs range 0xfffe8000 - 0xfffebfff
#define ESC_BIOS_CSA_LOWBIOS4 0x08 // Addrs range 0xfffec000 - 0xfffeffff
#define ESC_BIOS_CSA_HIGHBIOS 0x10 // Addrs range 0xffff0000 - 0xffffffff
#define ESC_BIOS_CSA_ENLBIOS 0x20 // Addrs range 0xfff80000 - 0xfffdffff
#define ESC_BIOS_CSA_ALLBIOS 0x3f // 512Kbytes 0xfff80000 - 0xffffffff
#define ESC_BIOS_CSB_BIOSWREN 0x08 // Bios Write Enable
#define ESC_PCI_EISA_CLK_33MHZ 0x00 // PCI Clk div of 33MHz for BCLK 8.33Mhz
#define ESC_PCI_EISA_CLK_25MHZ 0x01 // PCI Clk div of 25MHz for BLCK 8.33Mhz
#define ESC_PCI_EISA_MOUSE_INT 0x10 // Mouse interrupt
#define ESC_PCI_EISA_PROC_ERR 0x20 // Co-Processor Error
#define ESC_PERIPH_CSA_RTC 0x01 // Decode for Real Time Clock
#define ESC_PERIPH_CSA_KBD 0x02 // Decode for Keyboard Controller
#define ESC_PERIPH_CSA_FDC1 0x04 // Decode for Floppy Disk Controller
#define ESC_PERIPH_CSA_FDC2 0x08 // Decode for Floppy Disk Controller
#define ESC_PERIPH_CSA_SECNDARY 0x20 // Decode for Secondary addrs space
#define ESC_PERIPH_CSB_SERA1 0x00 // Decode for Serial PortA - COM1
#define ESC_PERIPH_CSB_SERA2 0x01 // Decode for Serial PortA - COM2
#define ESC_PERIPH_CSB_SERA_DIS 0x03 // Decode for Serial PortA Disable
#define ESC_PERIPH_CSB_SERB1 0x00 // Decode for Serial PortB - COM1
#define ESC_PERIPH_CSB_SERB2 0x04 // Decode for Serial PortB - COM2
#define ESC_PERIPH_CSB_SERB_DIS 0x0c // Decode for Serial PortB Disable
#define ESC_PERIPH_CSB_LPT1 0x00 // Decode for Parallel Port1
#define ESC_PERIPH_CSB_LPT2 0x10 // Decode for Parallel Port2
#define ESC_PERIPH_CSB_LPT3 0x20 // Decode for Parallel Port3
#define ESC_PERIPH_CSB_LPT_DIS 0x30 // Decode for Parallel Port Disable
#define ESC_PERIPH_CSB_PORT92 0x40 // Decode for Port 92
#define ESC_PERIPH_CSB_CRAM 0x80 // Decode for Cram
#define ESC_MODE_SEL_EISAMSUPP0 0x00 // 4 EISA Masters, 4 slots, 4 PCI IRQ's
#define ESC_MODE_SEL_EISAMSUPP1 0x01 // 6 EISA Masters, 2 slots, 2 PCI IRQ's
#define ESC_MODE_SEL_EISAMSUPP2 0x02 // 7 EISA Masters, 1 slots, 1 PCI IRQ's
#define ESC_MODE_SEL_EISAMSUPP3 0x03 // 8 EISA Masters, 0 slots, 0 PCI IRQ's
#define ESC_MODE_SEL_SERR_NMIEN 0x08 // SERR# generated NMI enable
#define ESC_MODE_SEL_GEN_CS 0x10 // General Purpose Chip selects
#define ESC_MODE_SEL_CONFIG_RAD 0x20 // Configuration Ram Address
#define ESC_GPXBC_XBUSOE0 0x01 // XBUSOE# Generation for GPCS0
#define ESC_GPXBC_XBUSOE1 0x02 // XBUSOE# Generation for GPCS1
#define ESC_GPXBC_XBUSOE2 0x04 // XBUSOE# Generation for GPCS2
//
// IRQ defines for PCI/EISA - PCI/ISA bridge devices.
//
#define IO_IRQ0 0
#define IO_IRQ1 1
#define IO_IRQ2 2
#define IO_IRQ3 3
#define IO_IRQ4 4
#define IO_IRQ5 5
#define IO_IRQ6 6
#define IO_IRQ7 7
#define IO_IRQ8 8
#define IO_IRQ9 9
#define IO_IRQ10 10
#define IO_IRQ11 11
#define IO_IRQ12 12
#define IO_IRQ13 13
#define IO_IRQ14 14
#define IO_IRQ15 15
#endif // _PCIEISA_