mirror of https://github.com/lianthony/NT4.0
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.
141 lines
7.9 KiB
141 lines
7.9 KiB
//#pragma comment(exestr, "$Header: /usr4/winnt/SOURCES/ddk35/src/hal/halsni/mips/RCS/minidef.h,v 1.2 1994/11/09 07:54:26 holli Exp $")
|
|
/*+++
|
|
|
|
Copyright (c) 1993-1994 Siemens Nixdorf Informationssysteme AG
|
|
|
|
Module Name:
|
|
|
|
MINIdef.h
|
|
|
|
Abstract:
|
|
|
|
This file describes hardware addresses
|
|
for SNI Minitower and RM400-Tower which are not common
|
|
to all SNI machines.
|
|
|
|
|
|
|
|
---*/
|
|
|
|
#ifndef _MINIDEF_
|
|
#define _MINIDEF_
|
|
|
|
//
|
|
// define various masks for the interrupt sources register
|
|
//
|
|
|
|
/*
|
|
The interrupt Source Register on an MiniTower has the following bits:
|
|
|
|
7 6 5 4 3 2 1 0
|
|
+-------------------------------+
|
|
| 1 | 0 | 1 | 0 | 0 | x | 0 | 0 | 0 Low Activ; 1 High activ; x not connected
|
|
+-------------------------------+
|
|
|________ EISA/ ISA Interrupt (HalpEisaDispatch)
|
|
|____________ SCSI Interrupt (SCSI Driver)
|
|
|________________ EIP Interrupt (RM400 Tower Only/ Unused on Minitower)
|
|
|____________________ Timer 0 (HalpClockInterrupt1 on MULTI)
|
|
|________________________ Timer 1 (unused)
|
|
|____________________________ Ethernet (Net driver)
|
|
|________________________________ Push Button/Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
|
|
|____________________________________ Irq 9 (unused)
|
|
|
|
The second source for Interrupt Information is the MachineStatusRegister, which has the following bits:
|
|
|
|
7 6 5 4 3 2 1 0
|
|
+-------------------------------+
|
|
| x | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 Low Activ; 1 High activ; x not connected
|
|
+-------------------------------+
|
|
|________ ColdStart (unused)
|
|
|____________ OverTemperature Int. (dismiss only / unused on Tower)
|
|
|________________ EIP Interrupt (RM400 Tower Only/ unused on Minitower)
|
|
|____________________ Timer 1 (unused)
|
|
|________________________ Timer 0 (HalpClockInterrupt1 on MULTI)
|
|
|____________________________ PushButton (HalpInt0Dispatch or HalpInt1Dispatch)
|
|
|________________________________ Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
|
|
|____________________________________ not connected (unused)
|
|
*/
|
|
|
|
#define RM400_EISA_MASK 0x01 // these are the interrupts from the Eisa PC core
|
|
#define RM400_SCSI_MASK 0x02
|
|
#define RM400_SCSI_EISA_MASK 0x03
|
|
#define RM400_NET_MASK 0x20
|
|
#define RM400_PB_MASK 0x40
|
|
#define RM400_MSR_TEMP_MASK 0x02 // OverTemperature Interrupt in the MSR (RM400MT only) (high active)
|
|
#define RM400_MSR_EIP_MASK 0x04 // EIP Interrupt in the MSR (RM400 Tower only) (low active)
|
|
#define RM400_MSR_TIMER0_MASK 0x10 // Timer 0 Interrupt in the MachineStatusRegister (low active)
|
|
#define RM400_MSR_TIMER1_MASK 0x08 // Timer 1 Interrupt in the MachineStatusRegister (low active)
|
|
#define RM400_MSR_PB_MASK 0x20 // PushButton is also reported in the MachineStatusRegister (low actice)
|
|
#define RM400_MSR_TIMEOUT_MASK 0x40 // Timeout's are indicated in the MachineStatusRegister (low active)
|
|
#define RM400_INTERRUPT_MASK 0x5f
|
|
#define RM400_MSR_MASK 0xfc // 11111100 -> xor gives High active bits
|
|
|
|
#define RM400_TOWER_EISA_MASK 0x01
|
|
#define RM400_TOWER_SCSI_MASK 0x02
|
|
#define RM400_TOWER_SCSI_EISA_MASK 0x03
|
|
#define RM400_TOWER_EIP_MASK 0x04 // this is the famous EIP Interrupt ... (tower only)
|
|
#define RM400_TOWER_NET_MASK 0x20
|
|
#define RM400_TOWER_PB_MASK 0x40
|
|
#define RM400_TOWER_TIMEOUT_MASK 0x40
|
|
#define RM400_TOWER_INTERRUPT_MASK 0x5f
|
|
|
|
#define RM400_ONBOARD_CONTROL_PHYSICAL_BASE EISA_CONTROL_PHYSICAL_BASE
|
|
#define RM400_ONBOARD_MEMORY_PHYSICAL_BASE EISA_MEMORY_PHYSICAL_BASE
|
|
#define RM400_ONBOARD_IO (ONBOARD_CONTROL_PHYSICAL_BASE | KSEG1_BASE)
|
|
#define RM400_ONBOARD_MEMORY (ONBOARD_MEMORY_PHYSICAL_BASE | KSEG1_BASE)
|
|
|
|
//
|
|
// SNI ASIC registers
|
|
//
|
|
|
|
#define RM400_INTERRUPT_ACK_PHYSICAL_BASE 0x1c000000 // physical base of interrupt (ext. request) register
|
|
#define RM400_INTERRUPT_ACK_REGISTER 0xbc000000 // physical base | KSEG1_BASE
|
|
#define RM400_EISA_INT_ACK_PHYSICAL_BASE 0x1a000000 // physical base of EISA interrupt ack for the chipset
|
|
#define RM400_EISA_INT_ACK_REGISTER 0xba000000 // physical base | KSEG1_BASE
|
|
#define RM400_ONBOARD_INT_ACK_PHYSICAL_BASE RM400_EISA_INT_ACK_PHYSICAL_BASE // physical base of EISA interrupt ack for the chipset
|
|
#define RM400_ONBOARD_INT_ACK_REGISTER RM400_EISA_INT_ACK_REGISTER // physical base | KSEG1_BASE
|
|
#define RM400_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c020000 // physical base of interrupt source register
|
|
#define RM400_INTERRUPT_SOURCE_REGISTER 0xbc020000 // physical base | KSEG1_BASE
|
|
#define RM400_VESA_MAP_PHYSICAL_BASE 0x1c010000 // physical base of VLB map register
|
|
#define RM400_VESA_MAP 0xbc010000 // physical base | KSEG1_BASE
|
|
#define RM400_ISA_MAP_PHYSICAL_BASE 0x1c0e0000 // physical base of ISA map register (for BusMaster Devices)
|
|
#define RM400_ISA_MAP 0xbc0e0000 // physical base | KSEG1_BASE
|
|
|
|
#define RM400_LED_PHYSICAL_ADDR 0x1c090000 // LED Register physical
|
|
#define RM400_LED_ADDR 0xbc090000 // LED Register | KSEG1_BASE
|
|
#define RM400_MCR_PHYSICAL_ADDR 0x1c0b0000 // MachineConfigRegister
|
|
#define RM400_MCR_ADDR 0xbc0b0000 // MachineConfigRegister | KSEG1
|
|
#define RM400_MSR_PHYSICAL_ADDR 0x1c0a0000 // machine status register
|
|
#define RM400_MSR_ADDR 0xbc0a0000 // machine status register | KSEG1
|
|
|
|
//
|
|
// System Timer (i82C54) and RealTimeClock Chip on RM400-10 and Minitower
|
|
//
|
|
|
|
#define RM400_TIMER0_MASK 0x10
|
|
#define RM400_TIMER1_MASK 0x08
|
|
#define RM400_TIMER_MASK 0x18 // Timer0 and Timer1
|
|
#define RM400_EXTRA_TIMER_PHYSICAL_ADDR 0x1c040000 // physical base of Timer for system Clock
|
|
#define RM400_EXTRA_TIMER_ADDR 0xbc040000 // Timer for system Clock |KSEG1_BASE
|
|
#define RM400_TIMER0_ACK_ADDR 0xbc050000 // reset Timer0 Interrupt |KSEG1_BASE
|
|
#define RM400_TIMER1_ACK_ADDR 0xbc060000 // reset Timer1 Interrupt |KSEG1_BASE
|
|
|
|
#define RM400_NVRAM_PHYSICAL_BASE 0x1c080000 // physical base of nonvolatile RAM and RTC
|
|
#define RM400_REAL_TIME_CLOCK_ADDRESS 0x1c080000 // physical base of RTC
|
|
#define RM400_REAL_TIME_CLOCK 0xbc080000 // physical base of RTC | KSEG1_BASE
|
|
#define RM400_RESET_DBG_BUT 0xbc0f0000 // reset debugger int | KSEG1_BASE
|
|
#define RM400_RESET_TEMPBAT_INTR 0xbc0f0000 // reset Temperature/Battery int | KSEG1
|
|
|
|
//
|
|
// RM400 Tower (M8032)
|
|
// specific Addresses
|
|
//
|
|
|
|
#define RM400_TOWER_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c010000 // physical base of interrupt source register
|
|
#define RM400_TOWER_INTERRUPT_SOURCE_REGISTER 0xbc010000 // physical base | KSEG1_BASE
|
|
#define RM400_TOWER_VESA0_MAP_PHYSICAL_BASE 0x1c0c0000 // physical base of Vesa Slot 0 map register
|
|
#define RM400_TOWER_VESA0_MAP 0xbc0c0000 // physical base | KSEG1_BASE
|
|
#define RM400_TOWER_VESA1_MAP_PHYSICAL_BASE 0x1c0d0000 // physical base of Vesa Slot 1 map register
|
|
#define RM400_TOWER_VESA1_MAP 0xbc0d0000 // physical base | KSEG1_BASE
|
|
|
|
#endif // _MINIDEF_
|