Merge git://git.denx.de/u-boot-imx
diff --git a/README b/README
index 93c7ea9..06f3ed0 100644
--- a/README
+++ b/README
@@ -1603,6 +1603,15 @@
See doc/README.link-local for more information.
+ - MAC address from environment variables
+
+ FDT_SEQ_MACADDR_FROM_ENV
+
+ Fix-up device tree with MAC addresses fetched sequentially from
+ environment variables. This config work on assumption that
+ non-usable ethernet node of device-tree are either not present
+ or their status has been marked as "disabled".
+
- CDP Options:
CONFIG_CDP_DEVICE_ID
@@ -2168,16 +2177,6 @@
currently only supports clearing the memory.
- Error Recovery:
- CONFIG_PANIC_HANG
-
- Define this variable to stop the system in case of a
- fatal error, so that you have to reset it manually.
- This is probably NOT a good idea for an embedded
- system where you want the system to reboot
- automatically as fast as possible, but it may be
- useful during development since you can try to debug
- the conditions that lead to the situation.
-
CONFIG_NET_RETRY_COUNT
This variable defines the number of retries for
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
index 66bc32c..6c03dfb 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
@@ -11,6 +11,7 @@
select SYS_FSL_ERRATUM_A009008
select ARCH_EARLY_INIT_R
select BOARD_EARLY_INIT_F
+ imply PANIC_HANG
config ARCH_LS1043A
bool
@@ -91,6 +92,7 @@
select ARCH_EARLY_INIT_R
select BOARD_EARLY_INIT_F
imply SCSI
+ imply PANIC_HANG
config ARCH_LS2080A
bool
@@ -129,6 +131,7 @@
select SYS_FSL_ERRATUM_A009203
select ARCH_EARLY_INIT_R
select BOARD_EARLY_INIT_F
+ imply PANIC_HANG
config FSL_LSCH2
bool
diff --git a/arch/arm/lib/bootm-fdt.c b/arch/arm/lib/bootm-fdt.c
index eaa817b..fcc2a0e 100644
--- a/arch/arm/lib/bootm-fdt.c
+++ b/arch/arm/lib/bootm-fdt.c
@@ -25,6 +25,13 @@
DECLARE_GLOBAL_DATA_PTR;
+#ifdef CONFIG_FMAN_ENET
+__weak int fdt_update_ethernet_dt(void *blob)
+{
+ return 0;
+}
+#endif
+
int arch_fixup_fdt(void *blob)
{
int ret = 0;
@@ -64,5 +71,10 @@
#endif
#endif
+#ifdef CONFIG_FMAN_ENET
+ ret = fdt_update_ethernet_dt(blob);
+ if (ret)
+ return ret;
+#endif
return 0;
}
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
index 5df8175..19e8d02 100644
--- a/arch/powerpc/cpu/mpc85xx/Kconfig
+++ b/arch/powerpc/cpu/mpc85xx/Kconfig
@@ -29,6 +29,7 @@
select ARCH_B4420
select SUPPORT_SPL
select PHYS_64BIT
+ imply PANIC_HANG
config TARGET_B4860QDS
bool "Support B4860QDS"
@@ -36,6 +37,7 @@
select BOARD_LATE_INIT if CHAIN_OF_TRUST
select SUPPORT_SPL
select PHYS_64BIT
+ imply PANIC_HANG
config TARGET_BSC9131RDB
bool "Support BSC9131RDB"
@@ -57,6 +59,7 @@
select SUPPORT_SPL
select SUPPORT_TPL
select PHYS_64BIT
+ imply PANIC_HANG
config TARGET_P3041DS
bool "Support P3041DS"
@@ -64,6 +67,7 @@
select ARCH_P3041
select BOARD_LATE_INIT if CHAIN_OF_TRUST
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P4080DS
bool "Support P4080DS"
@@ -71,6 +75,7 @@
select ARCH_P4080
select BOARD_LATE_INIT if CHAIN_OF_TRUST
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P5020DS
bool "Support P5020DS"
@@ -78,6 +83,7 @@
select ARCH_P5020
select BOARD_LATE_INIT if CHAIN_OF_TRUST
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P5040DS
bool "Support P5040DS"
@@ -85,6 +91,7 @@
select ARCH_P5040
select BOARD_LATE_INIT if CHAIN_OF_TRUST
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_MPC8536DS
bool "Support MPC8536DS"
@@ -101,6 +108,7 @@
config TARGET_MPC8544DS
bool "Support MPC8544DS"
select ARCH_MPC8544
+ imply PANIC_HANG
config TARGET_MPC8548CDS
bool "Support MPC8548CDS"
@@ -124,6 +132,7 @@
# Use DDR3 controller with DDR2 DIMMs on this board
select SYS_FSL_DDRC_GEN3
imply SCSI
+ imply PANIC_HANG
config TARGET_P1010RDB_PA
bool "Support P1010RDB_PA"
@@ -133,6 +142,7 @@
select SUPPORT_TPL
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1010RDB_PB
bool "Support P1010RDB_PB"
@@ -142,6 +152,7 @@
select SUPPORT_TPL
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1022DS
bool "Support P1022DS"
@@ -155,6 +166,7 @@
bool "Support P1023RDB"
select ARCH_P1023
imply CMD_EEPROM
+ imply PANIC_HANG
config TARGET_P1020MBG
bool "Support P1020MBG-PC"
@@ -163,6 +175,7 @@
select ARCH_P1020
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1020RDB_PC
bool "Support P1020RDB-PC"
@@ -171,6 +184,7 @@
select ARCH_P1020
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1020RDB_PD
bool "Support P1020RDB-PD"
@@ -179,6 +193,7 @@
select ARCH_P1020
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1020UTM
bool "Support P1020UTM"
@@ -187,6 +202,7 @@
select ARCH_P1020
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1021RDB
bool "Support P1021RDB"
@@ -195,6 +211,7 @@
select ARCH_P1021
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1024RDB
bool "Support P1024RDB"
@@ -203,6 +220,7 @@
select ARCH_P1024
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_P1025RDB
bool "Support P1025RDB"
@@ -256,6 +274,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_EEPROM
+ imply PANIC_HANG
config TARGET_T1024RDB
bool "Support T1024RDB"
@@ -264,6 +283,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_EEPROM
+ imply PANIC_HANG
config TARGET_T1040QDS
bool "Support T1040QDS"
@@ -272,6 +292,7 @@
select PHYS_64BIT
imply CMD_EEPROM
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T1040RDB
bool "Support T1040RDB"
@@ -280,6 +301,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T1040D4RDB
bool "Support T1040D4RDB"
@@ -288,6 +310,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T1042RDB
bool "Support T1042RDB"
@@ -304,6 +327,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T1042RDB_PI
bool "Support T1042RDB_PI"
@@ -312,6 +336,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T2080QDS
bool "Support T2080QDS"
@@ -328,6 +353,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T2081QDS
bool "Support T2081QDS"
@@ -342,12 +368,14 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T4160RDB
bool "Support T4160RDB"
select ARCH_T4160
select SUPPORT_SPL
select PHYS_64BIT
+ imply PANIC_HANG
config TARGET_T4240QDS
bool "Support T4240QDS"
@@ -356,6 +384,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_T4240RDB
bool "Support T4240RDB"
@@ -363,6 +392,7 @@
select SUPPORT_SPL
select PHYS_64BIT
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_CONTROLCENTERD
bool "Support controlcenterd"
@@ -393,16 +423,19 @@
bool "Support uCP1020"
select ARCH_P1020
imply CMD_SATA
+ imply PANIC_HANG
config TARGET_CYRUS_P5020
bool "Support Varisys Cyrus P5020"
select ARCH_P5020
select PHYS_64BIT
+ imply PANIC_HANG
config TARGET_CYRUS_P5040
bool "Support Varisys Cyrus P5040"
select ARCH_P5040
select PHYS_64BIT
+ imply PANIC_HANG
endchoice
diff --git a/board/freescale/ls1046ardb/eth.c b/board/freescale/ls1046ardb/eth.c
index ac8bbec..9a07609 100644
--- a/board/freescale/ls1046ardb/eth.c
+++ b/board/freescale/ls1046ardb/eth.c
@@ -75,3 +75,54 @@
return pci_eth_init(bis);
}
+
+#ifdef CONFIG_FMAN_ENET
+int fdt_update_ethernet_dt(void *blob)
+{
+ u32 srds_s1;
+ int i, prop;
+ int offset, nodeoff;
+ const char *path;
+ struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+
+ srds_s1 = in_be32(&gur->rcwsr[4]) &
+ FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_MASK;
+ srds_s1 >>= FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+ /* Cycle through all aliases */
+ for (prop = 0; ; prop++) {
+ const char *name;
+
+ /* FDT might have been edited, recompute the offset */
+ offset = fdt_first_property_offset(blob,
+ fdt_path_offset(blob,
+ "/aliases")
+ );
+ /* Select property number 'prop' */
+ for (i = 0; i < prop; i++)
+ offset = fdt_next_property_offset(blob, offset);
+
+ if (offset < 0)
+ break;
+
+ path = fdt_getprop_by_offset(blob, offset, &name, NULL);
+ nodeoff = fdt_path_offset(blob, path);
+
+ switch (srds_s1) {
+ case 0x1133:
+ if (!strcmp(name, "ethernet0"))
+ fdt_status_disabled(blob, nodeoff);
+
+ if (!strcmp(name, "ethernet1"))
+ fdt_status_disabled(blob, nodeoff);
+ break;
+ default:
+ printf("%s: Invalid SerDes prtcl 0x%x for LS1046ARDB\n",
+ __func__, srds_s1);
+ break;
+ }
+ }
+
+ return 0;
+}
+#endif
diff --git a/common/fdt_support.c b/common/fdt_support.c
index 6896dcb..724452d 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -508,12 +508,16 @@
void fdt_fixup_ethernet(void *fdt)
{
- int i, j, prop;
+ int i = 0, j, prop;
char *tmp, *end;
char mac[16];
const char *path;
unsigned char mac_addr[ARP_HLEN];
int offset;
+#ifdef FDT_SEQ_MACADDR_FROM_ENV
+ int nodeoff;
+ const struct fdt_property *fdt_prop;
+#endif
if (fdt_path_offset(fdt, "/aliases") < 0)
return;
@@ -526,7 +530,7 @@
offset = fdt_first_property_offset(fdt,
fdt_path_offset(fdt, "/aliases"));
/* Select property number 'prop' */
- for (i = 0; i < prop; i++)
+ for (j = 0; j < prop; j++)
offset = fdt_next_property_offset(fdt, offset);
if (offset < 0)
@@ -535,11 +539,16 @@
path = fdt_getprop_by_offset(fdt, offset, &name, NULL);
if (!strncmp(name, "ethernet", 8)) {
/* Treat plain "ethernet" same as "ethernet0". */
- if (!strcmp(name, "ethernet"))
+ if (!strcmp(name, "ethernet")
+#ifdef FDT_SEQ_MACADDR_FROM_ENV
+ || !strcmp(name, "ethernet0")
+#endif
+ )
i = 0;
+#ifndef FDT_SEQ_MACADDR_FROM_ENV
else
i = trailing_strtol(name);
-
+#endif
if (i != -1) {
if (i == 0)
strcpy(mac, "ethaddr");
@@ -548,6 +557,14 @@
} else {
continue;
}
+#ifdef FDT_SEQ_MACADDR_FROM_ENV
+ nodeoff = fdt_path_offset(fdt, path);
+ fdt_prop = fdt_get_property(fdt, nodeoff, "status",
+ NULL);
+ if (fdt_prop && !strcmp(fdt_prop->data, "disabled"))
+ continue;
+ i++;
+#endif
tmp = env_get(mac);
if (!tmp)
continue;
diff --git a/configs/TWR-P1025_defconfig b/configs/TWR-P1025_defconfig
index 1eedd3c..1eeb590 100644
--- a/configs/TWR-P1025_defconfig
+++ b/configs/TWR-P1025_defconfig
@@ -35,4 +35,5 @@
CONFIG_FSL_ESPI=y
CONFIG_USB=y
CONFIG_USB_STORAGE=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/UCP1020_SPIFLASH_defconfig b/configs/UCP1020_SPIFLASH_defconfig
index c8f2262..3c3e9fc 100644
--- a/configs/UCP1020_SPIFLASH_defconfig
+++ b/configs/UCP1020_SPIFLASH_defconfig
@@ -43,4 +43,5 @@
CONFIG_USB=y
CONFIG_USB_STORAGE=y
CONFIG_FS_CRAMFS=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/UCP1020_defconfig b/configs/UCP1020_defconfig
index 0092e99..bd17e05 100644
--- a/configs/UCP1020_defconfig
+++ b/configs/UCP1020_defconfig
@@ -43,4 +43,5 @@
CONFIG_USB=y
CONFIG_USB_STORAGE=y
CONFIG_FS_CRAMFS=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/adp-ae3xx_defconfig b/configs/adp-ae3xx_defconfig
index 6005669..cdbf801 100644
--- a/configs/adp-ae3xx_defconfig
+++ b/configs/adp-ae3xx_defconfig
@@ -39,3 +39,4 @@
CONFIG_ATCSPI200_SPI=y
CONFIG_TIMER=y
CONFIG_ATCPIT100_TIMER=y
+CONFIG_PANIC_HANG=y
diff --git a/configs/qemu-ppce500_defconfig b/configs/qemu-ppce500_defconfig
index f1db0d0..9d27755 100644
--- a/configs/qemu-ppce500_defconfig
+++ b/configs/qemu-ppce500_defconfig
@@ -24,4 +24,5 @@
CONFIG_NETDEVICES=y
CONFIG_E1000=y
CONFIG_SYS_NS16550=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/tricorder_defconfig b/configs/tricorder_defconfig
index 0f6cccc..27a3b6e 100644
--- a/configs/tricorder_defconfig
+++ b/configs/tricorder_defconfig
@@ -40,4 +40,5 @@
CONFIG_SPL_NAND_SIMPLE=y
CONFIG_SYS_NS16550=y
CONFIG_BCH=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/tricorder_flash_defconfig b/configs/tricorder_flash_defconfig
index 7477b42..78afec0 100644
--- a/configs/tricorder_flash_defconfig
+++ b/configs/tricorder_flash_defconfig
@@ -39,4 +39,5 @@
CONFIG_SPL_NAND_SIMPLE=y
CONFIG_SYS_NS16550=y
CONFIG_BCH=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/uniphier_ld4_sld8_defconfig b/configs/uniphier_ld4_sld8_defconfig
index 08ba9cc..0d12eb5 100644
--- a/configs/uniphier_ld4_sld8_defconfig
+++ b/configs/uniphier_ld4_sld8_defconfig
@@ -51,3 +51,4 @@
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_GENERIC=y
CONFIG_USB_STORAGE=y
+CONFIG_PANIC_HANG=y
diff --git a/configs/uniphier_v7_defconfig b/configs/uniphier_v7_defconfig
index d2a1e3b..47b90d6 100644
--- a/configs/uniphier_v7_defconfig
+++ b/configs/uniphier_v7_defconfig
@@ -54,3 +54,4 @@
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_UNIPHIER=y
CONFIG_USB_STORAGE=y
+CONFIG_PANIC_HANG=y
diff --git a/configs/uniphier_v8_defconfig b/configs/uniphier_v8_defconfig
index b0b213d..bbcf3b0 100644
--- a/configs/uniphier_v8_defconfig
+++ b/configs/uniphier_v8_defconfig
@@ -51,3 +51,4 @@
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_UNIPHIER=y
CONFIG_USB_STORAGE=y
+CONFIG_PANIC_HANG=y
diff --git a/configs/xpedite517x_defconfig b/configs/xpedite517x_defconfig
index a2324c3..3773518 100644
--- a/configs/xpedite517x_defconfig
+++ b/configs/xpedite517x_defconfig
@@ -27,4 +27,5 @@
CONFIG_MTD_NOR_FLASH=y
CONFIG_PHYLIB=y
CONFIG_SYS_NS16550=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/xpedite520x_defconfig b/configs/xpedite520x_defconfig
index 7518ef2..7fffaa8 100644
--- a/configs/xpedite520x_defconfig
+++ b/configs/xpedite520x_defconfig
@@ -28,4 +28,5 @@
CONFIG_MTD_NOR_FLASH=y
CONFIG_PHYLIB=y
CONFIG_SYS_NS16550=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/xpedite537x_defconfig b/configs/xpedite537x_defconfig
index ead06a7..223bc4c 100644
--- a/configs/xpedite537x_defconfig
+++ b/configs/xpedite537x_defconfig
@@ -30,4 +30,5 @@
CONFIG_MTD_NOR_FLASH=y
CONFIG_PHYLIB=y
CONFIG_SYS_NS16550=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/configs/xpedite550x_defconfig b/configs/xpedite550x_defconfig
index 80bc914..f3b9280 100644
--- a/configs/xpedite550x_defconfig
+++ b/configs/xpedite550x_defconfig
@@ -30,4 +30,5 @@
CONFIG_SYS_NS16550=y
CONFIG_USB=y
CONFIG_USB_STORAGE=y
+CONFIG_PANIC_HANG=y
CONFIG_OF_LIBFDT=y
diff --git a/include/configs/B4860QDS.h b/include/configs/B4860QDS.h
index 661bc8b..b1b6725 100644
--- a/include/configs/B4860QDS.h
+++ b/include/configs/B4860QDS.h
@@ -173,7 +173,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/C29XPCIE.h b/include/configs/C29XPCIE.h
index 7e805ec..f9d8cc6 100644
--- a/include/configs/C29XPCIE.h
+++ b/include/configs/C29XPCIE.h
@@ -117,7 +117,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000
#define CONFIG_SYS_MEMTEST_END 0x00400000
-#define CONFIG_PANIC_HANG
/* DDR Setup */
#define CONFIG_DDR_SPD
diff --git a/include/configs/MPC8536DS.h b/include/configs/MPC8536DS.h
index 7587225..eef1602 100644
--- a/include/configs/MPC8536DS.h
+++ b/include/configs/MPC8536DS.h
@@ -69,7 +69,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00010000 /* skip exception vectors */
#define CONFIG_SYS_MEMTEST_END 0x1f000000 /* skip u-boot at top of RAM */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L2 Cache as L2 SRAM
diff --git a/include/configs/MPC8544DS.h b/include/configs/MPC8544DS.h
index bec8a09..9d9456c 100644
--- a/include/configs/MPC8544DS.h
+++ b/include/configs/MPC8544DS.h
@@ -46,7 +46,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_SYS_CCSRBAR 0xe0000000
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
diff --git a/include/configs/MPC8572DS.h b/include/configs/MPC8572DS.h
index ebc2e3a..91a5591 100644
--- a/include/configs/MPC8572DS.h
+++ b/include/configs/MPC8572DS.h
@@ -58,7 +58,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00000000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x7fffffff
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L2 Cache as L2 SRAM
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index 72b6e3a..6a444ae 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -215,7 +215,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x1fffffff
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/* DDR Setup */
#define CONFIG_SYS_DDR_RAW_TIMING
diff --git a/include/configs/P1023RDB.h b/include/configs/P1023RDB.h
index 1b78a4f..17ae6cf 100644
--- a/include/configs/P1023RDB.h
+++ b/include/configs/P1023RDB.h
@@ -52,8 +52,6 @@
#define CONFIG_SYS_MEMTEST_START 0x01000000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x02000000
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
-
/* Implement conversion of addresses in the LBC */
#define CONFIG_SYS_LBC_LBCR 0x00000000
#define CONFIG_SYS_LBC_LCRR LCRR_CLKDIV_8
diff --git a/include/configs/P2041RDB.h b/include/configs/P2041RDB.h
index 917e5d5..8e71fdf 100644
--- a/include/configs/P2041RDB.h
+++ b/include/configs/P2041RDB.h
@@ -116,7 +116,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/T102xQDS.h b/include/configs/T102xQDS.h
index ed6df53..dd3cd6e 100644
--- a/include/configs/T102xQDS.h
+++ b/include/configs/T102xQDS.h
@@ -196,7 +196,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/T102xRDB.h b/include/configs/T102xRDB.h
index 7dee2f0..791c6ef 100644
--- a/include/configs/T102xRDB.h
+++ b/include/configs/T102xRDB.h
@@ -219,7 +219,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/T1040QDS.h b/include/configs/T1040QDS.h
index bc5c0d2..fb79b6a 100644
--- a/include/configs/T1040QDS.h
+++ b/include/configs/T1040QDS.h
@@ -127,7 +127,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index 2b9c77f..ceb9daa 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -226,7 +226,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
index 98f8f4f..ecf7f64 100644
--- a/include/configs/T4240RDB.h
+++ b/include/configs/T4240RDB.h
@@ -96,7 +96,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/UCP1020.h b/include/configs/UCP1020.h
index e8b1a74..77bfd50 100644
--- a/include/configs/UCP1020.h
+++ b/include/configs/UCP1020.h
@@ -136,7 +136,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x1fffffff
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_SYS_CCSRBAR 0xffe00000
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
diff --git a/include/configs/adp-ae3xx.h b/include/configs/adp-ae3xx.h
index 5644a61..f75274e 100644
--- a/include/configs/adp-ae3xx.h
+++ b/include/configs/adp-ae3xx.h
@@ -21,7 +21,6 @@
#define CONFIG_SKIP_TRUNOFF_WATCHDOG
#define CONFIG_CMDLINE_EDITING
-#define CONFIG_PANIC_HANG
#define CONFIG_ARCH_MAP_SYSMEM
diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h
index d0e8bfb..de9bc53 100644
--- a/include/configs/corenet_ds.h
+++ b/include/configs/corenet_ds.h
@@ -128,7 +128,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/cyrus.h b/include/configs/cyrus.h
index 4fea53b..942fbe2 100644
--- a/include/configs/cyrus.h
+++ b/include/configs/cyrus.h
@@ -89,7 +89,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/ls1012a_common.h b/include/configs/ls1012a_common.h
index db920bc..9cbc624 100644
--- a/include/configs/ls1012a_common.h
+++ b/include/configs/ls1012a_common.h
@@ -117,7 +117,6 @@
#define CONFIG_AUTO_COMPLETE
#define CONFIG_SYS_MAXARGS 64 /* max command args */
-#define CONFIG_PANIC_HANG
#define CONFIG_SYS_BOOTM_LEN (64 << 20) /* Increase max gunzip size */
#include <asm/arch/soc.h>
diff --git a/include/configs/ls1046ardb.h b/include/configs/ls1046ardb.h
index 784894f..793e675 100644
--- a/include/configs/ls1046ardb.h
+++ b/include/configs/ls1046ardb.h
@@ -195,6 +195,8 @@
#define FM1_10GEC1_PHY_ADDR 0x0
+#define FDT_SEQ_MACADDR_FROM_ENV
+
#define CONFIG_ETHPRIME "FM1@DTSEC3"
#endif
diff --git a/include/configs/ls1088a_common.h b/include/configs/ls1088a_common.h
index 0cd2f3c..6587296 100644
--- a/include/configs/ls1088a_common.h
+++ b/include/configs/ls1088a_common.h
@@ -223,8 +223,6 @@
#define CONFIG_AUTO_COMPLETE
#define CONFIG_SYS_MAXARGS 64 /* max command args */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
-
#ifdef CONFIG_SPL
#define CONFIG_SPL_BSS_START_ADDR 0x80100000
#define CONFIG_SPL_BSS_MAX_SIZE 0x00100000
diff --git a/include/configs/ls2080a_common.h b/include/configs/ls2080a_common.h
index 576785e..b995513 100644
--- a/include/configs/ls2080a_common.h
+++ b/include/configs/ls2080a_common.h
@@ -221,8 +221,6 @@
#define CONFIG_AUTO_COMPLETE
#define CONFIG_SYS_MAXARGS 64 /* max command args */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
-
#define CONFIG_SPL_BSS_START_ADDR 0x80100000
#define CONFIG_SPL_BSS_MAX_SIZE 0x00100000
#define CONFIG_SPL_FRAMEWORK
diff --git a/include/configs/p1_p2_rdb_pc.h b/include/configs/p1_p2_rdb_pc.h
index 07c192a..4522569 100644
--- a/include/configs/p1_p2_rdb_pc.h
+++ b/include/configs/p1_p2_rdb_pc.h
@@ -270,7 +270,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x1fffffff
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_SYS_CCSRBAR 0xffe00000
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
diff --git a/include/configs/p1_twr.h b/include/configs/p1_twr.h
index d230263..2ae77b0 100644
--- a/include/configs/p1_twr.h
+++ b/include/configs/p1_twr.h
@@ -69,7 +69,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x1fffffff
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_SYS_CCSRBAR 0xffe00000
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
diff --git a/include/configs/qemu-ppce500.h b/include/configs/qemu-ppce500.h
index eb4cfae..8b78f08 100644
--- a/include/configs/qemu-ppce500.h
+++ b/include/configs/qemu-ppce500.h
@@ -31,7 +31,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/* Needed to fill the ccsrbar pointer */
diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index 5a69708..7aaf210 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -54,7 +54,6 @@
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
#define CONFIG_SYS_MEMTEST_END 0x00400000
#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
/*
* Config the L3 Cache as L3 SRAM
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index d9ab91c..f892a57 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -90,7 +90,6 @@
/* hang() the board on panic() */
-#define CONFIG_PANIC_HANG
/* environment placement (for NAND), is different for FLASHCARD but does not
* harm there */
diff --git a/include/configs/uniphier.h b/include/configs/uniphier.h
index 453f3db..12cbe9b 100644
--- a/include/configs/uniphier.h
+++ b/include/configs/uniphier.h
@@ -218,8 +218,6 @@
/* for LD20; the last 64 byte is used for dynamic DDR PHY training */
#define CONFIG_SYS_MEM_TOP_HIDE 64
-#define CONFIG_PANIC_HANG
-
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE)
/* only for SPL */
diff --git a/include/configs/xpedite517x.h b/include/configs/xpedite517x.h
index beedc9e..4326984 100644
--- a/include/configs/xpedite517x.h
+++ b/include/configs/xpedite517x.h
@@ -487,7 +487,6 @@
#define CONFIG_SYS_LOAD_ADDR 0x2000000 /* default load address */
#define CONFIG_CMDLINE_EDITING 1 /* Command-line editing */
#define CONFIG_LOADADDR 0x1000000 /* default location for tftp and bootm */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_PREBOOT /* enable preboot variable */
#define CONFIG_INTEGRITY /* support booting INTEGRITY OS */
diff --git a/include/configs/xpedite520x.h b/include/configs/xpedite520x.h
index f589d1d..5a56162 100644
--- a/include/configs/xpedite520x.h
+++ b/include/configs/xpedite520x.h
@@ -291,7 +291,6 @@
#define CONFIG_CMDLINE_EDITING 1 /* add command line history */
#define CONFIG_AUTO_COMPLETE 1 /* add autocompletion support */
#define CONFIG_LOADADDR 0x1000000 /* default location for tftp and bootm */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_PREBOOT /* enable preboot variable */
#define CONFIG_INTEGRITY /* support booting INTEGRITY OS */
#define CONFIG_INTERRUPTS /* enable pci, srio, ddr interrupts */
diff --git a/include/configs/xpedite537x.h b/include/configs/xpedite537x.h
index d217eb3..b262237 100644
--- a/include/configs/xpedite537x.h
+++ b/include/configs/xpedite537x.h
@@ -341,7 +341,6 @@
#define CONFIG_CMDLINE_EDITING 1 /* add command line history */
#define CONFIG_AUTO_COMPLETE 1 /* add autocompletion support */
#define CONFIG_LOADADDR 0x1000000 /* default location for tftp and bootm */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_PREBOOT /* enable preboot variable */
#define CONFIG_INTEGRITY /* support booting INTEGRITY OS */
diff --git a/include/configs/xpedite550x.h b/include/configs/xpedite550x.h
index 6c0981b..624e9a8 100644
--- a/include/configs/xpedite550x.h
+++ b/include/configs/xpedite550x.h
@@ -339,7 +339,6 @@
#define CONFIG_CMDLINE_EDITING 1 /* add command line history */
#define CONFIG_AUTO_COMPLETE 1 /* add autocompletion support */
#define CONFIG_LOADADDR 0x1000000 /* default location for tftp and bootm */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
#define CONFIG_PREBOOT /* enable preboot variable */
#define CONFIG_INTEGRITY /* support booting INTEGRITY OS */
diff --git a/include/configs/xtfpga.h b/include/configs/xtfpga.h
index 3050f17..3119f00 100644
--- a/include/configs/xtfpga.h
+++ b/include/configs/xtfpga.h
@@ -130,10 +130,6 @@
#define CONFIG_MX_CYCLIC
#define CONFIG_SHOW_BOOT_PROGRESS
-#ifdef DEBUG
-#define CONFIG_PANIC_HANG 1 /* Require manual reboot */
-#endif
-
/*=========================================*/
/* FPGA Registers (board info and control) */
diff --git a/include/fdt_support.h b/include/fdt_support.h
index e0f9086..f00fadc 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -290,4 +290,7 @@
int fdtdec_get_int(const void *blob, int node, const char *prop_name,
int default_val);
#endif
+#ifdef CONFIG_FMAN_ENET
+int fdt_update_ethernet_dt(void *blob);
+#endif
#endif /* ifndef __FDT_SUPPORT_H */
diff --git a/lib/Kconfig b/lib/Kconfig
index f447c53..00ac650 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -45,6 +45,16 @@
The supported format specifiers are %c, %s, %u/%d and %x.
+config PANIC_HANG
+ bool "Do not reset the system on fatal error"
+ help
+ Define this option to stop the system in case of a fatal error,
+ so that you have to reset it manually. This is probably NOT a good
+ idea for an embedded system where you want the system to reboot
+ automatically as fast as possible, but it may be useful during
+ development since you can try to debug the conditions that lead to
+ the situation.
+
config REGEX
bool "Enable regular expression support"
default y if NET