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)

Reply via email to