diff options
author | Beniamino Galvani <b.galvani@gmail.com> | 2016-05-08 08:30:17 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-05-27 15:39:47 -0400 |
commit | c7757d46958463542f3c5cc359d53769f83b9148 (patch) | |
tree | ed1ef09debacb926671168f5c7540587f5176bcb /board/hardkernel/odroid-c2 | |
parent | bfcef28ae4cf04e7c1fd3aea1d60a17bd046f153 (diff) | |
download | u-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.c | 16 |
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; } |