diff options
Diffstat (limited to 'drivers/net/dsa/microchip/ksz_common.c')
| -rw-r--r-- | drivers/net/dsa/microchip/ksz_common.c | 11 | 
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;  	}  | 
