From b9e50b870cd42489eedc5b51b719c49685b6a464 Mon Sep 17 00:00:00 2001 From: Yunzhi Li Date: Fri, 28 Aug 2015 09:43:44 +0800 Subject: [PATCH] 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 Change-Id: Ie1eecec067305874513c6ceb95df4240dc393cd6 Signed-off-by: Yunzhi Li Reviewed-on: https://chromium-review.googlesource.com/295625 Reviewed-by: David Hendricks Reviewed-by: Julius Werner Commit-Queue: Lin Huang Tested-by: Lin Huang (cherry picked from commit d543e14cdc73bd549dd553c8d1d07672a1307981) Reviewed-on: https://chromium-review.googlesource.com/299100 --- 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 3ad0cb7737..20c55612bf 100644 --- a/payloads/libpayload/drivers/usb/dwc2.c +++ b/payloads/libpayload/drivers/usb/dwc2.c @@ -325,8 +325,10 @@ dwc2_split_transfer(endpoint_t *ep, int size, int pid, ep_dir_t dir, do { hfnum.d32 = readl(®->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 */