Skip site navigation (1)Skip section navigation (2)
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>