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 */