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

Reply via email to