* [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART
@ 2021-08-16 13:19 Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
` (3 more replies)
0 siblings, 4 replies; 17+ messages in thread
From: Marek Behún @ 2021-08-16 13:19 UTC (permalink / raw)
To: Stefan Roese; +Cc: u-boot, pali, Marek Behún
Hello Stefan,
while debugging Omnia, when sending U-Boot over UART, some USB-TTY
controllers are too slow and Omnia's MCU watchdog resets the board
before U-Boot proper is sent.
This patch series changes Omnia board code so that when booting via
UART, we disable MCU watchdog in SPL, prior loading U-Boot proper.
Changes since v1:
- added patch that moves disabling MCU watchdog in normal boot from
board_init() to board_late_init(), so that it is disabled after
U-Boot enables the SOC watchdog
Marek
Marek Behún (4):
arm: mvebu: Move get_boot_device() to cpu.c and make visible
arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro
arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting
over UART
arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init()
arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++
arch/arm/mach-mvebu/include/mach/cpu.h | 2 +
arch/arm/mach-mvebu/spl.c | 77 +++---------------------
board/CZ.NIC/turris_omnia/turris_omnia.c | 27 ++++++---
configs/turris_omnia_defconfig | 1 +
5 files changed, 89 insertions(+), 78 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible
2021-08-16 13:19 [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART Marek Behún
@ 2021-08-16 13:19 ` Marek Behún
2021-08-16 17:51 ` Pali Rohár
` (2 more replies)
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
` (2 subsequent siblings)
3 siblings, 3 replies; 17+ messages in thread
From: Marek Behún @ 2021-08-16 13:19 UTC (permalink / raw)
To: Stefan Roese; +Cc: u-boot, pali, Marek Behún
Move the function get_boot_device() from spl.c to cpu.c.
Make it visible, so that it may be used from other files.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++++
arch/arm/mach-mvebu/include/mach/cpu.h | 2 +
arch/arm/mach-mvebu/spl.c | 77 +++-----------------------
3 files changed, 71 insertions(+), 68 deletions(-)
diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c
index 0b935c46fb..daf8bd66a0 100644
--- a/arch/arm/mach-mvebu/cpu.c
+++ b/arch/arm/mach-mvebu/cpu.c
@@ -14,6 +14,7 @@
#include <asm/pl310.h>
#include <asm/arch/cpu.h>
#include <asm/arch/soc.h>
+#include <asm/spl.h>
#include <sdhci.h>
#define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3))
@@ -80,6 +81,65 @@ int mvebu_soc_family(void)
return MVEBU_SOC_UNKNOWN;
}
+u32 get_boot_device(void)
+{
+ u32 val;
+ u32 boot_device;
+
+ /*
+ * First check, if UART boot-mode is active. This can only
+ * be done, via the bootrom error register. Here the
+ * MSB marks if the UART mode is active.
+ */
+ val = readl(CONFIG_BOOTROM_ERR_REG);
+ boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
+ debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
+ if (boot_device == BOOTROM_ERR_MODE_UART)
+ return BOOT_DEVICE_UART;
+
+#ifdef CONFIG_ARMADA_38X
+ /*
+ * If the bootrom error code contains any other than zeros it's an
+ * error condition and the bootROM has fallen back to UART boot
+ */
+ boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
+ if (boot_device)
+ return BOOT_DEVICE_UART;
+#endif
+
+ /*
+ * Now check the SAR register for the strapped boot-device
+ */
+ val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
+ boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
+ debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
+ switch (boot_device) {
+#ifdef BOOT_FROM_NAND
+ case BOOT_FROM_NAND:
+ return BOOT_DEVICE_NAND;
+#endif
+#ifdef BOOT_FROM_MMC
+ case BOOT_FROM_MMC:
+ case BOOT_FROM_MMC_ALT:
+ return BOOT_DEVICE_MMC1;
+#endif
+ case BOOT_FROM_UART:
+#ifdef BOOT_FROM_UART_ALT
+ case BOOT_FROM_UART_ALT:
+#endif
+ return BOOT_DEVICE_UART;
+#ifdef BOOT_FROM_SATA
+ case BOOT_FROM_SATA:
+ case BOOT_FROM_SATA_ALT:
+ return BOOT_DEVICE_SATA;
+#endif
+ case BOOT_FROM_SPI:
+ return BOOT_DEVICE_SPI;
+ default:
+ return BOOT_DEVICE_BOOTROM;
+ };
+}
+
#if defined(CONFIG_DISPLAY_CPUINFO)
#if defined(CONFIG_ARMADA_375)
diff --git a/arch/arm/mach-mvebu/include/mach/cpu.h b/arch/arm/mach-mvebu/include/mach/cpu.h
index 79858858c2..a7a62c7e7d 100644
--- a/arch/arm/mach-mvebu/include/mach/cpu.h
+++ b/arch/arm/mach-mvebu/include/mach/cpu.h
@@ -148,6 +148,8 @@ void __noreturn return_to_bootrom(void);
int mv_sdh_init(unsigned long regbase, u32 max_clk, u32 min_clk, u32 quirks);
#endif
+u32 get_boot_device(void);
+
void get_sar_freq(struct sar_freq_modes *sar_freq);
/*
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
index f0cf60bb14..8d6d4902f6 100644
--- a/arch/arm/mach-mvebu/spl.c
+++ b/arch/arm/mach-mvebu/spl.c
@@ -171,74 +171,6 @@ int spl_parse_board_header(struct spl_image_info *spl_image,
return 0;
}
-static u32 get_boot_device(void)
-{
- u32 val;
- u32 boot_device;
-
- /*
- * First check, if UART boot-mode is active. This can only
- * be done, via the bootrom error register. Here the
- * MSB marks if the UART mode is active.
- */
- val = readl(CONFIG_BOOTROM_ERR_REG);
- boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
- debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
- if (boot_device == BOOTROM_ERR_MODE_UART)
- return BOOT_DEVICE_UART;
-
-#ifdef CONFIG_ARMADA_38X
- /*
- * If the bootrom error code contains any other than zeros it's an
- * error condition and the bootROM has fallen back to UART boot
- */
- boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
- if (boot_device)
- return BOOT_DEVICE_UART;
-#endif
-
- /*
- * Now check the SAR register for the strapped boot-device
- */
- val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
- boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
- debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
- switch (boot_device) {
-#ifdef BOOT_FROM_NAND
- case BOOT_FROM_NAND:
- return BOOT_DEVICE_NAND;
-#endif
-#ifdef BOOT_FROM_MMC
- case BOOT_FROM_MMC:
- case BOOT_FROM_MMC_ALT:
- return BOOT_DEVICE_MMC1;
-#endif
- case BOOT_FROM_UART:
-#ifdef BOOT_FROM_UART_ALT
- case BOOT_FROM_UART_ALT:
-#endif
- return BOOT_DEVICE_UART;
-#ifdef BOOT_FROM_SATA
- case BOOT_FROM_SATA:
- case BOOT_FROM_SATA_ALT:
- return BOOT_DEVICE_SATA;
-#endif
- case BOOT_FROM_SPI:
- return BOOT_DEVICE_SPI;
- default:
- return BOOT_DEVICE_BOOTROM;
- };
-}
-
-#else
-
-static u32 get_boot_device(void)
-{
- return BOOT_DEVICE_BOOTROM;
-}
-
-#endif
-
u32 spl_boot_device(void)
{
u32 boot_device = get_boot_device();
@@ -285,6 +217,15 @@ u32 spl_boot_device(void)
}
}
+#else
+
+u32 spl_boot_device(void)
+{
+ return BOOT_DEVICE_BOOTROM;
+}
+
+#endif
+
int board_return_to_bootrom(struct spl_image_info *spl_image,
struct spl_boot_device *bootdev)
{
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro
2021-08-16 13:19 [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
@ 2021-08-16 13:19 ` Marek Behún
2021-08-16 17:55 ` Pali Rohár
` (2 more replies)
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
3 siblings, 3 replies; 17+ messages in thread
From: Marek Behún @ 2021-08-16 13:19 UTC (permalink / raw)
To: Stefan Roese; +Cc: u-boot, pali, Marek Behún
We do not need to guard code in board_init() and board_late_init()
functions with the CONFIG_SPL_BUILD macro, since these functions are not
called in SPL.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
board/CZ.NIC/turris_omnia/turris_omnia.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index a7e5f56eed..a84a409f43 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -129,7 +129,6 @@ static int omnia_mcu_read(u8 cmd, void *buf, int len)
return dm_i2c_read(chip, cmd, buf, len);
}
-#ifndef CONFIG_SPL_BUILD
static int omnia_mcu_write(u8 cmd, const void *buf, int len)
{
struct udevice *chip;
@@ -158,7 +157,6 @@ static bool disable_mcu_watchdog(void)
return true;
}
-#endif
static bool omnia_detect_sata(void)
{
@@ -325,7 +323,6 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
return &board_topology_map_1g;
}
-#ifndef CONFIG_SPL_BUILD
static int set_regdomain(void)
{
struct omnia_eeprom oep;
@@ -394,7 +391,6 @@ static void handle_reset_button(void)
}
}
}
-#endif
int board_early_init_f(void)
{
@@ -428,19 +424,15 @@ int board_init(void)
/* address of boot parameters */
gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
-#ifndef CONFIG_SPL_BUILD
disable_mcu_watchdog();
-#endif
return 0;
}
int board_late_init(void)
{
-#ifndef CONFIG_SPL_BUILD
set_regdomain();
handle_reset_button();
-#endif
pci_init();
return 0;
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART
2021-08-16 13:19 [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
@ 2021-08-16 13:19 ` Marek Behún
2021-08-16 17:56 ` Pali Rohár
` (2 more replies)
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
3 siblings, 3 replies; 17+ messages in thread
From: Marek Behún @ 2021-08-16 13:19 UTC (permalink / raw)
To: Stefan Roese; +Cc: u-boot, pali, Marek Behún
When booting over UART, sending U-Boot proper may take too much time and
MCU watchdog will reset the board before U-Boot proper is loaded.
Better disable MCU watchdog in SPL when booting over UART.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
board/CZ.NIC/turris_omnia/turris_omnia.c | 17 ++++++++++++++++-
configs/turris_omnia_defconfig | 1 +
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index a84a409f43..b0391c973d 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -419,12 +419,27 @@ int board_early_init_f(void)
return 0;
}
+void spl_board_init(void)
+{
+ /*
+ * If booting from UART, disable MCU watchdog in SPL, since uploading
+ * U-Boot proper can take too much time and trigger it.
+ */
+ if (get_boot_device() == BOOT_DEVICE_UART)
+ disable_mcu_watchdog();
+}
+
int board_init(void)
{
/* address of boot parameters */
gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
- disable_mcu_watchdog();
+ /*
+ * If not booting from UART, MCU watchdog was not disabled in SPL,
+ * disable it now.
+ */
+ if (get_boot_device() != BOOT_DEVICE_UART)
+ disable_mcu_watchdog();
return 0;
}
diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
index cd443ceb30..67f8bdadaf 100644
--- a/configs/turris_omnia_defconfig
+++ b/configs/turris_omnia_defconfig
@@ -33,6 +33,7 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_MISC_INIT_R=y
+CONFIG_SPL_BOARD_INIT=y
CONFIG_SPL_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_SYS_ALT_MEMTEST=y
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init()
2021-08-16 13:19 [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART Marek Behún
` (2 preceding siblings ...)
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
@ 2021-08-16 13:19 ` Marek Behún
2021-08-16 17:56 ` Pali Rohár
` (2 more replies)
3 siblings, 3 replies; 17+ messages in thread
From: Marek Behún @ 2021-08-16 13:19 UTC (permalink / raw)
To: Stefan Roese; +Cc: u-boot, pali, Marek Behún
Disable MCU watchdog in board_late_init() instead of board_init(), so
that it is disabled after U-Boot enables SOC watchdog instead of before.
This way there is no window when the board is vulnerable.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
board/CZ.NIC/turris_omnia/turris_omnia.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index b0391c973d..bac78af04e 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -434,6 +434,11 @@ int board_init(void)
/* address of boot parameters */
gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
+ return 0;
+}
+
+int board_late_init(void)
+{
/*
* If not booting from UART, MCU watchdog was not disabled in SPL,
* disable it now.
@@ -441,11 +446,6 @@ int board_init(void)
if (get_boot_device() != BOOT_DEVICE_UART)
disable_mcu_watchdog();
- return 0;
-}
-
-int board_late_init(void)
-{
set_regdomain();
handle_reset_button();
pci_init();
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
@ 2021-08-16 17:51 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Pali Rohár @ 2021-08-16 17:51 UTC (permalink / raw)
To: Marek Behún; +Cc: Stefan Roese, u-boot
On Monday 16 August 2021 15:19:37 Marek Behún wrote:
> Move the function get_boot_device() from spl.c to cpu.c.
>
> Make it visible, so that it may be used from other files.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Pali Rohár <pali@kernel.org>
> ---
> arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++++
> arch/arm/mach-mvebu/include/mach/cpu.h | 2 +
> arch/arm/mach-mvebu/spl.c | 77 +++-----------------------
> 3 files changed, 71 insertions(+), 68 deletions(-)
>
> diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c
> index 0b935c46fb..daf8bd66a0 100644
> --- a/arch/arm/mach-mvebu/cpu.c
> +++ b/arch/arm/mach-mvebu/cpu.c
> @@ -14,6 +14,7 @@
> #include <asm/pl310.h>
> #include <asm/arch/cpu.h>
> #include <asm/arch/soc.h>
> +#include <asm/spl.h>
> #include <sdhci.h>
>
> #define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3))
> @@ -80,6 +81,65 @@ int mvebu_soc_family(void)
> return MVEBU_SOC_UNKNOWN;
> }
>
> +u32 get_boot_device(void)
> +{
> + u32 val;
> + u32 boot_device;
> +
> + /*
> + * First check, if UART boot-mode is active. This can only
> + * be done, via the bootrom error register. Here the
> + * MSB marks if the UART mode is active.
> + */
> + val = readl(CONFIG_BOOTROM_ERR_REG);
> + boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> + debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + if (boot_device == BOOTROM_ERR_MODE_UART)
> + return BOOT_DEVICE_UART;
> +
> +#ifdef CONFIG_ARMADA_38X
> + /*
> + * If the bootrom error code contains any other than zeros it's an
> + * error condition and the bootROM has fallen back to UART boot
> + */
> + boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> + if (boot_device)
> + return BOOT_DEVICE_UART;
> +#endif
> +
> + /*
> + * Now check the SAR register for the strapped boot-device
> + */
> + val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> + boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> + debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + switch (boot_device) {
> +#ifdef BOOT_FROM_NAND
> + case BOOT_FROM_NAND:
> + return BOOT_DEVICE_NAND;
> +#endif
> +#ifdef BOOT_FROM_MMC
> + case BOOT_FROM_MMC:
> + case BOOT_FROM_MMC_ALT:
> + return BOOT_DEVICE_MMC1;
> +#endif
> + case BOOT_FROM_UART:
> +#ifdef BOOT_FROM_UART_ALT
> + case BOOT_FROM_UART_ALT:
> +#endif
> + return BOOT_DEVICE_UART;
> +#ifdef BOOT_FROM_SATA
> + case BOOT_FROM_SATA:
> + case BOOT_FROM_SATA_ALT:
> + return BOOT_DEVICE_SATA;
> +#endif
> + case BOOT_FROM_SPI:
> + return BOOT_DEVICE_SPI;
> + default:
> + return BOOT_DEVICE_BOOTROM;
> + };
> +}
> +
> #if defined(CONFIG_DISPLAY_CPUINFO)
>
> #if defined(CONFIG_ARMADA_375)
> diff --git a/arch/arm/mach-mvebu/include/mach/cpu.h b/arch/arm/mach-mvebu/include/mach/cpu.h
> index 79858858c2..a7a62c7e7d 100644
> --- a/arch/arm/mach-mvebu/include/mach/cpu.h
> +++ b/arch/arm/mach-mvebu/include/mach/cpu.h
> @@ -148,6 +148,8 @@ void __noreturn return_to_bootrom(void);
> int mv_sdh_init(unsigned long regbase, u32 max_clk, u32 min_clk, u32 quirks);
> #endif
>
> +u32 get_boot_device(void);
> +
> void get_sar_freq(struct sar_freq_modes *sar_freq);
>
> /*
> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> index f0cf60bb14..8d6d4902f6 100644
> --- a/arch/arm/mach-mvebu/spl.c
> +++ b/arch/arm/mach-mvebu/spl.c
> @@ -171,74 +171,6 @@ int spl_parse_board_header(struct spl_image_info *spl_image,
> return 0;
> }
>
> -static u32 get_boot_device(void)
> -{
> - u32 val;
> - u32 boot_device;
> -
> - /*
> - * First check, if UART boot-mode is active. This can only
> - * be done, via the bootrom error register. Here the
> - * MSB marks if the UART mode is active.
> - */
> - val = readl(CONFIG_BOOTROM_ERR_REG);
> - boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> - debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - if (boot_device == BOOTROM_ERR_MODE_UART)
> - return BOOT_DEVICE_UART;
> -
> -#ifdef CONFIG_ARMADA_38X
> - /*
> - * If the bootrom error code contains any other than zeros it's an
> - * error condition and the bootROM has fallen back to UART boot
> - */
> - boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> - if (boot_device)
> - return BOOT_DEVICE_UART;
> -#endif
> -
> - /*
> - * Now check the SAR register for the strapped boot-device
> - */
> - val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> - boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> - debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - switch (boot_device) {
> -#ifdef BOOT_FROM_NAND
> - case BOOT_FROM_NAND:
> - return BOOT_DEVICE_NAND;
> -#endif
> -#ifdef BOOT_FROM_MMC
> - case BOOT_FROM_MMC:
> - case BOOT_FROM_MMC_ALT:
> - return BOOT_DEVICE_MMC1;
> -#endif
> - case BOOT_FROM_UART:
> -#ifdef BOOT_FROM_UART_ALT
> - case BOOT_FROM_UART_ALT:
> -#endif
> - return BOOT_DEVICE_UART;
> -#ifdef BOOT_FROM_SATA
> - case BOOT_FROM_SATA:
> - case BOOT_FROM_SATA_ALT:
> - return BOOT_DEVICE_SATA;
> -#endif
> - case BOOT_FROM_SPI:
> - return BOOT_DEVICE_SPI;
> - default:
> - return BOOT_DEVICE_BOOTROM;
> - };
> -}
> -
> -#else
> -
> -static u32 get_boot_device(void)
> -{
> - return BOOT_DEVICE_BOOTROM;
> -}
> -
> -#endif
> -
> u32 spl_boot_device(void)
> {
> u32 boot_device = get_boot_device();
> @@ -285,6 +217,15 @@ u32 spl_boot_device(void)
> }
> }
>
> +#else
> +
> +u32 spl_boot_device(void)
> +{
> + return BOOT_DEVICE_BOOTROM;
> +}
> +
> +#endif
> +
> int board_return_to_bootrom(struct spl_image_info *spl_image,
> struct spl_boot_device *bootdev)
> {
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
@ 2021-08-16 17:55 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Pali Rohár @ 2021-08-16 17:55 UTC (permalink / raw)
To: Marek Behún; +Cc: Stefan Roese, u-boot
On Monday 16 August 2021 15:19:38 Marek Behún wrote:
> We do not need to guard code in board_init() and board_late_init()
> functions with the CONFIG_SPL_BUILD macro, since these functions are not
> called in SPL.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Pali Rohár <pali@kernel.org>
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a7e5f56eed..a84a409f43 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -129,7 +129,6 @@ static int omnia_mcu_read(u8 cmd, void *buf, int len)
> return dm_i2c_read(chip, cmd, buf, len);
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int omnia_mcu_write(u8 cmd, const void *buf, int len)
> {
> struct udevice *chip;
> @@ -158,7 +157,6 @@ static bool disable_mcu_watchdog(void)
>
> return true;
> }
> -#endif
>
> static bool omnia_detect_sata(void)
> {
> @@ -325,7 +323,6 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
> return &board_topology_map_1g;
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int set_regdomain(void)
> {
> struct omnia_eeprom oep;
> @@ -394,7 +391,6 @@ static void handle_reset_button(void)
> }
> }
> }
> -#endif
>
> int board_early_init_f(void)
> {
> @@ -428,19 +424,15 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> -#ifndef CONFIG_SPL_BUILD
> disable_mcu_watchdog();
> -#endif
>
> return 0;
> }
>
> int board_late_init(void)
> {
> -#ifndef CONFIG_SPL_BUILD
> set_regdomain();
> handle_reset_button();
> -#endif
> pci_init();
>
> return 0;
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
@ 2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Pali Rohár @ 2021-08-16 17:56 UTC (permalink / raw)
To: Marek Behún; +Cc: Stefan Roese, u-boot
On Monday 16 August 2021 15:19:39 Marek Behún wrote:
> When booting over UART, sending U-Boot proper may take too much time and
> MCU watchdog will reset the board before U-Boot proper is loaded.
>
> Better disable MCU watchdog in SPL when booting over UART.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Pali Rohár <pali@kernel.org>
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 17 ++++++++++++++++-
> configs/turris_omnia_defconfig | 1 +
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a84a409f43..b0391c973d 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -419,12 +419,27 @@ int board_early_init_f(void)
> return 0;
> }
>
> +void spl_board_init(void)
> +{
> + /*
> + * If booting from UART, disable MCU watchdog in SPL, since uploading
> + * U-Boot proper can take too much time and trigger it.
> + */
> + if (get_boot_device() == BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
> +}
> +
> int board_init(void)
> {
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> - disable_mcu_watchdog();
> + /*
> + * If not booting from UART, MCU watchdog was not disabled in SPL,
> + * disable it now.
> + */
> + if (get_boot_device() != BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
>
> return 0;
> }
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index cd443ceb30..67f8bdadaf 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -33,6 +33,7 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_MISC_INIT_R=y
> +CONFIG_SPL_BOARD_INIT=y
> CONFIG_SPL_I2C=y
> CONFIG_CMD_MEMTEST=y
> CONFIG_SYS_ALT_MEMTEST=y
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init()
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
@ 2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:14 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Pali Rohár @ 2021-08-16 17:56 UTC (permalink / raw)
To: Marek Behún; +Cc: Stefan Roese, u-boot
On Monday 16 August 2021 15:19:40 Marek Behún wrote:
> Disable MCU watchdog in board_late_init() instead of board_init(), so
> that it is disabled after U-Boot enables SOC watchdog instead of before.
> This way there is no window when the board is vulnerable.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Pali Rohár <pali@kernel.org>
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index b0391c973d..bac78af04e 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -434,6 +434,11 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> + return 0;
> +}
> +
> +int board_late_init(void)
> +{
> /*
> * If not booting from UART, MCU watchdog was not disabled in SPL,
> * disable it now.
> @@ -441,11 +446,6 @@ int board_init(void)
> if (get_boot_device() != BOOT_DEVICE_UART)
> disable_mcu_watchdog();
>
> - return 0;
> -}
> -
> -int board_late_init(void)
> -{
> set_regdomain();
> handle_reset_button();
> pci_init();
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
2021-08-16 17:51 ` Pali Rohár
@ 2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-08-17 7:46 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> Move the function get_boot_device() from spl.c to cpu.c.
>
> Make it visible, so that it may be used from other files.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
> ---
> arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++++
> arch/arm/mach-mvebu/include/mach/cpu.h | 2 +
> arch/arm/mach-mvebu/spl.c | 77 +++-----------------------
> 3 files changed, 71 insertions(+), 68 deletions(-)
>
> diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c
> index 0b935c46fb..daf8bd66a0 100644
> --- a/arch/arm/mach-mvebu/cpu.c
> +++ b/arch/arm/mach-mvebu/cpu.c
> @@ -14,6 +14,7 @@
> #include <asm/pl310.h>
> #include <asm/arch/cpu.h>
> #include <asm/arch/soc.h>
> +#include <asm/spl.h>
> #include <sdhci.h>
>
> #define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3))
> @@ -80,6 +81,65 @@ int mvebu_soc_family(void)
> return MVEBU_SOC_UNKNOWN;
> }
>
> +u32 get_boot_device(void)
> +{
> + u32 val;
> + u32 boot_device;
> +
> + /*
> + * First check, if UART boot-mode is active. This can only
> + * be done, via the bootrom error register. Here the
> + * MSB marks if the UART mode is active.
> + */
> + val = readl(CONFIG_BOOTROM_ERR_REG);
> + boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> + debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + if (boot_device == BOOTROM_ERR_MODE_UART)
> + return BOOT_DEVICE_UART;
> +
> +#ifdef CONFIG_ARMADA_38X
> + /*
> + * If the bootrom error code contains any other than zeros it's an
> + * error condition and the bootROM has fallen back to UART boot
> + */
> + boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> + if (boot_device)
> + return BOOT_DEVICE_UART;
> +#endif
> +
> + /*
> + * Now check the SAR register for the strapped boot-device
> + */
> + val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> + boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> + debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + switch (boot_device) {
> +#ifdef BOOT_FROM_NAND
> + case BOOT_FROM_NAND:
> + return BOOT_DEVICE_NAND;
> +#endif
> +#ifdef BOOT_FROM_MMC
> + case BOOT_FROM_MMC:
> + case BOOT_FROM_MMC_ALT:
> + return BOOT_DEVICE_MMC1;
> +#endif
> + case BOOT_FROM_UART:
> +#ifdef BOOT_FROM_UART_ALT
> + case BOOT_FROM_UART_ALT:
> +#endif
> + return BOOT_DEVICE_UART;
> +#ifdef BOOT_FROM_SATA
> + case BOOT_FROM_SATA:
> + case BOOT_FROM_SATA_ALT:
> + return BOOT_DEVICE_SATA;
> +#endif
> + case BOOT_FROM_SPI:
> + return BOOT_DEVICE_SPI;
> + default:
> + return BOOT_DEVICE_BOOTROM;
> + };
> +}
> +
> #if defined(CONFIG_DISPLAY_CPUINFO)
>
> #if defined(CONFIG_ARMADA_375)
> diff --git a/arch/arm/mach-mvebu/include/mach/cpu.h b/arch/arm/mach-mvebu/include/mach/cpu.h
> index 79858858c2..a7a62c7e7d 100644
> --- a/arch/arm/mach-mvebu/include/mach/cpu.h
> +++ b/arch/arm/mach-mvebu/include/mach/cpu.h
> @@ -148,6 +148,8 @@ void __noreturn return_to_bootrom(void);
> int mv_sdh_init(unsigned long regbase, u32 max_clk, u32 min_clk, u32 quirks);
> #endif
>
> +u32 get_boot_device(void);
> +
> void get_sar_freq(struct sar_freq_modes *sar_freq);
>
> /*
> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> index f0cf60bb14..8d6d4902f6 100644
> --- a/arch/arm/mach-mvebu/spl.c
> +++ b/arch/arm/mach-mvebu/spl.c
> @@ -171,74 +171,6 @@ int spl_parse_board_header(struct spl_image_info *spl_image,
> return 0;
> }
>
> -static u32 get_boot_device(void)
> -{
> - u32 val;
> - u32 boot_device;
> -
> - /*
> - * First check, if UART boot-mode is active. This can only
> - * be done, via the bootrom error register. Here the
> - * MSB marks if the UART mode is active.
> - */
> - val = readl(CONFIG_BOOTROM_ERR_REG);
> - boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> - debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - if (boot_device == BOOTROM_ERR_MODE_UART)
> - return BOOT_DEVICE_UART;
> -
> -#ifdef CONFIG_ARMADA_38X
> - /*
> - * If the bootrom error code contains any other than zeros it's an
> - * error condition and the bootROM has fallen back to UART boot
> - */
> - boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> - if (boot_device)
> - return BOOT_DEVICE_UART;
> -#endif
> -
> - /*
> - * Now check the SAR register for the strapped boot-device
> - */
> - val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> - boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> - debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - switch (boot_device) {
> -#ifdef BOOT_FROM_NAND
> - case BOOT_FROM_NAND:
> - return BOOT_DEVICE_NAND;
> -#endif
> -#ifdef BOOT_FROM_MMC
> - case BOOT_FROM_MMC:
> - case BOOT_FROM_MMC_ALT:
> - return BOOT_DEVICE_MMC1;
> -#endif
> - case BOOT_FROM_UART:
> -#ifdef BOOT_FROM_UART_ALT
> - case BOOT_FROM_UART_ALT:
> -#endif
> - return BOOT_DEVICE_UART;
> -#ifdef BOOT_FROM_SATA
> - case BOOT_FROM_SATA:
> - case BOOT_FROM_SATA_ALT:
> - return BOOT_DEVICE_SATA;
> -#endif
> - case BOOT_FROM_SPI:
> - return BOOT_DEVICE_SPI;
> - default:
> - return BOOT_DEVICE_BOOTROM;
> - };
> -}
> -
> -#else
> -
> -static u32 get_boot_device(void)
> -{
> - return BOOT_DEVICE_BOOTROM;
> -}
> -
> -#endif
> -
> u32 spl_boot_device(void)
> {
> u32 boot_device = get_boot_device();
> @@ -285,6 +217,15 @@ u32 spl_boot_device(void)
> }
> }
>
> +#else
> +
> +u32 spl_boot_device(void)
> +{
> + return BOOT_DEVICE_BOOTROM;
> +}
> +
> +#endif
> +
> int board_return_to_bootrom(struct spl_image_info *spl_image,
> struct spl_boot_device *bootdev)
> {
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
2021-08-16 17:55 ` Pali Rohár
@ 2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-08-17 7:46 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> We do not need to guard code in board_init() and board_late_init()
> functions with the CONFIG_SPL_BUILD macro, since these functions are not
> called in SPL.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a7e5f56eed..a84a409f43 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -129,7 +129,6 @@ static int omnia_mcu_read(u8 cmd, void *buf, int len)
> return dm_i2c_read(chip, cmd, buf, len);
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int omnia_mcu_write(u8 cmd, const void *buf, int len)
> {
> struct udevice *chip;
> @@ -158,7 +157,6 @@ static bool disable_mcu_watchdog(void)
>
> return true;
> }
> -#endif
>
> static bool omnia_detect_sata(void)
> {
> @@ -325,7 +323,6 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
> return &board_topology_map_1g;
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int set_regdomain(void)
> {
> struct omnia_eeprom oep;
> @@ -394,7 +391,6 @@ static void handle_reset_button(void)
> }
> }
> }
> -#endif
>
> int board_early_init_f(void)
> {
> @@ -428,19 +424,15 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> -#ifndef CONFIG_SPL_BUILD
> disable_mcu_watchdog();
> -#endif
>
> return 0;
> }
>
> int board_late_init(void)
> {
> -#ifndef CONFIG_SPL_BUILD
> set_regdomain();
> handle_reset_button();
> -#endif
> pci_init();
>
> return 0;
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 17:56 ` Pali Rohár
@ 2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-08-17 7:46 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> When booting over UART, sending U-Boot proper may take too much time and
> MCU watchdog will reset the board before U-Boot proper is loaded.
>
> Better disable MCU watchdog in SPL when booting over UART.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 17 ++++++++++++++++-
> configs/turris_omnia_defconfig | 1 +
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a84a409f43..b0391c973d 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -419,12 +419,27 @@ int board_early_init_f(void)
> return 0;
> }
>
> +void spl_board_init(void)
> +{
> + /*
> + * If booting from UART, disable MCU watchdog in SPL, since uploading
> + * U-Boot proper can take too much time and trigger it.
> + */
> + if (get_boot_device() == BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
> +}
> +
> int board_init(void)
> {
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> - disable_mcu_watchdog();
> + /*
> + * If not booting from UART, MCU watchdog was not disabled in SPL,
> + * disable it now.
> + */
> + if (get_boot_device() != BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
>
> return 0;
> }
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index cd443ceb30..67f8bdadaf 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -33,6 +33,7 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_MISC_INIT_R=y
> +CONFIG_SPL_BOARD_INIT=y
> CONFIG_SPL_I2C=y
> CONFIG_CMD_MEMTEST=y
> CONFIG_SYS_ALT_MEMTEST=y
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init()
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
2021-08-16 17:56 ` Pali Rohár
@ 2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:14 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-08-17 7:46 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> Disable MCU watchdog in board_late_init() instead of board_init(), so
> that it is disabled after U-Boot enables SOC watchdog instead of before.
> This way there is no window when the board is vulnerable.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index b0391c973d..bac78af04e 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -434,6 +434,11 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> + return 0;
> +}
> +
> +int board_late_init(void)
> +{
> /*
> * If not booting from UART, MCU watchdog was not disabled in SPL,
> * disable it now.
> @@ -441,11 +446,6 @@ int board_init(void)
> if (get_boot_device() != BOOT_DEVICE_UART)
> disable_mcu_watchdog();
>
> - return 0;
> -}
> -
> -int board_late_init(void)
> -{
> set_regdomain();
> handle_reset_button();
> pci_init();
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
2021-08-16 17:51 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
@ 2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-09-01 9:13 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> Move the function get_boot_device() from spl.c to cpu.c.
>
> Make it visible, so that it may be used from other files.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Applied to u-boot-marvell/master
Thanks,
Stefan
> ---
> arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++++
> arch/arm/mach-mvebu/include/mach/cpu.h | 2 +
> arch/arm/mach-mvebu/spl.c | 77 +++-----------------------
> 3 files changed, 71 insertions(+), 68 deletions(-)
>
> diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c
> index 0b935c46fb..daf8bd66a0 100644
> --- a/arch/arm/mach-mvebu/cpu.c
> +++ b/arch/arm/mach-mvebu/cpu.c
> @@ -14,6 +14,7 @@
> #include <asm/pl310.h>
> #include <asm/arch/cpu.h>
> #include <asm/arch/soc.h>
> +#include <asm/spl.h>
> #include <sdhci.h>
>
> #define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3))
> @@ -80,6 +81,65 @@ int mvebu_soc_family(void)
> return MVEBU_SOC_UNKNOWN;
> }
>
> +u32 get_boot_device(void)
> +{
> + u32 val;
> + u32 boot_device;
> +
> + /*
> + * First check, if UART boot-mode is active. This can only
> + * be done, via the bootrom error register. Here the
> + * MSB marks if the UART mode is active.
> + */
> + val = readl(CONFIG_BOOTROM_ERR_REG);
> + boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> + debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + if (boot_device == BOOTROM_ERR_MODE_UART)
> + return BOOT_DEVICE_UART;
> +
> +#ifdef CONFIG_ARMADA_38X
> + /*
> + * If the bootrom error code contains any other than zeros it's an
> + * error condition and the bootROM has fallen back to UART boot
> + */
> + boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> + if (boot_device)
> + return BOOT_DEVICE_UART;
> +#endif
> +
> + /*
> + * Now check the SAR register for the strapped boot-device
> + */
> + val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> + boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> + debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> + switch (boot_device) {
> +#ifdef BOOT_FROM_NAND
> + case BOOT_FROM_NAND:
> + return BOOT_DEVICE_NAND;
> +#endif
> +#ifdef BOOT_FROM_MMC
> + case BOOT_FROM_MMC:
> + case BOOT_FROM_MMC_ALT:
> + return BOOT_DEVICE_MMC1;
> +#endif
> + case BOOT_FROM_UART:
> +#ifdef BOOT_FROM_UART_ALT
> + case BOOT_FROM_UART_ALT:
> +#endif
> + return BOOT_DEVICE_UART;
> +#ifdef BOOT_FROM_SATA
> + case BOOT_FROM_SATA:
> + case BOOT_FROM_SATA_ALT:
> + return BOOT_DEVICE_SATA;
> +#endif
> + case BOOT_FROM_SPI:
> + return BOOT_DEVICE_SPI;
> + default:
> + return BOOT_DEVICE_BOOTROM;
> + };
> +}
> +
> #if defined(CONFIG_DISPLAY_CPUINFO)
>
> #if defined(CONFIG_ARMADA_375)
> diff --git a/arch/arm/mach-mvebu/include/mach/cpu.h b/arch/arm/mach-mvebu/include/mach/cpu.h
> index 79858858c2..a7a62c7e7d 100644
> --- a/arch/arm/mach-mvebu/include/mach/cpu.h
> +++ b/arch/arm/mach-mvebu/include/mach/cpu.h
> @@ -148,6 +148,8 @@ void __noreturn return_to_bootrom(void);
> int mv_sdh_init(unsigned long regbase, u32 max_clk, u32 min_clk, u32 quirks);
> #endif
>
> +u32 get_boot_device(void);
> +
> void get_sar_freq(struct sar_freq_modes *sar_freq);
>
> /*
> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> index f0cf60bb14..8d6d4902f6 100644
> --- a/arch/arm/mach-mvebu/spl.c
> +++ b/arch/arm/mach-mvebu/spl.c
> @@ -171,74 +171,6 @@ int spl_parse_board_header(struct spl_image_info *spl_image,
> return 0;
> }
>
> -static u32 get_boot_device(void)
> -{
> - u32 val;
> - u32 boot_device;
> -
> - /*
> - * First check, if UART boot-mode is active. This can only
> - * be done, via the bootrom error register. Here the
> - * MSB marks if the UART mode is active.
> - */
> - val = readl(CONFIG_BOOTROM_ERR_REG);
> - boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
> - debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - if (boot_device == BOOTROM_ERR_MODE_UART)
> - return BOOT_DEVICE_UART;
> -
> -#ifdef CONFIG_ARMADA_38X
> - /*
> - * If the bootrom error code contains any other than zeros it's an
> - * error condition and the bootROM has fallen back to UART boot
> - */
> - boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS;
> - if (boot_device)
> - return BOOT_DEVICE_UART;
> -#endif
> -
> - /*
> - * Now check the SAR register for the strapped boot-device
> - */
> - val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */
> - boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
> - debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
> - switch (boot_device) {
> -#ifdef BOOT_FROM_NAND
> - case BOOT_FROM_NAND:
> - return BOOT_DEVICE_NAND;
> -#endif
> -#ifdef BOOT_FROM_MMC
> - case BOOT_FROM_MMC:
> - case BOOT_FROM_MMC_ALT:
> - return BOOT_DEVICE_MMC1;
> -#endif
> - case BOOT_FROM_UART:
> -#ifdef BOOT_FROM_UART_ALT
> - case BOOT_FROM_UART_ALT:
> -#endif
> - return BOOT_DEVICE_UART;
> -#ifdef BOOT_FROM_SATA
> - case BOOT_FROM_SATA:
> - case BOOT_FROM_SATA_ALT:
> - return BOOT_DEVICE_SATA;
> -#endif
> - case BOOT_FROM_SPI:
> - return BOOT_DEVICE_SPI;
> - default:
> - return BOOT_DEVICE_BOOTROM;
> - };
> -}
> -
> -#else
> -
> -static u32 get_boot_device(void)
> -{
> - return BOOT_DEVICE_BOOTROM;
> -}
> -
> -#endif
> -
> u32 spl_boot_device(void)
> {
> u32 boot_device = get_boot_device();
> @@ -285,6 +217,15 @@ u32 spl_boot_device(void)
> }
> }
>
> +#else
> +
> +u32 spl_boot_device(void)
> +{
> + return BOOT_DEVICE_BOOTROM;
> +}
> +
> +#endif
> +
> int board_return_to_bootrom(struct spl_image_info *spl_image,
> struct spl_boot_device *bootdev)
> {
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
2021-08-16 17:55 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
@ 2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-09-01 9:13 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> We do not need to guard code in board_init() and board_late_init()
> functions with the CONFIG_SPL_BUILD macro, since these functions are not
> called in SPL.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Applied to u-boot-marvell/master
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a7e5f56eed..a84a409f43 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -129,7 +129,6 @@ static int omnia_mcu_read(u8 cmd, void *buf, int len)
> return dm_i2c_read(chip, cmd, buf, len);
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int omnia_mcu_write(u8 cmd, const void *buf, int len)
> {
> struct udevice *chip;
> @@ -158,7 +157,6 @@ static bool disable_mcu_watchdog(void)
>
> return true;
> }
> -#endif
>
> static bool omnia_detect_sata(void)
> {
> @@ -325,7 +323,6 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
> return &board_topology_map_1g;
> }
>
> -#ifndef CONFIG_SPL_BUILD
> static int set_regdomain(void)
> {
> struct omnia_eeprom oep;
> @@ -394,7 +391,6 @@ static void handle_reset_button(void)
> }
> }
> }
> -#endif
>
> int board_early_init_f(void)
> {
> @@ -428,19 +424,15 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> -#ifndef CONFIG_SPL_BUILD
> disable_mcu_watchdog();
> -#endif
>
> return 0;
> }
>
> int board_late_init(void)
> {
> -#ifndef CONFIG_SPL_BUILD
> set_regdomain();
> handle_reset_button();
> -#endif
> pci_init();
>
> return 0;
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
@ 2021-09-01 9:13 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-09-01 9:13 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> When booting over UART, sending U-Boot proper may take too much time and
> MCU watchdog will reset the board before U-Boot proper is loaded.
>
> Better disable MCU watchdog in SPL when booting over UART.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Applied to u-boot-marvell/master
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 17 ++++++++++++++++-
> configs/turris_omnia_defconfig | 1 +
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index a84a409f43..b0391c973d 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -419,12 +419,27 @@ int board_early_init_f(void)
> return 0;
> }
>
> +void spl_board_init(void)
> +{
> + /*
> + * If booting from UART, disable MCU watchdog in SPL, since uploading
> + * U-Boot proper can take too much time and trigger it.
> + */
> + if (get_boot_device() == BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
> +}
> +
> int board_init(void)
> {
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> - disable_mcu_watchdog();
> + /*
> + * If not booting from UART, MCU watchdog was not disabled in SPL,
> + * disable it now.
> + */
> + if (get_boot_device() != BOOT_DEVICE_UART)
> + disable_mcu_watchdog();
>
> return 0;
> }
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index cd443ceb30..67f8bdadaf 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -33,6 +33,7 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_MISC_INIT_R=y
> +CONFIG_SPL_BOARD_INIT=y
> CONFIG_SPL_I2C=y
> CONFIG_CMD_MEMTEST=y
> CONFIG_SYS_ALT_MEMTEST=y
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init()
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
@ 2021-09-01 9:14 ` Stefan Roese
2 siblings, 0 replies; 17+ messages in thread
From: Stefan Roese @ 2021-09-01 9:14 UTC (permalink / raw)
To: Marek Behún; +Cc: u-boot, pali
On 16.08.21 15:19, Marek Behún wrote:
> Disable MCU watchdog in board_late_init() instead of board_init(), so
> that it is disabled after U-Boot enables SOC watchdog instead of before.
> This way there is no window when the board is vulnerable.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
Applied to u-boot-marvell/master
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index b0391c973d..bac78af04e 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -434,6 +434,11 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
>
> + return 0;
> +}
> +
> +int board_late_init(void)
> +{
> /*
> * If not booting from UART, MCU watchdog was not disabled in SPL,
> * disable it now.
> @@ -441,11 +446,6 @@ int board_init(void)
> if (get_boot_device() != BOOT_DEVICE_UART)
> disable_mcu_watchdog();
>
> - return 0;
> -}
> -
> -int board_late_init(void)
> -{
> set_regdomain();
> handle_reset_button();
> pci_init();
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2021-09-01 9:14 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-16 13:19 [PATCH u-boot-mvebu v2 0/4] turris_omnia: Disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible Marek Behún
2021-08-16 17:51 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 2/4] arm: mvebu: turris_omnia: don't guard by CONFIG_SPL_BUILD macro Marek Behún
2021-08-16 17:55 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 3/4] arm: mvebu: turris_omnia: disable MCU watchdog in SPL when booting over UART Marek Behún
2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:13 ` Stefan Roese
2021-08-16 13:19 ` [PATCH u-boot-mvebu v2 4/4] arm: mvebu: turris_omnia: disable MCU watchdog in board_late_init() Marek Behún
2021-08-16 17:56 ` Pali Rohár
2021-08-17 7:46 ` Stefan Roese
2021-09-01 9:14 ` Stefan Roese
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.