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