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@gmail.com> Reviewed-on: http://review.coreboot.org/1553 Tested-by: build bot (Jenkins) Reviewed-by: Peter Stuge <peter@stuge.se>
This commit is contained in:
parent
86aa7c45a5
commit
efcb8de12e
|
@ -411,7 +411,7 @@ static int
|
||||||
run_schedule (usbdev_t *dev, td_t *td)
|
run_schedule (usbdev_t *dev, td_t *td)
|
||||||
{
|
{
|
||||||
UHCI_INST (dev->controller)->qh_data->elementlinkptr =
|
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,
|
td = wait_for_completed_qh (dev->controller,
|
||||||
UHCI_INST (dev->controller)->qh_data);
|
UHCI_INST (dev->controller)->qh_data);
|
||||||
if (td == 0) {
|
if (td == 0) {
|
||||||
|
@ -429,7 +429,7 @@ uhci_bulk (endpoint_t *ep, int size, u8 *data, int finalize)
|
||||||
int maxpsize = ep->maxpacketsize;
|
int maxpsize = ep->maxpacketsize;
|
||||||
if (maxpsize == 0)
|
if (maxpsize == 0)
|
||||||
fatal("MaxPacketSize == 0!!!");
|
fatal("MaxPacketSize == 0!!!");
|
||||||
int numpackets = (size + maxpsize - 1 + finalize) / maxpsize;
|
int numpackets = (size + maxpsize - 1) / maxpsize + finalize;
|
||||||
if (numpackets == 0)
|
if (numpackets == 0)
|
||||||
return 0;
|
return 0;
|
||||||
td_t *tds = create_schedule (numpackets);
|
td_t *tds = create_schedule (numpackets);
|
||||||
|
|
Loading…
Reference in New Issue