[coreboot-gerrit] Patch set updated for coreboot: 67f6c2b libpayload: ehci: Set explicit terminate bits in dummy_qh next pointers.

Isaac Christensen (isaac.christensen@se-eng.com) gerrit at coreboot.org
Mon Aug 11 21:09:19 CEST 2014


Isaac Christensen (isaac.christensen at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6608

-gerrit

commit 67f6c2b4b74afd03522fac027bdfeacd5ec0f81d
Author: Julius Werner <jwerner at chromium.org>
Date:   Thu Aug 22 16:24:09 2013 -0700

    libpayload: ehci: Set explicit terminate bits in dummy_qh next pointers.
    
    The EHCI host controllers in Samsung Exynos SoC seem to be a little more
    picky than Intel ones. When they reach the dummy_qh in the periodic
    frame list, they try to access the next qTD pointer even though it's
    NULL, an run into a HostSystemError. This patch explicitly sets the
    Terminate bit on those pointers to mark them invalid.
    
    Change-Id: I50fa79bbf1c5fab306d7885c01efd66b13e279b8
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://gerrit.chromium.org/gerrit/66884
    Reviewed-by: Vincent Palatin <vpalatin at chromium.org>
    (cherry picked from commit c575a5c958ce88732d28044352c89418bcd5ea86)
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
---
 payloads/libpayload/drivers/usb/ehci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/payloads/libpayload/drivers/usb/ehci.c b/payloads/libpayload/drivers/usb/ehci.c
index 0764592..af7daf1 100644
--- a/payloads/libpayload/drivers/usb/ehci.c
+++ b/payloads/libpayload/drivers/usb/ehci.c
@@ -793,6 +793,8 @@ ehci_init (unsigned long physical_bar)
 	memset((void *)EHCI_INST(controller)->dummy_qh, 0,
 		sizeof(*EHCI_INST(controller)->dummy_qh));
 	EHCI_INST(controller)->dummy_qh->horiz_link_ptr = QH_TERMINATE;
+	EHCI_INST(controller)->dummy_qh->td.next_qtd = QH_TERMINATE;
+	EHCI_INST(controller)->dummy_qh->td.alt_next_qtd = QH_TERMINATE;
 	for (i = 0; i < 1024; ++i)
 		periodic_list[i] = virt_to_phys(EHCI_INST(controller)->dummy_qh)
 				   | PS_TYPE_QH;



More information about the coreboot-gerrit mailing list