[U-Boot] [PATCH] rockchip: tinker: set ethaddr in late init

Jonas Karlman jonas at kwiboo.se
Mon Apr 17 21:13:56 UTC 2017


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 0x50 on i2c2.
Same as /etc/init.d/rockchip.sh on Tinker OS.

Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
---

 board/rockchip/tinker_rk3288/tinker-rk3288.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/board/rockchip/tinker_rk3288/tinker-rk3288.c b/board/rockchip/tinker_rk3288/tinker-rk3288.c
index 79541a3939..48165b2545 100644
--- a/board/rockchip/tinker_rk3288/tinker-rk3288.c
+++ b/board/rockchip/tinker_rk3288/tinker-rk3288.c
@@ -5,3 +5,29 @@
  */
 
 #include <common.h>
+#include <i2c.h>
+#include <netdev.h>
+
+int rk_board_late_init(void)
+{
+	struct udevice *dev;
+	int ret;
+	u8 mac[6];
+
+	ret = i2c_get_chip_for_busnum(2, 0x50, 1, &dev);
+	if (ret) {
+		debug("failed to get eeprom\n");
+		return 0;
+	}
+
+	ret = dm_i2c_read(dev, 0x0, mac, 6);
+	if (ret) {
+		debug("failed to read mac\n");
+		return 0;
+	}
+
+	if (is_valid_ethaddr(mac))
+		eth_setenv_enetaddr("ethaddr", mac);
+
+	return 0;
+}
-- 
2.11.0



More information about the U-Boot mailing list