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.
 
 
 
 
 
 

202 lines
5.6 KiB

//-----------------------------------------------------------------------
//
// SL386.H
//
// Trantor SL386 Definitions File
//
// Revisions:
// 04-07-93 KJB First, taken from SL386.def.
// 05-17-93 KJB Added missing prototype.
//
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// 80386SL unit configuration spaces
//
// Perform the following sequence of IOs to unlock the
// CPUPWRMODE register.
//
// byte write 0h to port 23h
// byte write 80h to port 22h
// word write 0080h to port 22h
//
// CPUPWRMODE bit definitions:
//
// Bit 15: IOCFGOPN
//
// Bits 14-9: Not defined here
//
// Bit 8: CPUCNFG lock
//
// Bits 7-4: Not defined here
//
// Bits 3,2: UID1 UID0
// 0 0 CMCU (Mem ctlr unit cfg space)
// 0 1 CU (Cache unit cfg space)
// 1 0 IBU (Internal bus unit cfg space)
// 1 1 EBU (External bus unit cfg space)
//
// Bit 1: Unit enable
//
// Bit 0: Unlock status
//-----------------------------------------------------------------------
#define SL_CPUPWRMODE 0x22
//cpupwrmode_rec record pm_iocfgopn:1,pm_resv:6,pm_cfg_lock:1,
//pm_resv1:4,pm_uid:2,pm_ue:1,pm_ls:1
#define PM_IOCFGOPN 0x8000
#define PM_RESV 0x7e00
#define PM_CFG_LOCK 0x0100
#define PM_RESV1 0x00f0
#define PM_UID 0x00c0
#define PM_UE 0x0002
#define PM_LS 0x0001
#define PM_UID_CMCU 0x00
#define PM_UID_CU 0x40
#define PM_UID_IBU 0x80
#define PM_UID_EBU 0xc0
//-----------------------------------------------------------------------
// 80386SL configuration space
//-----------------------------------------------------------------------
// Read the following I/O addresses in the specified order to
// enable the 386SL configuration space.
#define SL_CNFG_ENA1 0x0fc23
#define SL_CNFG_ENA2 0x0f023
#define SL_CNFG_ENA3 0x0c023
#define SL_CNFG_ENA4 0x00023
#define SL_CFG_STATUS 0x23 //Config space status
#define SL_CFG_INDEX 0x24 //Config space index
#define SL_CFG_DATA 0x25 //Config space data
#define SL_IDXLCK 0x0fa //Cfg index lock register
#define SL_IDXLCK_VAL 0x01 //default value for same
//-----------------------------------------------------------------------
// CFGR2 bit definitions
//
// Bit 7: COMA_MIDI
//
// Bits 6-4: AIRQ2 AIRQ1 AIRQ0
// 0 0 0 COMA IRQ3
// 0 0 1 COMA IRQ4
// 0 1 0 COMA IRQ10
// 0 1 1 COMA IRQ11
// 1 0 0 COMA IRQ12
// 1 0 1 COMA IRQ15
//
// Bit 3: SFIO_EN
//
// Bit 2: FD_SEL
//
// Bit 1: HD_SEL
//
// Bit 0: PS2_EN
//-----------------------------------------------------------------------
#define SL_CFGR2 0x61 //CFGR2 register index
//cfgr2_rec record c2_midi:1,c2_airq:3,c2_sfio:1,c2_fd:1,c2_hd:1,c2_ps2:1
#define C2_MIDI 0x80
#define C2_AIRQ 0x70
#define C2_SFIO 0x08
#define C2_FD 0x04
#define C2_HD 0x02
#define C2_PS2 0x01
//-----------------------------------------------------------------------
// Special feature control registers
//-----------------------------------------------------------------------
#define SL_SF_INDEX 0x0ae //Special feature index
#define SL_SF_DATA 0x0af //Special feature data
#define SL_SFS_DISABLE 0x0f9 //Special feature disable
#define SL_SFS_ENABLE 0x0fb //Special feature enable
//-----------------------------------------------------------------------
// Bit definitions for FPP control register.
//
// Bit 7: 0 = ISA or PS/2 modes
// 1 = FAST_MODE (EPP)
//
// Bit 6: 0 = unidirectional mode
// 1 = bidirectional mode
//
// Bits 5,4: CTL5 CTL4
// 0 0 Parallel port disabled
// 0 1 Parallel port LPT1 (378h), IRQ7
// 1 0 Parallel port LPT2 (278h), IRQ5
// 1 1 Reserved
//
// Bits 0-3: Reserved (0)
//-----------------------------------------------------------------------
#define SL_FPP_CNTL 0x02 //SFS index for FPP_CNTL
// fpp_cntl_rec record fpp_fm:1,fpp_em:1,fpp_ctl:2,fpp_resv:4
#define FPP_FM 0x80
#define FPP_EM 0x40
#define FPP_CTL 0x03
#define FPP_CTL_DIS 0
#define FPP_CTL_LPT1 0x10
#define FPP_CTL_LPT2 0x20
#define FPP_CTL_RESV 0x30
//-----------------------------------------------------------------------
// Bit definitions for PPCONFIG register.
//
// Bit 7: 0 = unidirectional mode
// 1 = bidirectional mode
//
// Bit 6,5: LPTSL1 LPTSL0
// 0 0 Selects LPT1 (IO base 378h)
// 0 1 Selects LPT2 (IO base 278h)
// 1 0 Selects LPT3 (IO base 3bch)
// 1 1 Disables internal parallel port
//
// Bits 0-4: Reserved
//-----------------------------------------------------------------------
#define SL_PPCONFIG 0x102 //PPCONFIG reg
//ppconfig_rec record ppc_bid:1,ppc_sel:2,ppc_resv:5
#define PPC_BID 0x80
#define PPC_SEL 0x60
#define PPC_SEL_POS 0x05
#define PPC_SEL_LPT1 0x00
#define PPC_SEL_LPT2 0x20
#define PPC_SEL_LPT3 0x40
#define PPC_SEL_DIS 0x60
//-----------------------------------------------------------------------
// EPP Parallel port register offsets
//-----------------------------------------------------------------------
#define EPP_DATA 0x0 //read/write
#define EPP_STATUS 0x1 //read-only
#define EPP_CTL 0x2 //read/write
#define EPP_AUTO_ADDRESS 0x3 //read/write
#define EPP_AUTO_DATA 0x4 //read/write (also at 5h-7h)
//
// Exported functions.
//
BOOLEAN SL386EnableEPP(VOID );