On Friday, November 07, 2014 at 12:03:30 PM, Peng Fan wrote: [...]
> >> @@ -160,7 +174,7 @@ static int usb_phy_enable(int index, struct usb_ehci > >> *ehci) val |= (USBPHY_CTRL_ENUTMILEVEL2 | USBPHY_CTRL_ENUTMILEVEL3); > >> > >> __raw_writel(val, phy_ctrl); > >> > >> - return val & USBPHY_CTRL_OTG_ID; > >> + return board_usb_phy_mode(index); > > > > This should be called from ehci_hcd_init() right after usb_phy_enable(). > > Afterall, the mode detection has nothing to do with the PHY enabling. > > This back to what I did in patch v2. right after usb_phy_enable(), just > paste that piece of code here: > > The weak function: > +int __weak board_ehci_usb_mode(int index, enum usb_init_type *type) > +{ > + return 0; > +} > + > > type = usb_phy_enable(index, ehci) ? USB_INIT_DEVICE : > USB_INIT_HOST; > > + board_usb_phy_mode(index, &type); > + The usb_phy_enable() should not return the PHY mode at all though. It should be the board_usb_phy_mode() which adjusts the PHY type. The usb_phy_enable() should return just a success/failure return value. > What need to do is to let board can modify the `type` like following: > +int board_usb_phy_mode(int port, enum usb_init_type *type) > +{ > + if (port == 1) > + /* port1 works in HOST Mode */ > + *type = USB_INIT_HOST; > + > + return 0; > +} > + > This is the way that I did in patch v2. If this is fine, I'll resent > this patch set. It should really explicitly set it, not modify it, see above. [...] _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot