summaryrefslogtreecommitdiff
path: root/board/hardkernel/odroid-c2
diff options
context:
space:
mode:
authorBeniamino Galvani <b.galvani@gmail.com>2016-05-08 08:30:17 +0200
committerTom Rini <trini@konsulko.com>2016-05-27 15:39:47 -0400
commitc7757d46958463542f3c5cc359d53769f83b9148 (patch)
treeed1ef09debacb926671168f5c7540587f5176bcb /board/hardkernel/odroid-c2
parentbfcef28ae4cf04e7c1fd3aea1d60a17bd046f153 (diff)
downloadu-boot-imx-c7757d46958463542f3c5cc359d53769f83b9148.zip
u-boot-imx-c7757d46958463542f3c5cc359d53769f83b9148.tar.gz
u-boot-imx-c7757d46958463542f3c5cc359d53769f83b9148.tar.bz2
arm: meson: implement calls to secure monitor
Implement calls to secure monitor to read the MAC address from e-fuse. Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Diffstat (limited to 'board/hardkernel/odroid-c2')
-rw-r--r--board/hardkernel/odroid-c2/odroid-c2.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/board/hardkernel/odroid-c2/odroid-c2.c b/board/hardkernel/odroid-c2/odroid-c2.c
index c258d4f..bd72100 100644
--- a/board/hardkernel/odroid-c2/odroid-c2.c
+++ b/board/hardkernel/odroid-c2/odroid-c2.c
@@ -7,9 +7,15 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/gxbb.h>
+#include <asm/arch/sm.h>
#include <dm/platdata.h>
#include <phy.h>
+#define EFUSE_SN_OFFSET 20
+#define EFUSE_SN_SIZE 16
+#define EFUSE_MAC_OFFSET 52
+#define EFUSE_MAC_SIZE 6
+
int board_init(void)
{
return 0;
@@ -27,6 +33,9 @@ U_BOOT_DEVICE(meson_eth) = {
int misc_init_r(void)
{
+ u8 mac_addr[EFUSE_MAC_SIZE];
+ ssize_t len;
+
/* Select Ethernet function */
setbits_le32(GXBB_PINMUX(6), 0x3fff);
@@ -47,5 +56,12 @@ int misc_init_r(void)
mdelay(10);
setbits_le32(GXBB_GPIO_OUT(3), BIT(14));
+ if (!eth_getenv_enetaddr("ethaddr", mac_addr)) {
+ len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
+ mac_addr, EFUSE_MAC_SIZE);
+ if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
+ eth_setenv_enetaddr("ethaddr", mac_addr);
+ }
+
return 0;
}