Hi, reading the PL011 UART documentation on http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf the early initialisation of the UART on the Versatile Express is incorrect. (Currently it probably works only because the default values are sane.) Cheers, /Lars From 7184ce113d907ce8cf366dddbe8145e59987a656 Mon Sep 17 00:00:00 2001 From: Lars Rasmusson <Lars.Rasmusson@sics.se> Date: Thu, 10 Jan 2013 17:10:44 +0100 Subject: [PATCH] Fixed register values and comment in early init_uart to match documentation of PL011 UART 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 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Hi, reading the PL011 UART documentation on http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf I noticed the early initialisation of the UART on the Versatile Express is incorrect. (Currently it probably works only because the default values are sane.) Cheers, /Lars From 7184ce113d907ce8cf366dddbe8145e59987a656 Mon Sep 17 00:00:00 2001 From: Lars Rasmusson <Lars.Rasmusson@sics.se> Date: Thu, 10 Jan 2013 17:10:44 +0100 Subject: [PATCH] Fixed register values and comment in early init_uart to match documentation of PL011 UART 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
On Thu, 2013-01-10 at 19:18 +0000, lra@sics.se wrote:> Hi, > > reading the PL011 UART documentation on > http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf > > I noticed the early initialisation of the UART on the Versatile Express > is incorrect. (Currently it probably works only because the default > values are sane.)Good catch! Thanks.> From 7184ce113d907ce8cf366dddbe8145e59987a656 Mon Sep 17 00:00:00 2001 > From: Lars Rasmusson <Lars.Rasmusson@sics.se> > Date: Thu, 10 Jan 2013 17:10:44 +0100 > Subject: [PATCH] Fixed register values and comment in early init_uart to > match documentation of PL011 UART > > Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se>Acked-by: Ian Campbell <ian.campbell@citrix.com>> --- > 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
On Fri, 2013-01-11 at 10:03 +0000, Ian Campbell wrote:> On Thu, 2013-01-10 at 19:18 +0000, lra@sics.se wrote: > > Hi, > > > > reading the PL011 UART documentation on > > http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf > > > > I noticed the early initialisation of the UART on the Versatile Express > > is incorrect. (Currently it probably works only because the default > > values are sane.) > > Good catch! Thanks. > > > From 7184ce113d907ce8cf366dddbe8145e59987a656 Mon Sep 17 00:00:00 2001 > > From: Lars Rasmusson <Lars.Rasmusson@sics.se> > > Date: Thu, 10 Jan 2013 17:10:44 +0100 > > Subject: [PATCH] Fixed register values and comment in early init_uart to > > match documentation of PL011 UART > > > > Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se> > > Acked-by: Ian Campbell <ian.campbell@citrix.com>I''m afraid this patch doesn''t apply, I think it is based on a tree prior to moving head.S -> arm32/head.S and fixing up the whitespace. Could you rebase please? Thanks, Ian.
lra@sics.se
2013-Jan-17 14:08 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. This fixes it. Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se> --- xen/arch/arm/arm32/head.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S index 4782f11..20e9da6 100644 --- a/xen/arch/arm/arm32/head.S +++ b/xen/arch/arm/arm32/head.S @@ -352,11 +352,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
Ian Campbell
2013-Jan-17 16:49 UTC
Re: [PATCH] Set register values and comment in early init_uart to match documentation of PL011 UART
On Thu, 2013-01-17 at 14:08 +0000, lra@sics.se wrote:> 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. This fixes it. > > Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se>Acked + applied. Thanks.