]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mac_scsi: fix mac_scsi on some powerbooks
authorFinn Thain <fthain@telegraphics.com.au>
Sun, 23 Oct 2011 14:11:21 +0000 (01:11 +1100)
committerGeert Uytterhoeven <geert@linux-m68k.org>
Sat, 3 Dec 2011 11:20:08 +0000 (12:20 +0100)
Fix the mac_scsi interrupt edge trigger on non-RBV PowerBooks. This doesn't appear to help my PowerBook 520 but the NetBSD source reveals that the PowerBook 500 series is different than the others.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/mac/via.c

index 97996a48b04835ea7dea20114d59c86d9ab0715c..7a2993bb092dee36e17f6f6ebc608c2841b55416 100644 (file)
@@ -253,22 +253,28 @@ void __init via_init(void)
                via2[vACR] &= ~0x03; /* disable port A & B latches */
        }
 
+       /* Everything below this point is VIA2 only... */
+
+       if (rbv_present)
+               return;
+
        /*
-        * Set vPCR for control line interrupts (but not on RBV)
+        * Set vPCR for control line interrupts.
+        *
+        * CA1 (SLOTS IRQ), CB1 (ASC IRQ): negative edge trigger.
+        *
+        * Macs with ESP SCSI have a negative edge triggered SCSI interrupt.
+        * Testing reveals that PowerBooks do too. However, the SE/30
+        * schematic diagram shows an active high NCR5380 IRQ line.
         */
-       if (!rbv_present) {
-               /* For all VIA types, CA1 (SLOTS IRQ) and CB1 (ASC IRQ)
-                * are made negative edge triggered here.
-                */
-               if (macintosh_config->scsi_type == MAC_SCSI_OLD) {
-                       /* CB2 (IRQ) indep. input, positive edge */
-                       /* CA2 (DRQ) indep. input, positive edge */
-                       via2[vPCR] = 0x66;
-               } else {
-                       /* CB2 (IRQ) indep. input, negative edge */
-                       /* CA2 (DRQ) indep. input, negative edge */
-                       via2[vPCR] = 0x22;
-               }
+
+       pr_debug("VIA2 vPCR is 0x%02X\n", via2[vPCR]);
+       if (macintosh_config->via_type == MAC_VIA_II) {
+               /* CA2 (SCSI DRQ), CB2 (SCSI IRQ): indep. input, pos. edge */
+               via2[vPCR] = 0x66;
+       } else {
+               /* CA2 (SCSI DRQ), CB2 (SCSI IRQ): indep. input, neg. edge */
+               via2[vPCR] = 0x22;
        }
 }