[coreboot-gerrit] Patch set updated for coreboot: libpayload: usb: dwc2: fix hub hot-plug bug

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Wed Sep 16 13:24:27 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 f189d3ea9752d84a8e56f4dec89f469e26a0efc0
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 is detected in dwc2_split_transfer() the split
    configuration registers should be cleared before return.
    
    BRANCH=None
    BUG=chrome-os-partner:44534
    TEST=On Jerry, usb hot plug works with devices behind hubs
    
    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