From ecc3bd73b35398d8337096b19493028a29ed038e Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 22 Apr 2017 08:57:54 +0000 Subject: rockchip: tinker: set ethaddr in late init Set ethernet mac address in late init for Tinker Board, prevents getting a random mac address each boot. Read mac address from eeprom, first 6 bytes from m24c08@50. Same as /etc/init.d/rockchip.sh on Tinker OS. Signed-off-by: Jonas Karlman Reviewed-by: Simon Glass --- board/rockchip/tinker_rk3288/tinker-rk3288.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'board/rockchip/tinker_rk3288') diff --git a/board/rockchip/tinker_rk3288/tinker-rk3288.c b/board/rockchip/tinker_rk3288/tinker-rk3288.c index 79541a3939..c2872e7330 100644 --- a/board/rockchip/tinker_rk3288/tinker-rk3288.c +++ b/board/rockchip/tinker_rk3288/tinker-rk3288.c @@ -5,3 +5,31 @@ */ #include +#include +#include +#include + +static int get_ethaddr_from_eeprom(u8 *addr) +{ + int ret; + struct udevice *dev; + + ret = uclass_first_device_err(UCLASS_I2C_EEPROM, &dev); + if (ret) + return ret; + + return i2c_eeprom_read(dev, 0, addr, 6); +} + +int rk_board_late_init(void) +{ + u8 ethaddr[6]; + + if (get_ethaddr_from_eeprom(ethaddr)) + return 0; + + if (is_valid_ethaddr(ethaddr)) + eth_setenv_enetaddr("ethaddr", ethaddr); + + return 0; +} -- cgit v1.2.3