From 64b0428aaab869e20f6720669e953acf82ecb846 Mon Sep 17 00:00:00 2001 From: Jim Lin Date: Mon, 8 Dec 2014 19:30:04 +0800 Subject: [PATCH] libpayload: EHCI: Fix transaction error for interrupt transfer Data toggle should be running like 0, 1, 0, 1, ... In the failed case (where a low-speed USB keyboard or km232 device is installed), data toggle will be running as 0, 1, 0, 1, ..., 1, 1. Therefore causing Halted or Transaction Error bit to be set in qTD Status field. BUG=None BRANCH=None TEST=Tested on nyan_kitty platform, firmware-kitty-5771.61.B branch. Attached USB keyboard or km232 device to root-hub port (same side as SD card slot). Made sure no transaction error after doing interrupt transfer. Change-Id: Ic2c0f95cff2ae6e314967b0b82231a962255f1a7 Signed-off-by: Jim Lin Reviewed-on: https://chromium-review.googlesource.com/233857 Reviewed-by: Julius Werner --- payloads/libpayload/drivers/usb/ehci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payloads/libpayload/drivers/usb/ehci.c b/payloads/libpayload/drivers/usb/ehci.c index 23a9744c48..19f536738d 100644 --- a/payloads/libpayload/drivers/usb/ehci.c +++ b/payloads/libpayload/drivers/usb/ehci.c @@ -675,7 +675,7 @@ static void *ehci_create_intr_queue( /* create spare qTD */ intrq->spare = (intr_qtd_t *)dma_memalign(64, sizeof(intr_qtd_t)); - fill_intr_queue_td(intrq, intrq->spare, data); + intrq->spare->data = data; /* initialize QH */ const int endp = ep->endpoint & 0xf;