]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: dsa: microchip: Write switch MAC address differently for KSZ8463
authorTristram Ha <tristram.ha@microchip.com>
Fri, 25 Jul 2025 00:17:51 +0000 (17:17 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 26 Jul 2025 00:01:56 +0000 (17:01 -0700)
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>
drivers/net/dsa/microchip/ksz_common.c

index 552c993b65194029457d294f63d92dbb0dcf9933..e47c4a5aad6fd1c4c4780280df595fce846fe855 100644 (file)
@@ -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;
        }