arm: mvebu: ds414: Auto-populate env if appropriate
Define a misc_init_r() which calls "syno populate_env" if the environment seems incomplete (or default), indicated by missing "ethaddr" variable. With this in place, no random MAC address fallback is needed anymore. Signed-off-by: Phil Sutter <phil@nwl.cc>
This commit is contained in:
parent
e471ddf0f3
commit
a770159f88
|
@ -17,12 +17,9 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include "../drivers/ddr/marvell/axp/ddr3_init.h"
|
#include "../drivers/ddr/marvell/axp/ddr3_init.h"
|
||||||
|
|
||||||
#define ETHADDR_MAX 4
|
#include "cmd_syno.h"
|
||||||
#define SYNO_SN_TAG "SN="
|
|
||||||
#define SYNO_CHKSUM_TAG "CHK="
|
|
||||||
|
|
||||||
|
int do_syno_populate(int argc, char *const argv[])
|
||||||
static int do_syno_populate(int argc, char *const argv[])
|
|
||||||
{
|
{
|
||||||
unsigned int bus = CONFIG_SF_DEFAULT_BUS;
|
unsigned int bus = CONFIG_SF_DEFAULT_BUS;
|
||||||
unsigned int cs = CONFIG_SF_DEFAULT_CS;
|
unsigned int cs = CONFIG_SF_DEFAULT_CS;
|
||||||
|
@ -57,7 +54,7 @@ static int do_syno_populate(int argc, char *const argv[])
|
||||||
goto out_unmap;
|
goto out_unmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (n = 0; n < ETHADDR_MAX; n++) {
|
for (n = 0; n < SYNO_ETHADDR_MAX; n++) {
|
||||||
char ethaddr[ETH_ALEN];
|
char ethaddr[ETH_ALEN];
|
||||||
int i, sum = 0;
|
int i, sum = 0;
|
||||||
unsigned char csum = 0;
|
unsigned char csum = 0;
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Commands to deal with Synology specifics.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2021 Phil Sutter <phil@nwl.cc>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CMD_SYNO_H
|
||||||
|
#define _CMD_SYNO_H
|
||||||
|
|
||||||
|
#define SYNO_ETHADDR_MAX 4
|
||||||
|
#define SYNO_SN_TAG "SN="
|
||||||
|
#define SYNO_CHKSUM_TAG "CHK="
|
||||||
|
|
||||||
|
int do_syno_populate(int argc, char *const argv[]);
|
||||||
|
|
||||||
|
#endif /* _CMD_SYNO_H */
|
|
@ -18,6 +18,8 @@
|
||||||
#include "../arch/arm/mach-mvebu/serdes/axp/high_speed_env_spec.h"
|
#include "../arch/arm/mach-mvebu/serdes/axp/high_speed_env_spec.h"
|
||||||
#include "../arch/arm/mach-mvebu/serdes/axp/board_env_spec.h"
|
#include "../arch/arm/mach-mvebu/serdes/axp/board_env_spec.h"
|
||||||
|
|
||||||
|
#include "cmd_syno.h"
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
/* GPP and MPP settings as found in mvBoardEnvSpec.c of Synology's U-Boot */
|
/* GPP and MPP settings as found in mvBoardEnvSpec.c of Synology's U-Boot */
|
||||||
|
@ -179,6 +181,15 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int misc_init_r(void)
|
||||||
|
{
|
||||||
|
if (!env_get("ethaddr")) {
|
||||||
|
puts("Incomplete environment, populating from SPI flash\n");
|
||||||
|
do_syno_populate(0, NULL);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int checkboard(void)
|
int checkboard(void)
|
||||||
{
|
{
|
||||||
puts("Board: DS414\n");
|
puts("Board: DS414\n");
|
||||||
|
|
|
@ -24,6 +24,7 @@ CONFIG_BOOTARGS="console=ttyS0,115200 ip=off initrd=0x8000040,8M root=/dev/md0 r
|
||||||
# CONFIG_USE_PREBOOT is not set
|
# CONFIG_USE_PREBOOT is not set
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
CONFIG_MISC_INIT_R=y
|
||||||
CONFIG_SPL_I2C_SUPPORT=y
|
CONFIG_SPL_I2C_SUPPORT=y
|
||||||
# CONFIG_CMD_FLASH is not set
|
# CONFIG_CMD_FLASH is not set
|
||||||
CONFIG_CMD_I2C=y
|
CONFIG_CMD_I2C=y
|
||||||
|
@ -46,7 +47,6 @@ CONFIG_ENV_OVERWRITE=y
|
||||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||||
CONFIG_ENV_SPI_MAX_HZ=50000000
|
CONFIG_ENV_SPI_MAX_HZ=50000000
|
||||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
CONFIG_NET_RANDOM_ETHADDR=y
|
|
||||||
CONFIG_SPL_OF_TRANSLATE=y
|
CONFIG_SPL_OF_TRANSLATE=y
|
||||||
CONFIG_BLK=y
|
CONFIG_BLK=y
|
||||||
# CONFIG_MMC is not set
|
# CONFIG_MMC is not set
|
||||||
|
|
Loading…
Reference in New Issue