PERFORCE change 144564 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Jul 3 19:26:15 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144564
Change 144564 by hselasky at 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) <<<
More information about the p4-projects
mailing list