From e2b1d186d75a4af26ba06f94282f953b79b6bad6 Mon Sep 17 00:00:00 2001 From: Jani Paalijarvi Date: Wed, 20 Nov 2024 14:33:50 +0200 Subject: [PATCH] drivers/net/ksz9477.c: Errata 16, reset SGMII always on init --- drivers/net/ksz9477.c | 8 ++++++++ drivers/net/ksz9477_reg.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/drivers/net/ksz9477.c b/drivers/net/ksz9477.c index cbce7506c45..296dfc797d5 100644 --- a/drivers/net/ksz9477.c +++ b/drivers/net/ksz9477.c @@ -640,6 +640,14 @@ int ksz9477_init(ksz9477_port_t master_port) return ret ? ret : -EINVAL; } + /* Errata 16: SGMII registers are not initialized by hardware reset + * To ensure clean environment, reset the switch now. + */ + + regval16 = SGMII_CONTROL_SOFT_RESET; + ret = ksz9477_sgmii_write_indirect(KSZ9477_SGMII_CONTROL, + ®val16, 1); + /* Check that indirect access to PHY MMD works. * Write LED mode to single-LED mode and verify access by * reading back the value. diff --git a/drivers/net/ksz9477_reg.h b/drivers/net/ksz9477_reg.h index 001a78a0e90..142a1e4590b 100644 --- a/drivers/net/ksz9477_reg.h +++ b/drivers/net/ksz9477_reg.h @@ -100,6 +100,10 @@ /* Register bit definitions */ +/* KSZ9477_SGMII_CONTROL */ + +#define SGMII_CONTROL_SOFT_RESET (1 << 15) + /* KSZ9477_ID2, KSZ9477_ID1 */ #define KSZ9477_ID 0x9477