Module Name:    src
Committed By:   jakllsch
Date:           Fri Jul 27 14:02:17 UTC 2012

Modified Files:
        src/sys/dev/pci: twa.c twavar.h

Log Message:
Convert twa(4) to device_t (CFATTACH_DECL_NEW).


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/dev/pci/twa.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/pci/twavar.h

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/pci/twa.c
diff -u src/sys/dev/pci/twa.c:1.40 src/sys/dev/pci/twa.c:1.41
--- src/sys/dev/pci/twa.c:1.40	Mon Jan 30 19:41:23 2012
+++ src/sys/dev/pci/twa.c	Fri Jul 27 14:02:17 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: twa.c,v 1.40 2012/01/30 19:41:23 drochner Exp $ */
+/*	$NetBSD: twa.c,v 1.41 2012/07/27 14:02:17 jakllsch Exp $ */
 /*	$wasabi: twa.c,v 1.27 2006/07/28 18:17:21 wrstuden Exp $	*/
 
 /*-
@@ -67,7 +67,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: twa.c,v 1.40 2012/01/30 19:41:23 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: twa.c,v 1.41 2012/07/27 14:02:17 jakllsch Exp $");
+
+#define TWA_DEBUG
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -140,7 +142,7 @@ extern struct	cfdriver twa_cd;
 extern uint32_t twa_fw_img_size;
 extern uint8_t	twa_fw_img[];
 
-CFATTACH_DECL(twa, sizeof(struct twa_softc),
+CFATTACH_DECL_NEW(twa, sizeof(struct twa_softc),
     twa_match, twa_attach, NULL, NULL);
 
 /* FreeBSD driver revision for sysctl expected by the 3ware cli */
@@ -728,7 +730,7 @@ static int
 twa_print_inquiry_data(struct twa_softc *sc, struct scsipi_inquiry_data *scsipi)
 {
 
-    printf("%s: %s\n", device_xname(&sc->twa_dv), scsipi->vendor);
+    printf("%s: %s\n", device_xname(sc->twa_dv), scsipi->vendor);
 
     return (1);
 }
@@ -839,7 +841,7 @@ twa_alloc_req_pkts(struct twa_softc *sc,
 	if ((rv = bus_dmamem_alloc(sc->twa_dma_tag,
 		size, PAGE_SIZE, 0, &seg,
 		1, &rseg, BUS_DMA_NOWAIT)) != 0){
-			aprint_error_dev(&sc->twa_dv, "unable to allocate "
+			aprint_error_dev(sc->twa_dv, "unable to allocate "
 				"command packets, rv = %d\n", rv);
 			return (ENOMEM);
 	}
@@ -847,14 +849,14 @@ twa_alloc_req_pkts(struct twa_softc *sc,
 	if ((rv = bus_dmamem_map(sc->twa_dma_tag,
 		&seg, rseg, size, (void **)&sc->twa_cmds,
 		BUS_DMA_NOWAIT | BUS_DMA_COHERENT)) != 0) {
-			aprint_error_dev(&sc->twa_dv, "unable to map commands, rv = %d\n", rv);
+			aprint_error_dev(sc->twa_dv, "unable to map commands, rv = %d\n", rv);
 			return (1);
 	}
 
 	if ((rv = bus_dmamap_create(sc->twa_dma_tag,
 		size, num_reqs, size,
 		0, BUS_DMA_NOWAIT, &sc->twa_cmd_map)) != 0) {
-			aprint_error_dev(&sc->twa_dv, "unable to create command DMA map, "
+			aprint_error_dev(sc->twa_dv, "unable to create command DMA map, "
 				"rv = %d\n", rv);
 			return (ENOMEM);
 	}
@@ -862,13 +864,13 @@ twa_alloc_req_pkts(struct twa_softc *sc,
 	if ((rv = bus_dmamap_load(sc->twa_dma_tag, sc->twa_cmd_map,
 		sc->twa_cmds, size, NULL,
 		BUS_DMA_NOWAIT)) != 0) {
-			aprint_error_dev(&sc->twa_dv, "unable to load command DMA map, "
+			aprint_error_dev(sc->twa_dv, "unable to load command DMA map, "
 				"rv = %d\n", rv);
 			return (1);
 	}
 
 	if ((uintptr_t)sc->twa_cmds % TWA_ALIGNMENT) {
-		aprint_error_dev(&sc->twa_dv, "DMA map memory not aligned on %d boundary\n", TWA_ALIGNMENT);
+		aprint_error_dev(sc->twa_dv, "DMA map memory not aligned on %d boundary\n", TWA_ALIGNMENT);
 
 		return (1);
 	}
@@ -901,7 +903,7 @@ twa_alloc_req_pkts(struct twa_softc *sc,
 		if ((rv = bus_dmamap_create(sc->twa_dma_tag,
 			max_xfer, max_segs, 1, 0, BUS_DMA_NOWAIT,
 			&tr->tr_dma_map)) != 0) {
-				aprint_error_dev(&sc->twa_dv, "unable to create command "
+				aprint_error_dev(sc->twa_dv, "unable to create command "
 					"DMA map, rv = %d\n", rv);
 				return (ENOMEM);
 		}
@@ -947,7 +949,7 @@ twa_recompute_openings(struct twa_softc 
 
 #ifdef TWA_DEBUG
 		printf("%s: unit %d openings %d\n",
-				device_xname(&sc->twa_dv), unit, openings);
+				device_xname(sc->twa_dv), unit, openings);
 #endif
 		if (td->td_dev != NULL)
 			(*td->td_callbacks->tcb_openings)(td->td_dev, td->td_openings);
@@ -997,7 +999,7 @@ twa_request_bus_scan(struct twa_softc *s
 				locs[TWACF_UNIT] = unit;
 
 				sc->sc_units[unit].td_dev =
-				    config_found_sm_loc(&sc->twa_dv, "twa",
+				    config_found_sm_loc(sc->twa_dv, "twa",
 				    locs, &twaa, twa_print, config_stdsubmatch);
 			}
 		} else {
@@ -1465,7 +1467,7 @@ twa_setup(struct twa_softc *sc)
 		/* Soft reset the controller, and try one more time. */
 
 		printf("%s: controller initialization failed. "
-		    "Retrying initialization\n", device_xname(&sc->twa_dv));
+		    "Retrying initialization\n", device_xname(sc->twa_dv));
 
 		if ((error = twa_soft_reset(sc)) == 0)
 			error = twa_init_ctlr(sc);
@@ -1500,6 +1502,8 @@ twa_attach(device_t parent, device_t sel
 
 	sc = device_private(self);
 
+	sc->twa_dv = self;
+
 	pa = aux;
 	pc = pa->pa_pc;
 	sc->pc = pa->pa_pc;
@@ -1514,7 +1518,7 @@ twa_attach(device_t parent, device_t sel
 		use_64bit = false;
 		if (pci_mapreg_map(pa, PCI_MAPREG_START, PCI_MAPREG_TYPE_IO, 0,
 	    	    &sc->twa_bus_iot, &sc->twa_bus_ioh, NULL, NULL)) {
-			aprint_error_dev(&sc->twa_dv, "can't map i/o space\n");
+			aprint_error_dev(sc->twa_dv, "can't map i/o space\n");
 			return;
 		}
 	} else if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_3WARE_9550) {
@@ -1523,7 +1527,7 @@ twa_attach(device_t parent, device_t sel
 		if (pci_mapreg_map(pa, PCI_MAPREG_START + 0x08, 
 	    	    PCI_MAPREG_MEM_TYPE_64BIT, 0, &sc->twa_bus_iot, 
 		    &sc->twa_bus_ioh, NULL, NULL)) {
-			aprint_error_dev(&sc->twa_dv, "can't map mem space\n");
+			aprint_error_dev(sc->twa_dv, "can't map mem space\n");
 			return;
 		}
 	} else if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_3WARE_9650) {
@@ -1532,7 +1536,7 @@ twa_attach(device_t parent, device_t sel
 		if (pci_mapreg_map(pa, PCI_MAPREG_START + 0x08, 
 	    	    PCI_MAPREG_MEM_TYPE_64BIT, 0, &sc->twa_bus_iot, 
 		    &sc->twa_bus_ioh, NULL, NULL)) {
-			aprint_error_dev(&sc->twa_dv, "can't map mem space\n");
+			aprint_error_dev(sc->twa_dv, "can't map mem space\n");
 			return;
 		}
 		sc->sc_quirks |= TWA_QUIRK_QUEUEFULL_BUG;
@@ -1542,20 +1546,20 @@ twa_attach(device_t parent, device_t sel
 		if (pci_mapreg_map(pa, PCI_MAPREG_START + 0x08, 
 	    	    PCI_MAPREG_MEM_TYPE_64BIT, 0, &sc->twa_bus_iot, 
 		    &sc->twa_bus_ioh, NULL, NULL)) {
-			aprint_error_dev(&sc->twa_dv, "can't map mem space\n");
+			aprint_error_dev(sc->twa_dv, "can't map mem space\n");
 			return;
 		}
 		sc->sc_quirks |= TWA_QUIRK_QUEUEFULL_BUG;
 	} else {
 		sc->sc_nunits = 0;
 		use_64bit = false;
-		aprint_error_dev(&sc->twa_dv, "product id 0x%02x not recognized\n", 
+		aprint_error_dev(sc->twa_dv, "product id 0x%02x not recognized\n", 
 		    PCI_PRODUCT(pa->pa_id));
 		return;
 	}
 
 	if (pci_dma64_available(pa) && use_64bit) {
-		aprint_verbose_dev(self, "64bit DMA addressing active");
+		aprint_verbose_dev(self, "64-bit DMA addressing active\n");
 		sc->twa_dma_tag = pa->pa_dmat64;
 	} else {
 		sc->twa_dma_tag = pa->pa_dmat;
@@ -1570,21 +1574,21 @@ twa_attach(device_t parent, device_t sel
 
 	/* Map and establish the interrupt. */
 	if (pci_intr_map(pa, &ih)) {
-		aprint_error_dev(&sc->twa_dv, "can't map interrupt\n");
+		aprint_error_dev(sc->twa_dv, "can't map interrupt\n");
 		return;
 	}
 	intrstr = pci_intr_string(pc, ih);
 
 	sc->twa_ih = pci_intr_establish(pc, ih, IPL_BIO, twa_intr, sc);
 	if (sc->twa_ih == NULL) {
-		aprint_error_dev(&sc->twa_dv, "can't establish interrupt%s%s\n",
+		aprint_error_dev(sc->twa_dv, "can't establish interrupt%s%s\n",
 			(intrstr) ? " at " : "",
 			(intrstr) ? intrstr : "");
 		return;
 	}
 
 	if (intrstr != NULL)
-		aprint_normal_dev(&sc->twa_dv, "interrupting at %s\n",
+		aprint_normal_dev(sc->twa_dv, "interrupting at %s\n",
 			intrstr);
 
 	twa_setup(sc);
@@ -1597,18 +1601,18 @@ twa_attach(device_t parent, device_t sel
 				CTLFLAG_PERMANENT, CTLTYPE_NODE, "hw",
 				NULL, NULL, 0, NULL, 0,
 				CTL_HW, CTL_EOL) != 0) {
-		aprint_error_dev(&sc->twa_dv, "could not create %s sysctl node\n",
+		aprint_error_dev(sc->twa_dv, "could not create %s sysctl node\n",
 			"hw");
 		return;
 	}
 	if (sysctl_createv(NULL, 0, NULL, &node,
-				0, CTLTYPE_NODE, device_xname(&sc->twa_dv),
+				0, CTLTYPE_NODE, device_xname(sc->twa_dv),
 				SYSCTL_DESCR("twa driver information"),
 				NULL, 0, NULL, 0,
 				CTL_HW, CTL_CREATE, CTL_EOL) != 0) {
-		aprint_error_dev(&sc->twa_dv, "could not create %s.%s sysctl node\n",
+		aprint_error_dev(sc->twa_dv, "could not create %s.%s sysctl node\n",
 			"hw",
-			device_xname(&sc->twa_dv));
+			device_xname(sc->twa_dv));
 		return;
 	}
 	if ((i = sysctl_createv(NULL, 0, NULL, NULL,
@@ -1617,9 +1621,9 @@ twa_attach(device_t parent, device_t sel
 				NULL, 0, __UNCONST(&twaver), 0,
 				CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL))
 				!= 0) {
-		aprint_error_dev(&sc->twa_dv, "could not create %s.%s.driver_version sysctl\n",
+		aprint_error_dev(sc->twa_dv, "could not create %s.%s.driver_version sysctl\n",
 			"hw",
-			device_xname(&sc->twa_dv));
+			device_xname(sc->twa_dv));
 		return;
 	}
 
@@ -1887,7 +1891,7 @@ twa_intr(void *arg)
 #ifdef DIAGNOSTIC
 		if (rv != 0)
 			printf("%s: unable to retrieve AEN (%d)\n",
-				device_xname(&sc->twa_dv), rv);
+				device_xname(sc->twa_dv), rv);
 #endif
 		caught = 1;
 	}
@@ -2178,7 +2182,7 @@ fw_passthru_done:
 		}
 		if ((error = copyout(sc->twa_aen_queue [event_index],
 		    user_buf->pdata, sizeof(struct tw_cl_event_packet))) != 0)
-			aprint_error_dev(&sc->twa_dv, "get_previous: Could not copyout to "
+			aprint_error_dev(sc->twa_dv, "get_previous: Could not copyout to "
 			    "event_buf. error = %x\n",
 			    error);
 		(sc->twa_aen_queue[event_index])->retrieved = TWA_AEN_RETRIEVED;
@@ -2613,34 +2617,34 @@ twa_soft_reset(struct twa_softc *sc)
 			TWA_CONTROL_DISABLE_INTERRUPTS);
 
 	if (twa_drain_response_queue_large(sc, 30) != 0) {
-		aprint_error_dev(&sc->twa_dv,
+		aprint_error_dev(sc->twa_dv,
 		    "response queue not empty after reset.\n");
 		return(1);
 	}
 	if (twa_wait_status(sc, TWA_STATUS_MICROCONTROLLER_READY |
 				TWA_STATUS_ATTENTION_INTERRUPT, 30)) {
-		aprint_error_dev(&sc->twa_dv, "no attention interrupt after reset.\n");
+		aprint_error_dev(sc->twa_dv, "no attention interrupt after reset.\n");
 		return(1);
 	}
 	twa_outl(sc, TWA_CONTROL_REGISTER_OFFSET,
 		TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT);
 
 	if (twa_drain_response_queue(sc)) {
-		aprint_error_dev(&sc->twa_dv, "cannot drain response queue.\n");
+		aprint_error_dev(sc->twa_dv, "cannot drain response queue.\n");
 		return(1);
 	}
 	if (twa_drain_aen_queue(sc)) {
-		aprint_error_dev(&sc->twa_dv, "cannot drain AEN queue.\n");
+		aprint_error_dev(sc->twa_dv, "cannot drain AEN queue.\n");
 		return(1);
 	}
 	if (twa_find_aen(sc, TWA_AEN_SOFT_RESET)) {
-		aprint_error_dev(&sc->twa_dv, "reset not reported by controller.\n");
+		aprint_error_dev(sc->twa_dv, "reset not reported by controller.\n");
 		return(1);
 	}
 	status_reg = twa_inl(sc, TWA_STATUS_REGISTER_OFFSET);
 	if (TWA_STATUS_ERRORS(status_reg) ||
 	    twa_check_ctlr_state(sc, status_reg)) {
-		aprint_error_dev(&sc->twa_dv, "controller errors detected.\n");
+		aprint_error_dev(sc->twa_dv, "controller errors detected.\n");
 		return(1);
 	}
 	return(0);
@@ -2770,7 +2774,7 @@ twa_enqueue_aen(struct twa_softc *sc, st
 				&sync_time, twa_aen_callback);
 #ifdef DIAGNOSTIC
 		if (rv != 0)
-			aprint_error_dev(&sc->twa_dv, "unable to sync time with ctlr\n");
+			aprint_error_dev(sc->twa_dv, "unable to sync time with ctlr\n");
 #endif
 		break;
 
@@ -2795,7 +2799,7 @@ twa_enqueue_aen(struct twa_softc *sc, st
 
 		if (event->severity < TWA_AEN_SEVERITY_DEBUG) {
 			printf("%s: AEN 0x%04X: %s: %s: %s\n",
-				device_xname(&sc->twa_dv),
+				device_xname(sc->twa_dv),
 				aen_code,
 				twa_aen_severity_table[event->severity],
 				twa_find_msg_string(twa_aen_table, aen_code),
@@ -2965,16 +2969,16 @@ twa_describe_controller(struct twa_softc
 
 	if (rv) {
 		/* some error occurred */
-		aprint_error_dev(&sc->twa_dv, "failed to fetch version information\n");
+		aprint_error_dev(sc->twa_dv, "failed to fetch version information\n");
 		goto bail;
 	}
 
 	ports = *(uint8_t *)(p[0]->data);
 
-	aprint_normal_dev(&sc->twa_dv, "%d ports, Firmware %.16s, BIOS %.16s\n",
+	aprint_normal_dev(sc->twa_dv, "%d ports, Firmware %.16s, BIOS %.16s\n",
 		ports, p[1]->data, p[2]->data);
 
-	aprint_verbose_dev(&sc->twa_dv, "Monitor %.16s, PCB %.8s, Achip %.8s, Pchip %.8s\n",
+	aprint_verbose_dev(sc->twa_dv, "Monitor %.16s, PCB %.8s, Achip %.8s, Pchip %.8s\n",
 		p[3]->data, p[4]->data,
 		p[5]->data, p[6]->data);
 
@@ -2988,7 +2992,7 @@ twa_describe_controller(struct twa_softc
 			TWA_PARAM_DRIVEMODEL_LENGTH, NULL, &p[8]);
 
 		if (rv != 0) {
-			aprint_error_dev(&sc->twa_dv, "unable to get drive model for port"
+			aprint_error_dev(sc->twa_dv, "unable to get drive model for port"
 				" %d\n", i);
 			continue;
 		}
@@ -2998,7 +3002,7 @@ twa_describe_controller(struct twa_softc
 			TWA_PARAM_DRIVESIZE_LENGTH, NULL, &p[9]);
 
 		if (rv != 0) {
-			aprint_error_dev(&sc->twa_dv, "unable to get drive size"
+			aprint_error_dev(sc->twa_dv, "unable to get drive size"
 				" for port %d\n", i);
 			free(p[8], M_DEVBUF);
 			continue;
@@ -3006,7 +3010,7 @@ twa_describe_controller(struct twa_softc
 
 		dsize = *(uint32_t *)(p[9]->data);
 
-		aprint_verbose_dev(&sc->twa_dv, "port %d: %.40s %d MB\n",
+		aprint_verbose_dev(sc->twa_dv, "port %d: %.40s %d MB\n",
 		    i, p[8]->data, dsize / 2048);
 
 		if (p[8])
@@ -3074,7 +3078,7 @@ twa_check_ctlr_state(struct twa_softc *s
 			last_warning[1] = t1.tv_usec;
 		}
 		if (status_reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) {
-			aprint_error_dev(&sc->twa_dv, "clearing PCI parity error "
+			aprint_error_dev(sc->twa_dv, "clearing PCI parity error "
 				"re-seat/move/replace card.\n");
 			twa_outl(sc, TWA_CONTROL_REGISTER_OFFSET,
 				TWA_CONTROL_CLEAR_PARITY_ERROR);
@@ -3083,7 +3087,7 @@ twa_check_ctlr_state(struct twa_softc *s
 				TWA_PCI_CONFIG_CLEAR_PARITY_ERROR);
 		}
 		if (status_reg & TWA_STATUS_PCI_ABORT_INTERRUPT) {
-			aprint_error_dev(&sc->twa_dv, "clearing PCI abort\n");
+			aprint_error_dev(sc->twa_dv, "clearing PCI abort\n");
 			twa_outl(sc, TWA_CONTROL_REGISTER_OFFSET,
 				TWA_CONTROL_CLEAR_PCI_ABORT);
 			pci_conf_write(sc->pc, sc->tag,
@@ -3099,7 +3103,7 @@ twa_check_ctlr_state(struct twa_softc *s
  			 */
  			if ((sc->sc_product_id != PCI_PRODUCT_3WARE_9650) ||
  			    ((sc->twa_sc_flags & TWA_STATE_IN_RESET) == 0)) { 
- 				aprint_error_dev(&sc->twa_dv,
+ 				aprint_error_dev(sc->twa_dv,
  				    "clearing controller queue error\n");
  			}
  		
@@ -3107,7 +3111,7 @@ twa_check_ctlr_state(struct twa_softc *s
  				TWA_CONTROL_CLEAR_QUEUE_ERROR);
 		}
 		if (status_reg & TWA_STATUS_MICROCONTROLLER_ERROR) {
-			aprint_error_dev(&sc->twa_dv, "micro-controller error\n");
+			aprint_error_dev(sc->twa_dv, "micro-controller error\n");
 			result = 1;
 		}
 	}

Index: src/sys/dev/pci/twavar.h
diff -u src/sys/dev/pci/twavar.h:1.10 src/sys/dev/pci/twavar.h:1.11
--- src/sys/dev/pci/twavar.h:1.10	Mon Nov 22 23:02:16 2010
+++ src/sys/dev/pci/twavar.h	Fri Jul 27 14:02:17 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: twavar.h,v 1.10 2010/11/22 23:02:16 dholland Exp $ */
+/*	$NetBSD: twavar.h,v 1.11 2012/07/27 14:02:17 jakllsch Exp $ */
 /*	$wasabi: twavar.h,v 1.12 2006/05/01 15:16:59 simonb Exp $	*/
 
 /*-
@@ -55,7 +55,7 @@ struct twa_drive {
 
 /* Per-controller structure. */
 struct twa_softc {
-	struct device		twa_dv;
+	device_t		twa_dv;
 	bus_space_tag_t		twa_bus_iot;	/* bus space tag */
 	bus_space_handle_t	twa_bus_ioh;	/* bus space handle */
 	bus_dma_tag_t		twa_dma_tag;	/* data buffer DMA tag */

Reply via email to