From 71c5de4f4af5e0995f89dffa79f48f26bd095f50 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Sun, 15 Jul 2012 22:14:24 +0000 Subject: ehci-hcd.c, musb_core, usb.h: Add USB_DMA_MINALIGN define for cache alignment The USB spec says that 32 bytes is the minimum required alignment. However on some platforms we have a larger minimum requirement for cache coherency. In those cases, use that value rather than the USB spec minimum. We add a cpp check to to define USB_DMA_MINALIGN and make use of it in ehci-hcd.c and musb_core.h. We cannot use MAX() here as we are not allowed to have tests inside of align(...). Signed-off-by: Tom Rini [marek.vasut]: introduce some crazy macro voodoo Signed-off-by: Marek Vasut [ilya.yanok]: moved external buffer fixes to separate patch, we use {ALLOC,DEFINE}_ALIGN_BUFFER macros with alignment of USB_DMA_MINALIGN for qh_list, qh and qtd structures to make sure they are proper aligned for both controller and cache operations. Signed-off-by: Ilya Yanok --- include/usb.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/usb.h') diff --git a/include/usb.h b/include/usb.h index 6da91e7232..ba3d169ea8 100644 --- a/include/usb.h +++ b/include/usb.h @@ -29,6 +29,16 @@ #include #include +/* + * The EHCI spec says that we must align to at least 32 bytes. However, + * some platforms require larger alignment. + */ +#if ARCH_DMA_MINALIGN > 32 +#define USB_DMA_MINALIGN ARCH_DMA_MINALIGN +#else +#define USB_DMA_MINALIGN 32 +#endif + /* Everything is aribtrary */ #define USB_ALTSETTINGALLOC 4 #define USB_MAXALTSETTING 128 /* Hard limit */ -- cgit v1.2.3