23 #include <linux/types.h>
27 #include <linux/signal.h>
28 #include <linux/sched.h>
34 #include <asm/addrspace.h>
35 #include <asm/processor.h>
39 #include <asm/i8259.h>
42 #define IP22_EISA_MAX_SLOTS 4
43 #define EISA_MAX_IRQ 16
45 #define EIU_MODE_REG 0x0001ffc0
46 #define EIU_STAT_REG 0x0001ffc4
47 #define EIU_PREMPT_REG 0x0001ffc8
48 #define EIU_QUIET_REG 0x0001ffcc
49 #define EIU_INTRPT_ACK 0x00010004
51 static char __init *decode_eisa_sig(
unsigned long addr)
58 for (i = 0; i < 4; i++) {
59 sig[
i] =
inb(addr + i);
61 if (!i && (sig[0] & 0x80))
65 sig_str[0] = ((sig[0] >> 2) & 0x1f) + (
'A' - 1);
66 sig_str[1] = (((sig[0] & 3) << 3) | (sig[1] >> 5)) + (
'A' - 1);
67 sig_str[2] = (sig[1] & 0x1f) + (
'A' - 1);
68 rev = (sig[2] << 8) | sig[3];
69 sprintf(sig_str + 3,
"%04X", rev);
98 .handler = ip22_eisa_intr,