summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2010-06-22 20:57:48 +0000
committerthompsa <thompsa@FreeBSD.org>2010-06-22 20:57:48 +0000
commitfe6aa0a139aad7873eb103f50e6b1a5cf57d795b (patch)
tree309d928489f1ea66c71c2f1880e5b0478ac9dd21
parentcc9971b6817a61a639c00353a0740ae955030847 (diff)
downloadFreeBSD-src-fe6aa0a139aad7873eb103f50e6b1a5cf57d795b.zip
FreeBSD-src-fe6aa0a139aad7873eb103f50e6b1a5cf57d795b.tar.gz
Add support for LOW speed BULK transfers. This mode is not recommended by the
USB 2.0 standard, though some USB devices use it anyway. Submitted by: Hans Petter Selasky
-rw-r--r--sys/dev/usb/controller/ehci.c4
-rw-r--r--sys/dev/usb/controller/ohci.c4
-rw-r--r--sys/dev/usb/controller/uhci.c4
-rw-r--r--sys/dev/usb/usb_transfer.c2
4 files changed, 4 insertions, 10 deletions
diff --git a/sys/dev/usb/controller/ehci.c b/sys/dev/usb/controller/ehci.c
index 6f22c0a..40c9524 100644
--- a/sys/dev/usb/controller/ehci.c
+++ b/sys/dev/usb/controller/ehci.c
@@ -3792,9 +3792,7 @@ ehci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
break;
case UE_BULK:
- if (udev->speed != USB_SPEED_LOW) {
- ep->methods = &ehci_device_bulk_methods;
- }
+ ep->methods = &ehci_device_bulk_methods;
break;
default:
/* do nothing */
diff --git a/sys/dev/usb/controller/ohci.c b/sys/dev/usb/controller/ohci.c
index fa7f23a..0d630d7 100644
--- a/sys/dev/usb/controller/ohci.c
+++ b/sys/dev/usb/controller/ohci.c
@@ -2614,9 +2614,7 @@ ohci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
break;
case UE_BULK:
- if (udev->speed != USB_SPEED_LOW) {
- ep->methods = &ohci_device_bulk_methods;
- }
+ ep->methods = &ohci_device_bulk_methods;
break;
default:
/* do nothing */
diff --git a/sys/dev/usb/controller/uhci.c b/sys/dev/usb/controller/uhci.c
index f87907c..50fdb0d 100644
--- a/sys/dev/usb/controller/uhci.c
+++ b/sys/dev/usb/controller/uhci.c
@@ -3068,9 +3068,7 @@ uhci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
break;
case UE_BULK:
- if (udev->speed != USB_SPEED_LOW) {
- ep->methods = &uhci_device_bulk_methods;
- }
+ ep->methods = &uhci_device_bulk_methods;
break;
default:
/* do nothing */
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c
index 535d12b..e9bd64e 100644
--- a/sys/dev/usb/usb_transfer.c
+++ b/sys/dev/usb/usb_transfer.c
@@ -3057,7 +3057,7 @@ usbd_get_std_packet_size(struct usb_std_packet_size *ptr,
};
static const uint16_t bulk_min[USB_SPEED_MAX] = {
- [USB_SPEED_LOW] = 0, /* not supported */
+ [USB_SPEED_LOW] = 8,
[USB_SPEED_FULL] = 8,
[USB_SPEED_HIGH] = 512,
[USB_SPEED_VARIABLE] = 512,
OpenPOWER on IntegriCloud