libpayload: fix bulk transfers on OHCI controllers
authorPatrick Georgi <patrick.georgi@secunet.com>
Fri, 21 Oct 2011 13:45:09 +0000 (15:45 +0200)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Fri, 21 Oct 2011 15:05:48 +0000 (17:05 +0200)
Time for the brown paper bag: OHCI controllers are not happy when
told to send data, but with obviously wrong addresses. It helps
to write the addresses into the data structures.

Change-Id: Ic0967dc8939e64af119cfb89400a045a2c077171
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Reviewed-on: http://review.coreboot.org/306
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
payloads/libpayload/drivers/usb/ohci.c

index 94c19454cbea356eec1d341ae4aa25691ee4b2fa..290f7822a015b7b3642d44b13f9f23b0ec9720c0 100644 (file)
@@ -384,6 +384,7 @@ ohci_bulk (endpoint_t *ep, int dalen, u8 *data, int finalize)
                cur->delay_interrupt = 7;
                cur->condition_code = 0xf;
                cur->direction = (ep->direction==IN)?OHCI_IN:OHCI_OUT;
+               cur->current_buffer_pointer = virt_to_phys(data);
                pages--;
                if (dalen == 0) {
                        /* magic TD for empty packet transfer */