summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Perry <charles.perry@microchip.com>2026-02-24 23:28:53 +0300
committerJakub Kicinski <kuba@kernel.org>2026-02-27 06:19:24 +0300
commit7f44b2acc5a111471d8a3ae0e809bd419c0237e0 (patch)
treef4ae6a174f628f4240e28c83dea242fb20cbeb3d
parent1338cfef1ff1b95891990f8677631a834c2cf22d (diff)
downloadlinux-7f44b2acc5a111471d8a3ae0e809bd419c0237e0.tar.xz
net: macb: add support for reporting SGMII inband link status
This makes it possible to use in-band autonegotiation with SGMII. If using a device tree, this can be done by adding the managed = "in-band-status" property to the gem node. Signed-off-by: Charles Perry <charles.perry@microchip.com> Link: https://patch.msgid.link/20260224202854.112813-3-charles.perry@microchip.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/cadence/macb_main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index fc26e70e23d4..8c192d65eeeb 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -560,7 +560,12 @@ static int macb_usx_pcs_config(struct phylink_pcs *pcs,
static void macb_pcs_get_state(struct phylink_pcs *pcs, unsigned int neg_mode,
struct phylink_link_state *state)
{
- state->link = 0;
+ struct macb *bp = container_of(pcs, struct macb, phylink_sgmii_pcs);
+ u16 bmsr, lpa;
+
+ bmsr = gem_readl(bp, PCSSTS);
+ lpa = gem_readl(bp, PCSANLPBASE);
+ phylink_mii_c22_pcs_decode_state(state, neg_mode, bmsr, lpa);
}
static void macb_pcs_an_restart(struct phylink_pcs *pcs)