You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/layerscape/patches-5.4/701-net-0169-staging-fsl-dp...

50 lines
1.7 KiB
Diff

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);