[coreboot-gerrit] New patch to review for coreboot: libpayload: usb: dwc2: fix hub hot-plug bug

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Sep 15 19:40:11 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11661

-gerrit

commit 49d615ca6393de631f78ab622a96ad472e648bc4
Author: Yunzhi Li <lyz at rock-chips.com>
Date:   Fri Aug 28 09:43:44 2015 +0800

    libpayload: usb: dwc2: fix hub hot-plug bug
    
    When disconnect detected in dwc2_split_transfear() split configure
    registers should be cleared before return
    
    BRANCH=None
    BUG=chrome-os-partner:44534
    TEST=tested on Jerry, usb hot plug could be supported in coreboot
    
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 37594d8b4490b6d393d19d17d8e497db7de8817d
    Original-Change-Id: Ie1eecec067305874513c6ceb95df4240dc393cd6
    Original-Signed-off-by: Yunzhi Li <lyz at rock-chips.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/295625
    Original-Reviewed-by: David Hendricks <dhendrix at chromium.org>
    Original-Reviewed-by: Julius Werner <jwerner at chromium.org>
    Original-Commit-Queue: Lin Huang <hl at rock-chips.com>
    Original-Tested-by: Lin Huang <hl at rock-chips.com>
    Original-(cherry picked from commit d543e14cdc73bd549dd553c8d1d07672a1307981)
    Original-Reviewed-on: https://chromium-review.googlesource.com/299700
    Original-Commit-Ready: David Hendricks <dhendrix at chromium.org>
    Original-Tested-by: David Hendricks <dhendrix at chromium.org>
    
    Change-Id: Ib4604097743f2f9d763b29ee27f3bc1788a85a62
---
 payloads/libpayload/drivers/usb/dwc2.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/payloads/libpayload/drivers/usb/dwc2.c b/payloads/libpayload/drivers/usb/dwc2.c
index 30e00fb..0941eb6 100644
--- a/payloads/libpayload/drivers/usb/dwc2.c
+++ b/payloads/libpayload/drivers/usb/dwc2.c
@@ -323,8 +323,10 @@ dwc2_split_transfer(endpoint_t *ep, int size, int pid, ep_dir_t dir,
 	do {
 		hfnum.d32 = readl(&reg->host.hfnum);
 
-		if (dwc2_disconnected(ep->dev->controller))
-			return -HCSTAT_DISCONNECTED;
+		if (dwc2_disconnected(ep->dev->controller)) {
+			ret = -HCSTAT_DISCONNECTED;
+			goto out;
+		}
 	} while (hfnum.frnum % 8 != 0);
 
 	/* Handle Start-Split */



More information about the coreboot-gerrit mailing list