[coreboot] New patch to review for coreboot: 802b1c8 libpayload: fix for UHCI bulk transactions

Anton Kochkov (anton.kochkov@gmail.com) gerrit at coreboot.org
Mon Oct 1 22:07:22 CEST 2012


Anton Kochkov (anton.kochkov at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1553

-gerrit

commit 802b1c8a14574dabcf81f0ba09efb1dd8f7c1636
Author: Anton Kochkov <anton.kochkov at gmail.com>
Date:   Tue Oct 2 00:04:29 2012 +0400

    libpayload: fix for UHCI bulk transactions
    
    Fixed masking to run QH shedule.
    Fixed final zero filled TD generation for
    UHCI bulk transaction.
    
    Change-Id: I9c6ea34d132368922f2eeeaa7aadbbb6aac3e2b8
    Signed-off-by: Anton Kochkov <anton.kochkov at gmail.com>
---
 payloads/libpayload/drivers/usb/uhci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/payloads/libpayload/drivers/usb/uhci.c b/payloads/libpayload/drivers/usb/uhci.c
index 635a8f1..6cc6b28 100644
--- a/payloads/libpayload/drivers/usb/uhci.c
+++ b/payloads/libpayload/drivers/usb/uhci.c
@@ -411,7 +411,7 @@ static int
 run_schedule (usbdev_t *dev, td_t *td)
 {
 	UHCI_INST (dev->controller)->qh_data->elementlinkptr =
-		virt_to_phys (td) | ~(FLISTP_QH | FLISTP_TERMINATE);
+		virt_to_phys (td) & ~(FLISTP_QH | FLISTP_TERMINATE);
 	td = wait_for_completed_qh (dev->controller,
 				    UHCI_INST (dev->controller)->qh_data);
 	if (td == 0) {
@@ -429,7 +429,7 @@ uhci_bulk (endpoint_t *ep, int size, u8 *data, int finalize)
 	int maxpsize = ep->maxpacketsize;
 	if (maxpsize == 0)
 		fatal("MaxPacketSize == 0!!!");
-	int numpackets = (size + maxpsize - 1 + finalize) / maxpsize;
+	int numpackets = (size + maxpsize - 1) / maxpsize + finalize;
 	if (numpackets == 0)
 		return 0;
 	td_t *tds = create_schedule (numpackets);




More information about the coreboot mailing list