[PATCH 3/3] net/axgbe: Add support for 100Mbps link speed

Ashok Kumar Natarajan
2026-02-16T12:52:58Z

Add 100Mbps link speed support to the axgbe driver. This update enables
the MAC and PHY configuration required to operate at 100M, including
proper mode selection and link handling.

Signed-off-by: Ashok Kumar Natarajan <ashokkumar.natarajan@amd.com>
---
drivers/net/axgbe/axgbe_mdio.c | 4 ++--
drivers/net/axgbe/axgbe_phy_impl.c | 15 +++++++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/net/axgbe/axgbe_mdio.c b/drivers/net/axgbe/axgbe_mdio.c
index 952a0add62..a37cd8b80d 100644
--- a/drivers/net/axgbe/axgbe_mdio.c
+++ b/drivers/net/axgbe/axgbe_mdio.c
@@ -155,8 +155,8 @@ static void axgbe_sgmii_10_mode(struct axgbe_port *pdata)
static void axgbe_sgmii_100_mode(struct axgbe_port *pdata)
{

- /* Set MAC to 1G speed */
- pdata->hw_if.set_speed(pdata, SPEED_1000);
+ /* Set MAC to 100M speed */
+ pdata->hw_if.set_speed(pdata, SPEED_100);

/* Call PHY implementation support to complete rate change */
pdata->phy_if.phy_impl.set_mode(pdata, AXGBE_MODE_SGMII_100);
diff --git a/drivers/net/axgbe/axgbe_phy_impl.c b/drivers/net/axgbe/axgbe_phy_impl.c
index 20cfdcc796..3dbbee15b0 100644
--- a/drivers/net/axgbe/axgbe_phy_impl.c
+++ b/drivers/net/axgbe/axgbe_phy_impl.c
@@ -1534,6 +1534,18 @@ static void axgbe_phy_sgmii_1000_mode(struct axgbe_port *pdata)
phy_data->cur_mode = AXGBE_MODE_SGMII_1000;
}

+static void axgbe_phy_sgmii_100_mode(struct axgbe_port *pdata)
+{
+ struct axgbe_phy_data *phy_data = pdata->phy_data;
+
+ axgbe_phy_set_redrv_mode(pdata);
+
+ /* 100M/SGMII */
+ axgbe_phy_perform_ratechange(pdata, AXGBE_MB_CMD_SET_1G, AXGBE_MB_SUBCMD_100MBITS);
+
+ phy_data->cur_mode = AXGBE_MODE_SGMII_100;
+}
+
static void axgbe_phy_sgmii_10_mode(struct axgbe_port *pdata)
{
struct axgbe_phy_data *phy_data = pdata->phy_data;
@@ -1731,6 +1743,9 @@ static void axgbe_phy_set_mode(struct axgbe_port *pdata, enum axgbe_mode mode)
case AXGBE_MODE_SGMII_1000:
axgbe_phy_sgmii_1000_mode(pdata);
break;
+ case AXGBE_MODE_SGMII_100:
+ axgbe_phy_sgmii_100_mode(pdata);
+ break;
case AXGBE_MODE_SGMII_10:
axgbe_phy_sgmii_10_mode(pdata);
break;
--
2.34.1