Date: Thu, 3 Jul 2008 19:26:14 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 144564 for review Message-ID: <200807031926.m63JQERN009865@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=144564 Change 144564 by hselasky@hselasky_laptop001 on 2008/07/03 19:25:36 New USB storage module is finished. - mostly symbol renaming - some minor changes Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#9 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/urio2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.h#1 add .. //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#2 edit .. //depot/projects/usb/src/sys/modules/usb2/storage/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#9 (text+ko) ==== @@ -1515,7 +1515,7 @@ * default */ if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_0)) { - config_index = 1; + config_index = 0; config_quirk = 1; } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_1)) { config_index = 1; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#5 (text+ko) ==== @@ -793,7 +793,7 @@ return (0); } -static int +int ugen_do_request(struct usb2_fifo *f, struct usb2_ctl_request *ur) { int error; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.h#2 (text+ko) ==== @@ -27,5 +27,6 @@ #define _USB2_GENERIC_H_ extern struct usb2_fifo_methods usb2_ugen_methods; +int ugen_do_request(struct usb2_fifo *f, struct usb2_ctl_request *ur); #endif /* _USB2_GENERIC_H_ */ ==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#4 (text+ko) ==== @@ -39,7 +39,7 @@ #define USB_SHORT_XFER_OK 0x0004 /* allow short reads */ #define USB_DELAY_STATUS_STAGE 0x0010 /* insert delay before STATUS stage */ uint16_t ucr_actlen; /* actual length transferred */ - uint8_t ucr_addr; + uint8_t ucr_addr; /* zero - currently not used */ struct usb2_device_request ucr_request; }; ==== //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#3 (text+ko) ==== @@ -73,7 +73,9 @@ /* select configuration index 3 by default */ \ m(n, UQ_CFG_INDEX_3) \ /* select configuration index 4 by default */ \ - m(n, UQ_CFG_INDEX_4) + m(n, UQ_CFG_INDEX_4) \ + /* select configuration index 0 by default */ \ + m(n, UQ_CFG_INDEX_0) USB_MAKE_ENUM(USB_QUIRK); ==== //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#2 (text) ==== @@ -30,21 +30,26 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/sys/dev/ata/ata-usb.c,v 1.8 2008/04/10 13:05:05 sos Exp $"); -#include "opt_ata.h" -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> +#include <dev/usb2/include/usb2_devid.h> +#include <dev/usb2/include/usb2_standard.h> +#include <dev/usb2/include/usb2_mfunc.h> +#include <dev/usb2/include/usb2_error.h> +#include <dev/usb2/include/usb2_revision.h> + +#include <dev/usb2/core/usb2_core.h> +#include <dev/usb2/core/usb2_util.h> +#include <dev/usb2/core/usb2_busdma.h> +#include <dev/usb2/core/usb2_request.h> +#include <dev/usb2/core/usb2_debug.h> +#include <dev/usb2/core/usb2_process.h> +#include <dev/usb2/core/usb2_transfer.h> + #include <sys/ata.h> #include <sys/bio.h> #include <sys/sema.h> +#include <sys/taskqueue.h> #include <vm/uma.h> -#include <dev/usb/usb_port.h> -#include <dev/usb/usb.h> -#include <dev/usb/usb_subr.h> -#include <dev/usb/usb_quirks.h> - #include <dev/ata/ata-all.h> #include <ata_if.h> @@ -82,7 +87,7 @@ } __packed; /* USB-ATA 'controller' softc */ -struct atausb_softc { +struct atausb2_softc { struct bbb_cbw cbw; struct bbb_csw csw; struct mtx locked_mtx; @@ -104,7 +109,7 @@ #define ATAUSB_T_MAX ATAUSB_T_BBB_MAX - struct usbd_xfer *xfer[ATAUSB_T_MAX]; + struct usb2_xfer *xfer[ATAUSB_T_MAX]; caddr_t ata_data; device_t dev; @@ -113,7 +118,7 @@ uint32_t ata_bytecount; uint8_t last_xfer_no; - uint8_t usb_speed; + uint8_t usb2_speed; uint8_t intr_stalled; uint8_t maxlun; uint8_t iface_no; @@ -124,24 +129,24 @@ /* prototypes */ -static device_probe_t atausb_probe; -static device_attach_t atausb_attach; -static device_detach_t atausb_detach; +static device_probe_t atausb2_probe; +static device_attach_t atausb2_attach; +static device_detach_t atausb2_detach; -static usbd_callback_t atausb_t_bbb_reset1_callback; -static usbd_callback_t atausb_t_bbb_reset2_callback; -static usbd_callback_t atausb_t_bbb_reset3_callback; -static usbd_callback_t atausb_t_bbb_command_callback; -static usbd_callback_t atausb_t_bbb_data_read_callback; -static usbd_callback_t atausb_t_bbb_data_rd_cs_callback; -static usbd_callback_t atausb_t_bbb_data_write_callback; -static usbd_callback_t atausb_t_bbb_data_wr_cs_callback; -static usbd_callback_t atausb_t_bbb_status_callback; -static usbd_callback_t atausb_tr_error; +static usb2_callback_t atausb2_t_bbb_reset1_callback; +static usb2_callback_t atausb2_t_bbb_reset2_callback; +static usb2_callback_t atausb2_t_bbb_reset3_callback; +static usb2_callback_t atausb2_t_bbb_command_callback; +static usb2_callback_t atausb2_t_bbb_data_read_callback; +static usb2_callback_t atausb2_t_bbb_data_rd_cs_callback; +static usb2_callback_t atausb2_t_bbb_data_write_callback; +static usb2_callback_t atausb2_t_bbb_data_wr_cs_callback; +static usb2_callback_t atausb2_t_bbb_status_callback; +static usb2_callback_t atausb2_tr_error; -static void atausb_cancel_request(struct atausb_softc *sc); -static void atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no); -static void atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void atausb2_cancel_request(struct atausb2_softc *sc); +static void atausb2_transfer_start(struct atausb2_softc *sc, uint8_t xfer_no); +static void atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static int ata_usbchannel_begin_transaction(struct ata_request *request); static int ata_usbchannel_end_transaction(struct ata_request *request); @@ -156,15 +161,15 @@ * USB frontend part */ -struct usbd_config atausb_config[ATAUSB_T_BBB_MAX] = { +struct usb2_config atausb2_config[ATAUSB_T_BBB_MAX] = { [ATAUSB_T_BBB_RESET1] = { .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset1_callback, + .mh.callback = &atausb2_t_bbb_reset1_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 500, /* 500 milliseconds */ }, @@ -173,9 +178,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset2_callback, + .mh.callback = &atausb2_t_bbb_reset2_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 50, /* 50 milliseconds */ }, @@ -184,9 +189,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset3_callback, + .mh.callback = &atausb2_t_bbb_reset3_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 50, /* 50 milliseconds */ }, @@ -197,7 +202,7 @@ .direction = UE_DIR_OUT, .mh.bufsize = sizeof(struct bbb_cbw), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_command_callback, + .mh.callback = &atausb2_t_bbb_command_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -207,7 +212,7 @@ .direction = UE_DIR_IN, .mh.bufsize = ATAUSB_BULK_SIZE, .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_read_callback, + .mh.callback = &atausb2_t_bbb_data_read_callback, .mh.timeout = 0, /* overwritten later */ }, @@ -215,9 +220,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_rd_cs_callback, + .mh.callback = &atausb2_t_bbb_data_rd_cs_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -227,7 +232,7 @@ .direction = UE_DIR_OUT, .mh.bufsize = ATAUSB_BULK_SIZE, .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_write_callback, + .mh.callback = &atausb2_t_bbb_data_write_callback, .mh.timeout = 0, /* overwritten later */ }, @@ -235,9 +240,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_wr_cs_callback, + .mh.callback = &atausb2_t_bbb_data_wr_cs_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -247,45 +252,42 @@ .direction = UE_DIR_IN, .mh.bufsize = sizeof(struct bbb_csw), .mh.flags = {.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_status_callback, + .mh.callback = &atausb2_t_bbb_status_callback, .mh.timeout = 5000, /* ms */ }, }; -static devclass_t atausb_devclass; +static devclass_t atausb2_devclass; -static device_method_t atausb_methods[] = { - DEVMETHOD(device_probe, atausb_probe), - DEVMETHOD(device_attach, atausb_attach), - DEVMETHOD(device_detach, atausb_detach), +static device_method_t atausb2_methods[] = { + DEVMETHOD(device_probe, atausb2_probe), + DEVMETHOD(device_attach, atausb2_attach), + DEVMETHOD(device_detach, atausb2_detach), {0, 0} }; -static driver_t atausb_driver = { +static driver_t atausb2_driver = { .name = "atausb", - .methods = atausb_methods, - .size = sizeof(struct atausb_softc), + .methods = atausb2_methods, + .size = sizeof(struct atausb2_softc), }; -DRIVER_MODULE(atausb, uhub, atausb_driver, atausb_devclass, 0, 0); -MODULE_DEPEND(atausb, usb, 1, 1, 1); +DRIVER_MODULE(atausb, ushub, atausb2_driver, atausb2_devclass, 0, 0); +MODULE_DEPEND(atausb, usb2_core, 1, 1, 1); MODULE_VERSION(atausb, 1); static int -atausb_probe(device_t dev) +atausb2_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct usb2_attach_arg *uaa = device_get_ivars(dev); + struct usb2_interface_descriptor *id; - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface == NULL) { - return (UMATCH_NONE); - } - id = usbd_get_interface_descriptor(uaa->iface); + id = usb2_get_interface_descriptor(uaa->iface); if ((!id) || (id->bInterfaceClass != UICLASS_MASS)) { - return (UMATCH_NONE); + return (ENXIO); } switch (id->bInterfaceSubClass) { case UISUBCLASS_QIC157: @@ -299,24 +301,24 @@ case UIPROTO_MASS_CBI_I: case UIPROTO_MASS_BBB: case UIPROTO_MASS_BBB_OLD: - return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO); + return (0); default: - return (UMATCH_IFACECLASS_IFACESUBCLASS); + return (0); } break; default: - return (UMATCH_IFACECLASS); + return (0); } } static int -atausb_attach(device_t dev) +atausb2_attach(device_t dev) { - struct atausb_softc *sc = device_get_softc(dev); - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct atausb2_softc *sc = device_get_softc(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); + struct usb2_interface_descriptor *id; const char *proto, *subclass; - usb_device_request_t request; + struct usb2_device_request request; uint16_t i; uint8_t maxlun; uint8_t has_intr; @@ -325,16 +327,16 @@ if (sc == NULL) { return (ENOMEM); } - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); sc->dev = dev; sc->maxlun = 0; sc->locked_ch = NULL; sc->restart_ch = NULL; - sc->usb_speed = usbd_get_speed(uaa->device); + sc->usb2_speed = usb2_get_speed(uaa->device); mtx_init(&(sc->locked_mtx), "ATAUSB lock", NULL, (MTX_DEF | MTX_RECURSE)); - id = usbd_get_interface_descriptor(uaa->iface); + id = usb2_get_interface_descriptor(uaa->iface); switch (id->bInterfaceProtocol) { case UIPROTO_MASS_BBB: case UIPROTO_MASS_BBB_OLD: @@ -377,15 +379,16 @@ (strcmp(subclass, "ATAPI") && strcmp(subclass, "SCSI"))) { goto detach; } - err = usbd_transfer_setup(uaa->device, &(uaa->iface_index), sc->xfer, - atausb_config, ATAUSB_T_BBB_MAX, sc, &(sc->locked_mtx)); + err = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), + sc->xfer, atausb2_config, ATAUSB_T_BBB_MAX, sc, + &(sc->locked_mtx)); /* skip reset first time */ sc->last_xfer_no = ATAUSB_T_BBB_COMMAND; if (err) { device_printf(sc->dev, "could not setup required " - "transfers, %s\n", usbd_errstr(err)); + "transfers, %s\n", usb2_errstr(err)); goto detach; } /* get number of devices so we can add matching channels */ @@ -394,12 +397,12 @@ USETW(request.wValue, 0); USETW(request.wIndex, sc->iface_no); USETW(request.wLength, sizeof(maxlun)); - err = usbd_do_request(uaa->device, &usb_global_lock, &request, &maxlun); + err = usb2_do_request(uaa->device, &Giant, &request, &maxlun); if (err) { if (bootverbose) { device_printf(sc->dev, "get maxlun not supported %s\n", - usbd_errstr(err)); + usb2_errstr(err)); } } else { sc->maxlun = maxlun; @@ -421,20 +424,20 @@ return (0); detach: - atausb_detach(dev); + atausb2_detach(dev); return (ENXIO); } static int -atausb_detach(device_t dev) +atausb2_detach(device_t dev) { - struct atausb_softc *sc = device_get_softc(dev); + struct atausb2_softc *sc = device_get_softc(dev); device_t *children; int nchildren, i; /* teardown our statemachine */ - usbd_transfer_unsetup(sc->xfer, ATAUSB_T_MAX); + usb2_transfer_unsetup(sc->xfer, ATAUSB_T_MAX); /* detach & delete all children, if any */ @@ -449,32 +452,32 @@ } static void -atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no) +atausb2_transfer_start(struct atausb2_softc *sc, uint8_t xfer_no) { if (atausbdebug) { device_printf(sc->dev, "BBB transfer %d\n", xfer_no); } if (sc->xfer[xfer_no]) { sc->last_xfer_no = xfer_no; - usbd_transfer_start(sc->xfer[xfer_no]); + usb2_transfer_start(sc->xfer[xfer_no]); } else { - atausb_cancel_request(sc); + atausb2_cancel_request(sc); } return; } static void -atausb_t_bbb_reset1_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset1_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; - usb_device_request_t req; + struct atausb2_softc *sc = xfer->priv_sc; + struct usb2_device_request req; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - atausb_transfer_start(sc, ATAUSB_T_BBB_RESET2); + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + atausb2_transfer_start(sc, ATAUSB_T_BBB_RESET2); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: req.bmRequestType = UT_WRITE_CLASS_INTERFACE; req.bRequest = 0xff; /* bulk-only reset */ USETW(req.wValue, 0); @@ -482,79 +485,79 @@ req.wIndex[1] = 0; USETW(req.wLength, 0); - usbd_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); + usb2_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); xfer->frlengths[0] = sizeof(req); xfer->nframes = 1; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_reset2_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset2_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_RESET3, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_RESET3, ATAUSB_T_BBB_DATA_READ); return; } static void -atausb_t_bbb_reset3_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset3_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_COMMAND, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_COMMAND, ATAUSB_T_BBB_DATA_WRITE); return; } static void -atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, +atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: - atausb_transfer_start(sc, next_xfer); + atausb2_transfer_start(sc, next_xfer); return; - case USBD_ST_SETUP: - if (usbd_clear_stall_callback(xfer, sc->xfer[stall_xfer])) { + case USB_ST_SETUP: + if (usb2_clear_stall_callback(xfer, sc->xfer[stall_xfer])) { goto tr_transferred; } return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_command_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_command_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; struct ata_request *request = sc->ata_request; struct ata_channel *ch; uint32_t tag; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - atausb_transfer_start + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + atausb2_transfer_start (sc, ((request->flags & ATA_R_READ) ? ATAUSB_T_BBB_DATA_READ : (request->flags & ATA_R_WRITE) ? ATAUSB_T_BBB_DATA_WRITE : ATAUSB_T_BBB_STATUS)); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: sc->status_try = 0; @@ -574,30 +577,30 @@ bzero(sc->cbw.cdb, 16); bcopy(request->u.atapi.ccb, sc->cbw.cdb, 12); /* XXX SOS */ - usbd_copy_in(xfer->frbuffers, 0, &(sc->cbw), sizeof(sc->cbw)); + usb2_copy_in(xfer->frbuffers, 0, &(sc->cbw), sizeof(sc->cbw)); xfer->frlengths[0] = sizeof(sc->cbw); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_data_read_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_read_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; uint32_t max_bulk = xfer->max_data_length; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: - usbd_copy_out(xfer->frbuffers, 0, + usb2_copy_out(xfer->frbuffers, 0, sc->ata_data, xfer->actlen); sc->ata_bytecount -= xfer->actlen; @@ -608,14 +611,14 @@ /* short transfer */ sc->ata_bytecount = 0; } - case USBD_ST_SETUP: + case USB_ST_SETUP: if (atausbdebug > 1) { device_printf(sc->dev, "%s: max_bulk=%d, ata_bytecount=%d\n", __FUNCTION__, max_bulk, sc->ata_bytecount); } if (sc->ata_bytecount == 0) { - atausb_transfer_start(sc, ATAUSB_T_BBB_STATUS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_STATUS); return; } if (max_bulk > sc->ata_bytecount) { @@ -624,14 +627,14 @@ xfer->timeout = sc->timeout; xfer->frlengths[0] = max_bulk; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { - atausb_tr_error(xfer); + if (xfer->error == USB_ERR_CANCELLED) { + atausb2_tr_error(xfer); } else { - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); } return; @@ -639,34 +642,34 @@ } static void -atausb_t_bbb_data_rd_cs_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_rd_cs_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, ATAUSB_T_BBB_DATA_READ); return; } static void -atausb_t_bbb_data_write_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_write_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; uint32_t max_bulk = xfer->max_data_length; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: sc->ata_bytecount -= xfer->actlen; sc->ata_data += xfer->actlen; sc->ata_donecount += xfer->actlen; - case USBD_ST_SETUP: + case USB_ST_SETUP: if (atausbdebug > 1) { device_printf(sc->dev, "%s: max_bulk=%d, ata_bytecount=%d\n", __FUNCTION__, max_bulk, sc->ata_bytecount); } if (sc->ata_bytecount == 0) { - atausb_transfer_start(sc, ATAUSB_T_BBB_STATUS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_STATUS); return; } if (max_bulk > sc->ata_bytecount) { @@ -675,17 +678,17 @@ xfer->timeout = sc->timeout; xfer->frlengths[0] = max_bulk; - usbd_copy_in(xfer->frbuffers, 0, + usb2_copy_in(xfer->frbuffers, 0, sc->ata_data, max_bulk); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { - atausb_tr_error(xfer); + if (xfer->error == USB_ERR_CANCELLED) { + atausb2_tr_error(xfer); } else { - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_WR_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_WR_CS); } return; @@ -693,27 +696,27 @@ } static void -atausb_t_bbb_data_wr_cs_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_wr_cs_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, ATAUSB_T_BBB_DATA_WRITE); return; } static void -atausb_t_bbb_status_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_status_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; struct ata_request *request = sc->ata_request; uint32_t residue; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: if (xfer->actlen < sizeof(sc->csw)) { bzero(&(sc->csw), sizeof(sc->csw)); } - usbd_copy_out(xfer->frbuffers, 0, &(sc->csw), xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, &(sc->csw), xfer->actlen); if (request->flags & (ATA_R_READ | ATA_R_WRITE)) { request->donecount = sc->ata_donecount; @@ -778,19 +781,19 @@ mtx_lock(xfer->priv_mtx); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: tr_error: - if ((xfer->error == USBD_ERR_CANCELLED) || + if ((xfer->error == USB_ERR_CANCELLED) || (sc->status_try)) { - atausb_tr_error(xfer); + atausb2_tr_error(xfer); } else { sc->status_try = 1; - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); } return; @@ -798,7 +801,7 @@ } static void -atausb_cancel_request(struct atausb_softc *sc) +atausb2_cancel_request(struct atausb2_softc *sc) { struct ata_request *request; @@ -821,19 +824,19 @@ } static void -atausb_tr_error(struct usbd_xfer *xfer) +atausb2_tr_error(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { if (atausbdebug) { device_printf(sc->dev, "transfer failed, %s, in state %d " - "-> BULK reset\n", usbd_errstr(xfer->error), + "-> BULK reset\n", usb2_errstr(xfer->error), sc->last_xfer_no); } } - atausb_cancel_request(sc); + atausb2_cancel_request(sc); return; } @@ -858,7 +861,7 @@ static int ata_usbchannel_begin_transaction(struct ata_request *request) { - struct atausb_softc *sc = + struct atausb2_softc *sc = device_get_softc(device_get_parent(request->parent)); int error; @@ -906,7 +909,7 @@ sc->ata_data = request->data; sc->ata_donecount = 0; - usbd_transfer_start(sc->xfer[sc->last_xfer_no]); + usb2_transfer_start(sc->xfer[sc->last_xfer_no]); error = ATA_OP_CONTINUES; } else { request->result = EIO; @@ -1034,10 +1037,10 @@ static void ata_usbchannel_setmode(device_t parent, device_t dev) { - struct atausb_softc *sc = device_get_softc(GRANDPARENT(dev)); + struct atausb2_softc *sc = device_get_softc(GRANDPARENT(dev)); struct ata_device *atadev = device_get_softc(dev); - if (sc->usb_speed == USB_SPEED_HIGH) + if (sc->usb2_speed == USB_SPEED_HIGH) atadev->mode = ATA_USB2; else atadev->mode = ATA_USB1; @@ -1047,7 +1050,7 @@ static int ata_usbchannel_locking(device_t dev, int flags) { - struct atausb_softc *sc = device_get_softc(device_get_parent(dev)); + struct atausb2_softc *sc = device_get_softc(device_get_parent(dev)); struct ata_channel *ch = device_get_softc(dev); int res = -1; ==== //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#2 (text+ko) ==== @@ -102,17 +102,20 @@ * umass_cam_cb again to complete the CAM command. */ -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> +#include <dev/usb2/include/usb2_devid.h> +#include <dev/usb2/include/usb2_standard.h> +#include <dev/usb2/include/usb2_mfunc.h> +#include <dev/usb2/include/usb2_error.h> +#include <dev/usb2/include/usb2_revision.h> -#include <dev/usb/usb_port.h> -#include <dev/usb/usb.h> -#include <dev/usb/usb_subr.h> +#include <dev/usb2/core/usb2_core.h> +#include <dev/usb2/core/usb2_util.h> +#include <dev/usb2/core/usb2_busdma.h> +#include <dev/usb2/core/usb2_request.h> +#include <dev/usb2/core/usb2_debug.h> +#include <dev/usb2/core/usb2_process.h> +#include <dev/usb2/core/usb2_transfer.h> -#include "usbdevs.h" - #include <cam/cam.h> #include <cam/cam_ccb.h> #include <cam/cam_sim.h> @@ -157,8 +160,8 @@ #define UDMASS_ALL 0xffff0000 /* all of the above */ static int umass_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass"); -SYSCTL_INT(_hw_usb_umass, OID_AUTO, debug, CTLFLAG_RW, +SYSCTL_NODE(_hw_usb2, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass"); +SYSCTL_INT(_hw_usb2_umass, OID_AUTO, debug, CTLFLAG_RW, &umass_debug, 0, "umass debug level"); #else #define DIF(...) do { } while (0) @@ -927,9 +930,9 @@ umass_cbi_sbl_t sbl; /* status block */ device_t sc_dev; - struct usbd_device *sc_udev; + struct usb2_device *sc_udev; struct cam_sim *sc_sim; /* SCSI Interface Module */ - struct usbd_xfer *sc_xfer[UMASS_T_MAX]; + struct usb2_xfer *sc_xfer[UMASS_T_MAX]; /* * The command transform function is used to convert the SCSI @@ -962,35 +965,35 @@ static device_attach_t umass_attach; static device_detach_t umass_detach; -static usbd_callback_t umass_tr_error; -static usbd_callback_t umass_t_bbb_reset1_callback; -static usbd_callback_t umass_t_bbb_reset2_callback; -static usbd_callback_t umass_t_bbb_reset3_callback; -static usbd_callback_t umass_t_bbb_command_callback; -static usbd_callback_t umass_t_bbb_data_read_callback; -static usbd_callback_t umass_t_bbb_data_rd_cs_callback; -static usbd_callback_t umass_t_bbb_data_write_callback; -static usbd_callback_t umass_t_bbb_data_wr_cs_callback; -static usbd_callback_t umass_t_bbb_status_callback; -static usbd_callback_t umass_t_cbi_reset1_callback; -static usbd_callback_t umass_t_cbi_reset2_callback; -static usbd_callback_t umass_t_cbi_reset3_callback; -static usbd_callback_t umass_t_cbi_reset4_callback; -static usbd_callback_t umass_t_cbi_command_callback; -static usbd_callback_t umass_t_cbi_data_read_callback; -static usbd_callback_t umass_t_cbi_data_rd_cs_callback; -static usbd_callback_t umass_t_cbi_data_write_callback; -static usbd_callback_t umass_t_cbi_data_wr_cs_callback; -static usbd_callback_t umass_t_cbi_status_callback; +static usb2_callback_t umass_tr_error; +static usb2_callback_t umass_t_bbb_reset1_callback; +static usb2_callback_t umass_t_bbb_reset2_callback; +static usb2_callback_t umass_t_bbb_reset3_callback; +static usb2_callback_t umass_t_bbb_command_callback; +static usb2_callback_t umass_t_bbb_data_read_callback; +static usb2_callback_t umass_t_bbb_data_rd_cs_callback; +static usb2_callback_t umass_t_bbb_data_write_callback; +static usb2_callback_t umass_t_bbb_data_wr_cs_callback; +static usb2_callback_t umass_t_bbb_status_callback; +static usb2_callback_t umass_t_cbi_reset1_callback; +static usb2_callback_t umass_t_cbi_reset2_callback; +static usb2_callback_t umass_t_cbi_reset3_callback; +static usb2_callback_t umass_t_cbi_reset4_callback; +static usb2_callback_t umass_t_cbi_command_callback; +static usb2_callback_t umass_t_cbi_data_read_callback; +static usb2_callback_t umass_t_cbi_data_rd_cs_callback; +static usb2_callback_t umass_t_cbi_data_write_callback; +static usb2_callback_t umass_t_cbi_data_wr_cs_callback; +static usb2_callback_t umass_t_cbi_status_callback; static void umass_cancel_ccb(struct umass_softc *sc); static void umass_init_shuttle(struct umass_softc *sc); static void umass_reset(struct umass_softc *sc); -static void umass_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void umass_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static void umass_command_start(struct umass_softc *sc, uint8_t dir, void *data_ptr, uint32_t data_len, uint32_t data_timeout, umass_callback_t *callback, union ccb *ccb); static uint8_t umass_bbb_get_max_lun(struct umass_softc *sc); static void umass_cbi_start_status(struct umass_softc *sc); -static void umass_t_cbi_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void umass_t_cbi_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static int umass_cam_attach_sim(struct umass_softc *sc); static void umass_cam_rescan_callback(struct cam_periph *periph, union ccb *ccb); static void umass_cam_rescan(struct umass_softc *sc); @@ -1017,13 +1020,13 @@ #endif >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807031926.m63JQERN009865>