]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: phy: update all PHYs to use sfp_get_module_caps()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 16 Sep 2025 21:47:02 +0000 (22:47 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 22 Sep 2025 23:05:15 +0000 (16:05 -0700)
Update all PHYs to use sfp_get_module_caps() rather than the
sfp_parse_*() family of functions.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1uydVu-000000061Wd-0cAG@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/marvell-88x2222.c
drivers/net/phy/marvell.c
drivers/net/phy/marvell10g.c
drivers/net/phy/qcom/at803x.c
drivers/net/phy/qcom/qca807x.c

index fad2f54c1eac22dec4f095651567d1323a64ced2..894bcee61e6557a141d2a97ae6f1e8af655b8b2b 100644 (file)
@@ -475,21 +475,20 @@ static int mv2222_config_init(struct phy_device *phydev)
 
 static int mv2222_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
 {
-       DECLARE_PHY_INTERFACE_MASK(interfaces);
        struct phy_device *phydev = upstream;
+       const struct sfp_module_caps *caps;
        phy_interface_t sfp_interface;
        struct mv2222_data *priv;
        struct device *dev;
        int ret;
 
-       __ETHTOOL_DECLARE_LINK_MODE_MASK(sfp_supported) = { 0, };
-
        priv = phydev->priv;
        dev = &phydev->mdio.dev;
 
-       sfp_parse_support(phydev->sfp_bus, id, sfp_supported, interfaces);
-       phydev->port = sfp_parse_port(phydev->sfp_bus, id, sfp_supported);
-       sfp_interface = sfp_select_interface(phydev->sfp_bus, sfp_supported);
+       caps = sfp_get_module_caps(phydev->sfp_bus);
+
+       phydev->port = caps->port;
+       sfp_interface = sfp_select_interface(phydev->sfp_bus, caps->link_modes);
 
        dev_info(dev, "%s SFP module inserted\n", phy_modes(sfp_interface));
 
@@ -502,7 +501,7 @@ static int mv2222_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
        }
 
        priv->line_interface = sfp_interface;
-       linkmode_and(priv->supported, phydev->supported, sfp_supported);
+       linkmode_and(priv->supported, phydev->supported, caps->link_modes);
 
        ret = mv2222_config_line(phydev);
        if (ret < 0)
index 0ea366c1217eb3a6ddc26a8333280c211bd9545c..c248c90510ae513b76243dc8aeea998a234c9c47 100644 (file)
@@ -3600,20 +3600,18 @@ static int marvell_probe(struct phy_device *phydev)
 
 static int m88e1510_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
 {
-       DECLARE_PHY_INTERFACE_MASK(interfaces);
        struct phy_device *phydev = upstream;
+       const struct sfp_module_caps *caps;
        phy_interface_t interface;
        struct device *dev;
        int oldpage;
        int ret = 0;
        u16 mode;
 
-       __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = { 0, };
-
        dev = &phydev->mdio.dev;
 
-       sfp_parse_support(phydev->sfp_bus, id, supported, interfaces);
-       interface = sfp_select_interface(phydev->sfp_bus, supported);
+       caps = sfp_get_module_caps(phydev->sfp_bus);
+       interface = sfp_select_interface(phydev->sfp_bus, caps->link_modes);
 
        dev_info(dev, "%s SFP module inserted\n", phy_modes(interface));
 
index 13e81dff42c1522a3f1f1c6801c188b63263690b..8fd42131cdbf9b54982e7ef83f3b0da1ec41d2ed 100644 (file)
@@ -466,12 +466,11 @@ static int mv3310_set_edpd(struct phy_device *phydev, u16 edpd)
 static int mv3310_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
 {
        struct phy_device *phydev = upstream;
-       __ETHTOOL_DECLARE_LINK_MODE_MASK(support) = { 0, };
-       DECLARE_PHY_INTERFACE_MASK(interfaces);
+       const struct sfp_module_caps *caps;
        phy_interface_t iface;
 
-       sfp_parse_support(phydev->sfp_bus, id, support, interfaces);
-       iface = sfp_select_interface(phydev->sfp_bus, support);
+       caps = sfp_get_module_caps(phydev->sfp_bus);
+       iface = sfp_select_interface(phydev->sfp_bus, caps->link_modes);
 
        if (iface != PHY_INTERFACE_MODE_10GBASER) {
                dev_err(&phydev->mdio.dev, "incompatible SFP module inserted\n");
index 51a132242462a6fc433b3e9a8fa9aa282e16d647..338acd11a9b65e9b03f503b207124d1f235c28ff 100644 (file)
@@ -771,10 +771,10 @@ static int at8031_register_regulators(struct phy_device *phydev)
 
 static int at8031_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
 {
-       struct phy_device *phydev = upstream;
        __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_support);
        __ETHTOOL_DECLARE_LINK_MODE_MASK(sfp_support);
-       DECLARE_PHY_INTERFACE_MASK(interfaces);
+       struct phy_device *phydev = upstream;
+       const struct sfp_module_caps *caps;
        phy_interface_t iface;
 
        linkmode_zero(phy_support);
@@ -784,12 +784,11 @@ static int at8031_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
        phylink_set(phy_support, Pause);
        phylink_set(phy_support, Asym_Pause);
 
-       linkmode_zero(sfp_support);
-       sfp_parse_support(phydev->sfp_bus, id, sfp_support, interfaces);
+       caps = sfp_get_module_caps(phydev->sfp_bus);
        /* Some modules support 10G modes as well as others we support.
         * Mask out non-supported modes so the correct interface is picked.
         */
-       linkmode_and(sfp_support, phy_support, sfp_support);
+       linkmode_and(sfp_support, phy_support, caps->link_modes);
 
        if (linkmode_empty(sfp_support)) {
                dev_err(&phydev->mdio.dev, "incompatible SFP module inserted\n");
index 070dc8c008356160019573baab2a39eb71d07598..1be8295a95cb5cacef1c169e6f2df58872e960bc 100644 (file)
@@ -646,13 +646,12 @@ exit:
 static int qca807x_sfp_insert(void *upstream, const struct sfp_eeprom_id *id)
 {
        struct phy_device *phydev = upstream;
-       __ETHTOOL_DECLARE_LINK_MODE_MASK(support) = { 0, };
+       const struct sfp_module_caps *caps;
        phy_interface_t iface;
        int ret;
-       DECLARE_PHY_INTERFACE_MASK(interfaces);
 
-       sfp_parse_support(phydev->sfp_bus, id, support, interfaces);
-       iface = sfp_select_interface(phydev->sfp_bus, support);
+       caps = sfp_get_module_caps(phydev->sfp_bus);
+       iface = sfp_select_interface(phydev->sfp_bus, caps->link_modes);
 
        dev_info(&phydev->mdio.dev, "%s SFP module inserted\n", phy_modes(iface));