CC: mvebu: kirkwood: fix ehci-orion probe if generic-phy isn't enabled
authorJonas Gorski <jogo@openwrt.org>
Sun, 23 Aug 2015 13:37:42 +0000 (13:37 +0000)
committerJonas Gorski <jogo@openwrt.org>
Sun, 23 Aug 2015 13:37:42 +0000 (13:37 +0000)
Properly treat -ENOSYS as no PHY, else ehci-orion won't work without
generic phy support.

Backport of r46711.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46712

target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch [new file with mode: 0644]

diff --git a/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch b/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch
new file mode 100644 (file)
index 0000000..5a3dc06
--- /dev/null
@@ -0,0 +1,35 @@
+From a95f03e51471dbdbafd3391991d867ac2358ed02 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Sun, 23 Aug 2015 14:23:29 +0200
+Subject: [PATCH] usb: ehci-orion: fix probe for !GENERIC_PHY
+
+Commit d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
+added support for optional phys, but devm_phy_optional_get returns
+-ENOSYS if GENERIC_PHY is not enabled.
+
+This causes probe failures, even when there are no phys specified:
+
+[    1.443365] orion-ehci f1058000.usb: init f1058000.usb fail, -38
+[    1.449403] orion-ehci: probe of f1058000.usb failed with error -38
+
+Similar to dwc3, treat -ENOSYS as no phy.
+
+Fixes: d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
+
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+ drivers/usb/host/ehci-orion.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/ehci-orion.c
++++ b/drivers/usb/host/ehci-orion.c
+@@ -226,7 +226,8 @@ static int ehci_orion_drv_probe(struct p
+       priv->phy = devm_phy_optional_get(&pdev->dev, "usb");
+       if (IS_ERR(priv->phy)) {
+               err = PTR_ERR(priv->phy);
+-              goto err_phy_get;
++              if (err != -ENOSYS)
++                      goto err_phy_get;
+       } else {
+               err = phy_init(priv->phy);
+               if (err)