libpayload: EHCI: Make periodic list pointers point to 64-byte aligned

Chapter 3.1 "Periodic Frame List" of EHCI 1.0 specification says
"Frame List Link pointers always reference memory objects that are
32-byte aligned."
jwerner@chromium.org suggests setting it to be 64-byte aligned for
consistency with other EHCI queue structures.

BUG=chrome-os-partner:31993
TEST=Tested on nyan platform. Before adding patch, USB keyboard behind
an external hub is not working to switch between "Default Locale" and
"English" (after pressing ESC+REFRESH+POWER on embedded keyboard and
later Left/Right-Arrow key on USB keyboard).

Change-Id: If52ddc43ebd5d509c19f104928dced5bd09b1706
Signed-off-by: Jim Lin <jilin@nvidia.com>
Reviewed-on: https://chromium-review.googlesource.com/218403
Reviewed-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
Jim Lin 2014-09-16 16:39:08 +08:00 committed by chrome-internal-fetch
commit 23fc02e6ba

View file

@ -643,7 +643,8 @@ static void *ehci_create_intr_queue(
return NULL;
}
intr_queue_t *const intrq = (intr_queue_t *)malloc(sizeof(intr_queue_t));
intr_queue_t *const intrq = (intr_queue_t *)dma_memalign(64,
sizeof(intr_queue_t));
/*
* reqcount data chunks
* plus one more spare, which we'll leave out of queue