[coreboot-gerrit] New patch to review for coreboot: libpayload: usb: dwc2: check device connect state before enable channel

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Sep 15 19:40:13 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/11662

-gerrit

commit b178488b4f71b627d76440de17c5e3d5ca83539a
Author: Yunzhi Li <lyz at rock-chips.com>
Date:   Thu Sep 10 11:42:30 2015 +0800

    libpayload: usb: dwc2: check device connect state before enable channel
    
    If the device has already been disconnected then we shouldn't enable
    host channel to start any transfer, otherwise this channel goes into
    an odd state the channel is enabled but can not be disabled by set
    hcchar.chdis=1. So we need check the device connect status before
    enable channel.
    
    BRANCH=None
    BUG=chrome-os-partner:44534
    TEST=None
    
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: ae3e690b2cd4a9ea8b5766ac873b0e00bf3a23de
    Original-Change-Id: Ib3ecf486649ca11b302144f9c00a5e88424e90fa
    Original-Signed-off-by: Yunzhi Li <lyz at rock-chips.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/298402
    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 ea96f947b5304fdde2e0991d23febaeba209dde1)
    Original-Reviewed-on: https://chromium-review.googlesource.com/299398
    Original-Commit-Ready: David Hendricks <dhendrix at chromium.org>
    Original-Tested-by: David Hendricks <dhendrix at chromium.org>
    Original-Reviewed-by: David Hendricks <dhendrix at chromium.org>
    
    Change-Id: Idf48ffbc4c2794900e09dec6b2e34e33b21f87b4
---
 payloads/libpayload/drivers/usb/dwc2.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/payloads/libpayload/drivers/usb/dwc2.c b/payloads/libpayload/drivers/usb/dwc2.c
index 0941eb6..c51c0e7 100644
--- a/payloads/libpayload/drivers/usb/dwc2.c
+++ b/payloads/libpayload/drivers/usb/dwc2.c
@@ -274,6 +274,9 @@ dwc2_do_xfer(endpoint_t *ep, int size, int pid, ep_dir_t dir,
 	if (do_copy && (dir == EPDIR_OUT))
 		memcpy(aligned_buf, data_buf, size);
 
+	if (dwc2_disconnected(ep->dev->controller))
+		return -HCSTAT_DISCONNECTED;
+
 	writel(hctsiz.d32, &reg->host.hchn[ch_num].hctsizn);
 	writel((uint32_t)virt_to_bus(aligned_buf),
 		&reg->host.hchn[ch_num].hcdman);



More information about the coreboot-gerrit mailing list