net: dsa: Remove adjust_link paths
authorFlorian Fainelli <florian.fainelli@broadcom.com>
Tue, 30 Apr 2024 16:48:16 +0000 (09:48 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 May 2024 02:06:32 +0000 (19:06 -0700)
Now that we no longer any drivers using PHYLIB's adjust_link callback,
remove all paths that made use of adjust_link as well as the associated
functions.

Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://lore.kernel.org/r/20240430164816.2400606-3-florian.fainelli@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/dsa.h
net/dsa/dsa.c
net/dsa/port.c

index 678f1fd8b18933d2ee77cfffde56b189a4295805..eef702dbea78bcb940f9726560d04efbfb1c8c62 100644 (file)
@@ -24,8 +24,6 @@
 
 struct dsa_8021q_context;
 struct tc_action;
-struct phy_device;
-struct phylink_link_state;
 
 #define DSA_TAG_PROTO_NONE_VALUE               0
 #define DSA_TAG_PROTO_BRCM_VALUE               1
@@ -867,11 +865,6 @@ struct dsa_switch_ops {
        int     (*phy_write)(struct dsa_switch *ds, int port,
                             int regnum, u16 val);
 
-       /*
-        * Link state adjustment (called from libphy)
-        */
-       void    (*adjust_link)(struct dsa_switch *ds, int port,
-                               struct phy_device *phydev);
        /*
         * PHYLINK integration
         */
index 2f347cd37316234ab83e06ea0232efc0de41d845..12521a7d404810c7399e3f8c0baa408f0a8a4b8b 100644 (file)
@@ -1511,8 +1511,7 @@ static int dsa_switch_probe(struct dsa_switch *ds)
                    ds->ops->phylink_mac_config ||
                    ds->ops->phylink_mac_finish ||
                    ds->ops->phylink_mac_link_down ||
-                   ds->ops->phylink_mac_link_up ||
-                   ds->ops->adjust_link)
+                   ds->ops->phylink_mac_link_up)
                        return -EINVAL;
        }
 
index c6febc3d96d9bba0864cca00f3b4576c07e91ce9..9a249d4ac3a5d9dffb0e7fa899ed71e5499deb22 100644 (file)
@@ -1535,25 +1535,6 @@ void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp,
        cpu_dp->tag_ops = tag_ops;
 }
 
-static struct phy_device *dsa_port_get_phy_device(struct dsa_port *dp)
-{
-       struct device_node *phy_dn;
-       struct phy_device *phydev;
-
-       phy_dn = of_parse_phandle(dp->dn, "phy-handle", 0);
-       if (!phy_dn)
-               return NULL;
-
-       phydev = of_phy_find_device(phy_dn);
-       if (!phydev) {
-               of_node_put(phy_dn);
-               return ERR_PTR(-EPROBE_DEFER);
-       }
-
-       of_node_put(phy_dn);
-       return phydev;
-}
-
 static struct phylink_pcs *
 dsa_port_phylink_mac_select_pcs(struct phylink_config *config,
                                phy_interface_t interface)
@@ -1616,17 +1597,10 @@ static void dsa_port_phylink_mac_link_down(struct phylink_config *config,
                                           phy_interface_t interface)
 {
        struct dsa_port *dp = dsa_phylink_to_port(config);
-       struct phy_device *phydev = NULL;
        struct dsa_switch *ds = dp->ds;
 
-       if (dsa_port_is_user(dp))
-               phydev = dp->user->phydev;
-
-       if (!ds->ops->phylink_mac_link_down) {
-               if (ds->ops->adjust_link && phydev)
-                       ds->ops->adjust_link(ds, dp->index, phydev);
+       if (!ds->ops->phylink_mac_link_down)
                return;
-       }
 
        ds->ops->phylink_mac_link_down(ds, dp->index, mode, interface);
 }
@@ -1641,11 +1615,8 @@ static void dsa_port_phylink_mac_link_up(struct phylink_config *config,
        struct dsa_port *dp = dsa_phylink_to_port(config);
        struct dsa_switch *ds = dp->ds;
 
-       if (!ds->ops->phylink_mac_link_up) {
-               if (ds->ops->adjust_link && phydev)
-                       ds->ops->adjust_link(ds, dp->index, phydev);
+       if (!ds->ops->phylink_mac_link_up)
                return;
-       }
 
        ds->ops->phylink_mac_link_up(ds, dp->index, mode, interface, phydev,
                                     speed, duplex, tx_pause, rx_pause);
@@ -1708,78 +1679,6 @@ void dsa_port_phylink_destroy(struct dsa_port *dp)
        dp->pl = NULL;
 }
 
-static int dsa_shared_port_setup_phy_of(struct dsa_port *dp, bool enable)
-{
-       struct dsa_switch *ds = dp->ds;
-       struct phy_device *phydev;
-       int port = dp->index;
-       int err = 0;
-
-       phydev = dsa_port_get_phy_device(dp);
-       if (!phydev)
-               return 0;
-
-       if (IS_ERR(phydev))
-               return PTR_ERR(phydev);
-
-       if (enable) {
-               err = genphy_resume(phydev);
-               if (err < 0)
-                       goto err_put_dev;
-
-               err = genphy_read_status(phydev);
-               if (err < 0)
-                       goto err_put_dev;
-       } else {
-               err = genphy_suspend(phydev);
-               if (err < 0)
-                       goto err_put_dev;
-       }
-
-       if (ds->ops->adjust_link)
-               ds->ops->adjust_link(ds, port, phydev);
-
-       dev_dbg(ds->dev, "enabled port's phy: %s", phydev_name(phydev));
-
-err_put_dev:
-       put_device(&phydev->mdio.dev);
-       return err;
-}
-
-static int dsa_shared_port_fixed_link_register_of(struct dsa_port *dp)
-{
-       struct device_node *dn = dp->dn;
-       struct dsa_switch *ds = dp->ds;
-       struct phy_device *phydev;
-       int port = dp->index;
-       phy_interface_t mode;
-       int err;
-
-       err = of_phy_register_fixed_link(dn);
-       if (err) {
-               dev_err(ds->dev,
-                       "failed to register the fixed PHY of port %d\n",
-                       port);
-               return err;
-       }
-
-       phydev = of_phy_find_device(dn);
-
-       err = of_get_phy_mode(dn, &mode);
-       if (err)
-               mode = PHY_INTERFACE_MODE_NA;
-       phydev->interface = mode;
-
-       genphy_read_status(phydev);
-
-       if (ds->ops->adjust_link)
-               ds->ops->adjust_link(ds, port, phydev);
-
-       put_device(&phydev->mdio.dev);
-
-       return 0;
-}
-
 static int dsa_shared_port_phylink_register(struct dsa_port *dp)
 {
        struct dsa_switch *ds = dp->ds;
@@ -1983,44 +1882,28 @@ int dsa_shared_port_link_register_of(struct dsa_port *dp)
                                        dsa_switches_apply_workarounds))
                return -EINVAL;
 
-       if (!ds->ops->adjust_link) {
-               if (missing_link_description) {
-                       dev_warn(ds->dev,
-                                "Skipping phylink registration for %s port %d\n",
-                                dsa_port_is_cpu(dp) ? "CPU" : "DSA", dp->index);
-               } else {
-                       dsa_shared_port_link_down(dp);
+       if (missing_link_description) {
+               dev_warn(ds->dev,
+                        "Skipping phylink registration for %s port %d\n",
+                        dsa_port_is_cpu(dp) ? "CPU" : "DSA", dp->index);
+       } else {
+               dsa_shared_port_link_down(dp);
 
-                       return dsa_shared_port_phylink_register(dp);
-               }
-               return 0;
+               return dsa_shared_port_phylink_register(dp);
        }
 
-       dev_warn(ds->dev,
-                "Using legacy PHYLIB callbacks. Please migrate to PHYLINK!\n");
-
-       if (of_phy_is_fixed_link(dp->dn))
-               return dsa_shared_port_fixed_link_register_of(dp);
-       else
-               return dsa_shared_port_setup_phy_of(dp, true);
+       return 0;
 }
 
 void dsa_shared_port_link_unregister_of(struct dsa_port *dp)
 {
-       struct dsa_switch *ds = dp->ds;
-
-       if (!ds->ops->adjust_link && dp->pl) {
+       if (dp->pl) {
                rtnl_lock();
                phylink_disconnect_phy(dp->pl);
                rtnl_unlock();
                dsa_port_phylink_destroy(dp);
                return;
        }
-
-       if (of_phy_is_fixed_link(dp->dn))
-               of_phy_deregister_fixed_link(dp->dn);
-       else
-               dsa_shared_port_setup_phy_of(dp, false);
 }
 
 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr,