Module Name:    src
Committed By:   tsutsui
Date:           Mon Sep  7 13:39:20 UTC 2009

Modified Files:
        src/sys/dev/ic: isp_netbsd.c isp_netbsd.h
        src/sys/dev/pci: isp_pci.c
        src/sys/dev/sbus: isp_sbus.c

Log Message:
Split device_t/softc.
Tested QLogic 1020 Fast Wide SCSI HBA at PCI.
Sbus attachment is untested, but not so much quirks in it.


To generate a diff of this commit:
cvs rdiff -u -r1.80 -r1.81 src/sys/dev/ic/isp_netbsd.c
cvs rdiff -u -r1.67 -r1.68 src/sys/dev/ic/isp_netbsd.h
cvs rdiff -u -r1.109 -r1.110 src/sys/dev/pci/isp_pci.c
cvs rdiff -u -r1.77 -r1.78 src/sys/dev/sbus/isp_sbus.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/isp_netbsd.c
diff -u src/sys/dev/ic/isp_netbsd.c:1.80 src/sys/dev/ic/isp_netbsd.c:1.81
--- src/sys/dev/ic/isp_netbsd.c:1.80	Thu Jun 25 23:44:02 2009
+++ src/sys/dev/ic/isp_netbsd.c	Mon Sep  7 13:39:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: isp_netbsd.c,v 1.80 2009/06/25 23:44:02 mjacob Exp $ */
+/* $NetBSD: isp_netbsd.c,v 1.81 2009/09/07 13:39:19 tsutsui Exp $ */
 /*
  * Platform (NetBSD) dependent common attachment code for Qlogic adapters.
  */
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isp_netbsd.c,v 1.80 2009/06/25 23:44:02 mjacob Exp $");
+__KERNEL_RCSID(0, "$NetBSD: isp_netbsd.c,v 1.81 2009/09/07 13:39:19 tsutsui Exp $");
 
 #include <dev/ic/isp_netbsd.h>
 #include <dev/ic/isp_ioctl.h>
@@ -92,10 +92,12 @@
 void
 isp_attach(struct ispsoftc *isp)
 {
+	device_t self = isp->isp_osinfo.dev;
 	int i;
+
 	isp->isp_state = ISP_RUNSTATE;
 
-	isp->isp_osinfo.adapter.adapt_dev = &isp->isp_osinfo.dev;
+	isp->isp_osinfo.adapter.adapt_dev = self;
 	isp->isp_osinfo.adapter.adapt_openings = isp->isp_maxcmds;
 	isp->isp_osinfo.loop_down_limit = 300;
 
@@ -118,7 +120,8 @@
 	callout_setfunc(&isp->isp_osinfo.ldt, isp_ldt, isp);
 	if (IS_FC(isp)) {
 		if (kthread_create(PRI_NONE, 0, NULL, isp_fc_worker, isp,
-		    &isp->isp_osinfo.thread, "%s:fc_thrd", device_xname(&isp->isp_osinfo.dev))) {
+		    &isp->isp_osinfo.thread, "%s:fc_thrd",
+		    device_xname(self))) {
 			isp_prt(isp, ISP_LOGERR,
 			    "unable to create FC worker thread");
 			return;
@@ -154,14 +157,14 @@
 	/*
          * Defer enabling mailbox interrupts until later.
          */
-        config_interrupts((device_t) isp, isp_config_interrupts);
+        config_interrupts(self, isp_config_interrupts);
 }
 
 static void
 isp_config_interrupts(device_t self)
 {
 	int i;
-        struct ispsoftc *isp = (struct ispsoftc *) self;
+        struct ispsoftc *isp = device_private(self);
 
         isp->isp_osinfo.mbox_sleep_ok = 1;
 
@@ -176,7 +179,7 @@
 	 * And attach children (if any).
 	 */
 	for (i = 0; i < isp->isp_osinfo.adapter.adapt_nchannels; i++) {
-		config_found((void *)isp, &isp->isp_osinfo.chan[i], scsiprint);
+		config_found(self, &isp->isp_osinfo.chan[i], scsiprint);
 	}
 }
 
@@ -205,7 +208,7 @@
 ispioctl(struct scsipi_channel *chan, u_long cmd, void *addr, int flag,
 	struct proc *p)
 {
-	struct ispsoftc *isp = (void *)chan->chan_adapter->adapt_dev;
+	struct ispsoftc *isp = device_private(chan->chan_adapter->adapt_dev);
 	int nr, bus, retval = ENOTTY;
 
 	switch (cmd) {
@@ -681,7 +684,7 @@
 static void
 isprequest(struct scsipi_channel *chan, scsipi_adapter_req_t req, void *arg)
 {
-	struct ispsoftc *isp = (void *)chan->chan_adapter->adapt_dev;
+	struct ispsoftc *isp = device_private(chan->chan_adapter->adapt_dev);
 
 	switch (req) {
 	case ADAPTER_REQ_RUN_XFER:
@@ -1503,7 +1506,7 @@
 	if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) {
 		return;
 	}
-	printf("%s: ", device_xname(&isp->isp_osinfo.dev));
+	printf("%s: ", device_xname(isp->isp_osinfo.dev));
 	va_start(ap, fmt);
 	vprintf(fmt, ap);
 	va_end(ap);

Index: src/sys/dev/ic/isp_netbsd.h
diff -u src/sys/dev/ic/isp_netbsd.h:1.67 src/sys/dev/ic/isp_netbsd.h:1.68
--- src/sys/dev/ic/isp_netbsd.h:1.67	Thu Jun 25 23:44:02 2009
+++ src/sys/dev/ic/isp_netbsd.h	Mon Sep  7 13:39:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: isp_netbsd.h,v 1.67 2009/06/25 23:44:02 mjacob Exp $ */
+/* $NetBSD: isp_netbsd.h,v 1.68 2009/09/07 13:39:19 tsutsui Exp $ */
 /*
  * NetBSD Specific definitions for the Qlogic ISP Host Adapter
  */
@@ -73,7 +73,7 @@
 #define	ISP_PLATFORM_VERSION_MINOR	0
 
 struct isposinfo {
-	struct device		dev;
+	device_t		dev;
 	struct scsipi_adapter   adapter;
 	struct scsipi_channel * chan;
 	bus_dma_tag_t		dmatag;
@@ -219,7 +219,7 @@
 #define	XS_CHANNEL(xs)		\
 	((int) (xs)->xs_periph->periph_channel->chan_channel)
 #define	XS_ISP(xs)		\
-	((void *)(xs)->xs_periph->periph_channel->chan_adapter->adapt_dev)
+	device_private((xs)->xs_periph->periph_channel->chan_adapter->adapt_dev)
 #define	XS_LUN(xs)		((int) (xs)->xs_periph->periph_lun)
 #define	XS_TGT(xs)		((int) (xs)->xs_periph->periph_target)
 #define	XS_CDBP(xs)		((uint8_t *) (xs)->cmd)
@@ -343,7 +343,7 @@
 /*
  * isp_osinfo definitions, extensions and shorthand.
  */
-#define	isp_unit	isp_osinfo.dev.dv_unit
+#define	isp_unit	device_unit(isp_osinfo.dev)
 
 
 /*

Index: src/sys/dev/pci/isp_pci.c
diff -u src/sys/dev/pci/isp_pci.c:1.109 src/sys/dev/pci/isp_pci.c:1.110
--- src/sys/dev/pci/isp_pci.c:1.109	Thu Jun 25 23:44:02 2009
+++ src/sys/dev/pci/isp_pci.c	Mon Sep  7 13:39:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: isp_pci.c,v 1.109 2009/06/25 23:44:02 mjacob Exp $ */
+/* $NetBSD: isp_pci.c,v 1.110 2009/09/07 13:39:19 tsutsui Exp $ */
 /*
  * Copyright (C) 1997, 1998, 1999 National Aeronautics & Space Administration
  * All rights reserved.
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isp_pci.c,v 1.109 2009/06/25 23:44:02 mjacob Exp $");
+__KERNEL_RCSID(0, "$NetBSD: isp_pci.c,v 1.110 2009/09/07 13:39:19 tsutsui Exp $");
 
 #include <dev/ic/isp_netbsd.h>
 #include <dev/pci/pcireg.h>
@@ -424,7 +424,7 @@
 	int16_t			pci_poff[_NREG_BLKS];
 };
 
-CFATTACH_DECL(isp_pci, sizeof (struct isp_pcisoftc),
+CFATTACH_DECL_NEW(isp_pci, sizeof (struct isp_pcisoftc),
     isp_pci_probe, isp_pci_attach, NULL, NULL);
 
 static int
@@ -493,6 +493,8 @@
 	int ioh_valid, memh_valid;
 	size_t mamt;
 
+	isp->isp_osinfo.dev = self;
+
 	ioh_valid = (pci_mapreg_map(pa, IO_MAP_REG,
 	    PCI_MAPREG_TYPE_IO, 0,
 	    &iot, &ioh, NULL, NULL) == 0);
@@ -684,7 +686,7 @@
 
 	isp->isp_param = malloc(mamt, M_DEVBUF, M_NOWAIT);
 	if (isp->isp_param == NULL) {
-		printf(nomem, device_xname(&isp->isp_osinfo.dev));
+		printf(nomem, device_xname(self));
 		return;
 	}
 	memset(isp->isp_param, 0, mamt);
@@ -692,7 +694,7 @@
 	isp->isp_osinfo.chan = malloc(mamt, M_DEVBUF, M_NOWAIT);
 	if (isp->isp_osinfo.chan == NULL) {
 		free(isp->isp_param, M_DEVBUF);
-		printf(nomem, device_xname(&isp->isp_osinfo.dev));
+		printf(nomem, device_xname(self));
 		return;
 	}
 	memset(isp->isp_osinfo.chan, 0, mamt);
@@ -752,7 +754,7 @@
 	pci_conf_write(pa->pa_pc, pa->pa_tag, PCIR_ROMADDR, data);
 
 	if (pci_intr_map(pa, &ih)) {
-		aprint_error_dev(&isp->isp_osinfo.dev, "couldn't map interrupt\n");
+		aprint_error_dev(self, "couldn't map interrupt\n");
 		free(isp->isp_param, M_DEVBUF);
 		free(isp->isp_osinfo.chan, M_DEVBUF);
 		return;
@@ -763,16 +765,16 @@
 	pcs->pci_ih = pci_intr_establish(pa->pa_pc, ih, IPL_BIO,
 	    isp_pci_intr, isp);
 	if (pcs->pci_ih == NULL) {
-		aprint_error_dev(&isp->isp_osinfo.dev, "couldn't establish interrupt at %s\n",
+		aprint_error_dev(self, "couldn't establish interrupt at %s\n",
 			intrstr);
 		free(isp->isp_param, M_DEVBUF);
 		free(isp->isp_osinfo.chan, M_DEVBUF);
 		return;
 	}
 
-	printf("%s: interrupting at %s\n", device_xname(&isp->isp_osinfo.dev), intrstr);
+	printf("%s: interrupting at %s\n", device_xname(self), intrstr);
 
-	isp->isp_confopts = self->dv_cfdata->cf_flags;
+	isp->isp_confopts = device_cfdata(self)->cf_flags;
 	ISP_LOCK(isp);
 	isp_reset(isp, 1);
 	if (isp->isp_state != ISP_RESETSTATE) {
@@ -1436,7 +1438,7 @@
 {
 	struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp;
 	if (msg)
-		printf("%s: %s\n", device_xname(&isp->isp_osinfo.dev), msg);
+		printf("%s: %s\n", device_xname(isp->isp_osinfo.dev), msg);
 	if (IS_SCSI(isp))
 		printf("    biu_conf1=%x", ISP_READ(isp, BIU_CONF1));
 	else

Index: src/sys/dev/sbus/isp_sbus.c
diff -u src/sys/dev/sbus/isp_sbus.c:1.77 src/sys/dev/sbus/isp_sbus.c:1.78
--- src/sys/dev/sbus/isp_sbus.c:1.77	Thu Jun 25 23:44:02 2009
+++ src/sys/dev/sbus/isp_sbus.c	Mon Sep  7 13:39:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: isp_sbus.c,v 1.77 2009/06/25 23:44:02 mjacob Exp $ */
+/* $NetBSD: isp_sbus.c,v 1.78 2009/09/07 13:39:19 tsutsui Exp $ */
 /*
  * SBus specific probe and attach routines for Qlogic ISP SCSI adapters.
  *
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isp_sbus.c,v 1.77 2009/06/25 23:44:02 mjacob Exp $");
+__KERNEL_RCSID(0, "$NetBSD: isp_sbus.c,v 1.78 2009/09/07 13:39:19 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -96,7 +96,7 @@
 
 static int isp_match(device_t, cfdata_t, void *);
 static void isp_sbus_attach(device_t, device_t, void *);
-CFATTACH_DECL(isp_sbus, sizeof (struct isp_sbussoftc),
+CFATTACH_DECL_NEW(isp_sbus, sizeof (struct isp_sbussoftc),
     isp_match, isp_sbus_attach, NULL, NULL);
 
 static int
@@ -120,10 +120,12 @@
 {
 	int freq, ispburst, sbusburst;
 	struct sbus_attach_args *sa = aux;
-	struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) self;
+	struct isp_sbussoftc *sbc = device_private(self);
 	struct sbus_softc *sbsc = device_private(parent);
 	ispsoftc_t *isp = &sbc->sbus_isp;
 
+	isp->isp_osinfo.dev = self;
+
 	printf(" for %s\n", sa->sa_name);
 
 	isp->isp_nchan = isp->isp_osinfo.adapter.adapt_nchannels = 1;
@@ -200,7 +202,7 @@
 	/* Establish interrupt channel */
 	bus_intr_establish(sbc->sbus_bustag, sbc->sbus_pri, IPL_BIO,
 	    isp_sbus_intr, sbc);
-	sbus_establish(&sbc->sbus_sd, &sbc->sbus_isp.isp_osinfo.dev);
+	sbus_establish(&sbc->sbus_sd, self);
 
 	/*
 	 * Set up logging levels.
@@ -539,7 +541,8 @@
 	dmap = sbc->sbus_dmamap[isp_handle_index(handle)];
 
 	if (dmap->dm_nsegs == 0) {
-		panic("%s: DMA map not already allocated", device_xname(&isp->isp_osinfo.dev));
+		panic("%s: DMA map not already allocated",
+		    device_xname(isp->isp_osinfo.dev));
 		/* NOTREACHED */
 	}
 	bus_dmamap_sync(isp->isp_dmatag, dmap, 0,

Reply via email to