Module Name: src
Committed By: tsutsui
Date: Fri May 15 17:55:44 UTC 2009
Modified Files:
src/sys/arch/hp700/dev: siop_sgc.c
src/sys/arch/hp700/gsc: siop_gsc.c
src/sys/dev/ic: esiop.c siop.c siop_common.c siopvar_common.h
src/sys/dev/pci: esiop_pci.c siop_pci.c siop_pci_common.c
Log Message:
Split device_t/softc.
No crash on:
esiop0 at pci0 dev 11 function 0: Symbios Logic 53c875 (ultra-wide scsi)
siop0 at pci0 dev 9 function 0: Symbios Logic 53c810a (fast scsi)
siop0 at gsc0 hpa 0xf0830000 path 2/0/7 irq 3 ipl 6: NCR53C720 rev 2
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/hp700/dev/siop_sgc.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/hp700/gsc/siop_gsc.c
cvs rdiff -u -r1.45 -r1.46 src/sys/dev/ic/esiop.c
cvs rdiff -u -r1.90 -r1.91 src/sys/dev/ic/siop.c
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/ic/siop_common.c
cvs rdiff -u -r1.36 -r1.37 src/sys/dev/ic/siopvar_common.h
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/pci/esiop_pci.c
cvs rdiff -u -r1.24 -r1.25 src/sys/dev/pci/siop_pci.c
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/pci/siop_pci_common.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/hp700/dev/siop_sgc.c
diff -u src/sys/arch/hp700/dev/siop_sgc.c:1.3 src/sys/arch/hp700/dev/siop_sgc.c:1.4
--- src/sys/arch/hp700/dev/siop_sgc.c:1.3 Fri May 8 09:33:58 2009
+++ src/sys/arch/hp700/dev/siop_sgc.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop_sgc.c,v 1.3 2009/05/08 09:33:58 skrll Exp $ */
+/* $NetBSD: siop_sgc.c,v 1.4 2009/05/15 17:55:44 tsutsui Exp $ */
/* $OpenBSD: siop_sgc.c,v 1.1 2007/08/05 19:09:52 kettenis Exp $ */
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop_sgc.c,v 1.3 2009/05/08 09:33:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop_sgc.c,v 1.4 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -46,8 +46,8 @@
#define IO_II_PACKEN 0x10000000
#define IO_II_PREFETCHEN 0x08000000
-int siop_sgc_match(struct device *, struct cfdata *, void *);
-void siop_sgc_attach(struct device *, struct device *, void *);
+int siop_sgc_match(device_t, cfdata_t, void *);
+void siop_sgc_attach(device_t, device_t, void *);
int siop_sgc_intr(void *);
void siop_sgc_reset(struct siop_common_softc *);
@@ -63,11 +63,11 @@
struct hppa_bus_space_tag sc_bustag;
};
-CFATTACH_DECL(siop_gedoens, sizeof(struct siop_sgc_softc),
+CFATTACH_DECL_NEW(siop_gedoens, sizeof(struct siop_sgc_softc),
siop_sgc_match, siop_sgc_attach, NULL, NULL);
int
-siop_sgc_match(struct device *parent, struct cfdata *match, void *aux)
+siop_sgc_match(device_t parent, cfdata_t match, void *aux)
{
struct confargs *ca = aux;
@@ -83,17 +83,18 @@
}
void
-siop_sgc_attach(struct device *parent, struct device *self, void *aux)
+siop_sgc_attach(device_t parent, device_t self, void *aux)
{
- struct siop_sgc_softc *sgc = (struct siop_sgc_softc *)self;
+ struct siop_sgc_softc *sgc = device_private(self);
struct siop_softc *sc = &sgc->sc_siop;
struct confargs *ca = aux;
volatile struct iomod *regs;
+ sc->sc_c.sc_dev = self;
sgc->sc_iot = ca->ca_iot;
if (bus_space_map(sgc->sc_iot, ca->ca_hpa,
IOMOD_HPASIZE, 0, &sgc->sc_ioh)) {
- printf(": can't map io space\n");
+ aprint_error(": can't map io space\n");
return;
}
@@ -128,12 +129,12 @@
regs->io_eim = cpu_gethpa(0) | (31 - ca->ca_irq);
regs->io_ii_rw |= IO_II_INTEN;
- printf(": NCR53C720 rev %d\n", bus_space_read_1(sc->sc_c.sc_rt,
+ aprint_normal(": NCR53C720 rev %d\n", bus_space_read_1(sc->sc_c.sc_rt,
sc->sc_c.sc_rh, SIOP_CTEST3) >> 4);
siop_attach(&sgc->sc_siop);
- (void)hp700_intr_establish(&sc->sc_c.sc_dev, IPL_BIO,
+ (void)hp700_intr_establish(self, IPL_BIO,
siop_intr, sc, &int_reg_cpu, ca->ca_irq);
}
Index: src/sys/arch/hp700/gsc/siop_gsc.c
diff -u src/sys/arch/hp700/gsc/siop_gsc.c:1.9 src/sys/arch/hp700/gsc/siop_gsc.c:1.10
--- src/sys/arch/hp700/gsc/siop_gsc.c:1.9 Fri May 8 09:33:58 2009
+++ src/sys/arch/hp700/gsc/siop_gsc.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop_gsc.c,v 1.9 2009/05/08 09:33:58 skrll Exp $ */
+/* $NetBSD: siop_gsc.c,v 1.10 2009/05/15 17:55:44 tsutsui Exp $ */
/* $OpenBSD: siop_gsc.c,v 1.4 2007/08/23 21:01:22 kettenis Exp $ */
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop_gsc.c,v 1.9 2009/05/08 09:33:58 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop_gsc.c,v 1.10 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -45,8 +45,8 @@
#define SIOP_GSC_RESET 0x0000
#define SIOP_GSC_OFFSET 0x0100
-int siop_gsc_match(struct device *, struct cfdata *, void *);
-void siop_gsc_attach(struct device *, struct device *, void *);
+int siop_gsc_match(device_t, cfdata_t, void *);
+void siop_gsc_attach(device_t, device_t, void *);
int siop_gsc_intr(void *);
void siop_gsc_reset(struct siop_common_softc *);
@@ -62,11 +62,11 @@
struct hppa_bus_space_tag sc_bustag;
};
-CFATTACH_DECL(siop_gsc, sizeof(struct siop_gsc_softc),
+CFATTACH_DECL_NEW(siop_gsc, sizeof(struct siop_gsc_softc),
siop_gsc_match, siop_gsc_attach, NULL, NULL);
int
-siop_gsc_match(struct device *parent, struct cfdata *match, void *aux)
+siop_gsc_match(device_t parent, cfdata_t match, void *aux)
{
struct gsc_attach_args *ga = aux;
@@ -78,16 +78,17 @@
}
void
-siop_gsc_attach(struct device *parent, struct device *self, void *aux)
+siop_gsc_attach(device_t parent, device_t self, void *aux)
{
- struct siop_gsc_softc *gsc = (struct siop_gsc_softc *)self;
+ struct siop_gsc_softc *gsc = device_private(self);
struct siop_softc *sc = &gsc->sc_siop;
struct gsc_attach_args *ga = aux;
+ sc->sc_c.sc_dev = self;
gsc->sc_iot = ga->ga_iot;
if (bus_space_map(gsc->sc_iot, ga->ga_hpa,
IOMOD_HPASIZE, 0, &gsc->sc_ioh)) {
- printf(": can't map io space\n");
+ aprint_error(": can't map io space\n");
return;
}
@@ -118,12 +119,12 @@
DELAY(1000);
siop_gsc_reset(&sc->sc_c);
- printf(": NCR53C720 rev %d\n", bus_space_read_1(sc->sc_c.sc_rt,
+ aprint_normal(": NCR53C720 rev %d\n", bus_space_read_1(sc->sc_c.sc_rt,
sc->sc_c.sc_rh, SIOP_CTEST3) >> 4);
siop_attach(sc);
- (void)hp700_intr_establish(&sc->sc_c.sc_dev, IPL_BIO,
+ (void)hp700_intr_establish(self, IPL_BIO,
siop_intr, sc, ga->ga_int_reg, ga->ga_irq);
}
Index: src/sys/dev/ic/esiop.c
diff -u src/sys/dev/ic/esiop.c:1.45 src/sys/dev/ic/esiop.c:1.46
--- src/sys/dev/ic/esiop.c:1.45 Sun Mar 15 15:52:12 2009
+++ src/sys/dev/ic/esiop.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: esiop.c,v 1.45 2009/03/15 15:52:12 cegger Exp $ */
+/* $NetBSD: esiop.c,v 1.46 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2002 Manuel Bouyer.
@@ -33,7 +33,7 @@
/* SYM53c7/8xx PCI-SCSI I/O Processors driver */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: esiop.c,v 1.45 2009/03/15 15:52:12 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: esiop.c,v 1.46 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -161,7 +161,7 @@
TAILQ_INIT(&sc->tag_tblblk);
sc->sc_currschedslot = 0;
#ifdef SIOP_DEBUG
- aprint_debug_dev(&sc->sc_c.sc_dev, "script size = %d, PHY addr=0x%x, VIRT=%p\n",
+ aprint_debug_dev(sc->sc_c.sc_dev, "script size = %d, PHY addr=0x%x, VIRT=%p\n",
(int)sizeof(esiop_script),
(u_int32_t)sc->sc_c.sc_scriptaddr, sc->sc_c.sc_script);
#endif
@@ -175,7 +175,7 @@
*/
#ifdef DIAGNOSTIC
if (ESIOP_NTAG != A_ndone_slots) {
- aprint_error_dev(&sc->sc_c.sc_dev, "size of tag DSA table different from the done"
+ aprint_error_dev(sc->sc_c.sc_dev, "size of tag DSA table different from the done"
" ring\n");
return;
}
@@ -183,7 +183,7 @@
esiop_moretagtbl(sc);
tagtbl_donering = TAILQ_FIRST(&sc->free_tagtbl);
if (tagtbl_donering == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "no memory for command done ring\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "no memory for command done ring\n");
return;
}
TAILQ_REMOVE(&sc->free_tagtbl, tagtbl_donering, next);
@@ -201,7 +201,7 @@
esiop_dump_script(sc);
#endif
- config_found((struct device*)sc, &sc->sc_c.sc_chan, scsiprint);
+ config_found(sc->sc_c.sc_dev, &sc->sc_c.sc_chan, scsiprint);
}
void
@@ -387,7 +387,7 @@
((addr & 0xff000000) >> 16));
#ifdef SIOP_DEBUG
printf("%s: target table offset %d free offset %d\n",
- device_xname(&sc->sc_c.sc_dev), sc->sc_target_table_offset,
+ device_xname(sc->sc_c.sc_dev), sc->sc_target_table_offset,
sc->sc_free_offset);
#endif
@@ -538,7 +538,7 @@
}
if (dstat & ~(DSTAT_SIR | DSTAT_DFE | DSTAT_SSI)) {
- printf("%s: DMA IRQ:", device_xname(&sc->sc_c.sc_dev));
+ printf("%s: DMA IRQ:", device_xname(sc->sc_c.sc_dev));
if (dstat & DSTAT_IID)
printf(" Illegal instruction");
if (dstat & DSTAT_BF)
@@ -590,7 +590,7 @@
if (esiop_cmd)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s:", device_xname(&sc->sc_c.sc_dev));
+ printf("%s:", device_xname(sc->sc_c.sc_dev));
printf("scsi gross error\n");
if (esiop_target)
esiop_target->target_c.flags &= ~TARF_DT;
@@ -656,10 +656,10 @@
CALL_SCRIPT(Ent_msgin);
return 1;
}
- aprint_error_dev(&sc->sc_c.sc_dev, "unexpected phase mismatch %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unexpected phase mismatch %d\n",
sstat1 & SSTAT1_PHASE_MASK);
} else {
- aprint_error_dev(&sc->sc_c.sc_dev, "phase mismatch without command\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "phase mismatch without command\n");
}
need_reset = 1;
}
@@ -668,7 +668,7 @@
if (esiop_cmd)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s:", device_xname(&sc->sc_c.sc_dev));
+ printf("%s:", device_xname(sc->sc_c.sc_dev));
printf("parity error\n");
if (esiop_target)
esiop_target->target_c.flags &= ~TARF_DT;
@@ -717,7 +717,7 @@
printf("%s: selection timeout without "
"command, target %d (sdid 0x%x), "
"slot %d\n",
- device_xname(&sc->sc_c.sc_dev), target,
+ device_xname(sc->sc_c.sc_dev), target,
bus_space_read_1(sc->sc_c.sc_rt,
sc->sc_c.sc_rh, SIOP_SDID), slot);
need_reset = 1;
@@ -733,7 +733,7 @@
htole32(SCSI_CHECK);
goto end;
}
- aprint_error_dev(&sc->sc_c.sc_dev, "unexpected disconnect without "
+ aprint_error_dev(sc->sc_c.sc_dev, "unexpected disconnect without "
"command\n");
goto reset;
}
@@ -759,7 +759,7 @@
return 1;
}
/* Else it's an unhandled exception (for now). */
- aprint_error_dev(&sc->sc_c.sc_dev, "unhandled scsi interrupt, sist=0x%x sstat1=0x%x "
+ aprint_error_dev(sc->sc_c.sc_dev, "unhandled scsi interrupt, sist=0x%x sstat1=0x%x "
"DSA=0x%x DSP=0x%x\n", sist,
bus_space_read_1(sc->sc_c.sc_rt, sc->sc_c.sc_rh,
SIOP_SSTAT1),
@@ -794,13 +794,13 @@
*/
if ((irqcode & 0x80) == 0) {
if (esiop_cmd == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev,
+ aprint_error_dev(sc->sc_c.sc_dev,
"script interrupt (0x%x) with invalid DSA !!!\n",
irqcode);
goto reset;
}
if (esiop_cmd->cmd_c.status != CMDST_ACTIVE) {
- aprint_error_dev(&sc->sc_c.sc_dev, "command with invalid status "
+ aprint_error_dev(sc->sc_c.sc_dev, "command with invalid status "
"(IRQ code 0x%x current status %d) !\n",
irqcode, esiop_cmd->cmd_c.status);
xs = NULL;
@@ -845,7 +845,7 @@
scsipi_printaddr(xs->xs_periph);
else
printf("%s: ",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
printf("our reject message was "
"rejected\n");
goto reset;
@@ -910,7 +910,7 @@
scsipi_printaddr(xs->xs_periph);
else
printf("%s: ",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
if (msg == MSG_EXTENDED) {
printf("scsi message reject, extended "
"message sent was 0x%x\n", extmsg);
@@ -934,7 +934,7 @@
if (xs)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s: ", device_xname(&sc->sc_c.sc_dev));
+ printf("%s: ", device_xname(sc->sc_c.sc_dev));
printf("unhandled message 0x%x\n", msgin);
esiop_cmd->cmd_tables->msg_out[0] = MSG_MESSAGE_REJECT;
esiop_cmd->cmd_tables->t_msgout.count= htole32(1);
@@ -951,7 +951,7 @@
#endif
if (esiop_cmd->cmd_tables->msg_in[1] >
sizeof(esiop_cmd->cmd_tables->msg_in) - 2)
- aprint_error_dev(&sc->sc_c.sc_dev, "extended message too big (%d)\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "extended message too big (%d)\n",
esiop_cmd->cmd_tables->msg_in[1]);
esiop_cmd->cmd_tables->t_extmsgdata.count =
htole32(esiop_cmd->cmd_tables->msg_in[1] - 1);
@@ -1087,7 +1087,7 @@
case A_int_done:
if (xs == NULL) {
printf("%s: done without command\n",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
CALL_SCRIPT(Ent_script_sched);
return 1;
}
@@ -1173,7 +1173,7 @@
INCSTAT(esiop_stat_intr_qfull);
#ifdef SIOP_DEBUG
printf("%s:%d:%d: queue full (tag %d)\n",
- device_xname(&sc->sc_c.sc_dev),
+ device_xname(sc->sc_c.sc_dev),
xs->xs_periph->periph_target,
xs->xs_periph->periph_lun, esiop_cmd->cmd_c.tag);
#endif
@@ -1377,12 +1377,12 @@
#ifdef SIOP_DEBUG
printf("%s:%d:%d: tag message %d (%d) rejected (status %d)\n",
- device_xname(&sc->sc_c.sc_dev), target, lun, tag, esiop_cmd->cmd_c.tag,
+ device_xname(sc->sc_c.sc_dev), target, lun, tag, esiop_cmd->cmd_c.tag,
esiop_cmd->cmd_c.status);
#endif
if (esiop_lun->active != NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "untagged command already running for target %d "
+ aprint_error_dev(sc->sc_c.sc_dev, "untagged command already running for target %d "
"lun %d (status %d)\n",
target, lun, esiop_lun->active->cmd_c.status);
return -1;
@@ -1417,7 +1417,7 @@
* scsi bus reset. reset the chip and restart
* the queue. Need to clean up all active commands
*/
- printf("%s: scsi bus reset\n", device_xname(&sc->sc_c.sc_dev));
+ printf("%s: scsi bus reset\n", device_xname(sc->sc_c.sc_dev));
/* stop, reset and restart the chip */
esiop_reset(sc);
@@ -1480,7 +1480,7 @@
{
struct scsipi_xfer *xs;
struct scsipi_periph *periph;
- struct esiop_softc *sc = (void *)chan->chan_adapter->adapt_dev;
+ struct esiop_softc *sc = device_private(chan->chan_adapter->adapt_dev);
struct esiop_cmd *esiop_cmd;
struct esiop_target *esiop_target;
int s, error, i;
@@ -1525,13 +1525,13 @@
if (esiop_target == NULL) {
#ifdef SIOP_DEBUG
printf("%s: alloc siop_target for target %d\n",
- device_xname(&sc->sc_c.sc_dev), target);
+ device_xname(sc->sc_c.sc_dev), target);
#endif
sc->sc_c.targets[target] =
malloc(sizeof(struct esiop_target),
M_DEVBUF, M_NOWAIT | M_ZERO);
if (sc->sc_c.targets[target] == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't malloc memory for "
+ aprint_error_dev(sc->sc_c.sc_dev, "can't malloc memory for "
"target %d\n", target);
xs->error = XS_RESOURCE_SHORTAGE;
scsipi_done(xs);
@@ -1556,7 +1556,7 @@
malloc(sizeof(struct esiop_lun), M_DEVBUF,
M_NOWAIT|M_ZERO);
if (esiop_target->esiop_lun[lun] == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't alloc esiop_lun for "
+ aprint_error_dev(sc->sc_c.sc_dev, "can't alloc esiop_lun for "
"target %d lun %d\n",
target, lun);
xs->error = XS_RESOURCE_SHORTAGE;
@@ -1575,7 +1575,7 @@
esiop_cmd->cmd_c.dmamap_cmd,
xs->cmd, xs->cmdlen, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cmd DMA map: %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cmd DMA map: %d\n",
error);
xs->error = XS_DRIVER_STUFFUP;
scsipi_done(xs);
@@ -1589,7 +1589,7 @@
((xs->xs_control & XS_CTL_DATA_IN) ?
BUS_DMA_READ : BUS_DMA_WRITE));
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cmd DMA map: %d",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cmd DMA map: %d",
error);
xs->error = XS_DRIVER_STUFFUP;
scsipi_done(xs);
@@ -1638,7 +1638,7 @@
case ADAPTER_REQ_GROW_RESOURCES:
#ifdef SIOP_DEBUG
- printf("%s grow resources (%d)\n", device_xname(&sc->sc_c.sc_dev),
+ printf("%s grow resources (%d)\n", device_xname(sc->sc_c.sc_dev),
sc->sc_c.sc_adapt.adapt_openings);
#endif
esiop_morecbd(sc);
@@ -1869,7 +1869,7 @@
/* allocate a new list head */
newcbd = malloc(sizeof(struct esiop_cbd), M_DEVBUF, M_NOWAIT|M_ZERO);
if (newcbd == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for command descriptors "
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for command descriptors "
"head\n");
return;
}
@@ -1878,37 +1878,37 @@
newcbd->cmds = malloc(sizeof(struct esiop_cmd) * SIOP_NCMDPB,
M_DEVBUF, M_NOWAIT|M_ZERO);
if (newcbd->cmds == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
goto bad3;
}
error = bus_dmamem_alloc(sc->sc_c.sc_dmat, PAGE_SIZE, PAGE_SIZE, 0,
&seg, 1, &rseg, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to allocate cbd DMA memory, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to allocate cbd DMA memory, error = %d\n",
error);
goto bad2;
}
error = bus_dmamem_map(sc->sc_c.sc_dmat, &seg, rseg, PAGE_SIZE,
(void **)&newcbd->xfers, BUS_DMA_NOWAIT|BUS_DMA_COHERENT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to map cbd DMA memory, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to map cbd DMA memory, error = %d\n",
error);
goto bad2;
}
error = bus_dmamap_create(sc->sc_c.sc_dmat, PAGE_SIZE, 1, PAGE_SIZE, 0,
BUS_DMA_NOWAIT, &newcbd->xferdma);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create cbd DMA map, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create cbd DMA map, error = %d\n", error);
goto bad1;
}
error = bus_dmamap_load(sc->sc_c.sc_dmat, newcbd->xferdma,
newcbd->xfers, PAGE_SIZE, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cbd DMA map, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cbd DMA map, error = %d\n", error);
goto bad0;
}
#ifdef DEBUG
- printf("%s: alloc newcdb at PHY addr 0x%lx\n", device_xname(&sc->sc_c.sc_dev),
+ printf("%s: alloc newcdb at PHY addr 0x%lx\n", device_xname(sc->sc_c.sc_dev),
(unsigned long)newcbd->xferdma->dm_segs[0].ds_addr);
#endif
for (i = 0; i < SIOP_NCMDPB; i++) {
@@ -1916,7 +1916,7 @@
MAXPHYS, 0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&newcbd->cmds[i].cmd_c.dmamap_data);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create data DMA map for cbd: "
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create data DMA map for cbd: "
"error %d\n", error);
goto bad0;
}
@@ -1926,7 +1926,7 @@
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&newcbd->cmds[i].cmd_c.dmamap_cmd);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create cmd DMA map for cbd %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create cmd DMA map for cbd %d\n", error);
goto bad0;
}
newcbd->cmds[i].cmd_c.siop_sc = &sc->sc_c;
@@ -1994,7 +1994,7 @@
newtblblk = malloc(sizeof(struct esiop_dsatblblk),
M_DEVBUF, M_NOWAIT|M_ZERO);
if (newtblblk == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for tag DSA table block\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for tag DSA table block\n");
return;
}
@@ -2002,36 +2002,36 @@
newtbls = malloc(sizeof(struct esiop_dsatbl) * ESIOP_NTPB,
M_DEVBUF, M_NOWAIT|M_ZERO);
if (newtbls == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
goto bad3;
}
error = bus_dmamem_alloc(sc->sc_c.sc_dmat, PAGE_SIZE, PAGE_SIZE, 0,
&seg, 1, &rseg, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to allocate tbl DMA memory, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to allocate tbl DMA memory, error = %d\n", error);
goto bad2;
}
error = bus_dmamem_map(sc->sc_c.sc_dmat, &seg, rseg, PAGE_SIZE,
(void *)&tbls, BUS_DMA_NOWAIT|BUS_DMA_COHERENT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to map tbls DMA memory, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to map tbls DMA memory, error = %d\n", error);
goto bad2;
}
error = bus_dmamap_create(sc->sc_c.sc_dmat, PAGE_SIZE, 1, PAGE_SIZE, 0,
BUS_DMA_NOWAIT, &newtblblk->blkmap);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create tbl DMA map, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create tbl DMA map, error = %d\n", error);
goto bad1;
}
error = bus_dmamap_load(sc->sc_c.sc_dmat, newtblblk->blkmap,
tbls, PAGE_SIZE, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load tbl DMA map, error = %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load tbl DMA map, error = %d\n", error);
goto bad0;
}
#ifdef DEBUG
printf("%s: alloc new tag DSA table at PHY addr 0x%lx\n",
- device_xname(&sc->sc_c.sc_dev),
+ device_xname(sc->sc_c.sc_dev),
(unsigned long)newtblblk->blkmap->dm_segs[0].ds_addr);
#endif
for (i = 0; i < ESIOP_NTPB; i++) {
@@ -2106,7 +2106,7 @@
struct esiop_target *esiop_target;
#ifdef SIOP_DEBUG
printf("%s:%d:%d: free lun sw entry\n",
- device_xname(&sc->sc_c.sc_dev), target, lun);
+ device_xname(sc->sc_c.sc_dev), target, lun);
#endif
if (sc->sc_c.targets[target] == NULL)
return;
@@ -2128,7 +2128,7 @@
sc->sc_free_offset += sc->sc_c.sc_chan.chan_nluns * 2 + 2;
#ifdef SIOP_DEBUG
printf("%s: lun table for target %d offset %d free offset %d\n",
- device_xname(&sc->sc_c.sc_dev), target, esiop_target->lun_table_offset,
+ device_xname(sc->sc_c.sc_dev), target, esiop_target->lun_table_offset,
sc->sc_free_offset);
#endif
/* first 32 bytes are ID (for select) */
Index: src/sys/dev/ic/siop.c
diff -u src/sys/dev/ic/siop.c:1.90 src/sys/dev/ic/siop.c:1.91
--- src/sys/dev/ic/siop.c:1.90 Sun Mar 15 17:24:43 2009
+++ src/sys/dev/ic/siop.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop.c,v 1.90 2009/03/15 17:24:43 cegger Exp $ */
+/* $NetBSD: siop.c,v 1.91 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2000 Manuel Bouyer.
@@ -33,7 +33,7 @@
/* SYM53c7/8xx PCI-SCSI I/O Processors driver */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop.c,v 1.90 2009/03/15 17:24:43 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop.c,v 1.91 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -162,7 +162,7 @@
sc->sc_currschedslot = 0;
#ifdef SIOP_DEBUG
printf("%s: script size = %d, PHY addr=0x%x, VIRT=%p\n",
- device_xname(&sc->sc_c.sc_dev), (int)sizeof(siop_script),
+ device_xname(sc->sc_c.sc_dev), (int)sizeof(siop_script),
(u_int32_t)sc->sc_c.sc_scriptaddr, sc->sc_c.sc_script);
#endif
@@ -179,7 +179,7 @@
siop_dump_script(sc);
#endif
- config_found((struct device*)sc, &sc->sc_c.sc_chan, scsiprint);
+ config_found(sc->sc_c.sc_dev, &sc->sc_c.sc_chan, scsiprint);
}
void
@@ -254,7 +254,7 @@
while((lunsw = TAILQ_FIRST(&sc->lunsw_list)) != NULL) {
#ifdef SIOP_DEBUG
printf("%s: free lunsw at offset %d\n",
- device_xname(&sc->sc_c.sc_dev), lunsw->lunsw_off);
+ device_xname(sc->sc_c.sc_dev), lunsw->lunsw_off);
#endif
TAILQ_REMOVE(&sc->lunsw_list, lunsw, next);
free(lunsw, M_DEVBUF);
@@ -267,13 +267,13 @@
continue;
#ifdef SIOP_DEBUG
printf("%s: restore sw for target %d\n",
- device_xname(&sc->sc_c.sc_dev), i);
+ device_xname(sc->sc_c.sc_dev), i);
#endif
target = (struct siop_target *)sc->sc_c.targets[i];
free(target->lunsw, M_DEVBUF);
target->lunsw = siop_get_lunsw(sc);
if (target->lunsw == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't alloc lunsw for target %d\n", i);
+ aprint_error_dev(sc->sc_c.sc_dev, "can't alloc lunsw for target %d\n", i);
break;
}
siop_add_reselsw(sc, i);
@@ -427,7 +427,7 @@
siop_ctoh32(&sc->sc_c,
siop_cmd->cmd_tables->status));
else
- aprint_error_dev(&sc->sc_c.sc_dev, "current DSA invalid\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "current DSA invalid\n");
need_reset = 1;
}
}
@@ -461,7 +461,7 @@
if (siop_cmd)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s:", device_xname(&sc->sc_c.sc_dev));
+ printf("%s:", device_xname(sc->sc_c.sc_dev));
printf("scsi gross error\n");
goto reset;
}
@@ -512,10 +512,10 @@
CALL_SCRIPT(Ent_msgin);
return 1;
}
- aprint_error_dev(&sc->sc_c.sc_dev, "unexpected phase mismatch %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unexpected phase mismatch %d\n",
sstat1 & SSTAT1_PHASE_MASK);
} else {
- aprint_error_dev(&sc->sc_c.sc_dev, "phase mismatch without command\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "phase mismatch without command\n");
}
need_reset = 1;
}
@@ -524,7 +524,7 @@
if (siop_cmd)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s:", device_xname(&sc->sc_c.sc_dev));
+ printf("%s:", device_xname(sc->sc_c.sc_dev));
printf("parity error\n");
goto reset;
}
@@ -536,7 +536,7 @@
freetarget = 1;
goto end;
} else {
- aprint_error_dev(&sc->sc_c.sc_dev, "selection timeout without "
+ aprint_error_dev(sc->sc_c.sc_dev, "selection timeout without "
"command\n");
need_reset = 1;
}
@@ -551,7 +551,7 @@
siop_htoc32(&sc->sc_c, SCSI_CHECK);
goto end;
}
- aprint_error_dev(&sc->sc_c.sc_dev, "unexpected disconnect without "
+ aprint_error_dev(sc->sc_c.sc_dev, "unexpected disconnect without "
"command\n");
goto reset;
}
@@ -577,7 +577,7 @@
return 1;
}
/* Else it's an unhandled exception (for now). */
- aprint_error_dev(&sc->sc_c.sc_dev, "unhandled scsi interrupt, sist=0x%x sstat1=0x%x "
+ aprint_error_dev(sc->sc_c.sc_dev, "unhandled scsi interrupt, sist=0x%x sstat1=0x%x "
"DSA=0x%x DSP=0x%x\n", sist,
bus_space_read_1(sc->sc_c.sc_rt, sc->sc_c.sc_rh,
SIOP_SSTAT1),
@@ -612,13 +612,13 @@
*/
if ((irqcode & 0x80) == 0) {
if (siop_cmd == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev,
+ aprint_error_dev(sc->sc_c.sc_dev,
"script interrupt (0x%x) with invalid DSA !!!\n",
irqcode);
goto reset;
}
if (siop_cmd->cmd_c.status != CMDST_ACTIVE) {
- aprint_error_dev(&sc->sc_c.sc_dev, "command with invalid status "
+ aprint_error_dev(sc->sc_c.sc_dev, "command with invalid status "
"(IRQ code 0x%x current status %d) !\n",
irqcode, siop_cmd->cmd_c.status);
xs = NULL;
@@ -636,7 +636,7 @@
goto reset;
}
case A_int_reseltarg:
- aprint_error_dev(&sc->sc_c.sc_dev, "reselect with invalid target\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "reselect with invalid target\n");
goto reset;
case A_int_resellun:
INCSTAT(siop_stat_intr_lunresel);
@@ -650,20 +650,20 @@
(struct siop_target *)sc->sc_c.targets[target];
if (siop_target == NULL) {
printf("%s: reselect with invalid target %d\n",
- device_xname(&sc->sc_c.sc_dev), target);
+ device_xname(sc->sc_c.sc_dev), target);
goto reset;
}
siop_lun = siop_target->siop_lun[lun];
if (siop_lun == NULL) {
printf("%s: target %d reselect with invalid "
- "lun %d\n", device_xname(&sc->sc_c.sc_dev),
+ "lun %d\n", device_xname(sc->sc_c.sc_dev),
target, lun);
goto reset;
}
if (siop_lun->siop_tag[tag].active == NULL) {
printf("%s: target %d lun %d tag %d reselect "
"without command\n",
- device_xname(&sc->sc_c.sc_dev),
+ device_xname(sc->sc_c.sc_dev),
target, lun, tag);
goto reset;
}
@@ -676,7 +676,7 @@
return 1;
case A_int_reseltag:
printf("%s: reselect with invalid tag\n",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
goto reset;
case A_int_msgin:
{
@@ -705,7 +705,7 @@
scsipi_printaddr(xs->xs_periph);
else
printf("%s: ",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
printf("our reject message was "
"rejected\n");
goto reset;
@@ -757,7 +757,7 @@
scsipi_printaddr(xs->xs_periph);
else
printf("%s: ",
- device_xname(&sc->sc_c.sc_dev));
+ device_xname(sc->sc_c.sc_dev));
if (msg == MSG_EXTENDED) {
printf("scsi message reject, extended "
"message sent was 0x%x\n", extmsg);
@@ -781,7 +781,7 @@
if (xs)
scsipi_printaddr(xs->xs_periph);
else
- printf("%s: ", device_xname(&sc->sc_c.sc_dev));
+ printf("%s: ", device_xname(sc->sc_c.sc_dev));
printf("unhandled message 0x%x\n",
siop_cmd->cmd_tables->msg_in[0]);
siop_cmd->cmd_tables->msg_out[0] = MSG_MESSAGE_REJECT;
@@ -800,7 +800,7 @@
#endif
if (siop_cmd->cmd_tables->msg_in[1] >
sizeof(siop_cmd->cmd_tables->msg_in) - 2)
- aprint_error_dev(&sc->sc_c.sc_dev, "extended message too big (%d)\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "extended message too big (%d)\n",
siop_cmd->cmd_tables->msg_in[1]);
siop_cmd->cmd_tables->t_extmsgdata.count =
siop_htoc32(&sc->sc_c,
@@ -926,7 +926,7 @@
case A_int_done:
if (xs == NULL) {
printf("%s: done without command, DSA=0x%lx\n",
- device_xname(&sc->sc_c.sc_dev),
+ device_xname(sc->sc_c.sc_dev),
(u_long)siop_cmd->cmd_c.dsa);
siop_cmd->cmd_c.status = CMDST_FREE;
CALL_SCRIPT(Ent_script_sched);
@@ -1018,7 +1018,7 @@
INCSTAT(siop_stat_intr_qfull);
#ifdef SIOP_DEBUG
printf("%s:%d:%d: queue full (tag %d)\n",
- device_xname(&sc->sc_c.sc_dev),
+ device_xname(sc->sc_c.sc_dev),
xs->xs_periph->periph_target,
xs->xs_periph->periph_lun, siop_cmd->cmd_c.tag);
#endif
@@ -1123,13 +1123,13 @@
#ifdef SIOP_DEBUG
printf("%s:%d:%d: tag message %d (%d) rejected (status %d)\n",
- device_xname(&sc->sc_c.sc_dev), target, lun, tag, siop_cmd->cmd_c.tag,
+ device_xname(sc->sc_c.sc_dev), target, lun, tag, siop_cmd->cmd_c.tag,
siop_cmd->cmd_c.status);
#endif
if (siop_lun->siop_tag[0].active != NULL) {
printf("%s: untagged command already running for target %d "
- "lun %d (status %d)\n", device_xname(&sc->sc_c.sc_dev),
+ "lun %d (status %d)\n", device_xname(sc->sc_c.sc_dev),
target, lun, siop_lun->siop_tag[0].active->cmd_c.status);
return -1;
}
@@ -1165,7 +1165,7 @@
* scsi bus reset. reset the chip and restart
* the queue. Need to clean up all active commands
*/
- printf("%s: scsi bus reset\n", device_xname(&sc->sc_c.sc_dev));
+ printf("%s: scsi bus reset\n", device_xname(sc->sc_c.sc_dev));
/* stop, reset and restart the chip */
siop_reset(sc);
if (sc->sc_flags & SCF_CHAN_NOSLOT) {
@@ -1219,7 +1219,7 @@
{
struct scsipi_xfer *xs;
struct scsipi_periph *periph;
- struct siop_softc *sc = (void *)chan->chan_adapter->adapt_dev;
+ struct siop_softc *sc = device_private(chan->chan_adapter->adapt_dev);
struct siop_cmd *siop_cmd;
struct siop_target *siop_target;
int s, error, i;
@@ -1253,13 +1253,13 @@
if (siop_target == NULL) {
#ifdef SIOP_DEBUG
printf("%s: alloc siop_target for target %d\n",
- device_xname(&sc->sc_c.sc_dev), target);
+ device_xname(sc->sc_c.sc_dev), target);
#endif
sc->sc_c.targets[target] =
malloc(sizeof(struct siop_target),
M_DEVBUF, M_NOWAIT|M_ZERO);
if (sc->sc_c.targets[target] == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't malloc memory for "
+ aprint_error_dev(sc->sc_c.sc_dev, "can't malloc memory for "
"target %d\n", target);
xs->error = XS_RESOURCE_SHORTAGE;
scsipi_done(xs);
@@ -1278,7 +1278,7 @@
/* get a lun switch script */
siop_target->lunsw = siop_get_lunsw(sc);
if (siop_target->lunsw == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't alloc lunsw for target %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "can't alloc lunsw for target %d\n",
target);
xs->error = XS_RESOURCE_SHORTAGE;
scsipi_done(xs);
@@ -1294,7 +1294,7 @@
malloc(sizeof(struct siop_lun), M_DEVBUF,
M_NOWAIT|M_ZERO);
if (siop_target->siop_lun[lun] == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't alloc siop_lun for "
+ aprint_error_dev(sc->sc_c.sc_dev, "can't alloc siop_lun for "
"target %d lun %d\n",
target, lun);
xs->error = XS_RESOURCE_SHORTAGE;
@@ -1313,7 +1313,7 @@
siop_cmd->cmd_c.dmamap_cmd,
xs->cmd, xs->cmdlen, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cmd DMA map: %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cmd DMA map: %d\n",
error);
xs->error = XS_DRIVER_STUFFUP;
scsipi_done(xs);
@@ -1327,7 +1327,7 @@
((xs->xs_control & XS_CTL_DATA_IN) ?
BUS_DMA_READ : BUS_DMA_WRITE));
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cmd DMA map: %d",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cmd DMA map: %d",
error);
xs->error = XS_DRIVER_STUFFUP;
scsipi_done(xs);
@@ -1369,7 +1369,7 @@
case ADAPTER_REQ_GROW_RESOURCES:
#ifdef SIOP_DEBUG
- printf("%s grow resources (%d)\n", device_xname(&sc->sc_c.sc_dev),
+ printf("%s grow resources (%d)\n", device_xname(sc->sc_c.sc_dev),
sc->sc_c.sc_adapt.adapt_openings);
#endif
siop_morecbd(sc);
@@ -1602,7 +1602,7 @@
/* allocate a new list head */
newcbd = malloc(sizeof(struct siop_cbd), M_DEVBUF, M_NOWAIT|M_ZERO);
if (newcbd == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for command descriptors head\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for command descriptors head\n");
return;
}
@@ -1610,39 +1610,39 @@
newcbd->cmds = malloc(sizeof(struct siop_cmd) * SIOP_NCMDPB,
M_DEVBUF, M_NOWAIT|M_ZERO);
if (newcbd->cmds == NULL) {
- aprint_error_dev(&sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
+ aprint_error_dev(sc->sc_c.sc_dev, "can't allocate memory for command descriptors\n");
goto bad3;
}
error = bus_dmamem_alloc(sc->sc_c.sc_dmat, PAGE_SIZE, PAGE_SIZE, 0, &seg,
1, &rseg, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to allocate cbd DMA memory, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to allocate cbd DMA memory, error = %d\n",
error);
goto bad2;
}
error = bus_dmamem_map(sc->sc_c.sc_dmat, &seg, rseg, PAGE_SIZE,
(void **)&newcbd->xfers, BUS_DMA_NOWAIT|BUS_DMA_COHERENT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to map cbd DMA memory, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to map cbd DMA memory, error = %d\n",
error);
goto bad2;
}
error = bus_dmamap_create(sc->sc_c.sc_dmat, PAGE_SIZE, 1, PAGE_SIZE, 0,
BUS_DMA_NOWAIT, &newcbd->xferdma);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create cbd DMA map, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create cbd DMA map, error = %d\n",
error);
goto bad1;
}
error = bus_dmamap_load(sc->sc_c.sc_dmat, newcbd->xferdma, newcbd->xfers,
PAGE_SIZE, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to load cbd DMA map, error = %d\n",
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to load cbd DMA map, error = %d\n",
error);
goto bad0;
}
#ifdef DEBUG
- printf("%s: alloc newcdb at PHY addr 0x%lx\n", device_xname(&sc->sc_c.sc_dev),
+ printf("%s: alloc newcdb at PHY addr 0x%lx\n", device_xname(sc->sc_c.sc_dev),
(unsigned long)newcbd->xferdma->dm_segs[0].ds_addr);
#endif
off = (sc->sc_c.features & SF_CHIP_BE) ? 3 : 0;
@@ -1651,7 +1651,7 @@
MAXPHYS, 0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&newcbd->cmds[i].cmd_c.dmamap_data);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create data DMA map for cbd: "
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create data DMA map for cbd: "
"error %d\n", error);
goto bad0;
}
@@ -1661,7 +1661,7 @@
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&newcbd->cmds[i].cmd_c.dmamap_cmd);
if (error) {
- aprint_error_dev(&sc->sc_c.sc_dev, "unable to create cmd DMA map for cbd %d\n", error);
+ aprint_error_dev(sc->sc_c.sc_dev, "unable to create cmd DMA map for cbd %d\n", error);
goto bad0;
}
newcbd->cmds[i].cmd_c.siop_sc = &sc->sc_c;
@@ -1872,7 +1872,7 @@
* with this case
*/
#ifdef DEBUG
- aprint_error_dev(&sc->sc_c.sc_dev, "%d:%d: can't allocate a lun sw slot\n", target, lun);
+ aprint_error_dev(sc->sc_c.sc_dev, "%d:%d: can't allocate a lun sw slot\n", target, lun);
#endif
return;
}
@@ -1895,13 +1895,13 @@
* We can hold 13 tagged-queuing capable devices in the 4k RAM.
*/
#ifdef DEBUG
- aprint_error_dev(&sc->sc_c.sc_dev, "%d:%d: not enough memory for a lun sw slot\n", target, lun);
+ aprint_error_dev(sc->sc_c.sc_dev, "%d:%d: not enough memory for a lun sw slot\n", target, lun);
#endif
return;
}
#ifdef SIOP_DEBUG
printf("%s:%d:%d: allocate lun sw entry\n",
- device_xname(&sc->sc_c.sc_dev), target, lun);
+ device_xname(sc->sc_c.sc_dev), target, lun);
#endif
/* INT int_resellun */
siop_script_write(sc, sc->script_free_lo, 0x98080000);
@@ -1955,7 +1955,7 @@
#ifdef SIOP_DEBUG
printf("%s:%d:%d: free lun sw entry\n",
- device_xname(&sc->sc_c.sc_dev), target, lun);
+ device_xname(sc->sc_c.sc_dev), target, lun);
#endif
if (sc->sc_c.targets[target] == NULL)
return;
@@ -1970,7 +1970,7 @@
}
#ifdef SIOP_DEBUG
printf("%s: free siop_target for target %d lun %d lunsw offset %d\n",
- device_xname(&sc->sc_c.sc_dev), target, lun,
+ device_xname(sc->sc_c.sc_dev), target, lun,
siop_target->lunsw->lunsw_off);
#endif
/*
Index: src/sys/dev/ic/siop_common.c
diff -u src/sys/dev/ic/siop_common.c:1.48 src/sys/dev/ic/siop_common.c:1.49
--- src/sys/dev/ic/siop_common.c:1.48 Sat Mar 14 21:04:20 2009
+++ src/sys/dev/ic/siop_common.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop_common.c,v 1.48 2009/03/14 21:04:20 dsl Exp $ */
+/* $NetBSD: siop_common.c,v 1.49 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2000, 2002 Manuel Bouyer.
@@ -33,7 +33,7 @@
/* SYM53c7/8xx PCI-SCSI I/O Processors driver */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop_common.c,v 1.48 2009/03/14 21:04:20 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop_common.c,v 1.49 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -77,7 +77,7 @@
error = bus_dmamem_alloc(sc->sc_dmat, PAGE_SIZE,
PAGE_SIZE, 0, &seg, 1, &rseg, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_dev,
+ aprint_error_dev(sc->sc_dev,
"unable to allocate script DMA memory, "
"error = %d\n", error);
return error;
@@ -86,21 +86,21 @@
(void **)&sc->sc_script,
BUS_DMA_NOWAIT|BUS_DMA_COHERENT);
if (error) {
- aprint_error_dev(&sc->sc_dev, "unable to map script DMA memory, "
+ aprint_error_dev(sc->sc_dev, "unable to map script DMA memory, "
"error = %d\n", error);
return error;
}
error = bus_dmamap_create(sc->sc_dmat, PAGE_SIZE, 1,
PAGE_SIZE, 0, BUS_DMA_NOWAIT, &sc->sc_scriptdma);
if (error) {
- aprint_error_dev(&sc->sc_dev, "unable to create script DMA map, "
+ aprint_error_dev(sc->sc_dev, "unable to create script DMA map, "
"error = %d\n", error);
return error;
}
error = bus_dmamap_load(sc->sc_dmat, sc->sc_scriptdma,
sc->sc_script, PAGE_SIZE, NULL, BUS_DMA_NOWAIT);
if (error) {
- aprint_error_dev(&sc->sc_dev, "unable to load script DMA map, "
+ aprint_error_dev(sc->sc_dev, "unable to load script DMA map, "
"error = %d\n", error);
return error;
}
@@ -109,7 +109,7 @@
sc->ram_size = PAGE_SIZE;
}
- sc->sc_adapt.adapt_dev = &sc->sc_dev;
+ sc->sc_adapt.adapt_dev = sc->sc_dev;
sc->sc_adapt.adapt_nchannels = 1;
sc->sc_adapt.adapt_openings = 0;
sc->sc_adapt.adapt_ioctl = siop_ioctl;
@@ -368,7 +368,7 @@
siop_target->offset = siop_target->period = 0;
siop_update_xfer_mode(sc, target);
printf("%s: rejecting invalid wide negotiation from "
- "target %d (%d)\n", device_xname(&sc->sc_dev), target,
+ "target %d (%d)\n", device_xname(sc->sc_dev), target,
tables->msg_in[3]);
tables->t_msgout.count = siop_htoc32(sc, 1);
tables->msg_out[0] = MSG_MESSAGE_REJECT;
@@ -426,7 +426,7 @@
int i;
#ifdef DEBUG_NEG
- printf("%s: answer on ppr negotiation:", device_xname(&sc->sc_dev));
+ printf("%s: answer on ppr negotiation:", device_xname(sc->sc_dev));
for (i = 0; i < 8; i++)
printf(" 0x%x", tables->msg_in[i]);
printf("\n");
@@ -440,7 +440,7 @@
if (options != MSG_EXT_PPR_DT) {
/* should't happen */
printf("%s: ppr negotiation for target %d: "
- "no DT option\n", device_xname(&sc->sc_dev), target);
+ "no DT option\n", device_xname(sc->sc_dev), target);
siop_target->status = TARST_ASYNC;
siop_target->flags &= ~(TARF_DT | TARF_ISDT);
siop_target->offset = 0;
@@ -452,7 +452,7 @@
sync > sc->dt_maxsync) {
printf("%s: ppr negotiation for target %d: "
"offset (%d) or sync (%d) out of range\n",
- device_xname(&sc->sc_dev), target, offset, sync);
+ device_xname(sc->sc_dev), target, offset, sync);
/* should not happen */
siop_target->offset = 0;
siop_target->period = 0;
@@ -474,7 +474,7 @@
if ((siop_target->flags & TARF_ISDT) == 0) {
printf("%s: ppr negotiation for target %d: "
"sync (%d) incompatible with adapter\n",
- device_xname(&sc->sc_dev), target, sync);
+ device_xname(sc->sc_dev), target, sync);
/*
* we didn't find it in our table, do async
* send reject msg, start SDTR/WDTR neg
@@ -489,7 +489,7 @@
if (tables->msg_in[6] != 1) {
printf("%s: ppr negotiation for target %d: "
"transfer width (%d) incompatible with dt\n",
- device_xname(&sc->sc_dev), target, tables->msg_in[6]);
+ device_xname(sc->sc_dev), target, tables->msg_in[6]);
/* DT mode can only be done with wide transfers */
siop_target->status = TARST_ASYNC;
goto reject;
@@ -515,7 +515,7 @@
} else {
/* target initiated PPR negotiation, shouldn't happen */
printf("%s: rejecting invalid PPR negotiation from "
- "target %d\n", device_xname(&sc->sc_dev), target);
+ "target %d\n", device_xname(sc->sc_dev), target);
reject:
tables->t_msgout.count = siop_htoc32(sc, 1);
tables->msg_out[0] = MSG_MESSAGE_REJECT;
@@ -704,7 +704,9 @@
siop_ioctl(struct scsipi_channel *chan, u_long cmd, void *arg,
int flag, struct proc *p)
{
- struct siop_common_softc *sc = (void *)chan->chan_adapter->adapt_dev;
+ struct siop_common_softc *sc;
+
+ sc = device_private(chan->chan_adapter->adapt_dev);
switch (cmd) {
case SCBUSIORESET:
@@ -738,7 +740,7 @@
offset = bus_space_read_1(sc->sc_rt, sc->sc_rh, SIOP_SCRATCHA + 1);
if (offset >= SIOP_NSG) {
- aprint_error_dev(&sc->sc_dev, "bad offset in siop_sdp (%d)\n",
+ aprint_error_dev(sc->sc_dev, "bad offset in siop_sdp (%d)\n",
offset);
return;
}
@@ -976,31 +978,31 @@
switch(sc->mode) {
case STEST4_MODE_DIF:
printf("%s: switching to differential mode\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
bus_space_write_1(sc->sc_rt, sc->sc_rh, SIOP_STEST2,
stest2 | STEST2_DIF);
break;
case STEST4_MODE_SE:
printf("%s: switching to single-ended mode\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
bus_space_write_1(sc->sc_rt, sc->sc_rh, SIOP_STEST2,
stest2 & ~STEST2_DIF);
break;
case STEST4_MODE_LVD:
printf("%s: switching to LVD mode\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
bus_space_write_1(sc->sc_rt, sc->sc_rh, SIOP_STEST2,
stest2 & ~STEST2_DIF);
break;
default:
- aprint_error_dev(&sc->sc_dev, "invalid SCSI mode 0x%x\n",
+ aprint_error_dev(sc->sc_dev, "invalid SCSI mode 0x%x\n",
sc->mode);
return 0;
}
return 1;
}
printf("%s: timeout waiting for DIFFSENSE to stabilise\n",
- device_xname(&sc->sc_dev));
+ device_xname(sc->sc_dev));
return 0;
}
Index: src/sys/dev/ic/siopvar_common.h
diff -u src/sys/dev/ic/siopvar_common.h:1.36 src/sys/dev/ic/siopvar_common.h:1.37
--- src/sys/dev/ic/siopvar_common.h:1.36 Wed Jun 11 02:09:16 2008
+++ src/sys/dev/ic/siopvar_common.h Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siopvar_common.h,v 1.36 2008/06/11 02:09:16 kiyohara Exp $ */
+/* $NetBSD: siopvar_common.h,v 1.37 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2000 Manuel Bouyer.
@@ -129,7 +129,7 @@
/* Driver internal state */
struct siop_common_softc {
- struct device sc_dev;
+ device_t sc_dev;
struct scsipi_channel sc_chan;
struct scsipi_adapter sc_adapt;
int features; /* chip's features */
Index: src/sys/dev/pci/esiop_pci.c
diff -u src/sys/dev/pci/esiop_pci.c:1.15 src/sys/dev/pci/esiop_pci.c:1.16
--- src/sys/dev/pci/esiop_pci.c:1.15 Tue May 12 08:23:00 2009
+++ src/sys/dev/pci/esiop_pci.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: esiop_pci.c,v 1.15 2009/05/12 08:23:00 cegger Exp $ */
+/* $NetBSD: esiop_pci.c,v 1.16 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2002 Manuel Bouyer.
@@ -32,7 +32,7 @@
/* SYM53c8xx PCI-SCSI I/O Processors driver: PCI front-end */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: esiop_pci.c,v 1.15 2009/05/12 08:23:00 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: esiop_pci.c,v 1.16 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -80,6 +80,7 @@
struct pci_attach_args *pa = aux;
struct esiop_pci_softc *sc = device_private(self);
+ sc->esiop.sc_c.sc_dev = self;
if (siop_pci_attach_common(&sc->esiop_pci, &sc->esiop.sc_c,
pa, esiop_intr) == 0)
return;
@@ -88,5 +89,5 @@
}
-CFATTACH_DECL(esiop_pci, sizeof(struct esiop_pci_softc),
+CFATTACH_DECL_NEW(esiop_pci, sizeof(struct esiop_pci_softc),
esiop_pci_match, esiop_pci_attach, NULL, NULL);
Index: src/sys/dev/pci/siop_pci.c
diff -u src/sys/dev/pci/siop_pci.c:1.24 src/sys/dev/pci/siop_pci.c:1.25
--- src/sys/dev/pci/siop_pci.c:1.24 Tue May 12 08:23:01 2009
+++ src/sys/dev/pci/siop_pci.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop_pci.c,v 1.24 2009/05/12 08:23:01 cegger Exp $ */
+/* $NetBSD: siop_pci.c,v 1.25 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2000 Manuel Bouyer.
@@ -32,7 +32,7 @@
/* SYM53c8xx PCI-SCSI I/O Processors driver: PCI front-end */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop_pci.c,v 1.24 2009/05/12 08:23:01 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop_pci.c,v 1.25 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -75,6 +75,7 @@
struct pci_attach_args *pa = aux;
struct siop_pci_softc *sc = device_private(self);
+ sc->siop.sc_c.sc_dev = self;
if (siop_pci_attach_common(&sc->siop_pci, &sc->siop.sc_c,
pa, siop_intr) == 0)
return;
@@ -82,5 +83,5 @@
siop_attach(&sc->siop);
}
-CFATTACH_DECL(siop_pci, sizeof(struct siop_pci_softc),
+CFATTACH_DECL_NEW(siop_pci, sizeof(struct siop_pci_softc),
siop_pci_match, siop_pci_attach, NULL, NULL);
Index: src/sys/dev/pci/siop_pci_common.c
diff -u src/sys/dev/pci/siop_pci_common.c:1.29 src/sys/dev/pci/siop_pci_common.c:1.30
--- src/sys/dev/pci/siop_pci_common.c:1.29 Fri Feb 13 21:12:14 2009
+++ src/sys/dev/pci/siop_pci_common.c Fri May 15 17:55:44 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: siop_pci_common.c,v 1.29 2009/02/13 21:12:14 bouyer Exp $ */
+/* $NetBSD: siop_pci_common.c,v 1.30 2009/05/15 17:55:44 tsutsui Exp $ */
/*
* Copyright (c) 2000 Manuel Bouyer.
@@ -32,7 +32,7 @@
/* SYM53c8xx PCI-SCSI I/O Processors driver: PCI front-end */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: siop_pci_common.c,v 1.29 2009/02/13 21:12:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: siop_pci_common.c,v 1.30 2009/05/15 17:55:44 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -260,7 +260,7 @@
#ifdef SIOP_SYMLED /* XXX Should be a devprop! */
siop_sc->features |= SF_CHIP_LED0;
#endif
- dict = device_properties(&siop_sc->sc_dev);
+ dict = device_properties(siop_sc->sc_dev);
if (prop_dictionary_get_bool(dict, "use_pciclock", &use_pciclock))
if (use_pciclock)
siop_sc->features |= SF_CHIP_USEPCIC;
@@ -299,7 +299,7 @@
siop_sc->sc_rh = ioh;
siop_sc->sc_raddr = ioaddr;
} else {
- aprint_error_dev(&siop_sc->sc_dev, "unable to map device registers\n");
+ aprint_error_dev(siop_sc->sc_dev, "unable to map device registers\n");
return 0;
}
@@ -313,32 +313,32 @@
bar = 0x1c;
break;
default:
- aprint_error_dev(&siop_sc->sc_dev, "invalid memory type %d\n",
+ aprint_error_dev(siop_sc->sc_dev, "invalid memory type %d\n",
memtype);
return 0;
}
if (pci_mapreg_map(pa, bar, memtype, 0,
&siop_sc->sc_ramt, &siop_sc->sc_ramh,
&siop_sc->sc_scriptaddr, NULL) == 0) {
- aprint_normal_dev(&siop_sc->sc_dev, "using on-board RAM\n");
+ aprint_normal_dev(siop_sc->sc_dev, "using on-board RAM\n");
} else {
- aprint_error_dev(&siop_sc->sc_dev, "can't map on-board RAM\n");
+ aprint_error_dev(siop_sc->sc_dev, "can't map on-board RAM\n");
siop_sc->features &= ~SF_CHIP_RAM;
}
}
if (pci_intr_map(pa, &intrhandle) != 0) {
- aprint_error_dev(&siop_sc->sc_dev, "couldn't map interrupt\n");
+ aprint_error_dev(siop_sc->sc_dev, "couldn't map interrupt\n");
return 0;
}
intrstr = pci_intr_string(pa->pa_pc, intrhandle);
pci_sc->sc_ih = pci_intr_establish(pa->pa_pc, intrhandle, IPL_BIO,
intr, siop_sc);
if (pci_sc->sc_ih != NULL) {
- aprint_normal_dev(&siop_sc->sc_dev, "interrupting at %s\n",
+ aprint_normal_dev(siop_sc->sc_dev, "interrupting at %s\n",
intrstr ? intrstr : "unknown interrupt");
} else {
- aprint_error_dev(&siop_sc->sc_dev, "couldn't establish interrupt");
+ aprint_error_dev(siop_sc->sc_dev, "couldn't establish interrupt");
if (intrstr != NULL)
aprint_normal(" at %s", intrstr);
aprint_normal("\n");