xref: /openbmc/u-boot/board/amlogic/odroid-c2/odroid-c2.c (revision 93e72ac472b537bb4b0c6a97a7e6aab2b37860c6)
183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
21e23737dSCarlo Caione /*
31e23737dSCarlo Caione  * (C) Copyright 2016 Beniamino Galvani <b.galvani@gmail.com>
41e23737dSCarlo Caione  */
51e23737dSCarlo Caione 
61e23737dSCarlo Caione #include <common.h>
79d922450SSimon Glass #include <dm.h>
89925f1dbSAlex Kiernan #include <environment.h>
91e23737dSCarlo Caione #include <asm/io.h>
10f0f3762cSNeil Armstrong #include <asm/arch/gx.h>
111e23737dSCarlo Caione #include <asm/arch/sm.h>
129a41746fSNeil Armstrong #include <asm/arch/eth.h>
13c7be3e5aSNeil Armstrong #include <asm/arch/mem.h>
141e23737dSCarlo Caione 
151e23737dSCarlo Caione #define EFUSE_SN_OFFSET		20
161e23737dSCarlo Caione #define EFUSE_SN_SIZE		16
171e23737dSCarlo Caione #define EFUSE_MAC_OFFSET	52
181e23737dSCarlo Caione #define EFUSE_MAC_SIZE		6
191e23737dSCarlo Caione 
misc_init_r(void)201e23737dSCarlo Caione int misc_init_r(void)
211e23737dSCarlo Caione {
221e23737dSCarlo Caione 	u8 mac_addr[EFUSE_MAC_SIZE];
23cb86d374SMartin Böh 	char serial[EFUSE_SN_SIZE];
241e23737dSCarlo Caione 	ssize_t len;
251e23737dSCarlo Caione 
26*33e33780SJerome Brunet 	meson_eth_init(PHY_INTERFACE_MODE_RGMII, 0);
271e23737dSCarlo Caione 
2835affd7aSSimon Glass 	if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
291e23737dSCarlo Caione 		len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
301e23737dSCarlo Caione 					  mac_addr, EFUSE_MAC_SIZE);
311e23737dSCarlo Caione 		if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
32fd1e959eSSimon Glass 			eth_env_set_enetaddr("ethaddr", mac_addr);
331e23737dSCarlo Caione 	}
341e23737dSCarlo Caione 
3500caae6dSSimon Glass 	if (!env_get("serial#")) {
36cb86d374SMartin Böh 		len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
37cb86d374SMartin Böh 			EFUSE_SN_SIZE);
38cb86d374SMartin Böh 		if (len == EFUSE_SN_SIZE)
39382bee57SSimon Glass 			env_set("serial#", serial);
40cb86d374SMartin Böh 	}
41cb86d374SMartin Böh 
421e23737dSCarlo Caione 	return 0;
431e23737dSCarlo Caione }
44