[coreboot-gerrit] New patch to review for coreboot: 6f85ecb libpayload: usb: Skip non-endpoint descriptors during init

Nico Huber (nico.huber@secunet.com) gerrit at coreboot.org
Thu Jun 13 14:46:30 CEST 2013


Nico Huber (nico.huber at secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3446

-gerrit

commit 6f85ecb16787c71e909c3c12ecd81813c4a1f7d6
Author: Nico Huber <nico.huber at secunet.com>
Date:   Mon Jun 10 13:43:29 2013 +0200

    libpayload: usb: Skip non-endpoint descriptors during init
    
    During device initialization, skip any non-endpoint descriptor before
    reading the endpoint descriptors. By now, only HID descriptors were
    skipped.
    
    Change-Id: I190f3ae44b864aa71d5f32c3738097cf8f33a61b
    Signed-off-by: Nico Huber <nico.huber at secunet.com>
---
 payloads/libpayload/drivers/usb/usb.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/payloads/libpayload/drivers/usb/usb.c b/payloads/libpayload/drivers/usb/usb.c
index 23561c4..6dafd07 100644
--- a/payloads/libpayload/drivers/usb/usb.c
+++ b/payloads/libpayload/drivers/usb/usb.c
@@ -332,8 +332,10 @@ set_address (hci_t *controller, int speed, int hubport, int hubaddr)
 			endpoint_descriptor_t *endp =
 				(endpoint_descriptor_t *) (((char *) current)
 							   + current->bLength);
-			if (interface->bInterfaceClass == 0x3)
-				endp = (endpoint_descriptor_t *) (((char *) endp) + ((char *) endp)[0]);	// ignore HID descriptor
+			/* Skip any non-endpoint descriptor */
+			if (endp->bDescriptorType != 0x05)
+				endp = (endpoint_descriptor_t *)(((char *)endp) + ((char *)endp)[0]);
+
 			memset (dev->endpoints, 0, sizeof (dev->endpoints));
 			dev->num_endp = 1;	// 0 always exists
 			dev->endpoints[0].dev = dev;



More information about the coreboot-gerrit mailing list