summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2011-11-15 18:17:06 +0000
committerWolfgang Denk <wd@denx.de>2011-12-09 10:32:49 +0100
commit13119bc9fb1e1f3639b4cbb5166ccb3ab5673dcf (patch)
treeb6ad4d9209a8ef0ca9df5fc8b14cf868b02b97ba /arch
parent00b7d6ecc99e0560253a9ab50f55410db8828166 (diff)
downloadu-boot-imx-13119bc9fb1e1f3639b4cbb5166ccb3ab5673dcf.zip
u-boot-imx-13119bc9fb1e1f3639b4cbb5166ccb3ab5673dcf.tar.gz
u-boot-imx-13119bc9fb1e1f3639b4cbb5166ccb3ab5673dcf.tar.bz2
Fix warnings in arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
Sorry if this is already fixed somewhere - I could not find it. This fixes these warnings: usb_ohci.c: In function 'submit_control_msg': usb_ohci.c:1081: warning: dereferencing pointer 'data_buf.76' does break strict-aliasing rules usb_ohci.c:1081: note: initialized from here usb_ohci.c:1084: warning: dereferencing pointer 'data_buf.76' does break strict-aliasing rules usb_ohci.c:1084: note: initialized from here usb_ohci.c:1087: warning: dereferencing pointer 'data_buf.76' does break strict-aliasing rules usb_ohci.c:1087: note: initialized from here Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
index 263d2ce..80bb61b27 100644
--- a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
+++ b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
@@ -1041,8 +1041,12 @@ static int ohci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
int leni = transfer_len;
int len = 0;
int stat = 0;
- __u32 datab[4];
- __u8 *data_buf = (__u8 *) datab;
+ union {
+ __u32 word[4];
+ __u16 hword[8];
+ __u8 byte[16];
+ } datab;
+ __u8 *data_buf = datab.byte;
__u16 bmRType_bReq;
__u16 wValue;
__u16 wIndex;
@@ -1078,20 +1082,20 @@ static int ohci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
*/
case RH_GET_STATUS:
- *(__u16 *) data_buf = m16_swap(1);
+ datab.hword[0] = m16_swap(1);
OK(2);
case RH_GET_STATUS | RH_INTERFACE:
- *(__u16 *) data_buf = m16_swap(0);
+ datab.hword[0] = m16_swap(0);
OK(2);
case RH_GET_STATUS | RH_ENDPOINT:
- *(__u16 *) data_buf = m16_swap(0);
+ datab.hword[0] = m16_swap(0);
OK(2);
case RH_GET_STATUS | RH_CLASS:
- *(__u32 *) data_buf =
+ datab.word[0] =
m32_swap(RD_RH_STAT & ~(RH_HS_CRWE | RH_HS_DRWE));
OK(4);
case RH_GET_STATUS | RH_OTHER | RH_CLASS:
- *(__u32 *) data_buf = m32_swap(RD_RH_PORTSTAT);
+ datab.word[0] = m32_swap(RD_RH_PORTSTAT);
OK(4);
case RH_CLEAR_FEATURE | RH_ENDPOINT:
@@ -1223,7 +1227,7 @@ static int ohci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
data_buf[3] |= 0x8;
/* corresponds to data_buf[4-7] */
- datab[1] = 0;
+ datab.word[1] = 0;
data_buf[5] = (temp & RH_A_POTPGT) >> 24;
temp = roothub_b(&gohci);
data_buf[7] = temp & RH_B_DR;