[coreboot-gerrit] New patch to review for coreboot: 5ada3c5 usbdebug: Only test two possible USB device numbers

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Wed Aug 14 17:04:43 CEST 2013


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3861

-gerrit

commit 5ada3c5aa6152ed939f6ad6a40496f790ea76765
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Mon Aug 12 00:09:21 2013 +0300

    usbdebug: Only test two possible USB device numbers
    
    After an USB device sees USB bus reset on the bus, it will reset to
    device number 0. Per the EHCI debug port specification, a debug
    dongle device may reset to the fixed debug device number of 127 instead.
    
    Thus there is no need to try device numbers from 1 to 126.
    
    Change-Id: I78d58f3dc049cd8c20c6e2aa3a4207ad7e6a6d33
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/lib/usbdebug.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/lib/usbdebug.c b/src/lib/usbdebug.c
index 53ba4db..4ac7762 100644
--- a/src/lib/usbdebug.c
+++ b/src/lib/usbdebug.c
@@ -523,21 +523,27 @@ try_next_port:
 	dbgp_mdelay(100);
 
 	/* Find the debug device and make it device number 127 */
-	for (devnum = 0; devnum <= 127; devnum++) {
+	devnum = 0;
+	do {
+		memset(&dbgp_desc, 0, sizeof(dbgp_desc));
 		ret = dbgp_control_msg(ehci_debug, devnum,
 			USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE,
 			USB_REQ_GET_DESCRIPTOR, (USB_DT_DEBUG << 8), 0,
 			&dbgp_desc, sizeof(dbgp_desc));
 		if (ret > 0)
 			break;
-	}
-	if (devnum > 127) {
+		if (devnum == 0)
+			devnum = USB_DEBUG_DEVNUM;
+		else
+			break;
+	} while (1);
+	if (ret < 0) {
 		dprintk(BIOS_INFO, "Could not find attached debug device.\n");
 		ret = -5;
 		goto err;
 	}
-	if (ret < 0) {
-		dprintk(BIOS_INFO, "Attached device is not a debug device.\n");
+	if (ret != sizeof(dbgp_desc)) {
+		dprintk(BIOS_INFO, "Invalid debug device descriptor.\n");
 		ret = -6;
 		goto err;
 	}



More information about the coreboot-gerrit mailing list