summaryrefslogblamecommitdiffstats
path: root/private/ntos/nthals/halsni4x/mips/minidef.h
blob: 0e9e98eb71e4bfea8843ef893f7b186a7fc1a2d1 (plain) (tree)












































































































































                                                                                                                                       
//#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_