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