summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristram Ha <tristram.ha@microchip.com>2025-07-24 17:17:51 -0700
committerJakub Kicinski <kuba@kernel.org>2025-07-25 17:01:56 -0700
commit5bcdb1373a6c8ffbe2d139a9c7f1fa27d2525b10 (patch)
treed1f1dd5b390f3dc2bdd78bd01d51895b595e0496
parent15b8d3e38607efdae25d2845063cf5f6750ef89b (diff)
net: dsa: microchip: Write switch MAC address differently for KSZ8463
KSZ8463 uses 16-bit register definitions so it writes differently for 8-bit switch MAC address. Signed-off-by: Tristram Ha <tristram.ha@microchip.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20250725001753.6330-5-Tristram.Ha@microchip.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/dsa/microchip/ksz_common.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 552c993b6519..e47c4a5aad6f 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -4821,7 +4821,16 @@ int ksz_switch_macaddr_get(struct dsa_switch *ds, int port,
/* Program the switch MAC address to hardware */
for (i = 0; i < ETH_ALEN; i++) {
- ret = ksz_write8(dev, regs[REG_SW_MAC_ADDR] + i, addr[i]);
+ if (ksz_is_ksz8463(dev)) {
+ u16 addr16 = ((u16)addr[i] << 8) | addr[i + 1];
+
+ ret = ksz_write16(dev, regs[REG_SW_MAC_ADDR] + i,
+ addr16);
+ i++;
+ } else {
+ ret = ksz_write8(dev, regs[REG_SW_MAC_ADDR] + i,
+ addr[i]);
+ }
if (ret)
goto macaddr_drop;
}