summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorbjh21 <bjh21@NetBSD.org>2003-11-29 20:30:27 +0000
committerbjh21 <bjh21@NetBSD.org>2003-11-29 20:30:27 +0000
commitc6ae6a7dbd8e0ba22d5ae625b826f82dcea03e63 (patch)
treec16acc9f1b38b54c9090a1a1a20756f52759ee3b /sys/dev
parent8e1125601f462c484a83ba7e9e62eb1908ab1ef2 (diff)
Update for new wdc.c with indirect register mapping.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/podulebus/dtide.c29
-rw-r--r--sys/dev/podulebus/hcide.c29
2 files changed, 34 insertions, 24 deletions
diff --git a/sys/dev/podulebus/dtide.c b/sys/dev/podulebus/dtide.c
index e2ce80a3e3b..b44a61ef914 100644
--- a/sys/dev/podulebus/dtide.c
+++ b/sys/dev/podulebus/dtide.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dtide.c,v 1.11 2003/10/08 10:58:13 bouyer Exp $ */
+/* $NetBSD: dtide.c,v 1.12 2003/11/29 20:30:27 bjh21 Exp $ */
/*-
* Copyright (c) 2000, 2001 Ben Harris
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dtide.c,v 1.11 2003/10/08 10:58:13 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dtide.c,v 1.12 2003/11/29 20:30:27 bjh21 Exp $");
#include <sys/param.h>
@@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: dtide.c,v 1.11 2003/10/08 10:58:13 bouyer Exp $");
#include <dev/podulebus/podules.h>
#include <dev/podulebus/dtidereg.h>
+#include <dev/ic/wdcreg.h>
#include <dev/ata/atavar.h>
#include <dev/ic/wdcvar.h>
@@ -79,7 +80,8 @@ dtide_attach(struct device *parent, struct device *self, void *aux)
{
struct podulebus_attach_args *pa = aux;
struct dtide_softc *sc = (void *)self;
- int i;
+ struct channel_softc *ch;
+ int i, j;
bus_space_tag_t bst;
sc->sc_wdc.cap = WDC_CAPABILITY_DATA16 | WDC_CAPABILITY_NOIRQ;
@@ -94,19 +96,22 @@ dtide_attach(struct device *parent, struct device *self, void *aux)
podulebus_shift_tag(pa->pa_fast_t, DTIDE_REGSHIFT, &bst);
printf("\n");
for (i = 0; i < DTIDE_NCHANNELS; i++) {
- sc->sc_chp[i] = &sc->sc_chan[i];
- sc->sc_chan[i].channel = i;
- sc->sc_chan[i].wdc = &sc->sc_wdc;
- sc->sc_chan[i].cmd_iot = bst;
- sc->sc_chan[i].ctl_iot = bst;
- sc->sc_chan[i].ch_queue = &sc->sc_chq[i];
+ ch = sc->sc_chp[i] = &sc->sc_chan[i];
+ ch->channel = i;
+ ch->wdc = &sc->sc_wdc;
+ ch->cmd_iot = bst;
+ ch->ctl_iot = bst;
+ ch->ch_queue = &sc->sc_chq[i];
bus_space_map(pa->pa_fast_t,
pa->pa_fast_base + dtide_cmdoffsets[i], 0, 8,
- &sc->sc_chan[i].cmd_ioh);
+ &ch->cmd_baseioh);
+ for (j = 0; j < WDC_NREG; j++)
+ bus_space_subregion(ch->cmd_iot, ch->cmd_baseioh,
+ j, j == 0 ? 4 : 1, &ch->cmd_iohs[j]);
bus_space_map(pa->pa_fast_t,
pa->pa_fast_base + dtide_ctloffsets[i], 0, 8,
- &sc->sc_chan[i].ctl_ioh);
- wdcattach(&sc->sc_chan[i]);
+ &ch->ctl_ioh);
+ wdcattach(ch);
}
}
diff --git a/sys/dev/podulebus/hcide.c b/sys/dev/podulebus/hcide.c
index 199dee4ce8d..807500d73c3 100644
--- a/sys/dev/podulebus/hcide.c
+++ b/sys/dev/podulebus/hcide.c
@@ -1,4 +1,4 @@
-/* $NetBSD: hcide.c,v 1.8 2003/10/08 10:58:13 bouyer Exp $ */
+/* $NetBSD: hcide.c,v 1.9 2003/11/29 20:30:27 bjh21 Exp $ */
/*-
* Copyright (c) 2000, 2001 Ben Harris
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hcide.c,v 1.8 2003/10/08 10:58:13 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hcide.c,v 1.9 2003/11/29 20:30:27 bjh21 Exp $");
#include <sys/param.h>
@@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: hcide.c,v 1.8 2003/10/08 10:58:13 bouyer Exp $");
#include <dev/podulebus/hcidereg.h>
#include <dev/ata/atavar.h>
+#include <dev/ic/wdcreg.h>
#include <dev/ic/wdcvar.h>
struct hcide_softc {
@@ -79,7 +80,8 @@ hcide_attach(struct device *parent, struct device *self, void *aux)
{
struct hcide_softc *sc = (void *)self;
struct podulebus_attach_args *pa = aux;
- int i;
+ struct channel_softc *ch;
+ int i, j;
sc->sc_wdc.cap = WDC_CAPABILITY_DATA16 | WDC_CAPABILITY_NOIRQ;
sc->sc_wdc.PIO_cap = 0; /* XXX correct? */
@@ -89,19 +91,22 @@ hcide_attach(struct device *parent, struct device *self, void *aux)
sc->sc_wdc.channels = sc->sc_chp;
printf("\n");
for (i = 0; i < HCIDE_NCHANNELS; i++) {
- sc->sc_chp[i] = &sc->sc_chan[i];
- sc->sc_chan[i].channel = i;
- sc->sc_chan[i].wdc = &sc->sc_wdc;
- sc->sc_chan[i].cmd_iot = pa->pa_mod_t;
- sc->sc_chan[i].ctl_iot = pa->pa_mod_t;
- sc->sc_chan[i].ch_queue = &sc->sc_chq[i];
+ ch = sc->sc_chp[i] = &sc->sc_chan[i];
+ ch->channel = i;
+ ch->wdc = &sc->sc_wdc;
+ ch->cmd_iot = pa->pa_mod_t;
+ ch->ctl_iot = pa->pa_mod_t;
+ ch->ch_queue = &sc->sc_chq[i];
bus_space_map(pa->pa_fast_t,
pa->pa_fast_base + hcide_cmdoffsets[i], 0, 8,
- &sc->sc_chan[i].cmd_ioh);
+ &ch->cmd_baseioh);
+ for (j = 0; j < WDC_NREG; j++)
+ bus_space_subregion(ch->cmd_iot, ch->cmd_baseioh,
+ j, j == 0 ? 4 : 1, &ch->cmd_iohs[j]);
bus_space_map(pa->pa_fast_t,
pa->pa_fast_base + hcide_ctloffsets[i], 0, 8,
- &sc->sc_chan[i].ctl_ioh);
- wdcattach(&sc->sc_chan[i]);
+ &ch->ctl_ioh);
+ wdcattach(ch);
}
}