[U-Boot] [PATCH v2 2/4] board: ti: am57xx: Fix USB configuration

Roger Quadros
2016-05-16T09:26:18Z

On 16/05/16 12:06, Roger Quadros wrote:
> On 13/05/16 15:45, Marek Vasut wrote:
>> On 05/13/2016 02:36 PM, Roger Quadros wrote:
>>> Currently CONFIG_USB_DWC3 is not selected so doing a usb start
>>> command results in a serious error [1].
>>
>> Why does this error happen ? That is what should be fixed. Selecting
>> some random options seems like papering over a bug.
>
> Agreed. I was lazy :P.

OK. The issue is like this.

CONFIG_CMD_USB and CONFIG_USB_XHCI is defined, so usb_init() calls
usb_lowlevel_init() in xhci.c which calls xhci_hcd_init in xhci-omap.c which calls
board_usb_init().

But board_usb_init() in am57xx/board.c is defined only if CONFIG_USB_DWC3 is defined
and that is missing in am57xx_evm.h leading to the serious error. We're trying to
access the IP without turning on the necessary clocks.

So it looks like we need to define it based on CONFIG_USB_XHCI_OMAP or something else.

But then again looking into the future, what if we want only gadget operation?
That would not define XHCI, but we still need board_usb_init(). So board_usb_init()
should be defined based on CONFIG_CMD_USB=y?

What do you suggest?

cheers,
-roger

>
> cheers,
> -roger
>
>>
>>> Fix that by enabling CONFIG_USB_DWC3 and other related options
>>> CONFIG_USB_DWC3_PHY_OMAP and CONFIG_USB_DWC3_OMAP.
>>>
>>> [1]
>>> => usb start
>>> starting USB...
>>> USB0: data abort
>>> pc : [<fff7ed10>] lr : [<fff7ebbf>]
>>> reloc pc : [<8081dd10>] lr : [<8081dbbf>]
>>> sp : fef3d260 ip : 00000000 fp : fef3d2a8
>>> r10: fffa4610 r9 : fef50ed0 r8 : 00000000
>>> r7 : fef3d280 r6 : fef3d284 r5 : fffbc380 r4 : 00000000
>>> r3 : 48880000 r2 : 00000000 r1 : 00000000 r0 : fffbc380
>>> Flags: nzcv IRQs off FIQs off Mode SVC_32
>>> Resetting CPU ...
>>>
>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>> ---
>>> include/configs/am57xx_evm.h | 3 +++
>>> 1 file changed, 3 insertions(+)
>>
>> Changelog is missing ;-)
>>
>>> diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
>>> index 32d7d4d..939057c 100644
>>> --- a/include/configs/am57xx_evm.h
>>> +++ b/include/configs/am57xx_evm.h
>>> @@ -63,6 +63,7 @@
>>> #define CONFIG_SUPPORT_EMMC_BOOT
>>>
>>> /* USB xHCI HOST */
>>> +#define CONFIG_USB_DWC3
>>> #define CONFIG_USB_HOST
>>> #define CONFIG_USB_XHCI_DWC3
>>> #define CONFIG_USB_XHCI
>>> @@ -72,6 +73,8 @@
>>>
>>> #define CONFIG_OMAP_USB_PHY
>>> #define CONFIG_OMAP_USB3PHY1_HOST
>>> +#define CONFIG_USB_DWC3_PHY_OMAP
>>> +#define CONFIG_USB_DWC3_OMAP
>>>
>>> /* SATA */
>>> #define CONFIG_BOARD_LATE_INIT
>>>
>>
>>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>