summaryrefslogtreecommitdiffstats
path: root/common/cmd_usb.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2011-12-15 08:40:51 -0700
committerRemy Bohmer <linux@bohmer.net>2011-12-16 21:37:17 +0100
commitb2fb47f1873ae812ce33129996a22b11a36d0aa9 (patch)
tree8afeef2bce3d0ca0aa44ed59956086f6dae2767c /common/cmd_usb.c
parentddc7e541ae62f29d85b35cdf8d12c7322d353d51 (diff)
downloadtalos-obmc-uboot-b2fb47f1873ae812ce33129996a22b11a36d0aa9.tar.gz
talos-obmc-uboot-b2fb47f1873ae812ce33129996a22b11a36d0aa9.zip
USB: Use (get|put)_unaligned for accessing wMaxPacketSize
In 9792987721c7980453fe6447c3fa6593b44f8458 Stefan describes a usecase where the previous behavior of leaving wMaxPacketSize be unaligned caused fatal problems. The initial fix for this problem was incomplete however as it showed another cases of non-aligned access that previously worked implicitly. This switches to making sure that all access of wMaxPacketSize are done via (get|put)_unaligned. In order to maintain a level of readability to the code in some cases we now use a variable for the value of wMaxPacketSize and in others, a macro. Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Remy Bohmer <linux@bohmer.net> OpenRISC: Tested-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> Beagleboard xM, Pandaboard run-tested, s5p_goni build-tested. Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'common/cmd_usb.c')
-rw-r--r--common/cmd_usb.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index d4ec2a291c..320667f5fb 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -28,6 +28,7 @@
#include <common.h>
#include <command.h>
#include <asm/byteorder.h>
+#include <asm/unaligned.h>
#include <part.h>
#include <usb.h>
@@ -240,7 +241,7 @@ void usb_display_ep_desc(struct usb_endpoint_descriptor *epdesc)
printf("Interrupt");
break;
}
- printf(" MaxPacket %d", epdesc->wMaxPacketSize);
+ printf(" MaxPacket %d", get_unaligned(&epdesc->wMaxPacketSize));
if ((epdesc->bmAttributes & 0x03) == 0x3)
printf(" Interval %dms", epdesc->bInterval);
printf("\n");
OpenPOWER on IntegriCloud