On 01/04/2019 13:57, Lukasz Majewski wrote: > Hi Anand, > >> From: Tobias Jakobi <tjak...@math.uni-bielefeld.de> >> >> Rename board_usb_init() to exynos_usb_init() and call it >> early in the Exynos EHCI driver when probing. >> >> This kind of works. After a 'usb start; usb stop; usb start' >> cycle the attached devices are recognized. >> >> Add small delay between gpio_direction_output to stable >> initialization of usb gpio pins. >> >> Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> >> Signed-off-by: Anand Moon <linux.am...@gmail.com> >> --- >> Reoder the exynos_usb_init so that "usb start" command initialization >> correcly. >> --- >> --- >> board/samsung/odroid/odroid.c | 14 +++++++++----- >> drivers/usb/host/ehci-exynos.c | 7 +++++++ >> 2 files changed, 16 insertions(+), 5 deletions(-) >> >> diff --git a/board/samsung/odroid/odroid.c >> b/board/samsung/odroid/odroid.c index 3e594fd850..79d14ead01 100644 >> --- a/board/samsung/odroid/odroid.c >> +++ b/board/samsung/odroid/odroid.c >> @@ -468,8 +468,6 @@ struct dwc2_plat_otg_data s5pc210_otg_data = { >> }; >> #endif >> >> -#if defined(CONFIG_USB_GADGET) || defined(CONFIG_CMD_USB) >> - >> static void set_usb3503_ref_clk(void) >> { >> #ifdef CONFIG_BOARD_TYPES >> @@ -490,9 +488,8 @@ static void set_usb3503_ref_clk(void) >> #endif /* CONFIG_BOARD_TYPES */ >> } >> >> -int board_usb_init(int index, enum usb_init_type init) >> +int exynos_usb_init(void) >> { >> -#ifdef CONFIG_CMD_USB >> struct udevice *dev; >> int ret; >> >> @@ -501,6 +498,7 @@ int board_usb_init(int index, enum usb_init_type >> init) /* Disconnect, Reset, Connect */ >> gpio_direction_output(EXYNOS4X12_GPIO_X34, 0); >> gpio_direction_output(EXYNOS4X12_GPIO_X35, 0); >> + sdelay(200000); >> gpio_direction_output(EXYNOS4X12_GPIO_X35, 1); >> gpio_direction_output(EXYNOS4X12_GPIO_X34, 1); >> >> @@ -530,7 +528,13 @@ int board_usb_init(int index, enum usb_init_type >> init) pr_err("Regulator %s value setting error: %d\n", dev->name, >> ret); return ret; >> } >> -#endif >> + >> + return 0; >> +} >> + >> +#ifdef CONFIG_USB_GADGET >> +int board_usb_init(int index, enum usb_init_type init) > > We are not allowed to add board_usb_* code anymore. The _only_ way to > update/fix the USB gadget code is to convert it to driver model [DM] and > describe it via DTS. > > Please consider converting this code to DM/DTS.
Patrick currently has a series enabling DWC2 OTG DM support which I'm attempting to switch the rk3288 over too. A branch can be found at https://github.com/patrickdelaunay/u-boot/tree/v2019.04-stm32mp for testing. > >> +{ >> debug("USB_udc_probe\n"); >> return dwc2_udc_probe(&s5pc210_otg_data); >> } >> diff --git a/drivers/usb/host/ehci-exynos.c >> b/drivers/usb/host/ehci-exynos.c index fabc662eb6..b0f7bd4936 100644 >> --- a/drivers/usb/host/ehci-exynos.c >> +++ b/drivers/usb/host/ehci-exynos.c >> @@ -31,6 +31,8 @@ struct exynos_ehci_platdata { >> struct gpio_desc vbus_gpio; >> }; >> >> +extern int exynos_usb_init(void); >> + >> /** >> * Contains pointers to register base addresses >> * for the usb controller. >> @@ -152,6 +154,11 @@ static void exynos4412_setup_usb_phy(struct >> exynos4412_usb_phy *usb) setbits_le32(&usb->usbphyrstcon, >> (RSTCON_HOSTPHY_SWRST | RSTCON_SWRST)); udelay(10); >> clrbits_le32(&usb->usbphyrstcon, (RSTCON_HOSTPHY_SWRST | >> RSTCON_SWRST)); + >> + /* >> + * "usb start" initialize the usb driver >> + */ >> + exynos_usb_init(); >> } >> >> static void setup_usb_phy(struct exynos_usb_phy *usb) > > > > > Best regards, > > Lukasz Majewski > > -- > > DENX Software Engineering GmbH, Managing Director: Wolfgang Denk > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lu...@denx.de > > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot