Module Name: src Committed By: jakllsch Date: Fri Jul 27 16:25:11 UTC 2012
Modified Files: src/sys/dev/pci: amr.c amrvar.h Log Message: Convert amr(4) to device_t (CFATTACH_DECL_NEW). To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/dev/pci/amr.c cvs rdiff -u -r1.8 -r1.9 src/sys/dev/pci/amrvar.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/amr.c diff -u src/sys/dev/pci/amr.c:1.54 src/sys/dev/pci/amr.c:1.55 --- src/sys/dev/pci/amr.c:1.54 Sat Nov 13 13:52:05 2010 +++ src/sys/dev/pci/amr.c Fri Jul 27 16:25:11 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: amr.c,v 1.54 2010/11/13 13:52:05 uebayasi Exp $ */ +/* $NetBSD: amr.c,v 1.55 2012/07/27 16:25:11 jakllsch Exp $ */ /*- * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amr.c,v 1.54 2010/11/13 13:52:05 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amr.c,v 1.55 2012/07/27 16:25:11 jakllsch Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -112,7 +112,7 @@ static dev_type_open(amropen); static dev_type_close(amrclose); static dev_type_ioctl(amrioctl); -CFATTACH_DECL(amr, sizeof(struct amr_softc), +CFATTACH_DECL_NEW(amr, sizeof(struct amr_softc), amr_match, amr_attach, NULL, NULL); const struct cdevsw amr_cdevsw = { @@ -270,6 +270,7 @@ amr_attach(device_t parent, device_t sel aprint_naive(": RAID controller\n"); amr = device_private(self); + amr->amr_dv = self; pa = (struct pci_attach_args *)aux; pc = pa->pa_pc; @@ -348,7 +349,7 @@ amr_attach(device_t parent, device_t sel if ((rv = bus_dmamem_alloc(amr->amr_dmat, size, PAGE_SIZE, 0, &amr->amr_dmaseg, 1, &rseg, BUS_DMA_NOWAIT)) != 0) { - aprint_error_dev(&amr->amr_dv, "unable to allocate buffer, rv = %d\n", + aprint_error_dev(amr->amr_dv, "unable to allocate buffer, rv = %d\n", rv); amr_teardown(amr); return; @@ -358,7 +359,7 @@ amr_attach(device_t parent, device_t sel if ((rv = bus_dmamem_map(amr->amr_dmat, &amr->amr_dmaseg, rseg, size, (void **)&amr->amr_mbox, BUS_DMA_NOWAIT | BUS_DMA_COHERENT)) != 0) { - aprint_error_dev(&amr->amr_dv, "unable to map buffer, rv = %d\n", + aprint_error_dev(amr->amr_dv, "unable to map buffer, rv = %d\n", rv); amr_teardown(amr); return; @@ -367,7 +368,7 @@ amr_attach(device_t parent, device_t sel if ((rv = bus_dmamap_create(amr->amr_dmat, size, 1, size, 0, BUS_DMA_NOWAIT, &amr->amr_dmamap)) != 0) { - aprint_error_dev(&amr->amr_dv, "unable to create buffer DMA map, rv = %d\n", + aprint_error_dev(amr->amr_dv, "unable to create buffer DMA map, rv = %d\n", rv); amr_teardown(amr); return; @@ -376,7 +377,7 @@ amr_attach(device_t parent, device_t sel if ((rv = bus_dmamap_load(amr->amr_dmat, amr->amr_dmamap, amr->amr_mbox, size, NULL, BUS_DMA_NOWAIT)) != 0) { - aprint_error_dev(&amr->amr_dv, "unable to load buffer DMA map, rv = %d\n", + aprint_error_dev(amr->amr_dv, "unable to load buffer DMA map, rv = %d\n", rv); amr_teardown(amr); return; @@ -415,7 +416,7 @@ amr_attach(device_t parent, device_t sel amr_ccb_free(amr, ac); } if (i != AMR_MAX_CMDS) { - aprint_error_dev(&amr->amr_dv, "memory exhausted\n"); + aprint_error_dev(amr->amr_dv, "memory exhausted\n"); amr_teardown(amr); return; } @@ -473,7 +474,7 @@ amr_attach(device_t parent, device_t sel locs[AMRCF_UNIT] = j; - amr->amr_drive[j].al_dv = config_found_sm_loc(&amr->amr_dv, + amr->amr_drive[j].al_dv = config_found_sm_loc(amr->amr_dv, "amr", locs, &amra, amr_print, config_stdsubmatch); } @@ -482,9 +483,9 @@ amr_attach(device_t parent, device_t sel /* XXX This doesn't work for newer boards yet. */ if ((apt->apt_flags & AT_QUARTZ) == 0) { rv = kthread_create(PRI_NONE, 0, NULL, amr_thread, amr, - &amr->amr_thread, "%s", device_xname(&amr->amr_dv)); + &amr->amr_thread, "%s", device_xname(amr->amr_dv)); if (rv != 0) - aprint_error_dev(&amr->amr_dv, "unable to create thread (%d)", + aprint_error_dev(amr->amr_dv, "unable to create thread (%d)", rv); else amr->amr_flags |= AMRF_THREAD; @@ -571,9 +572,9 @@ amr_init(struct amr_softc *amr, const ch if (ap != NULL) { aprint_normal("<%.80s>\n", ap->ap_product); if (intrstr != NULL) - aprint_normal_dev(&amr->amr_dv, "interrupting at %s\n", + aprint_normal_dev(amr->amr_dv, "interrupting at %s\n", intrstr); - aprint_normal_dev(&amr->amr_dv, "firmware %.16s, BIOS %.16s, %dMB RAM\n", + aprint_normal_dev(amr->amr_dv, "firmware %.16s, BIOS %.16s, %dMB RAM\n", ap->ap_firmware, ap->ap_bios, le16toh(ap->ap_memsize)); @@ -585,19 +586,19 @@ amr_init(struct amr_softc *amr, const ch aex = amr_enquire(amr, AMR_CMD_CONFIG, AMR_CONFIG_ENQ3, AMR_CONFIG_ENQ3_SOLICITED_FULL, amr->amr_enqbuf); if (aex == NULL) { - aprint_error_dev(&amr->amr_dv, "ENQUIRY3 failed\n"); + aprint_error_dev(amr->amr_dv, "ENQUIRY3 failed\n"); return (-1); } if (aex->ae_numldrives > __arraycount(aex->ae_drivestate)) { - aprint_error_dev(&amr->amr_dv, "Inquiry returned more drives (%d)" + aprint_error_dev(amr->amr_dv, "Inquiry returned more drives (%d)" " than the array can handle (%zu)\n", aex->ae_numldrives, __arraycount(aex->ae_drivestate)); aex->ae_numldrives = __arraycount(aex->ae_drivestate); } if (aex->ae_numldrives > AMR_MAX_UNITS) { - aprint_error_dev(&amr->amr_dv, + aprint_error_dev(amr->amr_dv, "adjust AMR_MAX_UNITS to %d (currently %d)" "\n", AMR_MAX_UNITS, amr->amr_numdrives); @@ -638,7 +639,7 @@ amr_init(struct amr_softc *amr, const ch } else { ae = amr_enquire(amr, AMR_CMD_ENQUIRY, 0, 0, amr->amr_enqbuf); if (ae == NULL) { - aprint_error_dev(&amr->amr_dv, "unsupported controller\n"); + aprint_error_dev(amr->amr_dv, "unsupported controller\n"); return (-1); } @@ -679,16 +680,16 @@ amr_init(struct amr_softc *amr, const ch aprint_normal("<%s>\n", prodstr); if (intrstr != NULL) - aprint_normal_dev(&amr->amr_dv, "interrupting at %s\n", + aprint_normal_dev(amr->amr_dv, "interrupting at %s\n", intrstr); if (ishp) - aprint_normal_dev(&amr->amr_dv, "firmware <%c.%02d.%02d>, BIOS <%c.%02d.%02d>" + aprint_normal_dev(amr->amr_dv, "firmware <%c.%02d.%02d>, BIOS <%c.%02d.%02d>" ", %dMB RAM\n", aa->aa_firmware[2], aa->aa_firmware[1], aa->aa_firmware[0], aa->aa_bios[2], aa->aa_bios[1], aa->aa_bios[0], aa->aa_memorysize); else - aprint_normal_dev(&amr->amr_dv, "firmware <%.4s>, BIOS <%.4s>, %dMB RAM\n", + aprint_normal_dev(amr->amr_dv, "firmware <%.4s>, BIOS <%.4s>, %dMB RAM\n", aa->aa_firmware, aa->aa_bios, aa->aa_memorysize); @@ -698,14 +699,14 @@ amr_init(struct amr_softc *amr, const ch * Record state of logical drives. */ if (ae->ae_ldrv.al_numdrives > __arraycount(ae->ae_ldrv.al_size)) { - aprint_error_dev(&amr->amr_dv, "Inquiry returned more drives (%d)" + aprint_error_dev(amr->amr_dv, "Inquiry returned more drives (%d)" " than the array can handle (%zu)\n", ae->ae_ldrv.al_numdrives, __arraycount(ae->ae_ldrv.al_size)); ae->ae_ldrv.al_numdrives = __arraycount(ae->ae_ldrv.al_size); } if (ae->ae_ldrv.al_numdrives > AMR_MAX_UNITS) { - aprint_error_dev(&amr->amr_dv, "adjust AMR_MAX_UNITS to %d (currently %d)\n", + aprint_error_dev(amr->amr_dv, "adjust AMR_MAX_UNITS to %d (currently %d)\n", ae->ae_ldrv.al_numdrives, AMR_MAX_UNITS); amr->amr_numdrives = AMR_MAX_UNITS; @@ -745,7 +746,7 @@ amr_shutdown(void *cookie) amr_ccb_free(amr, ac); } if (rv != 0) - aprint_error_dev(&amr->amr_dv, "unable to flush cache (%d)\n", rv); + aprint_error_dev(amr->amr_dv, "unable to flush cache (%d)\n", rv); } } @@ -771,13 +772,13 @@ amr_intr(void *cookie) if (idx >= amr->amr_maxqueuecnt) { printf("%s: bad status (bogus ID: %u=%u)\n", - device_xname(&amr->amr_dv), i, idx); + device_xname(amr->amr_dv), i, idx); continue; } if ((ac->ac_flags & AC_ACTIVE) == 0) { printf("%s: bad status (not active; 0x04%x)\n", - device_xname(&amr->amr_dv), ac->ac_flags); + device_xname(amr->amr_dv), ac->ac_flags); continue; } @@ -788,7 +789,7 @@ amr_intr(void *cookie) if ((ac->ac_flags & AC_MOAN) != 0) printf("%s: ccb %d completed\n", - device_xname(&amr->amr_dv), ac->ac_ident); + device_xname(amr->amr_dv), ac->ac_ident); /* Pass notification to upper layers. */ if (ac->ac_handler != NULL) @@ -837,7 +838,7 @@ amr_thread(void *cookie) break; if ((ac->ac_flags & AC_MOAN) == 0) { printf("%s: ccb %d timed out; mailbox:\n", - device_xname(&amr->amr_dv), ac->ac_ident); + device_xname(amr->amr_dv), ac->ac_ident); amr_ccb_dump(amr, ac); ac->ac_flags |= AC_MOAN; } @@ -847,7 +848,7 @@ amr_thread(void *cookie) if ((rv = amr_ccb_alloc(amr, &ac)) != 0) { printf("%s: ccb_alloc failed (%d)\n", - device_xname(&amr->amr_dv), rv); + device_xname(amr->amr_dv), rv); continue; } @@ -856,7 +857,7 @@ amr_thread(void *cookie) rv = amr_ccb_map(amr, ac, amr->amr_enqbuf, AMR_ENQUIRY_BUFSIZE, AC_XFER_IN); if (rv != 0) { - aprint_error_dev(&amr->amr_dv, "ccb_map failed (%d)\n", + aprint_error_dev(amr->amr_dv, "ccb_map failed (%d)\n", rv); amr_ccb_free(amr, ac); continue; @@ -865,7 +866,7 @@ amr_thread(void *cookie) rv = amr_ccb_wait(amr, ac); amr_ccb_unmap(amr, ac); if (rv != 0) { - aprint_error_dev(&amr->amr_dv, "enquiry failed (st=%d)\n", + aprint_error_dev(amr->amr_dv, "enquiry failed (st=%d)\n", ac->ac_status); continue; } @@ -1140,7 +1141,7 @@ amr_mbox_wait(struct amr_softc *amr) } if (timo == 0) - printf("%s: controller wedged\n", device_xname(&amr->amr_dv)); + printf("%s: controller wedged\n", device_xname(amr->amr_dv)); return (timo != 0 ? 0 : EAGAIN); } @@ -1292,7 +1293,7 @@ amr_ccb_dump(struct amr_softc *amr, stru { int i; - printf("%s: ", device_xname(&amr->amr_dv)); + printf("%s: ", device_xname(amr->amr_dv)); for (i = 0; i < 4; i++) printf("%08x ", ((u_int32_t *)&ac->ac_cmd)[i]); printf("\n"); Index: src/sys/dev/pci/amrvar.h diff -u src/sys/dev/pci/amrvar.h:1.8 src/sys/dev/pci/amrvar.h:1.9 --- src/sys/dev/pci/amrvar.h:1.8 Mon Apr 28 20:23:54 2008 +++ src/sys/dev/pci/amrvar.h Fri Jul 27 16:25:11 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: amrvar.h,v 1.8 2008/04/28 20:23:54 martin Exp $ */ +/* $NetBSD: amrvar.h,v 1.9 2012/07/27 16:25:11 jakllsch Exp $ */ /*- * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. @@ -46,14 +46,14 @@ struct amr_logdrive { u_int al_size; u_short al_state; u_short al_properties; - struct device *al_dv; + device_t al_dv; }; /* * Per-controller state. */ struct amr_softc { - struct device amr_dv; + device_t amr_dv; bus_space_tag_t amr_iot; bus_space_handle_t amr_ioh; bus_size_t amr_ios; @@ -120,7 +120,7 @@ struct amr_ccb { bus_dmamap_t ac_xfer_map; void (*ac_handler)(struct amr_ccb *); void *ac_context; - struct device *ac_dv; + device_t ac_dv; struct amr_mailbox_cmd ac_cmd; }; #define AC_XFER_IN 0x01 /* Map describes inbound xfer */