usb: musb: fail unaligned DMA transfers on v1.8 and above
authorAnand Gadiyar <gadiyar@ti.com>
Mon, 8 Nov 2010 06:20:30 +0000 (00:20 -0600)
committerFelipe Balbi <balbi@ti.com>
Tue, 9 Nov 2010 08:24:35 +0000 (10:24 +0200)
commit6e16edfe62eb49274c8a74dc04d1c6f315f8f82b
tree0292ee9bf87e43207041c195a245f3997bae7566
parent07397021058b7db468b67f8c41ce29ef6331ab92
usb: musb: fail unaligned DMA transfers on v1.8 and above

The Inventra DMA engine in version 1.8 and later of the MUSB
controller cannot handle DMA addresses that are not aligned
to a 4 byte boundary. It ends up ignoring the last two bits
programmed in the DMA_ADDR register. This is a deliberate
design change in the controller and is documented in the
programming guide.

Earlier versions of the controller could handle these
accesses just fine.

Fail dma_channel_program if we see an unaligned address when
using the newer controllers, so that the caller can carry out
the transfer using PIO mode.
(Current callers already have this backup path in place).

Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
Tested-by: Ming Lei <tom.leiming@gmail.com>
Cc: Ajay Kumar Gupta <ajay.gupta@ti.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musbhsdma.c