mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] ARM: beaglebone: add delay in lowlevel.c
@ 2025-01-08 15:36 Konstantin Kletschke
  0 siblings, 0 replies; 10+ messages in thread
From: Konstantin Kletschke @ 2025-01-08 15:36 UTC (permalink / raw)
  To: barebox

Some Beaglebone Black devices are not able to cope with a warm start.
When system is powered up and booted hitting reset button (S1) or
issuing "reset" at barebox prompt the new instance of first stage gets
stuck after PLL init.

Adding a delay of ~1.8ms in lowlevel.c after PLL init solves this.

Link: https://lore.barebox.org/barebox/Z0gywL2hLcIDoLQ8@hephaistos/

Signed-off-by: Konstantin Kletschke <konstantin.kletschke at inside-m2m.de>

--- 
 arch/arm/boards/beaglebone/lowlevel.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
index 5dc49dfaaf..7dc338d03a 100644
--- a/arch/arm/boards/beaglebone/lowlevel.c
+++ b/arch/arm/boards/beaglebone/lowlevel.c
@@ -97,6 +97,12 @@ extern char __dtb_z_am335x_boneblack_start[];
 extern char __dtb_z_am335x_bone_common_start[];
 extern char __dtb_z_am335x_bone_start[];

+static void __udelay(int us)
+{
+        volatile int i;
+       for (i = 0; i < us; i++);
+}
+
 /**
  * @brief The basic entry point for board initialization.
  *
@@ -135,6 +141,12 @@ static noinline int beaglebone_sram_init(void)
        am33xx_enable_uart0_pin_mux();
        omap_debug_ll_init();
        putc_ll('>');
+       /*
+        * Some (~5%) Beaglebone Black received from SEEED in batches
+        * after autumn 2024 require a delay to be able to warm start
+        * after reset
+        */
+       __udelay(3000);

        barebox_arm_entry(0x80000000, sdram_size, fdt);
 }
-- 





^ permalink raw reply	[flat|nested] 10+ messages in thread
* [PATCH] ARM: beaglebone: add delay in lowlevel.c
@ 2025-01-08 15:18 Konstantin Kletschke
  0 siblings, 0 replies; 10+ messages in thread
From: Konstantin Kletschke @ 2025-01-08 15:18 UTC (permalink / raw)
  To: barebox

Some Beaglebone Black devices are not able to cope with a warm start.
When system is powered up and booted hitting reset button (S1) or
issuing "reset" at barebox prompt the new instance of first stage gets
stuck after PLL init.

Adding a delay of ~1.8ms in lowlevel.c after PLL init solves this.

Signed-off-by: Konstantin Kletschke <konstantin.kletschke@inside-m2m.de>
---
 arch/arm/boards/beaglebone/lowlevel.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
index 5dc49dfaaf..ccae1d1122 100644
--- a/arch/arm/boards/beaglebone/lowlevel.c
+++ b/arch/arm/boards/beaglebone/lowlevel.c
@@ -97,6 +97,12 @@ extern char __dtb_z_am335x_boneblack_start[];
 extern char __dtb_z_am335x_bone_common_start[];
 extern char __dtb_z_am335x_bone_start[];

+static void __udelay(int us)
+{
+        volatile int i;
+       for (i = 0; i < us; i++);
+}
+
 /**
  * @brief The basic entry point for board initialization.
  *
@@ -135,6 +141,7 @@ static noinline int beaglebone_sram_init(void)
        am33xx_enable_uart0_pin_mux();
        omap_debug_ll_init();
        putc_ll('>');
+       __udelay(3000); // Fix for Beaglebone Black warm start after reset

        barebox_arm_entry(0x80000000, sdram_size, fdt);
 }

-- 



^ permalink raw reply	[flat|nested] 10+ messages in thread
* [PATCH] ARM: beaglebone: add delay in lowlevel.c
@ 2025-01-07 15:01 Konstantin Kletschke
  2025-01-08 14:32 ` Sascha Hauer
  0 siblings, 1 reply; 10+ messages in thread
From: Konstantin Kletschke @ 2025-01-07 15:01 UTC (permalink / raw)
  To: barebox

Some Beaglebone Black devices are not able to cope with a warm start.
When system is powered up and booted hitting reset button (S1) or
issuing "reset" at barebox prompt the new instance of first stage gets
stuck after PLL init.

Adding a delay of ~1.8ms in lowlevel.c after PLL init solves this.

Signed-off-by: Konstantin Kletschke <konstantin.kletschke@inside-m2m.de>
---
 arch/arm/boards/beaglebone/lowlevel.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
index 5dc49dfaaf..ccae1d1122 100644
--- a/arch/arm/boards/beaglebone/lowlevel.c
+++ b/arch/arm/boards/beaglebone/lowlevel.c
@@ -97,6 +97,12 @@ extern char __dtb_z_am335x_boneblack_start[];
 extern char __dtb_z_am335x_bone_common_start[];
 extern char __dtb_z_am335x_bone_start[];

+static void __udelay(int us)
+{
+        volatile int i;
+       for (i = 0; i < us * 3; i++);
+}
+
 /**
  * @brief The basic entry point for board initialization.
  *
@@ -135,6 +141,7 @@ static noinline int beaglebone_sram_init(void)
        am33xx_enable_uart0_pin_mux();
        omap_debug_ll_init();
        putc_ll('>');
+       __udelay(1000); // Adding delay of 1.8ms

        barebox_arm_entry(0x80000000, sdram_size, fdt);
 }

-- 





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-01-08 15:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-08 15:36 [PATCH] ARM: beaglebone: add delay in lowlevel.c Konstantin Kletschke
  -- strict thread matches above, loose matches on Subject: below --
2025-01-08 15:18 Konstantin Kletschke
2025-01-07 15:01 Konstantin Kletschke
2025-01-08 14:32 ` Sascha Hauer
2025-01-08 15:14   ` Konstantin Kletschke
2025-01-08 15:19     ` Ahmad Fatoum
2025-01-08 15:27       ` Konstantin Kletschke
2025-01-08 15:31         ` Ahmad Fatoum
2025-01-08 15:38           ` Konstantin Kletschke
2025-01-08 15:46     ` Lucas Stach

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox