Module Name: src
Committed By: jdolecek
Date: Wed Sep 27 07:19:34 UTC 2017
Modified Files:
src/sys/arch/acorn32/eb7500atx [jdolecek-ncq]: rside.c
src/sys/arch/acorn32/mainbus [jdolecek-ncq]: wdc_pioc.c
src/sys/arch/acorn32/podulebus [jdolecek-ncq]: icside.c rapide.c
simide.c
src/sys/arch/amiga/dev [jdolecek-ncq]: efa.c wdc_acafh.c wdc_amiga.c
wdc_buddha.c wdc_xsurf.c
src/sys/arch/atari/dev [jdolecek-ncq]: wdc_mb.c
src/sys/arch/i386/pnpbios [jdolecek-ncq]: pciide_pnpbios.c
src/sys/arch/landisk/dev [jdolecek-ncq]: wdc_obio.c
src/sys/arch/mac68k/obio [jdolecek-ncq]: wdc_obio.c
src/sys/arch/macppc/dev [jdolecek-ncq]: kauai.c wdc_obio.c
src/sys/arch/playstation2/dev [jdolecek-ncq]: wdc_spd.c
src/sys/arch/prep/pnpbus [jdolecek-ncq]: wdc_pnpbus.c
src/sys/dev/ic [jdolecek-ncq]: mvsata.c ninjaata32.c wdc.c wdcvar.h
src/sys/dev/isa [jdolecek-ncq]: wdc_isa.c
src/sys/dev/pci [jdolecek-ncq]: pciide_common.c pdcsata.c satalink.c
svwsata.c viaide.c
src/sys/dev/pcmcia [jdolecek-ncq]: wdc_pcmcia.c
Log Message:
change wdc_init_shadow_regs() to accept only struct wdc_regs, it doesn't
touch anything else
factor out the probe-only struct ata_channel initialization to wdcprobe(), to
reduce duplication of logic in individual drivers, and to actually work now
that more init is needed beyond the memset()
To generate a diff of this commit:
cvs rdiff -u -r1.14.28.1 -r1.14.28.2 src/sys/arch/acorn32/eb7500atx/rside.c
cvs rdiff -u -r1.28.28.1 -r1.28.28.2 src/sys/arch/acorn32/mainbus/wdc_pioc.c
cvs rdiff -u -r1.32.28.1 -r1.32.28.2 src/sys/arch/acorn32/podulebus/icside.c
cvs rdiff -u -r1.30.28.1 -r1.30.28.2 src/sys/arch/acorn32/podulebus/rapide.c
cvs rdiff -u -r1.29.28.1 -r1.29.28.2 src/sys/arch/acorn32/podulebus/simide.c
cvs rdiff -u -r1.12.18.1 -r1.12.18.2 src/sys/arch/amiga/dev/efa.c
cvs rdiff -u -r1.3.24.1 -r1.3.24.2 src/sys/arch/amiga/dev/wdc_acafh.c
cvs rdiff -u -r1.38.6.1 -r1.38.6.2 src/sys/arch/amiga/dev/wdc_amiga.c
cvs rdiff -u -r1.8.28.1 -r1.8.28.2 src/sys/arch/amiga/dev/wdc_buddha.c
cvs rdiff -u -r1.2.30.2 -r1.2.30.3 src/sys/arch/amiga/dev/wdc_xsurf.c
cvs rdiff -u -r1.38.28.1 -r1.38.28.2 src/sys/arch/atari/dev/wdc_mb.c
cvs rdiff -u -r1.31.22.1 -r1.31.22.2 \
src/sys/arch/i386/pnpbios/pciide_pnpbios.c
cvs rdiff -u -r1.8.28.1 -r1.8.28.2 src/sys/arch/landisk/dev/wdc_obio.c
cvs rdiff -u -r1.27.18.1 -r1.27.18.2 src/sys/arch/mac68k/obio/wdc_obio.c
cvs rdiff -u -r1.36.4.1 -r1.36.4.2 src/sys/arch/macppc/dev/kauai.c
cvs rdiff -u -r1.59.4.1 -r1.59.4.2 src/sys/arch/macppc/dev/wdc_obio.c
cvs rdiff -u -r1.27.20.1 -r1.27.20.2 src/sys/arch/playstation2/dev/wdc_spd.c
cvs rdiff -u -r1.13.28.1 -r1.13.28.2 src/sys/arch/prep/pnpbus/wdc_pnpbus.c
cvs rdiff -u -r1.35.6.30 -r1.35.6.31 src/sys/dev/ic/mvsata.c
cvs rdiff -u -r1.18.28.1 -r1.18.28.2 src/sys/dev/ic/ninjaata32.c
cvs rdiff -u -r1.283.2.16 -r1.283.2.17 src/sys/dev/ic/wdc.c
cvs rdiff -u -r1.97.26.2 -r1.97.26.3 src/sys/dev/ic/wdcvar.h
cvs rdiff -u -r1.59.28.3 -r1.59.28.4 src/sys/dev/isa/wdc_isa.c
cvs rdiff -u -r1.62.4.2 -r1.62.4.3 src/sys/dev/pci/pciide_common.c
cvs rdiff -u -r1.27.18.1 -r1.27.18.2 src/sys/dev/pci/pdcsata.c
cvs rdiff -u -r1.53.4.1 -r1.53.4.2 src/sys/dev/pci/satalink.c
cvs rdiff -u -r1.19 -r1.19.18.1 src/sys/dev/pci/svwsata.c
cvs rdiff -u -r1.84.18.1 -r1.84.18.2 src/sys/dev/pci/viaide.c
cvs rdiff -u -r1.124.18.1 -r1.124.18.2 src/sys/dev/pcmcia/wdc_pcmcia.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/acorn32/eb7500atx/rside.c
diff -u src/sys/arch/acorn32/eb7500atx/rside.c:1.14.28.1 src/sys/arch/acorn32/eb7500atx/rside.c:1.14.28.2
--- src/sys/arch/acorn32/eb7500atx/rside.c:1.14.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/acorn32/eb7500atx/rside.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: rside.c,v 1.14.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: rside.c,v 1.14.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 2004 Christopher Gilbert
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rside.c,v 1.14.28.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rside.c,v 1.14.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -217,7 +217,7 @@ rside_attach(device_t parent, device_t s
continue;
}
}
- wdc_init_shadow_regs(cp);
+ wdc_init_shadow_regs(wdr);
if (bus_space_map(wdr->ctl_iot,
rside_info[channel].aux_register, 0x4, 0, &wdr->ctl_ioh))
Index: src/sys/arch/acorn32/mainbus/wdc_pioc.c
diff -u src/sys/arch/acorn32/mainbus/wdc_pioc.c:1.28.28.1 src/sys/arch/acorn32/mainbus/wdc_pioc.c:1.28.28.2
--- src/sys/arch/acorn32/mainbus/wdc_pioc.c:1.28.28.1 Tue Sep 26 22:13:08 2017
+++ src/sys/arch/acorn32/mainbus/wdc_pioc.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_pioc.c,v 1.28.28.1 2017/09/26 22:13:08 jdolecek Exp $ */
+/* $NetBSD: wdc_pioc.c,v 1.28.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 1997-1998 Mark Brinicombe.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_pioc.c,v 1.28.28.1 2017/09/26 22:13:08 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_pioc.c,v 1.28.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -83,8 +83,6 @@ static int
wdc_pioc_probe(device_t parent, cfdata_t cf, void *aux)
{
struct pioc_attach_args *pa = aux;
- struct ata_channel ch;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int res, i;
u_int iobase;
@@ -96,11 +94,6 @@ wdc_pioc_probe(device_t parent, cfdata_t
if (pa->pa_offset == PIOCCF_OFFSET_DEFAULT)
return(0);
- memset(&wdc, 0, sizeof(wdc));
- memset(&ch, 0, sizeof(ch));
- ch.ch_atac = &wdc.sc_atac;
- wdc.regs = &wdr;
-
iobase = pa->pa_iobase + pa->pa_offset;
wdr.cmd_iot = pa->pa_iot;
wdr.ctl_iot = pa->pa_iot;
@@ -116,7 +109,7 @@ wdc_pioc_probe(device_t parent, cfdata_t
return 0;
}
}
- wdc_init_shadow_regs(&ch);
+ wdc_init_shadow_regs(&wdr);
if (bus_space_map(wdr.ctl_iot, iobase + WDC_PIOC_AUXREG_OFFSET,
WDC_PIOC_AUXREG_NPORTS, 0, &wdr.ctl_ioh)) {
@@ -125,7 +118,7 @@ wdc_pioc_probe(device_t parent, cfdata_t
return(0);
}
- res = wdcprobe(&ch);
+ res = wdcprobe(&wdr);
bus_space_unmap(wdr.ctl_iot, wdr.ctl_ioh, WDC_PIOC_AUXREG_NPORTS);
bus_space_unmap(wdr.cmd_iot, wdr.cmd_baseioh, WDC_PIOC_REG_NPORTS);
@@ -188,7 +181,7 @@ wdc_pioc_attach(device_t parent, device_
sc->sc_channel.ch_channel = 0;
sc->sc_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->sc_channel);
+ wdc_init_shadow_regs(wdr);
wdcattach(&sc->sc_channel);
}
Index: src/sys/arch/acorn32/podulebus/icside.c
diff -u src/sys/arch/acorn32/podulebus/icside.c:1.32.28.1 src/sys/arch/acorn32/podulebus/icside.c:1.32.28.2
--- src/sys/arch/acorn32/podulebus/icside.c:1.32.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/acorn32/podulebus/icside.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: icside.c,v 1.32.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: icside.c,v 1.32.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 1997-1998 Mark Brinicombe
@@ -42,7 +42,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: icside.c,v 1.32.28.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: icside.c,v 1.32.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/systm.h>
#include <sys/conf.h>
@@ -285,7 +285,7 @@ icside_attach(device_t parent, device_t
i, i == 0 ? 4 : 1, &wdr->cmd_iohs[i]) != 0)
return;
}
- wdc_init_shadow_regs(cp);
+ wdc_init_shadow_regs(wdr);
if (bus_space_map(iot, iobase + ide->auxregs[channel],
AUX_REGISTER_SPACE, 0, &wdr->ctl_ioh))
return;
Index: src/sys/arch/acorn32/podulebus/rapide.c
diff -u src/sys/arch/acorn32/podulebus/rapide.c:1.30.28.1 src/sys/arch/acorn32/podulebus/rapide.c:1.30.28.2
--- src/sys/arch/acorn32/podulebus/rapide.c:1.30.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/acorn32/podulebus/rapide.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: rapide.c,v 1.30.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: rapide.c,v 1.30.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 1997-1998 Mark Brinicombe
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rapide.c,v 1.30.28.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rapide.c,v 1.30.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -274,7 +274,7 @@ rapide_attach(device_t parent, device_t
continue;
}
}
- wdc_init_shadow_regs(cp);
+ wdc_init_shadow_regs(wdr);
if (bus_space_map(iot, iobase +
rapide_info[channel].aux_register, 4, 0, &wdr->ctl_ioh)) {
bus_space_unmap(iot, wdr->cmd_baseioh,
Index: src/sys/arch/acorn32/podulebus/simide.c
diff -u src/sys/arch/acorn32/podulebus/simide.c:1.29.28.1 src/sys/arch/acorn32/podulebus/simide.c:1.29.28.2
--- src/sys/arch/acorn32/podulebus/simide.c:1.29.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/acorn32/podulebus/simide.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: simide.c,v 1.29.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: simide.c,v 1.29.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 1997-1998 Mark Brinicombe
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: simide.c,v 1.29.28.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: simide.c,v 1.29.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -272,7 +272,7 @@ simide_attach(device_t parent, device_t
continue;
}
}
- wdc_init_shadow_regs(cp);
+ wdc_init_shadow_regs(wdr);
if (bus_space_map(wdr->ctl_iot, iobase +
simide_info[channel].aux_register, 4, 0, &wdr->ctl_ioh)) {
bus_space_unmap(wdr->cmd_iot, wdr->cmd_baseioh,
Index: src/sys/arch/amiga/dev/efa.c
diff -u src/sys/arch/amiga/dev/efa.c:1.12.18.1 src/sys/arch/amiga/dev/efa.c:1.12.18.2
--- src/sys/arch/amiga/dev/efa.c:1.12.18.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/amiga/dev/efa.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: efa.c,v 1.12.18.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: efa.c,v 1.12.18.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -211,7 +211,7 @@ efa_attach_channel(struct efa_softc *sc,
else
efa_select_regset(sc, chnum, 3);
- wdc_init_shadow_regs(&sc->sc_ports[chnum].chan);
+ wdc_init_shadow_regs(CHAN_TO_WDC_REGS(&sc->sc_ports[chnum].chan));
wdcattach(&sc->sc_ports[chnum].chan);
@@ -502,7 +502,7 @@ efa_setup_channel(struct ata_channel *ch
/* Change FastATA register set. */
efa_select_regset(sc, chnum, mode);
/* re-init shadow regs */
- wdc_init_shadow_regs(&sc->sc_ports[chnum].chan);
+ wdc_init_shadow_regs(CHAN_TO_WDC_REGS(&sc->sc_ports[chnum].chan));
splx(ipl);
}
Index: src/sys/arch/amiga/dev/wdc_acafh.c
diff -u src/sys/arch/amiga/dev/wdc_acafh.c:1.3.24.1 src/sys/arch/amiga/dev/wdc_acafh.c:1.3.24.2
--- src/sys/arch/amiga/dev/wdc_acafh.c:1.3.24.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/amiga/dev/wdc_acafh.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_acafh.c,v 1.3.24.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: wdc_acafh.c,v 1.3.24.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*-
* Copyright (c) 2000, 2003, 2013 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_acafh.c,v 1.3.24.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_acafh.c,v 1.3.24.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -155,7 +155,7 @@ wdc_acafh_attach_channel(struct wdc_acaf
wdc_acafh_map_channel(sc, chnum);
- wdc_init_shadow_regs(&sc->sc_slots[chnum].channel);
+ wdc_init_shadow_regs(CHAN_TO_WDC_REGS(&sc->sc_slots[chnum].channel));
wdcattach(&sc->sc_slots[chnum].channel);
#ifdef WDC_ACAFH_DEBUG
Index: src/sys/arch/amiga/dev/wdc_amiga.c
diff -u src/sys/arch/amiga/dev/wdc_amiga.c:1.38.6.1 src/sys/arch/amiga/dev/wdc_amiga.c:1.38.6.2
--- src/sys/arch/amiga/dev/wdc_amiga.c:1.38.6.1 Tue Sep 26 22:13:08 2017
+++ src/sys/arch/amiga/dev/wdc_amiga.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_amiga.c,v 1.38.6.1 2017/09/26 22:13:08 jdolecek Exp $ */
+/* $NetBSD: wdc_amiga.c,v 1.38.6.2 2017/09/27 07:19:33 jdolecek 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.38.6.1 2017/09/26 22:13:08 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_amiga.c,v 1.38.6.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -137,7 +137,7 @@ wdc_amiga_attach(device_t parent, device
sc->sc_channel.ch_atac = &sc->sc_wdcdev.sc_atac;
sc->sc_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->sc_channel);
+ wdc_init_shadow_regs(wdr);
sc->sc_isr.isr_intr = wdc_amiga_intr;
sc->sc_isr.isr_arg = sc;
Index: src/sys/arch/amiga/dev/wdc_buddha.c
diff -u src/sys/arch/amiga/dev/wdc_buddha.c:1.8.28.1 src/sys/arch/amiga/dev/wdc_buddha.c:1.8.28.2
--- src/sys/arch/amiga/dev/wdc_buddha.c:1.8.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/amiga/dev/wdc_buddha.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_buddha.c,v 1.8.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: wdc_buddha.c,v 1.8.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -173,7 +173,7 @@ wdc_buddha_attach(device_t parent, devic
}
}
- wdc_init_shadow_regs(cp);
+ wdc_init_shadow_regs(wdr);
wdcattach(cp);
}
Index: src/sys/arch/amiga/dev/wdc_xsurf.c
diff -u src/sys/arch/amiga/dev/wdc_xsurf.c:1.2.30.2 src/sys/arch/amiga/dev/wdc_xsurf.c:1.2.30.3
--- src/sys/arch/amiga/dev/wdc_xsurf.c:1.2.30.2 Tue Sep 26 21:06:24 2017
+++ src/sys/arch/amiga/dev/wdc_xsurf.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_xsurf.c,v 1.2.30.2 2017/09/26 21:06:24 jdolecek Exp $ */
+/* $NetBSD: wdc_xsurf.c,v 1.2.30.3 2017/09/27 07:19:33 jdolecek Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -166,7 +166,7 @@ wdc_xsurf_attach_channel(struct wdc_xsur
wdc_xsurf_map_channel(sc, chnum);
- wdc_init_shadow_regs(&sc->sc_ports[chnum].channel);
+ wdc_init_shadow_regs(CHAN_TO_WDC_REGS(&sc->sc_ports[chnum].channel));
wdcattach(&sc->sc_ports[chnum].channel);
#ifdef WDC_XSURF_DEBUG
Index: src/sys/arch/atari/dev/wdc_mb.c
diff -u src/sys/arch/atari/dev/wdc_mb.c:1.38.28.1 src/sys/arch/atari/dev/wdc_mb.c:1.38.28.2
--- src/sys/arch/atari/dev/wdc_mb.c:1.38.28.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/atari/dev/wdc_mb.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_mb.c,v 1.38.28.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: wdc_mb.c,v 1.38.28.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_mb.c,v 1.38.28.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_mb.c,v 1.38.28.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -86,8 +86,6 @@ int
wdc_mb_probe(device_t parent, cfdata_t cfp, void *aux)
{
static int wdc_matched = 0;
- struct ata_channel ch;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int result = 0, i;
uint8_t sv_ierb;
@@ -116,7 +114,7 @@ wdc_mb_probe(device_t parent, cfdata_t c
i * 4, 4, &wdr.cmd_iohs[i]) != 0)
goto outunmap;
}
- wdc_init_shadow_regs(&ch);
+ wdc_init_shadow_regs(&wdr);
if (bus_space_subregion(wdr.cmd_iot, wdr.cmd_baseioh, FALCON_WD_AUX, 4,
&wdr.ctl_ioh))
@@ -134,7 +132,7 @@ wdc_mb_probe(device_t parent, cfdata_t c
if (machineid & ATARI_FALCON)
ym2149_ser2(0);
- result = wdcprobe(&ch);
+ result = wdcprobe(&wdr);
MFP->mf_ierb = sv_ierb;
@@ -207,7 +205,7 @@ wdc_mb_attach(device_t parent, device_t
sc->sc_channel.ch_channel = 0;
sc->sc_channel.ch_atac = &sc->sc_wdcdev.sc_atac;
sc->sc_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->sc_channel);
+ wdc_init_shadow_regs(wdr);
/*
* Setup & enable disk related interrupts.
Index: src/sys/arch/i386/pnpbios/pciide_pnpbios.c
diff -u src/sys/arch/i386/pnpbios/pciide_pnpbios.c:1.31.22.1 src/sys/arch/i386/pnpbios/pciide_pnpbios.c:1.31.22.2
--- src/sys/arch/i386/pnpbios/pciide_pnpbios.c:1.31.22.1 Mon Apr 24 08:48:45 2017
+++ src/sys/arch/i386/pnpbios/pciide_pnpbios.c Wed Sep 27 07:19:33 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pciide_pnpbios.c,v 1.31.22.1 2017/04/24 08:48:45 jdolecek Exp $ */
+/* $NetBSD: pciide_pnpbios.c,v 1.31.22.2 2017/09/27 07:19:33 jdolecek Exp $ */
/*
* Copyright (c) 1999 Soren S. Jorvang. All rights reserved.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pciide_pnpbios.c,v 1.31.22.1 2017/04/24 08:48:45 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pciide_pnpbios.c,v 1.31.22.2 2017/09/27 07:19:33 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -168,7 +168,7 @@ pciide_pnpbios_attach(device_t parent, d
return;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->ctl_iot = wdr->data32iot = compat_iot;
wdr->ctl_ioh = wdr->data32ioh = ctl_ioh;
Index: src/sys/arch/landisk/dev/wdc_obio.c
diff -u src/sys/arch/landisk/dev/wdc_obio.c:1.8.28.1 src/sys/arch/landisk/dev/wdc_obio.c:1.8.28.2
--- src/sys/arch/landisk/dev/wdc_obio.c:1.8.28.1 Tue Sep 26 22:13:08 2017
+++ src/sys/arch/landisk/dev/wdc_obio.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_obio.c,v 1.8.28.1 2017/09/26 22:13:08 jdolecek Exp $ */
+/* $NetBSD: wdc_obio.c,v 1.8.28.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.8.28.1 2017/09/26 22:13:08 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.8.28.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -70,8 +70,6 @@ static int
wdc_obio_probe(device_t parent, cfdata_t cfp, void *aux)
{
struct obio_attach_args *oa = aux;
- struct ata_channel ch;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int result = 0;
int i;
@@ -86,11 +84,6 @@ wdc_obio_probe(device_t parent, cfdata_t
if (oa->oa_irq[0].or_irq == IRQUNK)
return (0);
- memset(&wdc, 0, sizeof(wdc));
- memset(&ch, 0, sizeof(ch));
- ch.ch_atac = &wdc.sc_atac;
- wdc.regs = &wdr;
-
wdr.cmd_iot = oa->oa_iot;
if (bus_space_map(wdr.cmd_iot, oa->oa_io[0].or_addr,
WDC_OBIO_REG_SIZE, 0, &wdr.cmd_baseioh)) {
@@ -102,7 +95,7 @@ wdc_obio_probe(device_t parent, cfdata_t
goto outunmap;
}
}
- wdc_init_shadow_regs(&ch);
+ wdc_init_shadow_regs(&wdr);
wdr.ctl_iot = oa->oa_iot;
if (bus_space_map(wdr.ctl_iot,
@@ -111,7 +104,7 @@ wdc_obio_probe(device_t parent, cfdata_t
goto outunmap;
}
- result = wdcprobe(&ch);
+ result = wdcprobe(&wdr);
if (result) {
oa->oa_nio = 1;
oa->oa_io[0].or_size = WDC_OBIO_REG_SIZE;
@@ -175,7 +168,7 @@ wdc_obio_attach(device_t parent, device_
sc->sc_channel.ch_atac = &sc->sc_wdcdev.sc_atac;
sc->sc_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->sc_channel);
+ wdc_init_shadow_regs(wdr);
wdcattach(&sc->sc_channel);
}
Index: src/sys/arch/mac68k/obio/wdc_obio.c
diff -u src/sys/arch/mac68k/obio/wdc_obio.c:1.27.18.1 src/sys/arch/mac68k/obio/wdc_obio.c:1.27.18.2
--- src/sys/arch/mac68k/obio/wdc_obio.c:1.27.18.1 Tue Sep 26 22:13:08 2017
+++ src/sys/arch/mac68k/obio/wdc_obio.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_obio.c,v 1.27.18.1 2017/09/26 22:13:08 jdolecek Exp $ */
+/* $NetBSD: wdc_obio.c,v 1.27.18.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 2002 Takeshi Shibagaki All rights reserved.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.27.18.1 2017/09/26 22:13:08 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.27.18.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -87,16 +87,9 @@ int
wdc_obio_match(device_t parent, cfdata_t match, void *aux)
{
struct obio_attach_args *oa = (struct obio_attach_args *) aux;
- struct ata_channel ch;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int i, result = 0;
- memset(&wdc, 0, sizeof(wdc));
- memset(&ch, 0, sizeof(ch));
- ch.ch_atac = &wdc.sc_atac;
- wdc.regs = &wdr;
-
switch (current_mac_model->machineid) {
case MACH_MACPB150:
case MACH_MACPB190:
@@ -117,7 +110,7 @@ wdc_obio_match(device_t parent, cfdata_t
return 0;
}
}
- wdc_init_shadow_regs(&ch);
+ wdc_init_shadow_regs(&wdr);
if (bus_space_subregion(wdr.cmd_iot, wdr.cmd_baseioh,
@@ -126,7 +119,7 @@ wdc_obio_match(device_t parent, cfdata_t
&wdr.ctl_ioh))
return 0;
- result = wdcprobe(&ch);
+ result = wdcprobe(&wdr);
bus_space_unmap(wdr.cmd_iot, wdr.cmd_baseioh, WDC_OBIO_REG_NPORTS);
@@ -223,7 +216,7 @@ wdc_obio_attach(device_t parent, device_
chp->ch_channel = 0;
chp->ch_atac = &sc->sc_wdcdev.sc_atac;
chp->ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(chp);
+ wdc_init_shadow_regs(wdr);
aprint_normal("\n");
Index: src/sys/arch/macppc/dev/kauai.c
diff -u src/sys/arch/macppc/dev/kauai.c:1.36.4.1 src/sys/arch/macppc/dev/kauai.c:1.36.4.2
--- src/sys/arch/macppc/dev/kauai.c:1.36.4.1 Mon Apr 24 08:48:46 2017
+++ src/sys/arch/macppc/dev/kauai.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: kauai.c,v 1.36.4.1 2017/04/24 08:48:46 jdolecek Exp $ */
+/* $NetBSD: kauai.c,v 1.36.4.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 2003 Tsubai Masanari. All rights reserved.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kauai.c,v 1.36.4.1 2017/04/24 08:48:46 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kauai.c,v 1.36.4.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -212,7 +212,7 @@ kauai_attach(device_t parent, device_t s
chp->ch_channel = 0;
chp->ch_atac = &sc->sc_wdcdev.sc_atac;
chp->ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(chp);
+ wdc_init_shadow_regs(wdr);
wdcattach(chp);
}
Index: src/sys/arch/macppc/dev/wdc_obio.c
diff -u src/sys/arch/macppc/dev/wdc_obio.c:1.59.4.1 src/sys/arch/macppc/dev/wdc_obio.c:1.59.4.2
--- src/sys/arch/macppc/dev/wdc_obio.c:1.59.4.1 Mon Apr 24 08:48:46 2017
+++ src/sys/arch/macppc/dev/wdc_obio.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_obio.c,v 1.59.4.1 2017/04/24 08:48:46 jdolecek Exp $ */
+/* $NetBSD: wdc_obio.c,v 1.59.4.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.59.4.1 2017/04/24 08:48:46 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_obio.c,v 1.59.4.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -240,7 +240,7 @@ wdc_obio_attach(device_t parent, device_
chp->ch_atac = &sc->sc_wdcdev.sc_atac;
chp->ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(chp);
+ wdc_init_shadow_regs(wdr);
#define OHARE_FEATURE_REG 0xf3000038
Index: src/sys/arch/playstation2/dev/wdc_spd.c
diff -u src/sys/arch/playstation2/dev/wdc_spd.c:1.27.20.1 src/sys/arch/playstation2/dev/wdc_spd.c:1.27.20.2
--- src/sys/arch/playstation2/dev/wdc_spd.c:1.27.20.1 Mon Apr 24 08:48:46 2017
+++ src/sys/arch/playstation2/dev/wdc_spd.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_spd.c,v 1.27.20.1 2017/04/24 08:48:46 jdolecek Exp $ */
+/* $NetBSD: wdc_spd.c,v 1.27.20.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 2001, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_spd.c,v 1.27.20.1 2017/04/24 08:48:46 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_spd.c,v 1.27.20.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -90,7 +90,7 @@ extern struct cfdriver wdc_cd;
STATIC void __wdc_spd_enable(void);
STATIC void __wdc_spd_disable(void) __attribute__((__unused__));
-STATIC void __wdc_spd_bus_space(struct ata_channel *);
+STATIC void __wdc_spd_bus_space(struct wdc_regs *);
/*
* wdc register is 16 bit wide.
@@ -165,24 +165,17 @@ int
wdc_spd_match(device_t parent, cfdata_t cf, void *aux)
{
struct spd_attach_args *spa = aux;
- struct ata_channel ch;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int i, result;
if (spa->spa_slot != SPD_HDD)
return (0);
- memset(&wdc, 0, sizeof(wdc));
- memset(&ch, 0, sizeof(ch));
- ch.ch_atac = &wdc.sc_atac;
- wdc.regs = &wdr;
-
- __wdc_spd_bus_space(&ch);
+ __wdc_spd_bus_space(&wdr);
for (i = 0, result = 0; i < 8; i++) { /* 8 sec */
if (result == 0)
- result = wdcprobe(&ch);
+ result = wdcprobe(&wdr);
delay(1000000);
}
@@ -211,9 +204,9 @@ wdc_spd_attach(device_t parent, device_t
ch->ch_channel = 0;
ch->ch_atac = &sc->sc_wdcdev.sc_atac;
ch->ch_queue = ata_queue_alloc(1);
- ch->ch_ndrive = 2;
+ ch->ch_ndrives = 2;
- __wdc_spd_bus_space(ch);
+ __wdc_spd_bus_space(CHAN_TO_WDC_REGS(ch));
spd_intr_establish(SPD_HDD, wdcintr, &sc->sc_channel);
@@ -223,15 +216,14 @@ wdc_spd_attach(device_t parent, device_t
}
void
-__wdc_spd_bus_space(struct ata_channel *ch)
+__wdc_spd_bus_space(struct wdc_regs *wdr)
{
- struct wdc_regs *wdr = CHAN_TO_WDC_REGS(ch);
int i;
wdr->cmd_iot = &_wdc_spd_space;
for (i = 0; i < 8; i++)
wdr->cmd_iohs[i] = SPD_HDD_IO_BASE + i * 2; /* wdc register is 16 bit wide. */
- wdc_init_shadow_regs(ch);
+ wdc_init_shadow_regs(wdr);
wdr->ctl_iot = &_wdc_spd_space;
wdr->ctl_ioh = SPD_HDD_IO_BASE + WDC_SPD_HDD_AUXREG_OFFSET;
wdr->data32iot = wdr->cmd_iot;
Index: src/sys/arch/prep/pnpbus/wdc_pnpbus.c
diff -u src/sys/arch/prep/pnpbus/wdc_pnpbus.c:1.13.28.1 src/sys/arch/prep/pnpbus/wdc_pnpbus.c:1.13.28.2
--- src/sys/arch/prep/pnpbus/wdc_pnpbus.c:1.13.28.1 Tue Sep 26 22:13:08 2017
+++ src/sys/arch/prep/pnpbus/wdc_pnpbus.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_pnpbus.c,v 1.13.28.1 2017/09/26 22:13:08 jdolecek Exp $ */
+/* $NetBSD: wdc_pnpbus.c,v 1.13.28.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_pnpbus.c,v 1.13.28.1 2017/09/26 22:13:08 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_pnpbus.c,v 1.13.28.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -141,7 +141,7 @@ wdc_pnpbus_attach(device_t parent, devic
sc->sc_channel.ch_channel = 0;
sc->sc_channel.ch_atac = &sc->sc_wdcdev.sc_atac;
sc->sc_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->sc_channel);
+ wdc_init_shadow_regs(wdr);
sc->sc_ih = pnpbus_intr_establish(0, IPL_BIO, IST_PNP,
wdcintr, &sc->sc_channel, &pna->pna_res);
Index: src/sys/dev/ic/mvsata.c
diff -u src/sys/dev/ic/mvsata.c:1.35.6.30 src/sys/dev/ic/mvsata.c:1.35.6.31
--- src/sys/dev/ic/mvsata.c:1.35.6.30 Tue Sep 26 17:05:37 2017
+++ src/sys/dev/ic/mvsata.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mvsata.c,v 1.35.6.30 2017/09/26 17:05:37 jdolecek Exp $ */
+/* $NetBSD: mvsata.c,v 1.35.6.31 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 2008 KIYOHARA Takashi
* All rights reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.35.6.30 2017/09/26 17:05:37 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.35.6.31 2017/09/27 07:19:34 jdolecek Exp $");
#include "opt_mvsata.h"
@@ -3286,7 +3286,7 @@ mvsata_wdc_reg_init(struct mvsata_port *
}
wdr->ctl_iot = mvport->port_iot;
- wdc_init_shadow_regs(&mvport->port_ata_channel);
+ wdc_init_shadow_regs(wdr);
rv = bus_space_subregion(mvport->port_iot, mvport->port_ioh,
SATA_SS, sizeof(uint32_t) * 3, &wdr->sata_baseioh);
Index: src/sys/dev/ic/ninjaata32.c
diff -u src/sys/dev/ic/ninjaata32.c:1.18.28.1 src/sys/dev/ic/ninjaata32.c:1.18.28.2
--- src/sys/dev/ic/ninjaata32.c:1.18.28.1 Mon Apr 24 08:29:33 2017
+++ src/sys/dev/ic/ninjaata32.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ninjaata32.c,v 1.18.28.1 2017/04/24 08:29:33 jdolecek Exp $ */
+/* $NetBSD: ninjaata32.c,v 1.18.28.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 2006 ITOH Yasufumi.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ninjaata32.c,v 1.18.28.1 2017/04/24 08:29:33 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ninjaata32.c,v 1.18.28.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -204,7 +204,7 @@ njata32_attach(struct njata32_softc *sc)
goto fail4;
}
}
- wdc_init_shadow_regs(&sc->sc_ch[0].ch_ata_channel);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = NJATA32_REGT(sc);
wdr->data32ioh = wdr->cmd_iohs[wd_data];
Index: src/sys/dev/ic/wdc.c
diff -u src/sys/dev/ic/wdc.c:1.283.2.16 src/sys/dev/ic/wdc.c:1.283.2.17
--- src/sys/dev/ic/wdc.c:1.283.2.16 Tue Sep 19 21:06:25 2017
+++ src/sys/dev/ic/wdc.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc.c,v 1.283.2.16 2017/09/19 21:06:25 jdolecek Exp $ */
+/* $NetBSD: wdc.c,v 1.283.2.17 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 1998, 2001, 2003 Manuel Bouyer. All rights reserved.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.283.2.16 2017/09/19 21:06:25 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.283.2.17 2017/09/27 07:19:34 jdolecek Exp $");
#include "opt_ata.h"
#include "opt_wdc.h"
@@ -176,10 +176,8 @@ int wdc_nxfer = 0;
* Initialize the "shadow register" handles for a standard wdc controller.
*/
void
-wdc_init_shadow_regs(struct ata_channel *chp)
+wdc_init_shadow_regs(struct wdc_regs *wdr)
{
- struct wdc_regs *wdr = CHAN_TO_WDC_REGS(chp);
-
wdr->cmd_iohs[wd_status] = wdr->cmd_iohs[wd_command];
wdr->cmd_iohs[wd_features] = wdr->cmd_iohs[wd_error];
}
@@ -476,14 +474,29 @@ wdc_drvprobe(struct ata_channel *chp)
}
int
-wdcprobe(struct ata_channel *chp)
+wdcprobe(struct wdc_regs *wdr)
{
- struct wdc_softc *wdc = CHAN_TO_WDC(chp);
+ struct wdc_softc wdc;
+ struct ata_channel ch;
+ int rv;
+
+ memset(&wdc, 0, sizeof(wdc));
+ memset(&ch, 0, sizeof(ch));
+ ata_channel_init(&ch);
+ ch.ch_atac = &wdc.sc_atac;
+ ch.ch_queue = ata_queue_alloc(1);
+ wdc.regs = wdr;
+
/* default reset method */
- if (wdc->reset == NULL)
- wdc->reset = wdc_do_reset;
+ if (wdc.reset == NULL)
+ wdc.reset = wdc_do_reset;
+
+ rv = wdcprobe1(&ch, 1);
- return (wdcprobe1(chp, 1));
+ ata_queue_free(ch.ch_queue);
+ ata_channel_destroy(&ch);
+
+ return rv;
}
static int
Index: src/sys/dev/ic/wdcvar.h
diff -u src/sys/dev/ic/wdcvar.h:1.97.26.2 src/sys/dev/ic/wdcvar.h:1.97.26.3
--- src/sys/dev/ic/wdcvar.h:1.97.26.2 Sat Aug 12 09:52:28 2017
+++ src/sys/dev/ic/wdcvar.h Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdcvar.h,v 1.97.26.2 2017/08/12 09:52:28 jdolecek Exp $ */
+/* $NetBSD: wdcvar.h,v 1.97.26.3 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc.
@@ -142,9 +142,9 @@ struct wdc_softc {
*/
void wdc_allocate_regs(struct wdc_softc *);
-void wdc_init_shadow_regs(struct ata_channel *);
+void wdc_init_shadow_regs(struct wdc_regs *);
-int wdcprobe(struct ata_channel *);
+int wdcprobe(struct wdc_regs *);
void wdcattach(struct ata_channel *);
int wdcdetach(device_t, int);
void wdc_childdetached(device_t, device_t);
Index: src/sys/dev/isa/wdc_isa.c
diff -u src/sys/dev/isa/wdc_isa.c:1.59.28.3 src/sys/dev/isa/wdc_isa.c:1.59.28.4
--- src/sys/dev/isa/wdc_isa.c:1.59.28.3 Wed Sep 20 19:59:22 2017
+++ src/sys/dev/isa/wdc_isa.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_isa.c,v 1.59.28.3 2017/09/20 19:59:22 jdolecek Exp $ */
+/* $NetBSD: wdc_isa.c,v 1.59.28.4 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_isa.c,v 1.59.28.3 2017/09/20 19:59:22 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_isa.c,v 1.59.28.4 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -84,9 +84,7 @@ static int wdc_isa_dma_finish(void*, int
static int
wdc_isa_probe(device_t parent, cfdata_t match, void *aux)
{
- struct ata_channel ch;
struct isa_attach_args *ia = aux;
- struct wdc_softc wdc;
struct wdc_regs wdr;
int result = 0, i;
@@ -105,13 +103,6 @@ wdc_isa_probe(device_t parent, cfdata_t
if (ia->ia_ndrq > 0 && ia->ia_drq[0].ir_drq == ISA_UNKNOWN_DRQ)
ia->ia_ndrq = 0;
- memset(&wdc, 0, sizeof(wdc));
- memset(&ch, 0, sizeof(ch));
- ata_channel_init(&ch);
- ch.ch_atac = &wdc.sc_atac;
- ch.ch_queue = ata_queue_alloc(1);
- wdc.regs = &wdr;
-
wdr.cmd_iot = ia->ia_iot;
if (bus_space_map(wdr.cmd_iot, ia->ia_io[0].ir_addr,
@@ -123,14 +114,14 @@ wdc_isa_probe(device_t parent, cfdata_t
i == 0 ? 4 : 1, &wdr.cmd_iohs[i]) != 0)
goto outunmap;
}
- wdc_init_shadow_regs(&ch);
+ wdc_init_shadow_regs(&wdr);
wdr.ctl_iot = ia->ia_iot;
if (bus_space_map(wdr.ctl_iot, ia->ia_io[0].ir_addr +
WDC_ISA_AUXREG_OFFSET, WDC_ISA_AUXREG_NPORTS, 0, &wdr.ctl_ioh))
goto outunmap;
- result = wdcprobe(&ch);
+ result = wdcprobe(&wdr);
if (result) {
ia->ia_nio = 1;
ia->ia_io[0].ir_size = WDC_ISA_REG_NPORTS;
@@ -144,8 +135,6 @@ wdc_isa_probe(device_t parent, cfdata_t
outunmap:
bus_space_unmap(wdr.cmd_iot, wdr.cmd_baseioh, WDC_ISA_REG_NPORTS);
out:
- ata_queue_free(ch.ch_queue);
- ata_channel_destroy(&ch);
return (result);
}
@@ -231,7 +220,7 @@ wdc_isa_attach(device_t parent, device_t
sc->ata_channel.ch_channel = 0;
sc->ata_channel.ch_atac = &sc->sc_wdcdev.sc_atac;
sc->ata_channel.ch_queue = ata_queue_alloc(1);
- wdc_init_shadow_regs(&sc->ata_channel);
+ wdc_init_shadow_regs(wdr);
aprint_normal("\n");
Index: src/sys/dev/pci/pciide_common.c
diff -u src/sys/dev/pci/pciide_common.c:1.62.4.2 src/sys/dev/pci/pciide_common.c:1.62.4.3
--- src/sys/dev/pci/pciide_common.c:1.62.4.2 Sat Aug 12 09:52:28 2017
+++ src/sys/dev/pci/pciide_common.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pciide_common.c,v 1.62.4.2 2017/08/12 09:52:28 jdolecek Exp $ */
+/* $NetBSD: pciide_common.c,v 1.62.4.3 2017/09/27 07:19:34 jdolecek Exp $ */
/*
@@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pciide_common.c,v 1.62.4.2 2017/08/12 09:52:28 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pciide_common.c,v 1.62.4.3 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
@@ -322,7 +322,7 @@ pciide_mapregs_compat(const struct pci_a
goto bad;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = wdr->cmd_iot;
wdr->data32ioh = wdr->cmd_iohs[0];
return;
@@ -409,7 +409,7 @@ pciide_mapregs_native(const struct pci_a
goto bad;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = wdr->cmd_iot;
wdr->data32ioh = wdr->cmd_iohs[0];
return;
@@ -1031,7 +1031,7 @@ default_chip_map(struct pciide_softc *sc
wdcattach(&cp->ata_channel);
continue;
}
- if (!wdcprobe(&cp->ata_channel)) {
+ if (!wdcprobe(CHAN_TO_WDC_REGS(&cp->ata_channel))) {
failreason = "not responding; disabled or no drives?";
goto next;
}
@@ -1046,7 +1046,7 @@ default_chip_map(struct pciide_softc *sc
PCI_COMMAND_STATUS_REG);
pci_conf_write(sc->sc_pc, sc->sc_tag, PCI_COMMAND_STATUS_REG,
csr & ~PCI_COMMAND_IO_ENABLE);
- if (wdcprobe(&cp->ata_channel))
+ if (wdcprobe(CHAN_TO_WDC_REGS(&cp->ata_channel)))
failreason = "other hardware responding at addresses";
pci_conf_write(sc->sc_pc, sc->sc_tag,
PCI_COMMAND_STATUS_REG, csr);
Index: src/sys/dev/pci/pdcsata.c
diff -u src/sys/dev/pci/pdcsata.c:1.27.18.1 src/sys/dev/pci/pdcsata.c:1.27.18.2
--- src/sys/dev/pci/pdcsata.c:1.27.18.1 Mon Apr 10 22:57:03 2017
+++ src/sys/dev/pci/pdcsata.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pdcsata.c,v 1.27.18.1 2017/04/10 22:57:03 jdolecek Exp $ */
+/* $NetBSD: pdcsata.c,v 1.27.18.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 2004, Manuel Bouyer.
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pdcsata.c,v 1.27.18.1 2017/04/10 22:57:03 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pdcsata.c,v 1.27.18.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -404,7 +404,7 @@ pdcsata_chip_map(struct pciide_softc *sc
goto next_channel;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
/*
* subregion de busmaster registers. They're spread all over
Index: src/sys/dev/pci/satalink.c
diff -u src/sys/dev/pci/satalink.c:1.53.4.1 src/sys/dev/pci/satalink.c:1.53.4.2
--- src/sys/dev/pci/satalink.c:1.53.4.1 Mon Apr 10 22:57:03 2017
+++ src/sys/dev/pci/satalink.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: satalink.c,v 1.53.4.1 2017/04/10 22:57:03 jdolecek Exp $ */
+/* $NetBSD: satalink.c,v 1.53.4.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: satalink.c,v 1.53.4.1 2017/04/10 22:57:03 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: satalink.c,v 1.53.4.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -650,7 +650,7 @@ sii3114_mapchan(struct pciide_channel *c
goto bad;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = wdr->cmd_iot;
wdr->data32ioh = wdr->cmd_iohs[0];
wdcattach(wdc_cp);
Index: src/sys/dev/pci/svwsata.c
diff -u src/sys/dev/pci/svwsata.c:1.19 src/sys/dev/pci/svwsata.c:1.19.18.1
--- src/sys/dev/pci/svwsata.c:1.19 Sat Mar 29 19:28:25 2014
+++ src/sys/dev/pci/svwsata.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: svwsata.c,v 1.19 2014/03/29 19:28:25 christos Exp $ */
+/* $NetBSD: svwsata.c,v 1.19.18.1 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 2005 Mark Kettenis
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svwsata.c,v 1.19 2014/03/29 19:28:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svwsata.c,v 1.19.18.1 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -280,7 +280,7 @@ svwsata_mapchan(struct pciide_channel *c
goto bad;
}
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = wdr->cmd_iot;
wdr->data32ioh = wdr->cmd_iohs[0];
Index: src/sys/dev/pci/viaide.c
diff -u src/sys/dev/pci/viaide.c:1.84.18.1 src/sys/dev/pci/viaide.c:1.84.18.2
--- src/sys/dev/pci/viaide.c:1.84.18.1 Mon Apr 10 22:57:03 2017
+++ src/sys/dev/pci/viaide.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: viaide.c,v 1.84.18.1 2017/04/10 22:57:03 jdolecek Exp $ */
+/* $NetBSD: viaide.c,v 1.84.18.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*
* Copyright (c) 1999, 2000, 2001 Manuel Bouyer.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.84.18.1 2017/04/10 22:57:03 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.84.18.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1204,7 +1204,7 @@ via_sata_chip_map_new(struct pciide_soft
"couldn't map channel %d ctl regs\n", channel);
return;
}
- wdc_init_shadow_regs(wdc_cp);
+ wdc_init_shadow_regs(wdr);
wdr->data32iot = wdr->cmd_iot;
wdr->data32ioh = wdr->cmd_iohs[wd_data];
wdcattach(wdc_cp);
Index: src/sys/dev/pcmcia/wdc_pcmcia.c
diff -u src/sys/dev/pcmcia/wdc_pcmcia.c:1.124.18.1 src/sys/dev/pcmcia/wdc_pcmcia.c:1.124.18.2
--- src/sys/dev/pcmcia/wdc_pcmcia.c:1.124.18.1 Wed Jun 21 19:21:25 2017
+++ src/sys/dev/pcmcia/wdc_pcmcia.c Wed Sep 27 07:19:34 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc_pcmcia.c,v 1.124.18.1 2017/06/21 19:21:25 jdolecek Exp $ */
+/* $NetBSD: wdc_pcmcia.c,v 1.124.18.2 2017/09/27 07:19:34 jdolecek Exp $ */
/*-
* Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.124.18.1 2017/06/21 19:21:25 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.124.18.2 2017/09/27 07:19:34 jdolecek Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -299,7 +299,7 @@ wdc_pcmcia_attach(device_t parent, devic
wdcp = pcmcia_product_lookup(pa, wdc_pcmcia_products,
wdc_pcmcia_nproducts, sizeof(wdc_pcmcia_products[0]), NULL);
sc->sc_wdcdev.wdc_maxdrives = wdcp ? wdcp->wdc_ndrive : 2;
- wdc_init_shadow_regs(&sc->ata_channel);
+ wdc_init_shadow_regs(wdr);
error = wdc_pcmcia_enable(self, 1);
if (error)