Module Name:    src
Committed By:   mlelstv
Date:           Sat Apr 18 14:21:41 UTC 2015

Modified Files:
        src/sys/arch/amiga/dev: wdc_amiga.c

Log Message:
detect a4000 hardware only once, then use the result.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/amiga/dev/wdc_amiga.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amiga/dev/wdc_amiga.c
diff -u src/sys/arch/amiga/dev/wdc_amiga.c:1.37 src/sys/arch/amiga/dev/wdc_amiga.c:1.38
--- src/sys/arch/amiga/dev/wdc_amiga.c:1.37	Fri Jan  3 00:33:06 2014
+++ src/sys/arch/amiga/dev/wdc_amiga.c	Sat Apr 18 14:21:41 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: wdc_amiga.c,v 1.37 2014/01/03 00:33:06 rkujawa Exp $ */
+/*	$NetBSD: wdc_amiga.c,v 1.38 2015/04/18 14:21:41 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2000, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_amiga.c,v 1.37 2014/01/03 00:33:06 rkujawa Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_amiga.c,v 1.38 2015/04/18 14:21:41 mlelstv Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -61,6 +61,7 @@ struct wdc_amiga_softc {
 	struct isr sc_isr;
 	struct bus_space_tag cmd_iot;
 	struct bus_space_tag ctl_iot;
+	bool gayle_intr;
 };
 
 int	wdc_amiga_probe(device_t, cfdata_t, void *);
@@ -95,8 +96,10 @@ wdc_amiga_attach(device_t parent, device
 
 	if (is_a4000()) {
 		sc->cmd_iot.base = (bus_addr_t) ztwomap(GAYLE_IDE_BASE_A4000 + 2);
+		sc->gayle_intr = false;
 	} else {
 		sc->cmd_iot.base = (bus_addr_t) ztwomap(GAYLE_IDE_BASE + 2);
+		sc->gayle_intr = true;
 	}
 
 	sc->cmd_iot.absm = sc->ctl_iot.absm = &amiga_bus_stride_4swap;
@@ -142,7 +145,7 @@ wdc_amiga_attach(device_t parent, device
 	sc->sc_isr.isr_ipl = 2;
 	add_isr (&sc->sc_isr);
 
-	if (!is_a4000())
+	if (sc->gayle_intr)
 		gayle_intr_enable_set(GAYLE_INT_IDE);
 
 	wdcattach(&sc->sc_channel);
@@ -160,7 +163,7 @@ wdc_amiga_intr(void *arg)
 	intreq = gayle_intr_status();
 
 	if (intreq & GAYLE_INT_IDE) {
-		if (!is_a4000())
+		if (sc->gayle_intr)
 			gayle_intr_ack(0x7C | (intreq & GAYLE_INT_IDEACK));
 		ret = wdcintr(&sc->sc_channel);
 	}

Reply via email to