1 From 1c86828dff88e28b8ade6bddeee0163a023faf91 Mon Sep 17 00:00:00 2001
2 From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
3 Date: Tue, 3 Dec 2024 15:31:12 +0000
4 Subject: [PATCH 06/13] net: phy: marvell: implement phy_inband_caps() method
6 Provide an implementation for phy_inband_caps() for Marvell PHYs used
7 on SFP modules, so that phylink knows the PHYs capabilities.
9 Reviewed-by: Andrew Lunn <andrew@lunn.ch>
10 Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
11 Link: https://patch.msgid.link/E1tIUro-006IUC-Rq@rmk-PC.armlinux.org.uk
12 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
14 drivers/net/phy/marvell.c | 17 +++++++++++++++++
15 1 file changed, 17 insertions(+)
17 --- a/drivers/net/phy/marvell.c
18 +++ b/drivers/net/phy/marvell.c
19 @@ -673,6 +673,20 @@ static int marvell_config_aneg_fiber(str
20 return genphy_check_and_restart_aneg(phydev, changed);
23 +static unsigned int m88e1111_inband_caps(struct phy_device *phydev,
24 + phy_interface_t interface)
26 + /* In 1000base-X and SGMII modes, the inband mode can be changed
27 + * through the Fibre page BMCR ANENABLE bit.
29 + if (interface == PHY_INTERFACE_MODE_1000BASEX ||
30 + interface == PHY_INTERFACE_MODE_SGMII)
31 + return LINK_INBAND_DISABLE | LINK_INBAND_ENABLE |
37 static int m88e1111_config_aneg(struct phy_device *phydev)
39 int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR);
40 @@ -3292,6 +3306,7 @@ static struct phy_driver marvell_drivers
41 .name = "Marvell 88E1112",
42 /* PHY_GBIT_FEATURES */
43 .probe = marvell_probe,
44 + .inband_caps = m88e1111_inband_caps,
45 .config_init = m88e1112_config_init,
46 .config_aneg = marvell_config_aneg,
47 .config_intr = marvell_config_intr,
48 @@ -3312,6 +3327,7 @@ static struct phy_driver marvell_drivers
49 .name = "Marvell 88E1111",
50 /* PHY_GBIT_FEATURES */
51 .probe = marvell_probe,
52 + .inband_caps = m88e1111_inband_caps,
53 .config_init = m88e1111gbe_config_init,
54 .config_aneg = m88e1111_config_aneg,
55 .read_status = marvell_read_status,
56 @@ -3333,6 +3349,7 @@ static struct phy_driver marvell_drivers
57 .name = "Marvell 88E1111 (Finisar)",
58 /* PHY_GBIT_FEATURES */
59 .probe = marvell_probe,
60 + .inband_caps = m88e1111_inband_caps,
61 .config_init = m88e1111gbe_config_init,
62 .config_aneg = m88e1111_config_aneg,
63 .read_status = marvell_read_status,