All checks were successful
target_linux_generic / Update target_linux_generic (openwrt-25.12) (push) Successful in 8s
78 lines
2.5 KiB
Diff
78 lines
2.5 KiB
Diff
From a219912e0fec73c346e64ef47013cb2e152f88fc Mon Sep 17 00:00:00 2001
|
|
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
Date: Tue, 3 Dec 2024 15:31:23 +0000
|
|
Subject: [PATCH 08/13] net: phy: marvell: implement config_inband() method
|
|
|
|
Implement the config_inband() method for Marvell 88E1112, 88E1111,
|
|
and Finisar's 88E1111 variant.
|
|
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
Link: https://patch.msgid.link/E1tIUrz-006IUO-3r@rmk-PC.armlinux.org.uk
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/phy/marvell.c | 31 +++++++++++++++++++++++++++++++
|
|
1 file changed, 31 insertions(+)
|
|
|
|
--- a/drivers/net/phy/marvell.c
|
|
+++ b/drivers/net/phy/marvell.c
|
|
@@ -730,6 +730,34 @@ static unsigned int m88e1111_inband_caps
|
|
return 0;
|
|
}
|
|
|
|
+static int m88e1111_config_inband(struct phy_device *phydev, unsigned int modes)
|
|
+{
|
|
+ u16 extsr, bmcr;
|
|
+ int err;
|
|
+
|
|
+ if (phydev->interface != PHY_INTERFACE_MODE_1000BASEX &&
|
|
+ phydev->interface != PHY_INTERFACE_MODE_SGMII)
|
|
+ return -EINVAL;
|
|
+
|
|
+ if (modes == LINK_INBAND_BYPASS)
|
|
+ extsr = MII_M1111_HWCFG_SERIAL_AN_BYPASS;
|
|
+ else
|
|
+ extsr = 0;
|
|
+
|
|
+ if (modes == LINK_INBAND_DISABLE)
|
|
+ bmcr = 0;
|
|
+ else
|
|
+ bmcr = BMCR_ANENABLE;
|
|
+
|
|
+ err = phy_modify(phydev, MII_M1111_PHY_EXT_SR,
|
|
+ MII_M1111_HWCFG_SERIAL_AN_BYPASS, extsr);
|
|
+ if (err < 0)
|
|
+ return extsr;
|
|
+
|
|
+ return phy_modify_paged(phydev, MII_MARVELL_FIBER_PAGE, MII_BMCR,
|
|
+ BMCR_ANENABLE, bmcr);
|
|
+}
|
|
+
|
|
static int m88e1111_config_aneg(struct phy_device *phydev)
|
|
{
|
|
int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR);
|
|
@@ -3719,6 +3747,7 @@ static struct phy_driver marvell_drivers
|
|
/* PHY_GBIT_FEATURES */
|
|
.probe = marvell_probe,
|
|
.inband_caps = m88e1111_inband_caps,
|
|
+ .config_inband = m88e1111_config_inband,
|
|
.config_init = m88e1112_config_init,
|
|
.config_aneg = marvell_config_aneg,
|
|
.config_intr = marvell_config_intr,
|
|
@@ -3741,6 +3770,7 @@ static struct phy_driver marvell_drivers
|
|
.flags = PHY_POLL_CABLE_TEST,
|
|
.probe = marvell_probe,
|
|
.inband_caps = m88e1111_inband_caps,
|
|
+ .config_inband = m88e1111_config_inband,
|
|
.config_init = m88e1111gbe_config_init,
|
|
.config_aneg = m88e1111_config_aneg,
|
|
.read_status = marvell_read_status,
|
|
@@ -3765,6 +3795,7 @@ static struct phy_driver marvell_drivers
|
|
/* PHY_GBIT_FEATURES */
|
|
.probe = marvell_probe,
|
|
.inband_caps = m88e1111_inband_caps,
|
|
+ .config_inband = m88e1111_config_inband,
|
|
.config_init = m88e1111gbe_config_init,
|
|
.config_aneg = m88e1111_config_aneg,
|
|
.read_status = marvell_read_status,
|