[coreboot-gerrit] New patch to review for coreboot: libpayload: usb: xhci: Fix list of cleared port change bits

Aaron Durbin (adurbin@chromium.org) gerrit at coreboot.org
Wed Aug 12 17:52:06 CEST 2015


Aaron Durbin (adurbin at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11194

-gerrit

commit 7c4fdfc9f24f1ada3c9abf7dffb1d699a48febee
Author: Julius Werner <jwerner at chromium.org>
Date:   Fri Aug 7 15:29:41 2015 -0700

    libpayload: usb: xhci: Fix list of cleared port change bits
    
    The xhci_rh_port_status_changed() function tries to always clear all
    port status bits, even though most of them don't interest us. This is
    generally a smart thing to do since not clearing a status bit may cause
    the controller to not generate any more Port Status Change Events.
    However, the bitmask we currently use doesn't cover bit 23 (Port Config
    Error Change) and instead covers bit 16 (Port Link State Write Strobe)
    which is not really related to this and not a W1C bit. Probably a typo,
    so let's fix that.
    
    BRANCH=None
    BUG=None
    TEST=Plugged/unplugged a bunch of USB devices on an XHCI Falco.
    
    Original-Change-Id: Ia83f5b72cce094859c0f0e730752d7b5cfa6e1c6
    Original-Signed-off-by: Julius Werner <jwerner at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/291842
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    Change-Id: I11f5fe38cb70055daf6e866a8ee84ca80488e3bf
    Signed-off-by: Julius Werner <jwerner at chromium.org>
---
 payloads/libpayload/drivers/usb/xhci_rh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/payloads/libpayload/drivers/usb/xhci_rh.c b/payloads/libpayload/drivers/usb/xhci_rh.c
index bcb01ac..d7ba82c 100644
--- a/payloads/libpayload/drivers/usb/xhci_rh.c
+++ b/payloads/libpayload/drivers/usb/xhci_rh.c
@@ -53,7 +53,7 @@ xhci_rh_port_status_changed(usbdev_t *const dev, const int port)
 
 	const int changed = !!(*portsc & (PORTSC_CSC | PORTSC_PRC));
 	/* always clear all the status change bits */
-	*portsc = (*portsc & PORTSC_RW_MASK) | 0x00ef0000;
+	*portsc = (*portsc & PORTSC_RW_MASK) | 0x00fe0000;
 	return changed;
 }
 



More information about the coreboot-gerrit mailing list