On Tue, Apr 27, 2021 at 6:59 PM Marek Vasut <ma...@denx.de> wrote: > > On 4/28/21 3:51 AM, Tim Harvey wrote: > > On Tue, Apr 27, 2021 at 10:45 AM Marek Vasut <ma...@denx.de> wrote: > >> > >> On 4/27/21 7:08 PM, Tim Harvey wrote: > >>> There is no need to set and/or detect mode in of_to_plat and > >>> accessing phy registers at that point before device power domain and > >>> clock are enabled will cause hangs on platforms such as IMX8M Mini. > >>> > >>> Move the mode set/detect from of_to_plat into the probe and remove > >>> the unnecessary of_to_plat. > >>> > >>> Signed-off-by: Tim Harvey <thar...@gateworks.com> > >>> --- > >>> drivers/usb/host/ehci-mx6.c | 42 ++++++++++++++----------------------- > >>> 1 file changed, 16 insertions(+), 26 deletions(-) > >>> > >>> diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c > >>> index 06be9deaaa..c2dfe49012 100644 > >>> --- a/drivers/usb/host/ehci-mx6.c > >>> +++ b/drivers/usb/host/ehci-mx6.c > >>> @@ -539,28 +539,6 @@ static int ehci_usb_phy_mode(struct udevice *dev) > >>> return 0; > >>> } > >>> > >>> -static int ehci_usb_of_to_plat(struct udevice *dev) > >>> -{ > >>> - struct usb_plat *plat = dev_get_plat(dev); > >>> - enum usb_dr_mode dr_mode; > >>> - > >>> - dr_mode = usb_get_dr_mode(dev_ofnode(dev)); > >>> - > >>> - switch (dr_mode) { > >>> - case USB_DR_MODE_HOST: > >>> - plat->init_type = USB_INIT_HOST; > >>> - break; > >>> - case USB_DR_MODE_PERIPHERAL: > >>> - plat->init_type = USB_INIT_DEVICE; > >>> - break; > >>> - case USB_DR_MODE_OTG: > >>> - case USB_DR_MODE_UNKNOWN: > >>> - return ehci_usb_phy_mode(dev); > >>> - }; > >>> - > >>> - return 0; > >>> -} > >>> - > >> > >> [...] > >> > >>> @@ -764,7 +755,6 @@ U_BOOT_DRIVER(usb_mx6) = { > >>> .name = "ehci_mx6", > >>> .id = UCLASS_USB, > >>> .of_match = mx6_usb_ids, > >>> - .of_to_plat = ehci_usb_of_to_plat, > >> > >> I wonder why it was implemented in of_to_plat originally , maybe there > >> is some reason for that ? > > > > Marek, > > > > Looking back the commit that added the ehci_usb_ofdata_to_platdata was: > > cccbddc38c43 ("usb: ehci-mx6: implement ofdata_to_platdata") > > > > Before that there was a board-specific function that would set the > > usb_plat->init_type. > > > > The only reason to set usb_plat->init_type in of_to_plat would be so > > that drivers/usb/host/usb-uclass.c would have knowledge of it but I > > only see that it is set there in usb_setup_ehci_gadget. > > So interaction with Gadget, that's what I was afraid of. > > > I added Peng, Stefano, and Simon to the thread to see if they see an > > issue with doing away with of_to_plat setting the usb_plat->init_type > > prior to probe. > > I added Lukasz too.
Marek, Is there something you want me to change here? I am happy to test gadget support as my board has an OTG connector. Could you give me some pointers on how to configure a gadget in U-Boot in order to test? Best regards, Tim