summaryrefslogtreecommitdiffstats
path: root/arch/mips64/sgi-ip27/ip27-irq.c
diff options
context:
space:
mode:
authorKanoj Sarcar <kanoj@engr.sgi.com>2000-01-31 19:48:11 +0000
committerKanoj Sarcar <kanoj@engr.sgi.com>2000-01-31 19:48:11 +0000
commit65bdf19bb4752fbb5ab8ed99fac50bb300768efa (patch)
treeb04ee714ee164ee1debfadf3adc01c3243486318 /arch/mips64/sgi-ip27/ip27-irq.c
parent5095b4a83ecb0635d5d6588d00ee6b76e1ef29be (diff)
Add in bridge byte swapping for the Qlogic scsi controller. Also need
to do something about RRB and WBs.
Diffstat (limited to 'arch/mips64/sgi-ip27/ip27-irq.c')
-rw-r--r--arch/mips64/sgi-ip27/ip27-irq.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/arch/mips64/sgi-ip27/ip27-irq.c b/arch/mips64/sgi-ip27/ip27-irq.c
index 6a76b1966..0b936017d 100644
--- a/arch/mips64/sgi-ip27/ip27-irq.c
+++ b/arch/mips64/sgi-ip27/ip27-irq.c
@@ -173,6 +173,25 @@ static unsigned int bridge_startup(unsigned int irq)
bridge->b_int_addr[pin].addr = 0x20000 | irq;
bridge->b_int_enable |= (1 << pin);
+ if (irq < 2) {
+ bridgereg_t device;
+#if 0
+ /*
+ * Allocate enough RRBs on the bridge for the DMAs.
+ * Right now allocating 2 RRBs on the normal channel
+ * and 2 on the virtual channel for slot 0 on the bus.
+ * And same for slot 1, to get ioc3 eth working.
+ */
+ Not touching b_even_resp /* boot doesn't go far */
+ bridge->b_even_resp = 0xdd99cc88; /* boot doesn't go far */
+ bridge->b_even_resp = 0xcccc8888; /* breaks eth0 */
+ bridge->b_even_resp = 0xcc88; /* breaks eth0 */
+#endif
+ /* Turn on bridge swapping */
+ device = bridge->b_device[irq].reg;
+ device |= BRIDGE_DEV_SWAP_DIR;
+ bridge->b_device[irq].reg = device;
+ }
bridge->b_widget.w_tflush; /* Flush */
return 0; /* Never anything pending. */
@@ -292,7 +311,6 @@ int request_irq(unsigned int irq,
retval = setup_irq(irq, action);
if (retval)
kfree(action);
-
return retval;
}