> From: Yunzhi Li [mailto:lyz@xxxxxxxxxxxxxx] > Sent: Saturday, January 10, 2015 8:07 AM > > 在 2015/1/9 10:15, Paul Zimmerman 写道: > >> [...] > >> /* > >> - * Attempt to find a generic PHY, then look for an old style > >> - * USB PHY, finally fall back to pdata > >> + * If platform probe couldn't find a generic PHY or an old style > >> + * USB PHY, fall back to pdata > >> */ > >> - phy = devm_phy_get(dev, "usb2-phy"); > >> - if (IS_ERR(phy)) { > >> - uphy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); > >> - if (IS_ERR(uphy)) { > >> - /* Fallback for pdata */ > >> - plat = dev_get_platdata(dev); > >> - if (!plat) { > >> - dev_err(dev, > >> - "no platform data or transceiver defined\n"); > >> - return -EPROBE_DEFER; > >> - } > >> - hsotg->plat = plat; > >> - } else > >> - hsotg->uphy = uphy; > >> - } else { > >> - hsotg->phy = phy; > >> + if (IS_ERR_OR_NULL(hsotg->phy) && IS_ERR_OR_NULL(hsotg->uphy)) { > >> + plat = dev_get_platdata(dev); > >> + if (!plat) { > >> + dev_err(dev, > >> + "no platform data or transceiver defined\n"); > >> + return -EPROBE_DEFER; > > Hi Yunzhi, > > > > Testing Felipe's testing/next branch on an Altera SOCFPGA platform, > > the driver never loads because it always returns -EPROBE_DEFER here. > > Apparently the SOCFPGA platform does not have any platform data > > defined, because dev_get_platdata() always returns NULL. > > > > If I remove the -EPROBE_DEFER return and have it continue on, the > > driver works. Reverting the patch also makes it work. > When I debug this problem, I checked socfpga.dtsi, there is a > usbphy node defined for each > dwc2 controller, so I think when running dwc2_driver_probe() uphy = > devm_usb_get_phy() > should get a valid usbphy pointer and hsotg->uphy will not be NULL or > ERROR, then in dwc2_gadget_init() > it will not return -EPROBE_DEFER. I have no idea about why you meet > -EPROBE_DEFER, could you please tell > me what's the return value of devm_usb_get_phy() on your socfpga board ? I'm away from the hardware right now, but I just found this in a saved boot log: [ 1.097268] usb_phy_generic soc:usbphy@0: Error requesting RESET GPIO [ 1.097285] usb_phy_generic: probe of soc:usbphy@0 failed with error -2 So that probably explains it. I'll dig into this some more on Monday. -- Paul ��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥