$NetBSD: Interrupts,v 1.1 2000/12/14 20:30:14 scw Exp $

NetBSD/mvme68k Interrupt Levels
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

NetBSD/mvme68k interrupts are dependent on the type of device which
generates them. This holds true regardless of what bus the device is
situated on (eg. local, VMEbus or IndustryPack site).

On MVME147, there is a fixed 1:1 mapping of VMEbus interrupt level
to CPU interrupt level. This implies that VMEbus devices must be
set to interrupt at the correct level for that type of device.

On the other boards, each VMEbus interrupt level can be mapped to a
specific CPU interrupt level so the above restriction does not apply.
However, note that the mapping can only be done once. Therefore it is
not possible to have two VMEbus devices which require different CPU
interrupt levels sharing the same VMEbus interrupt level.

The mapping of device type to CPU interrupt levels is as follows:

       CPU Irq         Device Type
       ~~~~~~~         ~~~~~~~~~~~
       <Highest>
       6 - 7           Anything which generates an exceptional condition
                       which *must* be responded to immediately. For
                       example, a memory parity/uncorrectable data error.

       5               Reserved for the system clock/scheduler. Do not use.

       4               Serial port devices (rs232, rs422 etc).

       3               Network interfaces.

       2               Disk/Block device interfaces.

       1               Anything else.
       <Lowest>



Interrupt Vectors
~~~~~~~~~~~~~~~~~

NetBSD/mvme68k does not use or generate `auto-vectored' interrupts.

All vectored interrupts up to and including vector 0x7f are reserved
for use by onboard devices.

VMEbus cards and IndustryPack modules are free to use vectors 0x80 -> 0xff.

The onboard devices' vectors are as follows:

MVME147:
       0x40            PCC: ACFAIL
       0x41            PCC: BERR
       0x42            PCC: ABORT Switch
       0x43            PCC: ZS Chips shared vector
       0x44            PCC: Lance Ethernet
       0x45            PCC: WD33C93 SCSI
       0x46            PCC: DMA
       0x47            PCC: Printer
       0x48            PCC: Timer1
       0x49            PCC: Timer2
       0x4a            PCC: Soft Interrupt 1
       0x4b            PCC: Soft Interrupt 2
       0x4c -> 0x4f    PCC: <unused>


MVME167/177:
       0x50            PCC2: Printer `BUSY'
       0x51            PCC2: Printer `Paper Empty'
       0x52            PCC2: Printer `Select'
       0x53            PCC2: Printer `Fault'
       0x54            PCC2: Printer `ACK'
       0x55            PCC2: SCSI
       0x56            PCC2: Ethernet `Error'
       0x57            PCC2: Ethernet
       0x58            PCC2: Timer 2
       0x59            PCC2: Timer 1
       0x5a            PCC2: GPIO
       0x5b            PCC2: <unused>
       0x5c            PCC2: CD2401 Rx Exception
       0x5d            PCC2: CD2401 Modem
       0x5e            PCC2: CD2401 Tx
       0x5f            PCC2: CD2401 Rx

       0x60 -> 0x67    VME2: <unused>
       0x68            VME2: Software Interrupt #0
       0x69            VME2: Software Interrupt #1
       0x6a            VME2: Software Interrupt #2
       0x6b            VME2: Software Interrupt #3
       0x6c            VME2: Software Interrupt #4
       0x6d            VME2: Software Interrupt #5
       0x6e            VME2: Software Interrupt #6
       0x6f            VME2: Software Interrupt #7
       0x70            VME2: GCSR Location Monitor #0
       0x71            VME2: GCSR Location Monitor #1
       0x72            VME2: GCSR SIG #0
       0x73            VME2: GCSR SIG #1
       0x74            VME2: GCSR SIG #2
       0x75            VME2: GCSR SIG #3
       0x76            VME2: DMA Controller
       0x77            VME2: VIA
       0x78            VME2: Tick Timer #1
       0x79            VME2: Tick Timer #2
       0x7a            VME2: `IRQ1' feature
       0x7b            VME2: Parity/ECC Error
       0x7c            VME2: Master Write Post Error
       0x7d            VME2: SYSFAIL
       0x7e            VME2: ABORT Switch
       0x7f            VME2: ACFAIL


MVME162/172:
       0x40            IPACK: DMA_a
       0x41            IPACK: DMA_b
       0x42            IPACK: DMA_c
       0x43            IPACK: DMA_d
       0x44            IPACK: Programmable Clock

       0x50 -> 0x52    MC2: <unused>
       0x53            MC2: Timer 4
       0x54            MC2: Timer 3
       0x55            MC2: SCSI
       0x56            MC2: Ethernet `Error'
       0x57            MC2: Ethernet
       0x58            MC2: Timer 2
       0x59            MC2: Timer 1
       0x5a            MC2: <unused>
       0x5b            MC2: Parity/ECC Error
       0x5c            MC2: ZS #1 (vector supplied by ZS chip)
       0x5d            MC2: ZS #2 (vector supplied by ZS chip)
       0x5e            MC2: Abort Switch
       0x5f            MC2: <unused>

       0x60 -> 0x67    VME2: <unused>
       0x68            VME2: Software Interrupt #0
       0x69            VME2: Software Interrupt #1
       0x6a            VME2: Software Interrupt #2
       0x6b            VME2: Software Interrupt #3
       0x6c            VME2: Software Interrupt #4
       0x6d            VME2: Software Interrupt #5
       0x6e            VME2: Software Interrupt #6
       0x6f            VME2: Software Interrupt #7
       0x70            VME2: GCSR Location Monitor #0
       0x71            VME2: GCSR Location Monitor #1
       0x72            VME2: GCSR SIG #0
       0x73            VME2: GCSR SIG #1
       0x74            VME2: GCSR SIG #2
       0x75            VME2: GCSR SIG #3
       0x76            VME2: DMA Controller
       0x77            VME2: VIA
       0x78            VME2: Tick Timer #1
       0x79            VME2: Tick Timer #2
       0x7a            VME2: `IRQ1' feature
       0x7b            VME2: Parity/ECC Error
       0x7c            VME2: Master Write Post Error
       0x7d            VME2: SYSFAIL
       0x7e            VME2: <unused>
       0x7f            VME2: ACFAIL