]> git.sur5r.net Git - u-boot/commitdiff
Fix warnings in arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
authorSimon Glass <sjg@chromium.org>
Tue, 15 Nov 2011 18:17:06 +0000 (18:17 +0000)
committerWolfgang Denk <wd@denx.de>
Fri, 9 Dec 2011 09:32:49 +0000 (10:32 +0100)
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>
arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c

index 263d2ce65d9cd90eef8bdc274c3f7c971c4a9f68..80bb61b27ee08f4193ac97d789aafb614d7d5096 100644 (file)
@@ -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;