USB: Remove __attribute__ ((packed)) for struct ehci_hccr and ehci_hcor
authorJason Kridner <jkridner@beagleboard.org>
Wed, 20 Apr 2011 13:54:16 +0000 (08:54 -0500)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Sun, 4 Sep 2011 09:36:20 +0000 (11:36 +0200)
Remove __attribute__ ((packed)) to prevent byte access to soc
registers in some gcc versions.

Having patches to enable ehci for the BeagleBoard lying around for
several months, this one was the show-stopper.

Switched to align(4), rather than remove the attribute, per suggestion
from Alexander.

Credits have to go to Laine Walker-Avina <lwalkera@ieee.org> for
finding the problem.

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>
Cc: Alexander Holler <holler@ahsoftware.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
drivers/usb/host/ehci.h

index 945ab64f95119fbf8790813f43a540af2d63d64b..3d0ad0c85212f1caf05c7192953cd02df2619e8c 100644 (file)
@@ -55,7 +55,7 @@ struct ehci_hccr {
 #define HCS_N_PORTS(p)         (((p) >> 0) & 0xf)
        uint32_t cr_hccparams;
        uint8_t cr_hcsp_portrt[8];
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 struct ehci_hcor {
        uint32_t or_usbcmd;
@@ -85,7 +85,7 @@ struct ehci_hcor {
 #define FLAG_CF                (1 << 0)        /* true:  we'll support "high speed" */
        uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS];
        uint32_t or_systune;
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 #define USBMODE                0x68            /* USB Device mode */
 #define USBMODE_SDIS   (1 << 3)        /* Stream disable */