mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
arm: mvebu: Espressobin: Set default value for $ethNaddr env variable
On Espressobin board are MAC addresses stored in U-Boot env area. Therefore they are not present in default_environment[] array constructed at compile time. This change puts permanent MAC addresses into default_environment[] array at board runtime. Espressobin board has enabled DEFAULT_ENV_IS_RW option and therefore can modify this array. This change ensure that 'env default -a' does not delete permanent MAC addresses from Espressobin env storage area. Signed-off-by: Pali Rohár <pali@kernel.org> Acked-by: Andre Heider <a.heider@gmail.com>
This commit is contained in:
parent
c4df0f6f31
commit
44be835d25
2 changed files with 23 additions and 0 deletions
|
@ -90,6 +90,9 @@ int board_late_init(void)
|
|||
struct udevice *dev;
|
||||
struct mmc *mmc_dev;
|
||||
bool ddr4, emmc;
|
||||
const char *mac;
|
||||
char eth[10];
|
||||
int i;
|
||||
|
||||
if (!of_machine_is_compatible("globalscale,espressobin"))
|
||||
return 0;
|
||||
|
@ -98,6 +101,22 @@ int board_late_init(void)
|
|||
while (*ptr != '\0' && *(ptr+1) != '\0') ptr++;
|
||||
ptr += 2;
|
||||
|
||||
/*
|
||||
* Ensure that 'env default -a' does not erase permanent MAC addresses
|
||||
* stored in env variables: $ethaddr, $eth1addr, $eth2addr and $eth3addr
|
||||
*/
|
||||
|
||||
mac = env_get("ethaddr");
|
||||
if (mac && strlen(mac) <= 17)
|
||||
ptr += sprintf(ptr, "ethaddr=%s", mac) + 1;
|
||||
|
||||
for (i = 1; i <= 3; i++) {
|
||||
sprintf(eth, "eth%daddr", i);
|
||||
mac = env_get(eth);
|
||||
if (mac && strlen(mac) <= 17)
|
||||
ptr += sprintf(ptr, "%s=%s", eth, mac) + 1;
|
||||
}
|
||||
|
||||
/* If the memory controller has been configured for DDR4, we're running on v7 */
|
||||
ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS)
|
||||
& A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4;
|
||||
|
|
|
@ -94,6 +94,10 @@
|
|||
|
||||
/* filler for default values filled by board_early_init_f() */
|
||||
#define ENV_RW_FILLER \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" /* for ethaddr= */ \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" /* for eth1addr= */ \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" /* for eth2addr= */ \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" /* for eth3addr= */ \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" /* for fdtfile= */ \
|
||||
""
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue