Add configurable support for loading the GBE MAC from the Q7 SPI-NOR and add it to the kernel bootargs.
Signed-off-by: Ken Lin <yungching0...@gmail.com> --- board/advantech/dms-ba16/Kconfig | 3 +++ board/advantech/dms-ba16/dms-ba16.c | 19 +++++++++++++++++++ include/configs/advantech_dms-ba16.h | 13 +++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/board/advantech/dms-ba16/Kconfig b/board/advantech/dms-ba16/Kconfig index 040eb866b5..f5d9f61f13 100644 --- a/board/advantech/dms-ba16/Kconfig +++ b/board/advantech/dms-ba16/Kconfig @@ -28,4 +28,7 @@ config SYS_SOC config SYS_CONFIG_NAME default "advantech_dms-ba16" +config QSPI_MACADDR + string "0xD0000" + endif diff --git a/board/advantech/dms-ba16/dms-ba16.c b/board/advantech/dms-ba16/dms-ba16.c index 09620435d3..bfc4e2319e 100644 --- a/board/advantech/dms-ba16/dms-ba16.c +++ b/board/advantech/dms-ba16/dms-ba16.c @@ -26,6 +26,8 @@ #include <i2c.h> #include <input.h> #include <pwm.h> +#include <spi.h> +#include <spi_flash.h> DECLARE_GLOBAL_DATA_PTR; #define NC_PAD_CTRL (PAD_CTL_PUS_100K_UP | \ @@ -584,6 +586,21 @@ void pmic_init(void) } +int load_mac_addrs(void) +{ + struct spi_flash *flash; + char mac_addrs[31] = CONFIG_QSPI_MACADDR; + + flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS, + CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE); + + if (strcmp(mac_addrs, "") && !spi_flash_read(flash, simple_strtoul(mac_addrs, NULL, 16), sizeof(mac_addrs), mac_addrs)) { + env_set("fec_addr", mac_addrs); + } + + return 0; +} + int board_late_init(void) { #ifdef CONFIG_CMD_BMODE @@ -609,6 +626,8 @@ int board_late_init(void) pwm_enable(0); #endif + load_mac_addrs(); + #ifdef CONFIG_SATA setup_ba16_sata(); #endif diff --git a/include/configs/advantech_dms-ba16.h b/include/configs/advantech_dms-ba16.h index 0c9de6125d..bffd9b50a9 100644 --- a/include/configs/advantech_dms-ba16.h +++ b/include/configs/advantech_dms-ba16.h @@ -15,8 +15,11 @@ #define CONFIG_MXC_UART_BASE UART4_BASE #define CONSOLE_DEV "ttymxc3" +#if defined(CONFIG_QSPI_MACADDR) +#define CONFIG_EXTRA_BOOTARGS "panic=10 ${macaddrs}" +#else #define CONFIG_EXTRA_BOOTARGS "panic=10" - +#endif #define CONFIG_BOOT_DIR "" #define CONFIG_LOADCMD "fatload" #define CONFIG_RFSPART "2" @@ -111,6 +114,12 @@ "sf write $loadaddr 0x400 $filesize; " \ "echo 'U-Boot upgraded. Please reset'; " \ "fi\0" \ + "safe_macaddrs=" \ + "if test -n ${fec_addr}; then " \ + "setenv macaddrs fec.macaddr=${fec_addr}; " \ + "else " \ + "setenv macaddrs; " \ + "fi;\0" \ "setargs=setenv bootargs console=${console},${baudrate} " \ "root=/dev/${rootdev} rw rootwait " CONFIG_EXTRA_BOOTARGS "\0" \ "loadbootscript=" \ @@ -129,7 +138,7 @@ "fi; " \ "fi;\0" \ "doboot=echo Booting from ${dev}:${devnum}:${partnum} ...; " \ - "run setargs; " \ + "run safe_macaddrs; run setargs; " \ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ "if run loadfdt; then " \ "bootm ${loadaddr} - ${fdt_addr}; " \ -- 2.17.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot