
On 12/13/2011 02:29 PM, Aneesh V wrote:
Hi Kristiansson,
On Friday 21 October 2011 12:55 AM, Stefan Kristiansson wrote:
The usb_endpoint_descriptor struct is 7 bytes large and is defined as an array (ep_desc[USB_MAXENDPOINTS]) in the usb_interface struct in include/usb.h
This fact will result in that every odd index in that array will start at an uneven address, this in turn makes accesses to u16 wMaxPacketSize unaligned. Such accesses are illegal on the OpenRISC architecture (as well as other architectures) and will render a bus error.
Setting the aligned(2) attribute on usb_endpoint_descriptor will force wMaxPacketSize to a 16-bit boundary.
Signed-off-by: Stefan Kristianssonstefan.kristiansson@saunalahti.fi
OMAP4 U-Boot is broken in the mainline. U-Boot wouldn't boot up on any OMAP4 platforms. I suspect this will be the case with any ARM platform that has enabled USB tty code. I git-bisected the issue to this patch. I did some analysis on it and here are my findings.
I can confirm this on my OMAP3 platform with CONFIG_USB_TTY set. I can get it to boot again by either reverting this patch or unsetting CONFIG_USB_TTY. Looking forward to the fix.
-Michael
MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler Registergericht: Amtsgericht Stuttgart, HRB 271090 Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner, Erhard Meier