summaryrefslogtreecommitdiff
path: root/include/linux/usb
diff options
context:
space:
mode:
authorVivek Gautam <gautam.vivek@samsung.com>2013-05-13 15:53:37 +0530
committerMarek Vasut <marex@denx.de>2013-06-12 22:22:51 +0200
commitf903a20d1fc0e99741da671095c6b9ac7c13c7ae (patch)
tree3e156f8196aebb129123ab23df1cc9ce02ea99c0 /include/linux/usb
parent4edcf0a3dfd3cfa6b6c99dd1c893b7c96aa52d12 (diff)
downloadu-boot-imx-f903a20d1fc0e99741da671095c6b9ac7c13c7ae.zip
u-boot-imx-f903a20d1fc0e99741da671095c6b9ac7c13c7ae.tar.gz
u-boot-imx-f903a20d1fc0e99741da671095c6b9ac7c13c7ae.tar.bz2
usb: Use get_unaligned() in usb_endpoint_maxp() for wMaxPacketSize
Use unaligned access to fetch wMaxPacketSize in usb_endpoint_maxp() api. In its absence we see following data abort message: ============================================================== data abort MAYBE you should read doc/README.arm-unaligned-accesses pc : [<bf794e24>] lr : [<bf794e1c>] sp : bf37c7b0 ip : 0000002f fp : 00000000 r10: 00000000 r9 : 00000002 r8 : bf37fecc r7 : 00000001 r6 : bf7d8931 r5 : bf7d891c r4 : bf7d8800 r3 : bf7d65b0 r2 : 00000002 r1 : bf7d65b4 r0 : 00000027 Flags: nZCv IRQs off FIQs off Mode SVC_32 Resetting CPU ... resetting ... ============================================================== Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Marek Vasut <marex@denx.de>
Diffstat (limited to 'include/linux/usb')
-rw-r--r--include/linux/usb/ch9.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
index d1d732c..bd48704 100644
--- a/include/linux/usb/ch9.h
+++ b/include/linux/usb/ch9.h
@@ -35,6 +35,7 @@
#include <linux/types.h> /* __u8 etc */
#include <asm/byteorder.h> /* le16_to_cpu */
+#include <asm/unaligned.h> /* get_unaligned() */
/*-------------------------------------------------------------------------*/
@@ -596,7 +597,7 @@ static inline int usb_endpoint_is_isoc_out(
*/
static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
{
- return __le16_to_cpu(epd->wMaxPacketSize);
+ return __le16_to_cpu(get_unaligned(&epd->wMaxPacketSize));
}
static inline int usb_endpoint_interrupt_type(