Hi, thaoth

thaoth wrote:
> Can you help me to resolve this bug?

I think that it is a problem of the unalignment access.
Please change your compiler or change a source code as follows:

diff --git a/common/usb.c b/common/usb.c
index 9502f39..1acf51d 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -250,7 +250,10 @@ int usb_set_maxpacket(struct usb_device *dev)

        for(i=0; i<dev->config.bNumInterfaces;i++) {
                for(ii=0; ii<dev->config.if_desc[i].bNumEndpoints; ii++) {
-                       ep = &dev->config.if_desc[i].ep_desc[ii];
+                       struct usb_endpoint_descriptor tmp;
+                       memcpy(&tmp, &dev->config.if_desc[i].ep_desc[ii],
+                               sizeof(struct usb_endpoint_descriptor));
+                       ep = &tmp;
                        b=ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;

                        if((ep->bmAttributes & 
USB_ENDPOINT_XFERTYPE_MASK)==USB_ENDPOINT_XFER_CONTROL) {        /* Control => 
bidirectional */

> Thank you very much for your supports!

You're welcome! :)

Best regards,
Yoshihiro Shimoda

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to