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);
}