Dear Andrew Lunn, On Tue, 6 May 2014 15:33:41 +0200, Andrew Lunn wrote: > > + priv->phy = devm_phy_get(&pdev->dev, "usb"); > > + if (!IS_ERR(priv->phy)) { > > + err = phy_init(priv->phy); > > + if (err) > > + goto err2; > > + > > + err = phy_power_on(priv->phy); > > + if (err) > > + goto err3; > > + } > > Hi Gregory > > What about EPROBE_DEFERRED? In v4 (to be submitted soon), I've changed this to: priv->phy = devm_phy_optional_get(&pdev->dev, "usb"); if (IS_ERR(priv->phy)) { err = PTR_ERR(priv->phy); goto err_phy_get; } else { err = phy_init(priv->phy); if (err) goto err_phy_init; err = phy_power_on(priv->phy); if (err) goto err_phy_power_on; } Thanks to devm_phy_optional_get(), the fact of not having a PHY in the DT is not considered an error. So on any error from devm_phy_optional_get() (including -EPROBE_DEFER), we simply bail out. Does this looks good? Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html