diff options
Diffstat (limited to 'drivers/net/rtl8169.c')
-rw-r--r-- | drivers/net/rtl8169.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c index a78f3d2..27e27b3 100644 --- a/drivers/net/rtl8169.c +++ b/drivers/net/rtl8169.c @@ -941,6 +941,23 @@ static void rtl_halt(struct eth_device *dev) } #endif +#ifdef CONFIG_DM_ETH +static int rtl8169_write_hwaddr(struct udevice *dev) +{ + struct eth_pdata *plat = dev_get_platdata(dev); + unsigned int i; + + RTL_W8(Cfg9346, Cfg9346_Unlock); + + for (i = 0; i < MAC_ADDR_LEN; i++) + RTL_W8(MAC0 + i, plat->enetaddr[i]); + + RTL_W8(Cfg9346, Cfg9346_Lock); + + return 0; +} +#endif + /************************************************************************** INIT - Look for an adapter, this routine's visible to the outside ***************************************************************************/ @@ -1195,6 +1212,7 @@ static const struct eth_ops rtl8169_eth_ops = { .send = rtl8169_eth_send, .recv = rtl8169_eth_recv, .stop = rtl8169_eth_stop, + .write_hwaddr = rtl8169_write_hwaddr, }; static const struct udevice_id rtl8169_eth_ids[] = { |