Module Name: src
Committed By: tsutsui
Date: Tue Sep 22 12:56:06 UTC 2009
Modified Files:
src/sys/dev/ic: aic6360.c aic6360var.h
src/sys/dev/isa: aic_isa.c
src/sys/dev/isapnp: aic_isapnp.c
src/sys/dev/pcmcia: aic_pcmcia.c
Log Message:
Split device_t/softc. Tested on AHA-1520B at ISA and ISAPnP.
XXX: ISA attachment shouldn't match cards in ISAPnP mode.
To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.97 src/sys/dev/ic/aic6360.c
cvs rdiff -u -r1.14 -r1.15 src/sys/dev/ic/aic6360var.h
cvs rdiff -u -r1.23 -r1.24 src/sys/dev/isa/aic_isa.c
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/isapnp/aic_isapnp.c
cvs rdiff -u -r1.40 -r1.41 src/sys/dev/pcmcia/aic_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/dev/ic/aic6360.c
diff -u src/sys/dev/ic/aic6360.c:1.96 src/sys/dev/ic/aic6360.c:1.97
--- src/sys/dev/ic/aic6360.c:1.96 Tue May 12 14:25:17 2009
+++ src/sys/dev/ic/aic6360.c Tue Sep 22 12:56:06 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: aic6360.c,v 1.96 2009/05/12 14:25:17 cegger Exp $ */
+/* $NetBSD: aic6360.c,v 1.97 2009/09/22 12:56:06 tsutsui Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Charles M. Hannum. All rights reserved.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aic6360.c,v 1.96 2009/05/12 14:25:17 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aic6360.c,v 1.97 2009/09/22 12:56:06 tsutsui Exp $");
#include "opt_ddb.h"
@@ -261,7 +261,7 @@
/*
* Fill in the scsipi_adapter.
*/
- adapt->adapt_dev = &sc->sc_dev;
+ adapt->adapt_dev = sc->sc_dev;
adapt->adapt_nchannels = 1;
adapt->adapt_openings = 8;
adapt->adapt_max_periph = 1;
@@ -283,7 +283,7 @@
* config_found() to make sure the adatper is disabled.
*/
if (scsipi_adapter_addref(adapt) != 0) {
- aprint_error_dev(&sc->sc_dev, "unable to enable controller\n");
+ aprint_error_dev(sc->sc_dev, "unable to enable controller\n");
return;
}
@@ -292,14 +292,14 @@
/*
* Ask the adapter what subunits are present
*/
- sc->sc_child = config_found(&sc->sc_dev, &sc->sc_channel, scsiprint);
+ sc->sc_child = config_found(sc->sc_dev, &sc->sc_channel, scsiprint);
scsipi_adapter_delref(adapt);
}
int
aic_activate(device_t self, enum devact act)
{
- struct aic_softc *sc = (struct aic_softc *) self;
+ struct aic_softc *sc = device_private(self);
int s, rv = 0;
s = splhigh();
@@ -321,7 +321,7 @@
int
aic_detach(device_t self, int flags)
{
- struct aic_softc *sc = (struct aic_softc *) self;
+ struct aic_softc *sc = device_private(self);
int rv = 0;
if (sc->sc_child != NULL)
@@ -506,7 +506,7 @@
{
struct scsipi_xfer *xs;
struct scsipi_periph *periph;
- struct aic_softc *sc = (void *)chan->chan_adapter->adapt_dev;
+ struct aic_softc *sc = device_private(chan->chan_adapter->adapt_dev);
struct aic_acb *acb;
int s, flags;
@@ -520,7 +520,7 @@
AIC_CMDS(("[0x%x, %d]->%d ", (int)xs->cmd->opcode, xs->cmdlen,
periph->periph_target));
- if (! device_is_active(&sc->sc_dev)) {
+ if (!device_is_active(sc->sc_dev)) {
xs->error = XS_DRIVER_STUFFUP;
scsipi_done(xs);
return;
@@ -756,7 +756,8 @@
*/
selid = sc->sc_selid & ~(1 << sc->sc_initiator);
if (selid & (selid - 1)) {
- aprint_error_dev(&sc->sc_dev, "reselect with invalid selid %02x; "
+ aprint_error_dev(sc->sc_dev,
+ "reselect with invalid selid %02x; "
"sending DEVICE RESET\n", selid);
AIC_BREAK();
goto reset;
@@ -778,7 +779,7 @@
}
if (acb == NULL) {
printf("%s: reselect from target %d lun %d with no nexus; "
- "sending ABORT\n", device_xname(&sc->sc_dev), target, lun);
+ "sending ABORT\n", device_xname(sc->sc_dev), target, lun);
AIC_BREAK();
goto abort;
}
@@ -828,7 +829,7 @@
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- if (! device_is_active(&sc->sc_dev))
+ if (!device_is_active(sc->sc_dev))
return;
/*
@@ -1084,7 +1085,8 @@
if (sc->sc_dleft < 0) {
periph = acb->xs->xs_periph;
printf("%s: %ld extra bytes from %d:%d\n",
- device_xname(&sc->sc_dev), (long)-sc->sc_dleft,
+ device_xname(sc->sc_dev),
+ (long)-sc->sc_dleft,
periph->periph_target, periph->periph_lun);
sc->sc_dleft = 0;
}
@@ -1194,7 +1196,8 @@
default:
printf("%s: unrecognized MESSAGE EXTENDED; "
- "sending REJECT\n", device_xname(&sc->sc_dev));
+ "sending REJECT\n",
+ device_xname(sc->sc_dev));
AIC_BREAK();
goto reject;
}
@@ -1202,7 +1205,7 @@
default:
printf("%s: unrecognized MESSAGE; sending REJECT\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
AIC_BREAK();
reject:
aic_sched_msgout(sc, SEND_REJECT);
@@ -1213,7 +1216,7 @@
case AIC_RESELECTED:
if (!MSG_ISIDENTIFY(sc->sc_imess[0])) {
printf("%s: reselect without IDENTIFY; "
- "sending DEVICE RESET\n", device_xname(&sc->sc_dev));
+ "sending DEVICE RESET\n", device_xname(sc->sc_dev));
AIC_BREAK();
goto reset;
}
@@ -1222,7 +1225,8 @@
break;
default:
- aprint_error_dev(&sc->sc_dev, "unexpected MESSAGE IN; sending DEVICE RESET\n");
+ aprint_error_dev(sc->sc_dev,
+ "unexpected MESSAGE IN; sending DEVICE RESET\n");
AIC_BREAK();
reset:
aic_sched_msgout(sc, SEND_DEV_RESET);
@@ -1369,7 +1373,8 @@
break;
default:
- aprint_error_dev(&sc->sc_dev, "unexpected MESSAGE OUT; sending NOOP\n");
+ aprint_error_dev(sc->sc_dev,
+ "unexpected MESSAGE OUT; sending NOOP\n");
AIC_BREAK();
sc->sc_omess[0] = MSG_NOOP;
n = 1;
@@ -1720,7 +1725,7 @@
struct aic_tinfo *ti;
int n;
- if (! device_is_active(&sc->sc_dev))
+ if (!device_is_active(sc->sc_dev))
return (0);
/*
@@ -1739,7 +1744,7 @@
AIC_MISC(("sstat1:0x%02x ", sstat1));
if ((sstat1 & SCSIRSTI) != 0) {
- printf("%s: SCSI bus reset\n", device_xname(&sc->sc_dev));
+ printf("%s: SCSI bus reset\n", device_xname(sc->sc_dev));
goto reset;
}
@@ -1747,7 +1752,7 @@
* Check for less serious errors.
*/
if ((sstat1 & SCSIPERR) != 0) {
- printf("%s: SCSI bus parity error\n", device_xname(&sc->sc_dev));
+ printf("%s: SCSI bus parity error\n", device_xname(sc->sc_dev));
bus_space_write_1(iot, ioh, CLRSINT1, CLRSCSIPERR);
if (sc->sc_prevphase == PH_MSGIN) {
sc->sc_flags |= AIC_DROP_MSGIN;
@@ -1777,7 +1782,7 @@
* We don't currently support target mode.
*/
printf("%s: target mode selected; going to BUS FREE\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
bus_space_write_1(iot, ioh, SCSISIG, 0);
goto sched;
@@ -1810,7 +1815,7 @@
*/
if (sc->sc_state != AIC_SELECTING) {
printf("%s: selection out while idle; "
- "resetting\n", device_xname(&sc->sc_dev));
+ "resetting\n", device_xname(sc->sc_dev));
AIC_BREAK();
goto reset;
}
@@ -1855,7 +1860,7 @@
if (sc->sc_state != AIC_SELECTING) {
printf("%s: selection timeout while idle; "
- "resetting\n", device_xname(&sc->sc_dev));
+ "resetting\n", device_xname(sc->sc_dev));
AIC_BREAK();
goto reset;
}
@@ -1873,7 +1878,7 @@
if (sc->sc_state != AIC_IDLE) {
printf("%s: BUS FREE while not idle; "
"state=%d\n",
- device_xname(&sc->sc_dev), sc->sc_state);
+ device_xname(sc->sc_dev), sc->sc_state);
AIC_BREAK();
goto out;
}
@@ -1949,7 +1954,8 @@
* disconnecting, and this is necessary to
* clean up their state.
*/
- aprint_error_dev(&sc->sc_dev, "unexpected disconnect; "
+ aprint_error_dev(sc->sc_dev,
+ "unexpected disconnect; "
"sending REQUEST SENSE\n");
AIC_BREAK();
aic_sense(sc, acb);
@@ -2055,7 +2061,7 @@
goto loop;
}
- aprint_error_dev(&sc->sc_dev, "unexpected bus phase; resetting\n");
+ aprint_error_dev(sc->sc_dev, "unexpected bus phase; resetting\n");
AIC_BREAK();
reset:
aic_init(sc, 1);
@@ -2106,7 +2112,7 @@
struct scsipi_xfer *xs = acb->xs;
struct scsipi_periph *periph = xs->xs_periph;
struct aic_softc *sc =
- (void *)periph->periph_channel->chan_adapter->adapt_dev;
+ device_private(periph->periph_channel->chan_adapter->adapt_dev);
int s;
scsipi_printaddr(periph);
Index: src/sys/dev/ic/aic6360var.h
diff -u src/sys/dev/ic/aic6360var.h:1.14 src/sys/dev/ic/aic6360var.h:1.15
--- src/sys/dev/ic/aic6360var.h:1.14 Tue May 12 14:25:17 2009
+++ src/sys/dev/ic/aic6360var.h Tue Sep 22 12:56:06 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: aic6360var.h,v 1.14 2009/05/12 14:25:17 cegger Exp $ */
+/* $NetBSD: aic6360var.h,v 1.15 2009/09/22 12:56:06 tsutsui Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Charles M. Hannum. All rights reserved.
@@ -115,7 +115,7 @@
};
struct aic_softc {
- struct device sc_dev;
+ device_t sc_dev;
bus_space_tag_t sc_iot;
bus_space_handle_t sc_ioh;
@@ -199,7 +199,7 @@
#define AIC_ASSERT(x) do { \
if (! (x)) { \
printf("%s at line %d: assertion failed\n", \
- device_xname(&sc->sc_dev), __LINE__); \
+ device_xname(sc->sc_dev), __LINE__); \
Debugger(); \
} } while (/* CONSTCOND */ 0)
#else
Index: src/sys/dev/isa/aic_isa.c
diff -u src/sys/dev/isa/aic_isa.c:1.23 src/sys/dev/isa/aic_isa.c:1.24
--- src/sys/dev/isa/aic_isa.c:1.23 Tue May 12 09:10:15 2009
+++ src/sys/dev/isa/aic_isa.c Tue Sep 22 12:56:06 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: aic_isa.c,v 1.23 2009/05/12 09:10:15 cegger Exp $ */
+/* $NetBSD: aic_isa.c,v 1.24 2009/09/22 12:56:06 tsutsui Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Charles M. Hannum. All rights reserved.
@@ -51,7 +51,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aic_isa.c,v 1.23 2009/05/12 09:10:15 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aic_isa.c,v 1.24 2009/09/22 12:56:06 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -85,7 +85,7 @@
void *sc_ih; /* interrupt handler */
};
-CFATTACH_DECL(aic_isa, sizeof(struct aic_isa_softc),
+CFATTACH_DECL_NEW(aic_isa, sizeof(struct aic_isa_softc),
aic_isa_probe, aic_isa_attach, NULL, NULL);
@@ -144,30 +144,32 @@
aic_isa_attach(device_t parent, device_t self, void *aux)
{
struct isa_attach_args *ia = aux;
- struct aic_isa_softc *isc = (void *)self;
+ struct aic_isa_softc *isc = device_private(self);
struct aic_softc *sc = &isc->sc_aic;
bus_space_tag_t iot = ia->ia_iot;
bus_space_handle_t ioh;
isa_chipset_tag_t ic = ia->ia_ic;
+ sc->sc_dev = self;
+
printf("\n");
if (bus_space_map(iot, ia->ia_io[0].ir_addr, AIC_ISA_IOSIZE, 0, &ioh)) {
- aprint_error_dev(&sc->sc_dev, "can't map i/o space\n");
+ aprint_error_dev(self, "can't map i/o space\n");
return;
}
sc->sc_iot = iot;
sc->sc_ioh = ioh;
if (!aic_find(iot, ioh)) {
- aprint_error_dev(&sc->sc_dev, "aic_find failed");
+ aprint_error_dev(self, "aic_find failed\n");
return;
}
isc->sc_ih = isa_intr_establish(ic, ia->ia_irq[0].ir_irq, IST_EDGE,
IPL_BIO, aicintr, sc);
if (isc->sc_ih == NULL) {
- aprint_error_dev(&sc->sc_dev, "couldn't establish interrupt\n");
+ aprint_error_dev(self, "couldn't establish interrupt\n");
return;
}
Index: src/sys/dev/isapnp/aic_isapnp.c
diff -u src/sys/dev/isapnp/aic_isapnp.c:1.19 src/sys/dev/isapnp/aic_isapnp.c:1.20
--- src/sys/dev/isapnp/aic_isapnp.c:1.19 Tue May 12 10:16:35 2009
+++ src/sys/dev/isapnp/aic_isapnp.c Tue Sep 22 12:56:06 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: aic_isapnp.c,v 1.19 2009/05/12 10:16:35 cegger Exp $ */
+/* $NetBSD: aic_isapnp.c,v 1.20 2009/09/22 12:56:06 tsutsui Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aic_isapnp.c,v 1.19 2009/05/12 10:16:35 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aic_isapnp.c,v 1.20 2009/09/22 12:56:06 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -60,7 +60,7 @@
int aic_isapnp_match(device_t, cfdata_t, void *);
void aic_isapnp_attach(device_t, device_t, void *);
-CFATTACH_DECL(aic_isapnp, sizeof(struct aic_isapnp_softc),
+CFATTACH_DECL_NEW(aic_isapnp, sizeof(struct aic_isapnp_softc),
aic_isapnp_match, aic_isapnp_attach, NULL, NULL);
int
@@ -81,10 +81,12 @@
struct aic_softc *sc = &isc->sc_aic;
struct isapnp_attach_args *ipa = aux;
+ sc->sc_dev = self;
+
printf("\n");
if (isapnp_config(ipa->ipa_iot, ipa->ipa_memt, ipa)) {
- aprint_error_dev(&sc->sc_dev, "error in region allocation\n");
+ aprint_error_dev(self, "error in region allocation\n");
return;
}
@@ -92,7 +94,7 @@
sc->sc_ioh = ipa->ipa_io[0].h;
if (!aic_find(sc->sc_iot, sc->sc_ioh)) {
- aprint_error_dev(&sc->sc_dev, "couldn't find device\n");
+ aprint_error_dev(self, "couldn't find device\n");
return;
}
@@ -102,5 +104,5 @@
isc->sc_ih = isa_intr_establish(ipa->ipa_ic, ipa->ipa_irq[0].num,
ipa->ipa_irq[0].type, IPL_BIO, aicintr, sc);
if (isc->sc_ih == NULL)
- aprint_error_dev(&sc->sc_dev, "couldn't establish interrupt\n");
+ aprint_error_dev(self, "couldn't establish interrupt\n");
}
Index: src/sys/dev/pcmcia/aic_pcmcia.c
diff -u src/sys/dev/pcmcia/aic_pcmcia.c:1.40 src/sys/dev/pcmcia/aic_pcmcia.c:1.41
--- src/sys/dev/pcmcia/aic_pcmcia.c:1.40 Tue May 12 14:42:18 2009
+++ src/sys/dev/pcmcia/aic_pcmcia.c Tue Sep 22 12:56:06 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: aic_pcmcia.c,v 1.40 2009/05/12 14:42:18 cegger Exp $ */
+/* $NetBSD: aic_pcmcia.c,v 1.41 2009/09/22 12:56:06 tsutsui Exp $ */
/*
* Copyright (c) 1997 Marc Horowitz. All rights reserved.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aic_pcmcia.c,v 1.40 2009/05/12 14:42:18 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aic_pcmcia.c,v 1.41 2009/09/22 12:56:06 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -68,7 +68,7 @@
int aic_pcmcia_detach(device_t, int);
int aic_pcmcia_enable(device_t, int);
-CFATTACH_DECL(aic_pcmcia, sizeof(struct aic_pcmcia_softc),
+CFATTACH_DECL_NEW(aic_pcmcia, sizeof(struct aic_pcmcia_softc),
aic_pcmcia_match, aic_pcmcia_attach, aic_pcmcia_detach, aic_activate);
const struct pcmcia_product aic_pcmcia_products[] = {
@@ -85,8 +85,7 @@
sizeof(aic_pcmcia_products) / sizeof(aic_pcmcia_products[0]);
int
-aic_pcmcia_match(device_t parent, cfdata_t match,
- void *aux)
+aic_pcmcia_match(device_t parent, cfdata_t match, void *aux)
{
struct pcmcia_attach_args *pa = aux;
@@ -107,16 +106,16 @@
}
void
-aic_pcmcia_attach(device_t parent, device_t self,
- void *aux)
+aic_pcmcia_attach(device_t parent, device_t self, void *aux)
{
- struct aic_pcmcia_softc *psc = (void *)self;
+ struct aic_pcmcia_softc *psc = device_private(self);
struct aic_softc *sc = &psc->sc_aic;
struct pcmcia_attach_args *pa = aux;
struct pcmcia_config_entry *cfe;
struct pcmcia_function *pf = pa->pf;
int error;
+ sc->sc_dev = self;
psc->sc_pf = pf;
error = pcmcia_function_configure(pf, aic_pcmcia_validate_config);
@@ -157,17 +156,17 @@
int
aic_pcmcia_detach(device_t self, int flags)
{
- struct aic_pcmcia_softc *sc = (void *)self;
+ struct aic_pcmcia_softc *psc = device_private(self);
int error;
- if (sc->sc_state != AIC_PCMCIA_ATTACHED)
+ if (psc->sc_state != AIC_PCMCIA_ATTACHED)
return (0);
error = aic_detach(self, flags);
if (error)
return (error);
- pcmcia_function_unconfigure(sc->sc_pf);
+ pcmcia_function_unconfigure(psc->sc_pf);
return (0);
}
@@ -175,29 +174,30 @@
int
aic_pcmcia_enable(device_t self, int onoff)
{
- struct aic_pcmcia_softc *sc = (void *)self;
+ struct aic_pcmcia_softc *psc = device_private(self);
+ struct aic_softc *sc = &psc->sc_aic;
int error;
if (onoff) {
/* Establish the interrupt handler. */
- sc->sc_ih = pcmcia_intr_establish(sc->sc_pf, IPL_BIO,
- aicintr, &sc->sc_aic);
- if (!sc->sc_ih)
+ psc->sc_ih = pcmcia_intr_establish(psc->sc_pf, IPL_BIO,
+ aicintr, sc);
+ if (!psc->sc_ih)
return (EIO);
- error = pcmcia_function_enable(sc->sc_pf);
+ error = pcmcia_function_enable(psc->sc_pf);
if (error) {
- pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih);
- sc->sc_ih = 0;
+ pcmcia_intr_disestablish(psc->sc_pf, psc->sc_ih);
+ psc->sc_ih = 0;
return (error);
}
/* Initialize only chip. */
- aic_init(&sc->sc_aic, 0);
+ aic_init(sc, 0);
} else {
- pcmcia_function_disable(sc->sc_pf);
- pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih);
- sc->sc_ih = 0;
+ pcmcia_function_disable(psc->sc_pf);
+ pcmcia_intr_disestablish(psc->sc_pf, psc->sc_ih);
+ psc->sc_ih = 0;
}
return (0);