Skip to contentSkip to conversation

aspeed: firestone: Set SIO to bypass UART in hostboot

PATCH Applied Lei YU 2 participants 2 messages Oct 11, 2017 – Oct 13, 2017

Subsystems (3)
lore
Share & tools
lore

Lei YU

author
#0 lore raw

PATCH 1/1 aspeed: firestone: Set SIO to bypass UART in hostboot

OpenBMC fails to boot host on Firestone.
The cause is that Firestone's hostboot hangs after disables SUART/VUART.

The workaround is to make hostboot run into default SUART init without disabling VUART, by setting 0x170 SIO register to 0.

With this workaround, Firestone boots OK.

---
 arch/arm/mach-aspeed/aspeed.c | 4 ++++
 1 file changed, 4 insertions(+)
arch/arm/mach-aspeed/aspeed.c +4 -0
index a9e91d9..c84c871 100644
@@ -104,6 +104,10 @@ static void __init do_firestone_setup(void)
 
 	/* Override serial destination to use the dedicated serial port */
 	writel(0x00004000, AST_IO(AST_BASE_LPC | 0x174));
+
+	/* Workaround to make hostboot run into default SUART init */
+	/* Otherwise it fails to boot */
+	writel(0x00000000, AST_IO(AST_BASE_LPC | 0x170));
 }
 
 static void __init do_garrison_setup(void)
Signature · 1 line
1.9.1
#1 lore raw
Quoted 10 lines · Lei YU

OpenBMC fails to boot host on Firestone.
The cause is that Firestone's hostboot hangs after disables SUART/VUART.

The workaround is to make hostboot run into default SUART init without disabling VUART, by setting 0x170 SIO register to 0.
With this workaround, Firestone boots OK.

Applied to dev-4.10.

We really should start to think again about how best to do this from userspace.

Andrew

Quoted 19 lines

---
 arch/arm/mach-aspeed/aspeed.c | 4 ++++

 1 file changed, 4 insertions(+)

arch/arm/mach-aspeed/aspeed.c +0 -0
index a9e91d9..c84c871 100644
@@ -104,6 +104,10 @@ static void __init do_firestone_setup(void)


  /* Override serial destination to use the dedicated serial port */ writel(0x00004000, AST_IO(AST_BASE_LPC | 0x174));

arch/arm/mach-aspeed/aspeed.c +4 -0
+
+	/* Workaround to make hostboot run into default SUART init */
+	/* Otherwise it fails to boot */
+	writel(0x00000000, AST_IO(AST_BASE_LPC | 0x170));

 }

 static void __init do_garrison_setup(void)