From: Shawn Lin Date: Mon, 7 Mar 2016 04:32:21 +0000 (+0800) Subject: PCI: keystone: Defer probing if devm_phy_get() returns -EPROBE_DEFER X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=25de15c958e98747c7dada3983474bd4b8ae381b;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git PCI: keystone: Defer probing if devm_phy_get() returns -EPROBE_DEFER A SerDes PHY is optional, so if devm_phy_get() doesn't find one at all, that's fine. But if devm_phy_get() finds a PHY that doesn't have a driver yet, it returns -EPROBE_DEFER. In that case, defer probing the Keystone driver. We may be able to load it later after a PHY driver is loaded. [bhelgaas: changelog, check for -EPROBE_DEFER first] Signed-off-by: Shawn Lin Signed-off-by: Bjorn Helgaas --- diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c index 0aa81bd3de12..cd7034523f52 100644 --- a/drivers/pci/host/pci-keystone.c +++ b/drivers/pci/host/pci-keystone.c @@ -359,6 +359,9 @@ static int __init ks_pcie_probe(struct platform_device *pdev) /* initialize SerDes Phy if present */ phy = devm_phy_get(dev, "pcie-phy"); + if (PTR_ERR_OR_ZERO(phy) == -EPROBE_DEFER) + return PTR_ERR(phy); + if (!IS_ERR_OR_NULL(phy)) { ret = phy_init(phy); if (ret < 0)