lra@sics.se
2013-Jan-10  20:02 UTC
[PATCH] Set register values and comment in early init_uart to match documentation of PL011 UART
From: Lars Rasmusson <Lars.Rasmusson@sics.se>
Reading the PL011 UART documentation on
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf
in sec 3.2 shows the early initialisation of the UART on the Versatile Express
is incorrect. (Currently it probably works only because the default
values are sane.)
Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se>
---
 xen/arch/arm/head.S |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/arch/arm/head.S b/xen/arch/arm/head.S
index cdbe011..a884592 100644
--- a/xen/arch/arm/head.S
+++ b/xen/arch/arm/head.S
@@ -291,11 +291,11 @@ fail:	PRINT("- Boot failed -\r\n")
  * Clobbers r0-r2 */
 init_uart:
 	mov   r1, #0x0
-	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor fraction) */
+	str   r1, [r11, #0x28]       /* -> UARTFBRD (Baud divisor fraction) */
 	mov   r1, #0x4               /* 7.3728MHz / 0x4 == 16 * 115200 */
 	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor integer) */
 	mov   r1, #0x60              /* 8n1 */
-	str   r1, [r11, #0x24]       /* -> UARTLCR_H (Line control) */
+	str   r1, [r11, #0x2C]       /* -> UARTLCR_H (Line control) */
 	ldr   r1, =0x00000301        /* RXE | TXE | UARTEN */
 	str   r1, [r11, #0x30]       /* -> UARTCR (Control Register) */
 	adr   r0, 1f
-- 
1.7.9.5