[PATCH linux 1/2] arm/mach-aspeed: Enable UART clock divisor
OpenBMC Patches
patches at stwcx.xyz
Fri Oct 16 23:20:33 AEDT 2015
From: Jeremy Kerr <jk at ozlabs.org>
Our .dts assumes that the UART clock is divided by 13, but different
u-boots may leave this bit in different states. Initialise it in
aspeed_early_init explicitly.
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
---
arch/arm/mach-aspeed/aspeed.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c
index 64d379a..9d106b8 100644
--- a/arch/arm/mach-aspeed/aspeed.c
+++ b/arch/arm/mach-aspeed/aspeed.c
@@ -128,6 +128,8 @@ static void udbg_uart_putc(char c)
static void __init aspeed_init_early(void)
{
+ u32 reg;
+
// XXX UART stuff to fix to pinmux & co
printk("UART IO MUX...\n");
writel(0x02010023, AST_IO(AST_BASE_LPC | 0x9c));
@@ -137,6 +139,14 @@ static void __init aspeed_init_early(void)
writel(0xcb000000, AST_IO(AST_BASE_SCU | 0x80));
writel(0x00fff0c0, AST_IO(AST_BASE_SCU | 0x84));
writel(0x10CC5E80, AST_IO(AST_BASE_SCU | 0x0c));
+
+ /* We enable the UART clock divisor in the SCU's misc control
+ * register, as the baud rates in aspeed.dtb all assume that the
+ * divisor is active
+ */
+ reg = readl(AST_IO(AST_BASE_SCU | 0x2c));
+ writel(reg | 0x00001000, AST_IO(AST_BASE_SCU | 0x2c));
+
printk("DONE, MUX=%08x %08x\n", readl(AST_IO(AST_BASE_SCU | 0x80)),
readl(AST_IO(AST_BASE_SCU | 0x84)));
printk("CLOCK_CTRL=%08x\n", readl(AST_IO(AST_BASE_SCU)));
--
2.6.0
More information about the openbmc
mailing list