mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09: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
|
@ -90,6 +90,9 @@ int board_late_init(void)
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
struct mmc *mmc_dev;
|
struct mmc *mmc_dev;
|
||||||
bool ddr4, emmc;
|
bool ddr4, emmc;
|
||||||
|
const char *mac;
|
||||||
|
char eth[10];
|
||||||
|
int i;
|
||||||
|
|
||||||
if (!of_machine_is_compatible("globalscale,espressobin"))
|
if (!of_machine_is_compatible("globalscale,espressobin"))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -98,6 +101,22 @@ int board_late_init(void)
|
||||||
while (*ptr != '\0' && *(ptr+1) != '\0') ptr++;
|
while (*ptr != '\0' && *(ptr+1) != '\0') ptr++;
|
||||||
ptr += 2;
|
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 */
|
/* 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)
|
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;
|
& 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() */
|
/* filler for default values filled by board_early_init_f() */
|
||||||
#define ENV_RW_FILLER \
|
#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= */ \
|
"\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…
Reference in New Issue
Block a user