summaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/sys_ruffian.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-01-03 17:49:53 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-01-03 17:49:53 +0000
commiteb7a5bf93aaa4be1d7c6181100ab7639e74d67f7 (patch)
tree5746fea1605ff013be9b78a1556aaad7615d664a /arch/alpha/kernel/sys_ruffian.c
parent80ea5b1e15398277650e1197957053b5a71c08bc (diff)
Merge with Linux 2.1.131 plus some more MIPS goodies.
Diffstat (limited to 'arch/alpha/kernel/sys_ruffian.c')
-rw-r--r--arch/alpha/kernel/sys_ruffian.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c
index e34b68952..a7ae730d8 100644
--- a/arch/alpha/kernel/sys_ruffian.c
+++ b/arch/alpha/kernel/sys_ruffian.c
@@ -62,7 +62,7 @@ ruffian_ack_irq(unsigned long irq)
outb(0x20, 0x20);
} else {
/* Ack PYXIS PCI interrupt. */
- *(vulp)PYXIS_INT_REQ = (1UL << (irq - 16));
+ *(vulp)PYXIS_INT_REQ = (1UL << (irq - 16)); mb();
/* ... and read it back to make sure it got written. */
*(vulp)PYXIS_INT_REQ;
}
@@ -91,8 +91,8 @@ ruffian_device_interrupt(unsigned long vector, struct pt_regs *regs)
while (pld) {
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
- if (i == 7) {
- /* Copy this bit from isa_device_interrupt cause
+ if (i == 7) { /* if ISA int */
+ /* Copy this code from isa_device_interrupt because
we need to hook into int 0 for the timer. I
refuse to soil device_interrupt with ifdefs. */
@@ -107,13 +107,12 @@ ruffian_device_interrupt(unsigned long vector, struct pt_regs *regs)
if (j == 7 && !(inb(0x20) & 0x80)) {
/* It's only a passive release... */
} else if (j == 0) {
- timer_interrupt(0, NULL, regs);
+ handle_irq(8, -1, regs); /* fake it */
ruffian_ack_irq(0);
} else {
handle_irq(j, j, regs);
}
- } else {
- /* if not timer int */
+ } else { /* if not an ISA int */
handle_irq(16 + i, 16 + i, regs);
}
@@ -171,6 +170,7 @@ ruffian_pci_fixup(void)
}
+#ifdef BUILDING_FOR_MILO
/*
* The DeskStation Ruffian motherboard firmware does not place
* the memory size in the PALimpure area. Therefore, we use
@@ -207,6 +207,7 @@ ruffian_get_bank_size(unsigned long offset)
return ret;
}
+#endif /* BUILDING_FOR_MILO */
static void __init
ruffian_init_arch(unsigned long *mem_start, unsigned long *mem_end)
@@ -232,10 +233,12 @@ ruffian_init_pit (void)
static void
ruffian_kill_arch (int mode, char *reboot_cmd)
{
+#if 0
+ /* this only causes re-entry to ARCSBIOS */
/* Perhaps this works for other PYXIS as well? */
*(vuip) PYXIS_RESET = 0x0000dead;
mb();
-
+#endif
generic_kill_arch(mode, reboot_cmd);
}
@@ -247,8 +250,7 @@ ruffian_kill_arch (int mode, char *reboot_cmd)
struct alpha_machine_vector ruffian_mv __initmv = {
vector_name: "Ruffian",
DO_EV5_MMU,
- /* RUFFIAN always uses BCD, like a PeeCee. */
- rtc_port: 0x70, rtc_addr: 0x80, rtc_bcd: 1,
+ DO_DEFAULT_RTC,
/* For the moment, do not use BWIO on RUFFIAN. */
IO(PYXIS,pyxis,pyxis),
DO_PYXIS_BUS,