svn commit: r205033 - head/sys/dev/usb/template
Andrew Thompson
thompsa at FreeBSD.org
Thu Mar 11 21:48:10 UTC 2010
Author: thompsa
Date: Thu Mar 11 21:48:10 2010
New Revision: 205033
URL: http://svn.freebsd.org/changeset/base/205033
Log:
isochronous endpoint descriptors should have two more bytes which are zero by
default.
Submitted by: Hans Petter Selasky
Modified:
head/sys/dev/usb/template/usb_template.c
Modified: head/sys/dev/usb/template/usb_template.c
==============================================================================
--- head/sys/dev/usb/template/usb_template.c Thu Mar 11 21:47:25 2010 (r205032)
+++ head/sys/dev/usb/template/usb_template.c Thu Mar 11 21:48:10 2010 (r205033)
@@ -162,15 +162,23 @@ usb_make_endpoint_desc(struct usb_temp_s
const void **rd;
uint16_t old_size;
uint16_t mps;
- uint8_t ea = 0; /* Endpoint Address */
- uint8_t et = 0; /* Endpiont Type */
+ uint8_t ea; /* Endpoint Address */
+ uint8_t et; /* Endpiont Type */
/* Reserve memory */
old_size = temp->size;
- temp->size += sizeof(*ed);
- /* Scan all Raw Descriptors first */
+ ea = (ted->bEndpointAddress & (UE_ADDR | UE_DIR_IN | UE_DIR_OUT));
+ et = (ted->bmAttributes & UE_XFERTYPE);
+
+ if (et == UE_ISOCHRONOUS) {
+ /* account for extra byte fields */
+ temp->size += sizeof(*ed) + 2;
+ } else {
+ temp->size += sizeof(*ed);
+ }
+ /* Scan all Raw Descriptors first */
rd = ted->ppRawDesc;
if (rd) {
while (*rd) {
@@ -192,8 +200,6 @@ usb_make_endpoint_desc(struct usb_temp_s
/* escape for Zero Max Packet Size */
mps = 0;
}
- ea = (ted->bEndpointAddress & (UE_ADDR | UE_DIR_IN | UE_DIR_OUT));
- et = (ted->bmAttributes & UE_XFERTYPE);
/*
* Fill out the real USB endpoint descriptor
@@ -201,7 +207,10 @@ usb_make_endpoint_desc(struct usb_temp_s
*/
if (temp->buf) {
ed = USB_ADD_BYTES(temp->buf, old_size);
- ed->bLength = sizeof(*ed);
+ if (et == UE_ISOCHRONOUS)
+ ed->bLength = sizeof(*ed) + 2;
+ else
+ ed->bLength = sizeof(*ed);
ed->bDescriptorType = UDESC_ENDPOINT;
ed->bEndpointAddress = ea;
ed->bmAttributes = ted->bmAttributes;
More information about the svn-src-head
mailing list