layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 701-net-0169-staging-fsl-dpaa2-mac-read-phy-mode-from-device-tree.patch
diff --git a/target/linux/layerscape/patches-5.4/701-net-0169-staging-fsl-dpaa2-mac-read-phy-mode-from-device-tree.patch b/target/linux/layerscape/patches-5.4/701-net-0169-staging-fsl-dpaa2-mac-read-phy-mode-from-device-tree.patch
new file mode 100644 (file)
index 0000000..1833319
--- /dev/null
@@ -0,0 +1,49 @@
+From 781d22f6cf6aded86e80be995b5c875c61512567 Mon Sep 17 00:00:00 2001
+From: Ioana Radulescu <ruxandra.radulescu@nxp.com>
+Date: Thu, 18 Oct 2018 20:12:38 +0300
+Subject: [PATCH] staging: fsl-dpaa2/mac: read phy mode from device tree
+
+If the a dpmac node defines its phy mode in the device tree using
+the 'phy-mode' or the 'phy-connection-type' attributes this will take
+precedence over the interface mode reported by the MC in the
+dpmac attributes structure.
+
+Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
+Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
+---
+ drivers/staging/fsl-dpaa2/mac/mac.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/fsl-dpaa2/mac/mac.c
++++ b/drivers/staging/fsl-dpaa2/mac/mac.c
+@@ -466,7 +466,7 @@ static int dpaa2_mac_probe(struct fsl_mc
+       struct dpaa2_mac_priv   *priv = NULL;
+       struct device_node      *phy_node, *dpmac_node;
+       struct net_device       *netdev;
+-      phy_interface_t         if_mode;
++      int                     if_mode;
+       int                     err = 0;
+       dev = &mc_dev->dev;
+@@ -555,6 +555,13 @@ static int dpaa2_mac_probe(struct fsl_mc
+               goto probe_fixed_link;
+       }
++      if_mode = of_get_phy_mode(dpmac_node);
++      if (if_mode >= 0) {
++              dev_dbg(dev, "\tusing if mode %s for eth_if %d\n",
++                      phy_modes(if_mode), priv->attr.eth_if);
++              goto phy_connect;
++      }
++
+       if (priv->attr.eth_if < ARRAY_SIZE(dpaa2_mac_iface_mode)) {
+               if_mode = dpaa2_mac_iface_mode[priv->attr.eth_if];
+               dev_dbg(dev, "\tusing if mode %s for eth_if %d\n",
+@@ -565,6 +572,7 @@ static int dpaa2_mac_probe(struct fsl_mc
+               goto probe_fixed_link;
+       }
++phy_connect:
+       /* try to connect to the PHY */
+       netdev->phydev = of_phy_connect(netdev, phy_node,
+                                       &dpaa2_mac_link_changed, 0, if_mode);