diff options
author | Simon Glass <sjg@chromium.org> | 2011-11-15 18:17:06 +0000 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-12-09 10:32:49 +0100 |
commit | 13119bc9fb1e1f3639b4cbb5166ccb3ab5673dcf (patch) | |
tree | b6ad4d9209a8ef0ca9df5fc8b14cf868b02b97ba | |
parent | 00b7d6ecc99e0560253a9ab50f55410db8828166 (diff) | |
download | u-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>
-rw-r--r-- | arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c | 20 |
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; |