usb: host: ehci: distinguish DMA addresses
This patch adds translation from CPU to DMA addresses, which is required for proper operation on certain architectures like MIPS. This patch also fixes the bug introduced by 4350744bf5 "usb: ehci-hcd: port periodic transactions implementation from the u-boot", which is still present in the original U-Boot code: td->qt_buffer[0] = cpu_to_hc32((unsigned long)buffer + i * elementsize); td->qt_buffer[1] = cpu_to_hc32((td->qt_buffer[0] + 0x1000) & ~0xfff); ... In case of a big-endian CPU 0x1000 is added to the byte-swapped value `td->qt_buffer[0]`, the result is byte swapped once again and stored to `td->qt_buffer[1]`. This results in erroneous values being stored in `td->qt_buffer[1..4]`. N.B.: This patch needs some testing on architectures different from MIPS. Signed-off-by: Peter Mamonov <pmamonov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> |
---|
|
drivers/usb/host/ehci-hcd.c |
---|