PERFORCE change 144971 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Jul 9 21:36:06 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144971
Change 144971 by hselasky at hselasky_laptop001 on 2008/07/09 21:35:16
More changes related to LibUSB support.
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#4 edit
.. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#4 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#4 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_compat_linux.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#10 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#8 edit
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#9 edit
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_revision.h#2 edit
.. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#5 edit
.. //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#4 edit
.. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#4 edit
.. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_cdce.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_msc.c#3 edit
.. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_mtp.c#3 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#4 (text+ko) ====
@@ -35,7 +35,6 @@
#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>
#define USB_DEBUG_VAR usb2_debug
==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#3 (text+ko) ====
@@ -35,7 +35,6 @@
#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/include/usb2_ioctl.h>
#define USB_DEBUG_VAR usb2_debug
==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#4 (text+ko) ====
@@ -46,7 +46,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_defs.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#5 (text+ko) ====
@@ -28,7 +28,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#6 (text+ko) ====
@@ -48,7 +48,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_defs.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#5 (text+ko) ====
@@ -53,7 +53,6 @@
*/
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#4 (text+ko) ====
@@ -37,7 +37,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_defs.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#5 (text) ====
@@ -26,7 +26,6 @@
__FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.4 2007/10/29 21:01:50 imp Exp $");
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#5 (text+ko) ====
@@ -51,7 +51,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_defs.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#5 (text+ko) ====
@@ -40,7 +40,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_defs.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#5 (text+ko) ====
@@ -49,7 +49,6 @@
*/
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#6 (text+ko) ====
@@ -25,7 +25,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
#include <dev/usb2/include/usb2_defs.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#5 (text+ko) ====
@@ -28,7 +28,6 @@
*/
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_standard.h>
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_compat_linux.c#5 (text+ko) ====
@@ -28,7 +28,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
#include <dev/usb2/include/usb2_standard.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_compat_linux.h>
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#10 (text+ko) ====
@@ -51,6 +51,9 @@
#include <sys/malloc.h>
#include <sys/priv.h>
+#include <dev/usb2/include/usb2_mfunc.h>
+#include <dev/usb2/include/usb2_revision.h>
+
#include "usb2_if.h"
#include "opt_usb.h"
@@ -81,12 +84,6 @@
#define USB_HUB_MAX_DEPTH 5
-/* USB modes */
-
-#define USB_MODE_HOST 0 /* default */
-#define USB_MODE_DEVICE 1
-#define USB_MODE_MAX 2
-
/* USB transfer states */
#define USB_ST_SETUP 0
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#12 (text+ko) ====
@@ -27,7 +27,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_standard.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_ioctl.h>
#define USB_DEBUG_VAR usb2_debug
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#12 (text+ko) ====
@@ -28,7 +28,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_ioctl.h>
#include <dev/usb2/include/usb2_error.h>
-#include <dev/usb2/include/usb2_revision.h>
#define USB_DEBUG_VAR ugen_debug
@@ -730,6 +729,75 @@
}
/*------------------------------------------------------------------------*
+ * usb2_gen_fill_devicenames
+ *
+ * This function dumps information about an USB device names to
+ * userland.
+ *
+ * Returns:
+ * 0: Success
+ * Else: Failure
+ *------------------------------------------------------------------------*/
+static int
+usb2_gen_fill_devicenames(struct usb2_fifo *f, struct usb2_device_names *dn)
+{
+ struct usb2_interface *iface;
+ const char *ptr;
+ char *dst;
+ char buf[32];
+ int error = 0;
+ int len;
+ int max_len;
+ uint8_t i;
+ uint8_t first = 1;
+
+ if (f->flag_no_uref) {
+ /* control endpoint only */
+ return (EINVAL);
+ }
+ max_len = dn->udn_devnames_len;
+ dst = dn->udn_devnames_ptr;
+
+ if (max_len == 0) {
+ return (EINVAL);
+ }
+ /* put a zero there */
+ error = copyout("", dst, 1);
+ if (error) {
+ return (error);
+ }
+ for (i = 0;; i++) {
+ iface = usb2_get_iface(f->udev, i);
+ if (iface == NULL) {
+ break;
+ }
+ if ((iface->subdev != NULL) &&
+ device_is_attached(iface->subdev)) {
+ ptr = device_get_nameunit(iface->subdev);
+ if (!first) {
+ strlcpy(buf, ", ", sizeof(buf));
+ } else {
+ buf[0] = 0;
+ }
+ strlcat(buf, ptr, sizeof(buf));
+ len = strlen(buf) + 1;
+ if (len > max_len) {
+ break;
+ }
+ error = copyout(buf, dst, len);
+ if (error) {
+ return (error);
+ }
+ len--;
+ dst += len;
+ max_len -= len;
+ first = 0;
+ }
+ }
+ return (0);
+}
+
+/*------------------------------------------------------------------------*
* usb2_gen_fill_deviceinfo
*
* This function dumps information about an USB device to the
@@ -742,15 +810,8 @@
static int
usb2_gen_fill_deviceinfo(struct usb2_fifo *f, struct usb2_device_info *di)
{
- enum {
- MAX_PORT = (sizeof(di->udi_ports) / sizeof(di->udi_ports[0])),
- };
- struct usb2_port *p;
- struct usb2_interface *iface;
- struct usb2_device *child;
struct usb2_device *udev;
- uint8_t i;
- uint8_t max;
+ struct usb2_device *hub;
if (f->flag_no_uref) {
/* control endpoint only */
@@ -762,6 +823,9 @@
di->udi_bus = device_get_unit(udev->bus->bdev);
di->udi_addr = udev->address;
+ di->udi_index = udev->device_index;
+ strlcpy(di->udi_serial, udev->serial,
+ sizeof(di->udi_serial));
strlcpy(di->udi_vendor, udev->manufacturer,
sizeof(di->udi_vendor));
strlcpy(di->udi_product, udev->product,
@@ -774,38 +838,22 @@
di->udi_class = udev->ddesc.bDeviceClass;
di->udi_subclass = udev->ddesc.bDeviceSubClass;
di->udi_protocol = udev->ddesc.bDeviceProtocol;
- di->udi_config = udev->curr_config_no;
+ di->udi_config_no = udev->curr_config_no;
+ di->udi_config_index = udev->curr_config_index;
di->udi_power = udev->flags.self_powered ? 0 : udev->power;
di->udi_speed = udev->speed;
-
- for (i = 0; i != MIN(USB_MAX_DEVNAMES, USB_IFACE_MAX); i++) {
- iface = usb2_get_iface(udev, i);
- if (iface && (iface->subdev != NULL) &&
- device_is_attached(iface->subdev)) {
- strlcpy(di->udi_devnames[i],
- device_get_nameunit(iface->subdev),
- USB_MAX_DEVNAMELEN);
- }
+ di->udi_mode = udev->flags.usb2_mode;
+ if (udev->flags.suspended) {
+ di->udi_devstate = USB_DEVSTATE_SUSPENDED;
+ } else {
+ di->udi_devstate = USB_DEVSTATE_ENABLED;
}
- if (udev->hub) {
-
- max = udev->hub->nports;
- if (max > MAX_PORT) {
- max = MAX_PORT;
- }
- di->udi_nports = max;
- p = udev->hub->ports;
- for (i = 0; i != max; i++, p++) {
-
- child = usb2_bus_port_get_device(udev->bus, p);
-
- if (child) {
- di->udi_ports[i] = p->device_index;
- } else {
- di->udi_ports[i] = USB_PORT_POWERED;
- }
- }
+ hub = udev->parent_hub;
+ if (hub) {
+ di->udi_hubaddr = hub->address;
+ di->udi_hubindex = hub->device_index;
+ di->udi_hubport = udev->port_no;
}
return (0);
}
@@ -1021,10 +1069,12 @@
/* security checks */
if (fs_ep.nFrames > xfer->max_frame_count) {
- return (EINVAL);
+ xfer->error = USB_ERR_INVAL;
+ goto complete;
}
if (fs_ep.nFrames == 0) {
- return (EINVAL);
+ xfer->error = USB_ERR_INVAL;
+ goto complete;
}
error = copyin(f->fs_ep_ptr +
ep_index, &fs_ep, sizeof(fs_ep));
@@ -1049,7 +1099,8 @@
return (error);
}
if (length >= sizeof(*req)) {
- return (EINVAL);
+ xfer->error = USB_ERR_INVAL;
+ goto complete;
}
if (length) {
error = copyin(uaddr, req, length);
@@ -1058,7 +1109,8 @@
}
}
if (ugen_check_request(req)) {
- return (EPERM);
+ xfer->error = USB_ERR_INVAL;
+ goto complete;
}
xfer->frlengths[0] = length;
@@ -1089,22 +1141,22 @@
if (xfer->timeout > 65535) {
xfer->timeout = 65535;
}
- if (fs_ep.flags & USB2_FS_FLAG_SINGLE_SHORT_OK)
+ if (fs_ep.flags & USB_FS_FLAG_SINGLE_SHORT_OK)
xfer->flags.short_xfer_ok = 1;
else
xfer->flags.short_xfer_ok = 0;
- if (fs_ep.flags & USB2_FS_FLAG_MULTI_SHORT_OK)
+ if (fs_ep.flags & USB_FS_FLAG_MULTI_SHORT_OK)
xfer->flags.short_frames_ok = 1;
else
xfer->flags.short_frames_ok = 0;
- if (fs_ep.flags & USB2_FS_FLAG_FORCE_SHORT)
+ if (fs_ep.flags & USB_FS_FLAG_FORCE_SHORT)
xfer->flags.force_short_xfer = 1;
else
xfer->flags.force_short_xfer = 0;
- if (fs_ep.flags & USB2_FS_FLAG_CLEAR_STALL)
+ if (fs_ep.flags & USB_FS_FLAG_CLEAR_STALL)
xfer->flags.stall_pipe = 1;
else
xfer->flags.stall_pipe = 0;
@@ -1114,33 +1166,34 @@
error = copyin(fs_ep.pLength + n,
&length, sizeof(length));
if (error) {
- return (error);
+ break;
}
xfer->frlengths[n] = length;
if (length > rem) {
- return (EINVAL);
+ xfer->error = USB_ERR_INVAL;
+ goto complete;
}
rem -= length;
if (!isread) {
+ /* we need to know the source buffer */
+ error = copyin(fs_ep.ppBuffer + n,
+ &uaddr, sizeof(uaddr));
+ if (error) {
+ break;
+ }
if (xfer->flags_int.isochronous_xfr) {
/* move data */
- error = copyin(USB_ADD_BYTES(uaddr, offset),
- USB_ADD_BYTES(xfer->frbuffers[0].buffer,
+ error = copyin(uaddr, USB_ADD_BYTES(
+ xfer->frbuffers[0].buffer,
offset), length);
if (error) {
- return (error);
+ break;
}
} else {
- /* we need to know the source buffer */
- error = copyin(fs_ep.ppBuffer + n,
- &uaddr, sizeof(uaddr));
- if (error) {
- return (error);
- }
/* set current frame offset */
usb2_set_frame_offset(xfer, offset, n);
@@ -1148,13 +1201,19 @@
error = copyin(uaddr, xfer->frbuffers[n].buffer,
length);
if (error) {
- return (error);
+ break;
}
}
}
offset += length;
}
return (error);
+
+complete:
+ mtx_lock(f->priv_mtx);
+ ugen_fs_set_complete(f, ep_index);
+ mtx_unlock(f->priv_mtx);
+ return (0);
}
static int
@@ -1195,11 +1254,6 @@
if (xfer->error) {
goto complete;
}
- error = copyin(fs_ep.ppBuffer,
- &uaddr, sizeof(uaddr));
- if (error) {
- return (error);
- }
if (xfer->flags_int.control_xfr) {
req = xfer->frbuffers[0].buffer;
@@ -1220,6 +1274,12 @@
for (; n != xfer->nframes; n++) {
+ /* we need to know the destination buffer */
+ error = copyin(fs_ep.ppBuffer + n,
+ &uaddr, sizeof(uaddr));
+ if (error) {
+ return (error);
+ }
if (xfer->flags_int.isochronous_xfr) {
/* we need to know the initial length */
@@ -1230,7 +1290,8 @@
}
/* range check */
if (length > rem) {
- return (EINVAL);
+ fs_ep.status = USB_ERR_INVAL;
+ goto complete;
}
rem -= length;
temp = offset + length;
@@ -1241,7 +1302,7 @@
}
/* move data */
error = copyout(USB_ADD_BYTES(xfer->frbuffers[0].buffer,
- offset), USB_ADD_BYTES(uaddr, offset), length);
+ offset), uaddr, length);
if (error) {
return (error);
}
@@ -1250,12 +1311,6 @@
length = xfer->frlengths[n];
- /* we need to know the destination buffer */
- error = copyin(fs_ep.ppBuffer + n,
- &uaddr, sizeof(uaddr));
- if (error) {
- return (error);
- }
/* move data */
error = copyout(xfer->frbuffers[n].buffer,
uaddr, length);
@@ -1276,7 +1331,6 @@
/* update "aFrames" */
error = copyout(&fs_ep.aFrames, &(f->fs_ep_ptr +
ep_index)->aFrames, sizeof(fs_ep.aFrames));
-
if (error) {
return (error);
}
@@ -1394,7 +1448,6 @@
}
f->fs_ep_max = pd->ep_index_max;
f->fs_ep_ptr = pd->pEndpoints;
- f->flag_no_uref = 1; /* drop locks we don't need */
break;
}
@@ -1429,11 +1482,10 @@
break;
}
if (pd->max_bufsize > USB_FS_MAX_BUFSIZE) {
- error = EINVAL;
- break;
+ pd->max_bufsize = USB_FS_MAX_BUFSIZE;
}
if (pd->max_frames > USB_FS_MAX_FRAMES) {
- error = EINVAL;
+ pd->max_frames = USB_FS_MAX_FRAMES;
break;
}
if (pd->max_frames == 0) {
@@ -1500,11 +1552,18 @@
f->fs_xfer + pd->ep_index, usb2_config, 1,
f, f->priv_mtx);
if (error == 0) {
- /* update maximum buffer size */
+ /* update maximums */
+ pd->max_packet_length =
+ f->fs_xfer[pd->ep_index]->max_frame_size;
pd->max_bufsize =
- f->fs_xfer[pd->ep_index]->max_frame_size;
+ f->fs_xfer[pd->ep_index]->max_data_length;
f->fs_xfer[pd->ep_index]->priv_fifo =
((uint8_t *)0) + pd->ep_index;
+ /*
+ * Increase performance by dropping locks we
+ * don't need:
+ */
+ f->flag_no_uref = 1;
} else {
error = ENOMEM;
}
@@ -1784,6 +1843,10 @@
error = usb2_gen_fill_deviceinfo(f, addr);
break;
+ case USB_GET_DEVICENAMES:
+ error = usb2_gen_fill_devicenames(f, addr);
+ break;
+
case USB_DEVICESTATS:{
struct usb2_device_stats *ustat = addr;
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#11 (text+ko) ====
@@ -33,7 +33,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_standard.h>
-#include <dev/usb2/include/usb2_revision.h>
#define USB_DEBUG_VAR uhub_debug
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#8 (text+ko) ====
@@ -790,6 +790,10 @@
}
/* get full descriptor */
len = UGETW(cd.wTotalLength);
+ if (len < sizeof(*cdesc)) {
+ /* corrupt descriptor */
+ return (USB_ERR_INVAL);
+ }
cdesc = malloc(len, mtype, M_WAITOK);
if (cdesc == NULL) {
return (USB_ERR_NOMEM);
==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#12 (text+ko) ====
@@ -26,7 +26,6 @@
#include <dev/usb2/include/usb2_mfunc.h>
#include <dev/usb2/include/usb2_error.h>
#include <dev/usb2/include/usb2_standard.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#define USB_DEBUG_VAR usb2_debug
==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#9 (text+ko) ====
@@ -63,8 +63,12 @@
uint8_t reserved[8];
};
-#define USB_MAX_DEVNAMES 4
-#define USB_MAX_DEVNAMELEN 16
+struct usb2_device_names {
+ char *udn_devnames_ptr; /* userland pointer to comma separated
+ * list of device names */
+ uint16_t udn_devnames_len; /* maximum string length including
+ * terminating zero */
+};
struct usb2_device_info {
uint16_t udi_productNo;
@@ -74,23 +78,27 @@
* selfpowered */
uint8_t udi_bus;
uint8_t udi_addr; /* device address */
+ uint8_t udi_index; /* device index */
uint8_t udi_class;
uint8_t udi_subclass;
uint8_t udi_protocol;
- uint8_t udi_config;
- uint8_t udi_speed;
+ uint8_t udi_config_no; /* current config number */
+ uint8_t udi_config_index; /* current config index */
+ uint8_t udi_speed; /* see "USB_SPEED_XXX" */
+ uint8_t udi_mode; /* see "USB_MODE_XXX" */
uint8_t udi_nports;
- uint8_t udi_ports[16]; /* HUB only: addresses of devices on
- * ports */
-#define USB_PORT_ENABLED 0xff
-#define USB_PORT_SUSPENDED 0xfe
-#define USB_PORT_POWERED 0xfd
-#define USB_PORT_DISABLED 0xfc
-
+ uint8_t udi_hubaddr; /* parent HUB address */
+ uint8_t udi_hubindex; /* parent HUB device index */
+ uint8_t udi_hubport; /* parent HUB port */
+ uint8_t udi_devstate;
+#define USB_DEVSTATE_ENABLED 0x0
+#define USB_DEVSTATE_SUSPENDED 0x1
+#define USB_DEVSTATE_POWERED 0x2
+#define USB_DEVSTATE_DISABLED 0x3
char udi_product[128];
char udi_vendor[128];
+ char udi_serial[64];
char udi_release[8];
- char udi_devnames[USB_MAX_DEVNAMES][USB_MAX_DEVNAMELEN];
};
struct usb2_device_stats {
@@ -98,10 +106,6 @@
uint32_t uds_requests_fail[4]; /* Indexed by transfer type UE_XXX */
};
-struct usb2_device_enumerate {
- uint8_t ude_addr; /* not used */
-};
-
struct usb2_fs_start {
uint8_t ep_index;
};
@@ -116,8 +120,6 @@
/* This structure is used for all endpoint types */
struct usb2_fs_endpoint {
- void *priv_sc0; /* private client data */
- void *priv_sc1; /* private client data */
/*
* NOTE: isochronous USB transfer only use one buffer, but can have
* multiple frame lengths !
@@ -129,16 +131,16 @@
uint32_t aFrames; /* actual number of frames */
uint16_t flags;
/* a single short frame will terminate */
-#define USB2_FS_FLAG_SINGLE_SHORT_OK 0x0001
+#define USB_FS_FLAG_SINGLE_SHORT_OK 0x0001
/* multiple short frames are allowed */
-#define USB2_FS_FLAG_MULTI_SHORT_OK 0x0002
+#define USB_FS_FLAG_MULTI_SHORT_OK 0x0002
/* all frame(s) transmitted are short terminated */
-#define USB2_FS_FLAG_FORCE_SHORT 0x0004
+#define USB_FS_FLAG_FORCE_SHORT 0x0004
/* will do a clear-stall before xfer */
-#define USB2_FS_FLAG_CLEAR_STALL 0x0008
+#define USB_FS_FLAG_CLEAR_STALL 0x0008
uint16_t timeout; /* in milliseconds */
/* timeout value for no timeout */
-#define USB2_FS_TIMEOUT_NONE 0
+#define USB_FS_TIMEOUT_NONE 0
uint8_t status; /* see USB_ERR_XXX */
};
@@ -158,6 +160,7 @@
uint32_t max_bufsize;
#define USB_FS_MAX_FRAMES (1 << 12)
uint32_t max_frames;
+ uint16_t max_packet_length; /* read only */
uint8_t dev_index; /* currently unused */
uint8_t ep_index;
uint8_t ep_no; /* bEndpointNumber */
@@ -177,7 +180,7 @@
#define USB_DISCOVER _IO ('U', 3)
#define USB_DEVICEINFO _IOWR('U', 4, struct usb2_device_info)
#define USB_DEVICESTATS _IOR ('U', 5, struct usb2_device_stats)
-#define USB_DEVICEENUMERATE _IOW ('U', 6, struct usb2_device_enumerate)
+#define USB_DEVICEENUMERATE _IOW ('U', 6, int)
/* Generic HID device */
#define USB_GET_REPORT_DESC _IOR ('U', 21, struct usb2_gen_descriptor)
@@ -206,6 +209,11 @@
#define USB_SET_BUFFER_SIZE _IOW ('U', 118, uint32_t)
#define USB_SET_RX_STALL_FLAG _IOW ('U', 119, int)
#define USB_SET_TX_STALL_FLAG _IOW ('U', 120, int)
+#define USB_GET_DEVICENAMES _IOW ('U', 121, struct usb2_device_names)
+#define USB_CLAIM_INTERFACE _IOW ('U', 122, int)
+#define USB_RELEASE_INTERFACE _IOW ('U', 123, int)
+#define USB_IFACE_DRIVER_ACTIVE _IOW ('U', 124, int)
+#define USB_IFACE_DRIVER_DETACH _IOW ('U', 125, int)
/* Modem device */
#define USB_GET_CM_OVER_DATA _IOR ('U', 130, int)
==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_revision.h#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/*
+/*-
* Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -53,4 +53,13 @@
USB_MAKE_ENUM(USB_REV);
+/*
+ * The "USB_MODE" macro defines all the supported USB modes.
+ */
+#define USB_MODE(m,n)\
+m(n, USB_MODE_HOST)\
+m(n, USB_MODE_DEVICE)\
+
+USB_MAKE_ENUM(USB_MODE);
+
#endif /* _USB2_REVISION_H_ */
==== //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#3 (text+ko) ====
@@ -61,7 +61,6 @@
#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>
#define USB_DEBUG_VAR udbp_debug
==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#5 (text+ko) ====
@@ -56,7 +56,6 @@
#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>
#define USB_DEBUG_VAR uaudio_debug
==== //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#4 (text) ====
@@ -34,7 +34,6 @@
#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>
==== //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#3 (text+ko) ====
@@ -106,7 +106,6 @@
#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>
==== //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#4 (text+ko) ====
@@ -38,7 +38,6 @@
#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/include/usb2_defs.h>
#define USB_DEBUG_VAR ustorage_fs_debug
==== //depot/projects/usb/src/sys/dev/usb2/template/usb2_template.c#3 (text+ko) ====
@@ -31,7 +31,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_cdc.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/include/usb2_defs.h>
#include <dev/usb2/include/usb2_error.h>
==== //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_cdce.c#3 (text+ko) ====
@@ -34,7 +34,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_cdc.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/core/usb2_core.h>
==== //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_msc.c#3 (text+ko) ====
@@ -33,7 +33,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/core/usb2_core.h>
==== //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_mtp.c#3 (text+ko) ====
@@ -34,7 +34,6 @@
#include <dev/usb2/include/usb2_standard.h>
#include <dev/usb2/include/usb2_mfunc.h>
-#include <dev/usb2/include/usb2_revision.h>
#include <dev/usb2/core/usb2_core.h>
More information about the p4-projects
mailing list