From 781d22f6cf6aded86e80be995b5c875c61512567 Mon Sep 17 00:00:00 2001 From: Ioana Radulescu 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 Signed-off-by: Ioana Radulescu --- 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);