diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0250-net-mscc-ocelot-refactor-adjust_link-into-a-netdev-i.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0250-net-mscc-ocelot-refactor-adjust_link-into-a-netdev-i.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0250-net-mscc-ocelot-refactor-adjust_link-into-a-netdev-i.patch b/target/linux/layerscape/patches-5.4/701-net-0250-net-mscc-ocelot-refactor-adjust_link-into-a-netdev-i.patch new file mode 100644 index 0000000000..7f80cd4a88 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0250-net-mscc-ocelot-refactor-adjust_link-into-a-netdev-i.patch @@ -0,0 +1,72 @@ +From f8c221dc7383a50defcc5b96595e092159dbe928 Mon Sep 17 00:00:00 2001 +From: Vladimir Oltean <vladimir.oltean@nxp.com> +Date: Sat, 9 Nov 2019 15:02:59 +0200 +Subject: [PATCH] net: mscc: ocelot: refactor adjust_link into a + netdev-independent function + +This will be called from the Felix DSA frontend, which will work in +PHYLIB compatibility mode initially. + +Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + drivers/net/ethernet/mscc/ocelot.c | 27 +++++++++++++++++---------- + 1 file changed, 17 insertions(+), 10 deletions(-) + +--- a/drivers/net/ethernet/mscc/ocelot.c ++++ b/drivers/net/ethernet/mscc/ocelot.c +@@ -410,15 +410,13 @@ static u16 ocelot_wm_enc(u16 value) + return value; + } + +-static void ocelot_port_adjust_link(struct net_device *dev) ++static void ocelot_adjust_link(struct ocelot *ocelot, int port, ++ struct phy_device *phydev) + { +- struct ocelot_port_private *priv = netdev_priv(dev); +- struct ocelot_port *ocelot_port = &priv->port; +- struct ocelot *ocelot = ocelot_port->ocelot; ++ struct ocelot_port *ocelot_port = ocelot->ports[port]; + int speed, atop_wm, mode = 0; +- u8 port = priv->chip_port; + +- switch (dev->phydev->speed) { ++ switch (phydev->speed) { + case SPEED_10: + speed = OCELOT_SPEED_10; + break; +@@ -434,14 +432,14 @@ static void ocelot_port_adjust_link(stru + mode = DEV_MAC_MODE_CFG_GIGA_MODE_ENA; + break; + default: +- netdev_err(dev, "Unsupported PHY speed: %d\n", +- dev->phydev->speed); ++ dev_err(ocelot->dev, "Unsupported PHY speed on port %d: %d\n", ++ port, phydev->speed); + return; + } + +- phy_print_status(dev->phydev); ++ phy_print_status(phydev); + +- if (!dev->phydev->link) ++ if (!phydev->link) + return; + + /* Only full duplex supported for now */ +@@ -536,6 +534,15 @@ static void ocelot_port_adjust_link(stru + ocelot_write(ocelot, ocelot_wm_enc(atop_wm), SYS_ATOP_TOT_CFG); + } + ++static void ocelot_port_adjust_link(struct net_device *dev) ++{ ++ struct ocelot_port_private *priv = netdev_priv(dev); ++ struct ocelot *ocelot = priv->port.ocelot; ++ int port = priv->chip_port; ++ ++ ocelot_adjust_link(ocelot, port, dev->phydev); ++} ++ + static void ocelot_port_enable(struct ocelot *ocelot, int port, + struct phy_device *phy) + { |