[U-Boot] usb: ehci: Take advantage of the new multi-controller feature for MXC

Marek Vasut marex at denx.de
Mon Nov 5 23:54:12 CET 2012


Dear Benoît Thébaudeau,

> Hi Marek,
> 
> Thanks to Lucas' series coming with commits c7e3b2b and 676ae06, I'd like
> to use the multi-controller feature on MXC since most of these SoCs come
> with a USB IP supporting an OTG controller and multiple host-only
> controllers.
> 
> Currently the MXC code in ehci-mx{c|5|6}.c just ignores the index passed to
> ehci_hcd_init() and the like, and there are 3 port-specific configs
> (CONFIG_MXC_USB_PORT, CONFIG_MXC_USB_FLAGS and CONFIG_MXC_USB_PORTSC).
> 
> Not all USB ports from the USB IP will be available on each board for a
> given SoC, so we need a logical to physical USB port mapping.
> 
> I would suggest something like the following.
> 
> board.h:
> #define CONFIG_MXC_USB	{ \
> 	{ \
> 		0, \
> 		MXC_EHCI_INTERNAL_PHY, \
> 		MXC_EHCI_UTMI_16BIT | MXC_EHCI_MODE_UTMI \
> 	}, { \
> 		1, \
> 		MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_PWR_PIN_ACTIVE_HIGH | \
> 		MXC_EHCI_OC_PIN_ACTIVE_LOW, \
> 		MXC_EHCI_MODE_ULPI \
> 	}, \
> }
> 
> ehci-fsl.h:
> struct mxc_ehci_cfg {
> 	int port;
> 	u32 flags;
> 	u32 portsc;
> };
> 
> ehci-mx{c|5|6}.c:
> static const struct mxc_ehci_cfg cfg[CONFIG_USB_MAX_CONTROLLER_COUNT] =
> 		CONFIG_MXC_USB;
> 
> Then, in ehci_hcd_init(), there would be the following replacements:
>  - CONFIG_MXC_USB_PORT -> cfg[index].port,
>  - CONFIG_MXC_USB_FLAGS -> cfg[index].flags,
>  - CONFIG_MXC_USB_PORTSC -> cfg[index].portsc.
> 
> What do you think?

What about passing port private / platform data instead of ID ?

Best regards,
Marek Vasut


More information about the U-Boot mailing list