* [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support
@ 2013-05-24 13:47 Andre Przywara
2013-05-24 13:47 ` [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value Andre Przywara
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
The current early-printk support for ARM is rather hard-coded, making
it hard to add machines or tweak settings.
This series slightly moves some code to gather UART settings in
xen/arch/arm/Rules.mk instead of the actual .c files. Also it allows
two different machines with different settings to share the same
driver, which the last patch exploits to add support the Calxeda
Midway hardware.
This haven't been extensively tested, but I looked at the generated
assembly and did some quick checks on Versatile Express.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Changes from v1:
- add documentation
- add extra support for ARM Fastmodel software emulators
Andre Przywara (5):
arm/early-printk: calculate baud rate divisor from user provided
value
arm/early-printk: allow skipping of UART init
arm/early-printk: move UART base address to Rules.mk
arm/early-printk: add support for ARM Fastmodel
arm/early-printk: add Calxeda Midway UART support
docs/misc/arm/early-printk.txt | 9 +++++++++
xen/arch/arm/Rules.mk | 20 +++++++++++++++++++-
xen/arch/arm/arm32/debug-exynos4210.inc | 6 ++----
xen/arch/arm/arm32/debug-pl011.inc | 6 ++----
xen/arch/arm/arm32/head.S | 2 ++
xen/arch/arm/arm64/debug-pl011.inc | 6 ++----
xen/arch/arm/arm64/head.S | 2 ++
7 files changed, 38 insertions(+), 13 deletions(-)
--
1.7.12.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
@ 2013-05-24 13:47 ` Andre Przywara
2013-05-24 14:01 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 2/5] arm/early-printk: allow skipping of UART init Andre Przywara
` (4 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
For early-printk the used baud rate was hardcoded in the code, using
precalculated divisor values.
Let the calculation of these values be done by the preprocessor and
use a human readable value in xen/arch/arm/Rules.mk to drive this.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
docs/misc/arm/early-printk.txt | 3 +++
xen/arch/arm/Rules.mk | 3 +++
xen/arch/arm/arm32/debug-exynos4210.inc | 4 ++--
xen/arch/arm/arm32/debug-pl011.inc | 4 ++--
xen/arch/arm/arm64/debug-pl011.inc | 4 ++--
5 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index d5cae85..10c3053 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -12,4 +12,7 @@ where mach is the name of the machine:
- vexpress: printk with pl011 for versatile express
- exynos5250: printk with the second UART
+The baud rate is hardcoded in xen/arch/arm/Rules.mk,
+see there when adding support for new machines.
+
By default early printk is disabled.
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index b6a6890..b4d6907 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -45,9 +45,11 @@ ifeq ($(debug),y)
# TODO handle UART base address from make command line
ifeq ($(CONFIG_EARLY_PRINTK), vexpress)
EARLY_PRINTK_INC := pl011
+EARLY_PRINTK_BAUD := 38400
endif
ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
EARLY_PRINTK_INC := exynos4210
+EARLY_PRINTK_BAUD := 115200
endif
ifneq ($(EARLY_PRINTK_INC),)
@@ -56,4 +58,5 @@ endif
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
+CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
endif
diff --git a/xen/arch/arm/arm32/debug-exynos4210.inc b/xen/arch/arm/arm32/debug-exynos4210.inc
index 4241640..4922148 100644
--- a/xen/arch/arm/arm32/debug-exynos4210.inc
+++ b/xen/arch/arm/arm32/debug-exynos4210.inc
@@ -38,9 +38,9 @@
orr \rd, \rd, #(0x7<<8)
str \rd, [\rc, #0x558]
- mov \rc, #4
+ mov \rc, #(100000000 / EARLY_PRINTK_BAUD % 16)
str \rc, [\rb, #UFRACVAL] /* -> UFRACVAL (Baud divisor fraction) */
- mov \rc, #53
+ mov \rc, #(100000000 / EARLY_PRINTK_BAUD / 16 - 1)
str \rc, [\rb, #UBRDIV] /* -> UBRDIV (Baud divisor integer) */
mov \rc, #3 /* 8n1 */
str \rc, [\rb, #ULCON] /* -> (Line control) */
diff --git a/xen/arch/arm/arm32/debug-pl011.inc b/xen/arch/arm/arm32/debug-pl011.inc
index 6954aeb..2d970ea 100644
--- a/xen/arch/arm/arm32/debug-pl011.inc
+++ b/xen/arch/arm/arm32/debug-pl011.inc
@@ -23,9 +23,9 @@
* rc: scratch register 1
* rd: scratch register 2 (unused here) */
.macro early_uart_init rb, rc, rd
- mov \rc, #0x0
+ mov \rc, #(7372800 / EARLY_PRINTK_BAUD % 16)
str \rc, [\rb, #0x28] /* -> UARTFBRD (Baud divisor fraction) */
- mov \rc, #0x4 /* 7.3728MHz / 0x4 == 16 * 115200 */
+ mov \rc, #(7372800 / EARLY_PRINTK_BAUD / 16)
str \rc, [\rb, #0x24] /* -> UARTIBRD (Baud divisor integer) */
mov \rc, #0x60 /* 8n1 */
str \rc, [\rb, #0x2C] /* -> UARTLCR_H (Line control) */
diff --git a/xen/arch/arm/arm64/debug-pl011.inc b/xen/arch/arm/arm64/debug-pl011.inc
index ee6e0e0..7220940 100644
--- a/xen/arch/arm/arm64/debug-pl011.inc
+++ b/xen/arch/arm/arm64/debug-pl011.inc
@@ -24,9 +24,9 @@
* xb: register which containts the UART base address
* c: scratch register number */
.macro early_uart_init xb, c
- mov x\c, #0x0
+ mov x\c, #(7372800 / EARLY_PRINTK_BAUD % 16)
strh w\c, [\xb, #0x28] /* -> UARTFBRD (Baud divisor fraction) */
- mov x\c, #0x4 /* 7.3728MHz / 0x4 == 16 * 115200 */
+ mov x\c, #(7372800 / EARLY_PRINTK_BAUD / 16)
strh w\c, [\xb, #0x24] /* -> UARTIBRD (Baud divisor integer) */
mov x\c, #0x60 /* 8n1 */
str w\c, [\xb, #0x2C] /* -> UARTLCR_H (Line control) */
--
1.7.12.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/5] arm/early-printk: allow skipping of UART init
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
2013-05-24 13:47 ` [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value Andre Przywara
@ 2013-05-24 13:47 ` Andre Przywara
2013-05-24 14:02 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk Andre Przywara
` (3 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
While it seems obvious to initialize the UART before using it, chances
are that some firmware code or the bootloader already did this.
So it may actually be a good idea to skip the initialization, in fact
this fixes early printk on my TC2 Versatile Express.
So provide an option in xen/arch/arm/Rules.mk to only initialize the
UART when needed.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
docs/misc/arm/early-printk.txt | 4 ++++
xen/arch/arm/Rules.mk | 2 ++
xen/arch/arm/arm32/head.S | 2 ++
xen/arch/arm/arm64/head.S | 2 ++
4 files changed, 10 insertions(+)
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index 10c3053..965add5 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -14,5 +14,9 @@ where mach is the name of the machine:
The baud rate is hardcoded in xen/arch/arm/Rules.mk,
see there when adding support for new machines.
+If not explicitly requested with "EARLY_PRINTK_INIT_UART := y" in Rules.mk,
+the code will not try to initialize the UART, so that bootloader or
+firmware settings can be used for maximum compatibility. The baud rate
+parameter is ignored in this case.
By default early printk is disabled.
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index b4d6907..fdcf73e 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -49,6 +49,7 @@ EARLY_PRINTK_BAUD := 38400
endif
ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
EARLY_PRINTK_INC := exynos4210
+EARLY_PRINTK_INIT_UART := y
EARLY_PRINTK_BAUD := 115200
endif
@@ -57,6 +58,7 @@ EARLY_PRINTK := y
endif
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
+CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
endif
diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index ec7f640..0588d54 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -369,7 +369,9 @@ fail: PRINT("- Boot failed -\r\n")
* r11: Early UART base address
* Clobbers r0-r2 */
init_uart:
+#ifdef EARLY_PRINTK_INIT_UART
early_uart_init r11, r1, r2
+#endif
adr r0, 1f
b puts /* Jump to puts */
1: .asciz "- UART enabled -\r\n"
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 8955946..21b7e4d 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -116,7 +116,9 @@ boot_cpu:
#ifdef EARLY_PRINTK
ldr x23, =EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
cbnz x22, 1f
+#ifdef EARLY_PRINTK_INIT_UART
bl init_uart /* CPU 0 sets up the UART too */
+#endif
1: PRINT("- CPU ")
mov x0, x22
bl putn
--
1.7.12.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
2013-05-24 13:47 ` [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value Andre Przywara
2013-05-24 13:47 ` [PATCH v2 2/5] arm/early-printk: allow skipping of UART init Andre Przywara
@ 2013-05-24 13:47 ` Andre Przywara
2013-05-24 14:02 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel Andre Przywara
` (2 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
The UART memory mapped base address is currently hardcoded in the
early-printk UART driver, which denies the driver to be used by
two machines with a different mapping.
Move this definition out to xen/arch/arm/Rules.mk, allowing easier
user access and later sharing of the driver.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
docs/misc/arm/early-printk.txt | 2 +-
xen/arch/arm/Rules.mk | 4 +++-
xen/arch/arm/arm32/debug-exynos4210.inc | 2 --
xen/arch/arm/arm32/debug-pl011.inc | 2 --
xen/arch/arm/arm64/debug-pl011.inc | 2 --
5 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index 965add5..9220113 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -12,7 +12,7 @@ where mach is the name of the machine:
- vexpress: printk with pl011 for versatile express
- exynos5250: printk with the second UART
-The baud rate is hardcoded in xen/arch/arm/Rules.mk,
+The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
see there when adding support for new machines.
If not explicitly requested with "EARLY_PRINTK_INIT_UART := y" in Rules.mk,
the code will not try to initialize the UART, so that bootloader or
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index fdcf73e..902bddb 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -42,15 +42,16 @@ EARLY_PRINTK := n
ifeq ($(debug),y)
# Early printk for versatile express
-# TODO handle UART base address from make command line
ifeq ($(CONFIG_EARLY_PRINTK), vexpress)
EARLY_PRINTK_INC := pl011
EARLY_PRINTK_BAUD := 38400
+EARLY_UART_BASE_ADDRESS := 0x1c090000
endif
ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
EARLY_PRINTK_INC := exynos4210
EARLY_PRINTK_INIT_UART := y
EARLY_PRINTK_BAUD := 115200
+EARLY_UART_BASE_ADDRESS := 0x12c20000
endif
ifneq ($(EARLY_PRINTK_INC),)
@@ -61,4 +62,5 @@ CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
+CFLAGS-$(EARLY_PRINTK) += -DEARLY_UART_BASE_ADDRESS=$(EARLY_UART_BASE_ADDRESS)
endif
diff --git a/xen/arch/arm/arm32/debug-exynos4210.inc b/xen/arch/arm/arm32/debug-exynos4210.inc
index 4922148..d746c35 100644
--- a/xen/arch/arm/arm32/debug-exynos4210.inc
+++ b/xen/arch/arm/arm32/debug-exynos4210.inc
@@ -18,8 +18,6 @@
#include <asm/exynos4210-uart.h>
-#define EARLY_UART_BASE_ADDRESS 0x12c20000
-
/* Exynos 5 UART initialization
* rb: register which contains the UART base address
* rc: scratch register 1
diff --git a/xen/arch/arm/arm32/debug-pl011.inc b/xen/arch/arm/arm32/debug-pl011.inc
index 2d970ea..8b085b8 100644
--- a/xen/arch/arm/arm32/debug-pl011.inc
+++ b/xen/arch/arm/arm32/debug-pl011.inc
@@ -16,8 +16,6 @@
* GNU General Public License for more details.
*/
-#define EARLY_UART_BASE_ADDRESS 0x1c090000
-
/* PL011 UART initialization
* rb: register which contains the UART base address
* rc: scratch register 1
diff --git a/xen/arch/arm/arm64/debug-pl011.inc b/xen/arch/arm/arm64/debug-pl011.inc
index 7220940..b416235 100644
--- a/xen/arch/arm/arm64/debug-pl011.inc
+++ b/xen/arch/arm/arm64/debug-pl011.inc
@@ -18,8 +18,6 @@
#include <asm/asm_defns.h>
-#define EARLY_UART_BASE_ADDRESS 0x1c090000
-
/* PL011 UART initialization
* xb: register which containts the UART base address
* c: scratch register number */
--
1.7.12.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
` (2 preceding siblings ...)
2013-05-24 13:47 ` [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk Andre Przywara
@ 2013-05-24 13:47 ` Andre Przywara
2013-05-24 14:03 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support Andre Przywara
2013-05-30 8:59 ` [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Ian Campbell
5 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
Though the ARM Fastmodel software emulator mimics a Versatile Express
board, the boot process is different compared to the real hardware,
so the early printk differs slightly. Create a new early-printk
target to model this correctly.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
docs/misc/arm/early-printk.txt | 1 +
xen/arch/arm/Rules.mk | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index 9220113..e423cc4 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -11,6 +11,7 @@ CONFIG_EARLY_PRINTK=mach
where mach is the name of the machine:
- vexpress: printk with pl011 for versatile express
- exynos5250: printk with the second UART
+ - fastmodel: printk on ARM Fastmodel software emulators
The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
see there when adding support for new machines.
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index 902bddb..d010c69 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -47,6 +47,12 @@ EARLY_PRINTK_INC := pl011
EARLY_PRINTK_BAUD := 38400
EARLY_UART_BASE_ADDRESS := 0x1c090000
endif
+ifeq ($(CONFIG_EARLY_PRINTK), fastmodel)
+EARLY_PRINTK_INC := pl011
+EARLY_PRINTK_INIT_UART := y
+EARLY_PRINTK_BAUD := 115200
+EARLY_UART_BASE_ADDRESS := 0x1c090000
+endif
ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
EARLY_PRINTK_INC := exynos4210
EARLY_PRINTK_INIT_UART := y
--
1.7.12.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
` (3 preceding siblings ...)
2013-05-24 13:47 ` [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel Andre Przywara
@ 2013-05-24 13:47 ` Andre Przywara
2013-05-24 14:03 ` Julien Grall
2013-05-30 8:59 ` [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Ian Campbell
5 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-24 13:47 UTC (permalink / raw)
To: stefano.stabellini, Ian.Campbell; +Cc: Andre Przywara, julien.grall, xen-devel
With the help of the previous patches add a stanza to
xen/arch/arm/Rules.mk to specify the UART configuration of the
Calxeda Midway machine.
The information has been taken from the Linux kernel's .dts file.
This can be enabled by adding "CONFIG_EARLY_PRINTK=midway" to
Config.mk.
Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
docs/misc/arm/early-printk.txt | 1 +
xen/arch/arm/Rules.mk | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index e423cc4..fbc3208 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -11,6 +11,7 @@ CONFIG_EARLY_PRINTK=mach
where mach is the name of the machine:
- vexpress: printk with pl011 for versatile express
- exynos5250: printk with the second UART
+ - midway: printk with the pl011 on Calxeda Midway processors
- fastmodel: printk on ARM Fastmodel software emulators
The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index d010c69..422ed04 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -59,6 +59,11 @@ EARLY_PRINTK_INIT_UART := y
EARLY_PRINTK_BAUD := 115200
EARLY_UART_BASE_ADDRESS := 0x12c20000
endif
+ifeq ($(CONFIG_EARLY_PRINTK), midway)
+EARLY_PRINTK_INC := pl011
+EARLY_PRINTK_BAUD := 115200
+EARLY_UART_BASE_ADDRESS := 0xfff36000
+endif
ifneq ($(EARLY_PRINTK_INC),)
EARLY_PRINTK := y
--
1.7.12.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value
2013-05-24 13:47 ` [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value Andre Przywara
@ 2013-05-24 14:01 ` Julien Grall
0 siblings, 0 replies; 14+ messages in thread
From: Julien Grall @ 2013-05-24 14:01 UTC (permalink / raw)
To: Andre Przywara; +Cc: xen-devel, Ian.Campbell, stefano.stabellini
On 05/24/2013 02:47 PM, Andre Przywara wrote:
> For early-printk the used baud rate was hardcoded in the code, using
> precalculated divisor values.
> Let the calculation of these values be done by the preprocessor and
> use a human readable value in xen/arch/arm/Rules.mk to drive this.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
> ---
> docs/misc/arm/early-printk.txt | 3 +++
> xen/arch/arm/Rules.mk | 3 +++
> xen/arch/arm/arm32/debug-exynos4210.inc | 4 ++--
> xen/arch/arm/arm32/debug-pl011.inc | 4 ++--
> xen/arch/arm/arm64/debug-pl011.inc | 4 ++--
> 5 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index d5cae85..10c3053 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -12,4 +12,7 @@ where mach is the name of the machine:
> - vexpress: printk with pl011 for versatile express
> - exynos5250: printk with the second UART
>
> +The baud rate is hardcoded in xen/arch/arm/Rules.mk,
> +see there when adding support for new machines.
> +
> By default early printk is disabled.
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index b6a6890..b4d6907 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -45,9 +45,11 @@ ifeq ($(debug),y)
> # TODO handle UART base address from make command line
> ifeq ($(CONFIG_EARLY_PRINTK), vexpress)
> EARLY_PRINTK_INC := pl011
> +EARLY_PRINTK_BAUD := 38400
> endif
> ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
> EARLY_PRINTK_INC := exynos4210
> +EARLY_PRINTK_BAUD := 115200
> endif
>
> ifneq ($(EARLY_PRINTK_INC),)
> @@ -56,4 +58,5 @@ endif
>
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
> +CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
> endif
> diff --git a/xen/arch/arm/arm32/debug-exynos4210.inc b/xen/arch/arm/arm32/debug-exynos4210.inc
> index 4241640..4922148 100644
> --- a/xen/arch/arm/arm32/debug-exynos4210.inc
> +++ b/xen/arch/arm/arm32/debug-exynos4210.inc
> @@ -38,9 +38,9 @@
> orr \rd, \rd, #(0x7<<8)
> str \rd, [\rc, #0x558]
>
> - mov \rc, #4
> + mov \rc, #(100000000 / EARLY_PRINTK_BAUD % 16)
> str \rc, [\rb, #UFRACVAL] /* -> UFRACVAL (Baud divisor fraction) */
> - mov \rc, #53
> + mov \rc, #(100000000 / EARLY_PRINTK_BAUD / 16 - 1)
> str \rc, [\rb, #UBRDIV] /* -> UBRDIV (Baud divisor integer) */
> mov \rc, #3 /* 8n1 */
> str \rc, [\rb, #ULCON] /* -> (Line control) */
> diff --git a/xen/arch/arm/arm32/debug-pl011.inc b/xen/arch/arm/arm32/debug-pl011.inc
> index 6954aeb..2d970ea 100644
> --- a/xen/arch/arm/arm32/debug-pl011.inc
> +++ b/xen/arch/arm/arm32/debug-pl011.inc
> @@ -23,9 +23,9 @@
> * rc: scratch register 1
> * rd: scratch register 2 (unused here) */
> .macro early_uart_init rb, rc, rd
> - mov \rc, #0x0
> + mov \rc, #(7372800 / EARLY_PRINTK_BAUD % 16)
> str \rc, [\rb, #0x28] /* -> UARTFBRD (Baud divisor fraction) */
> - mov \rc, #0x4 /* 7.3728MHz / 0x4 == 16 * 115200 */
> + mov \rc, #(7372800 / EARLY_PRINTK_BAUD / 16)
> str \rc, [\rb, #0x24] /* -> UARTIBRD (Baud divisor integer) */
> mov \rc, #0x60 /* 8n1 */
> str \rc, [\rb, #0x2C] /* -> UARTLCR_H (Line control) */
> diff --git a/xen/arch/arm/arm64/debug-pl011.inc b/xen/arch/arm/arm64/debug-pl011.inc
> index ee6e0e0..7220940 100644
> --- a/xen/arch/arm/arm64/debug-pl011.inc
> +++ b/xen/arch/arm/arm64/debug-pl011.inc
> @@ -24,9 +24,9 @@
> * xb: register which containts the UART base address
> * c: scratch register number */
> .macro early_uart_init xb, c
> - mov x\c, #0x0
> + mov x\c, #(7372800 / EARLY_PRINTK_BAUD % 16)
> strh w\c, [\xb, #0x28] /* -> UARTFBRD (Baud divisor fraction) */
> - mov x\c, #0x4 /* 7.3728MHz / 0x4 == 16 * 115200 */
> + mov x\c, #(7372800 / EARLY_PRINTK_BAUD / 16)
> strh w\c, [\xb, #0x24] /* -> UARTIBRD (Baud divisor integer) */
> mov x\c, #0x60 /* 8n1 */
> str w\c, [\xb, #0x2C] /* -> UARTLCR_H (Line control) */
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/5] arm/early-printk: allow skipping of UART init
2013-05-24 13:47 ` [PATCH v2 2/5] arm/early-printk: allow skipping of UART init Andre Przywara
@ 2013-05-24 14:02 ` Julien Grall
0 siblings, 0 replies; 14+ messages in thread
From: Julien Grall @ 2013-05-24 14:02 UTC (permalink / raw)
To: Andre Przywara; +Cc: xen-devel, Ian.Campbell, stefano.stabellini
On 05/24/2013 02:47 PM, Andre Przywara wrote:
> While it seems obvious to initialize the UART before using it, chances
> are that some firmware code or the bootloader already did this.
> So it may actually be a good idea to skip the initialization, in fact
> this fixes early printk on my TC2 Versatile Express.
> So provide an option in xen/arch/arm/Rules.mk to only initialize the
> UART when needed.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
> ---
> docs/misc/arm/early-printk.txt | 4 ++++
> xen/arch/arm/Rules.mk | 2 ++
> xen/arch/arm/arm32/head.S | 2 ++
> xen/arch/arm/arm64/head.S | 2 ++
> 4 files changed, 10 insertions(+)
>
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index 10c3053..965add5 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -14,5 +14,9 @@ where mach is the name of the machine:
>
> The baud rate is hardcoded in xen/arch/arm/Rules.mk,
> see there when adding support for new machines.
> +If not explicitly requested with "EARLY_PRINTK_INIT_UART := y" in Rules.mk,
> +the code will not try to initialize the UART, so that bootloader or
> +firmware settings can be used for maximum compatibility. The baud rate
> +parameter is ignored in this case.
>
> By default early printk is disabled.
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index b4d6907..fdcf73e 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -49,6 +49,7 @@ EARLY_PRINTK_BAUD := 38400
> endif
> ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
> EARLY_PRINTK_INC := exynos4210
> +EARLY_PRINTK_INIT_UART := y
> EARLY_PRINTK_BAUD := 115200
> endif
>
> @@ -57,6 +58,7 @@ EARLY_PRINTK := y
> endif
>
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
> +CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
> endif
> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
> index ec7f640..0588d54 100644
> --- a/xen/arch/arm/arm32/head.S
> +++ b/xen/arch/arm/arm32/head.S
> @@ -369,7 +369,9 @@ fail: PRINT("- Boot failed -\r\n")
> * r11: Early UART base address
> * Clobbers r0-r2 */
> init_uart:
> +#ifdef EARLY_PRINTK_INIT_UART
> early_uart_init r11, r1, r2
> +#endif
> adr r0, 1f
> b puts /* Jump to puts */
> 1: .asciz "- UART enabled -\r\n"
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 8955946..21b7e4d 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -116,7 +116,9 @@ boot_cpu:
> #ifdef EARLY_PRINTK
> ldr x23, =EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
> cbnz x22, 1f
> +#ifdef EARLY_PRINTK_INIT_UART
> bl init_uart /* CPU 0 sets up the UART too */
> +#endif
> 1: PRINT("- CPU ")
> mov x0, x22
> bl putn
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk
2013-05-24 13:47 ` [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk Andre Przywara
@ 2013-05-24 14:02 ` Julien Grall
0 siblings, 0 replies; 14+ messages in thread
From: Julien Grall @ 2013-05-24 14:02 UTC (permalink / raw)
To: Andre Przywara; +Cc: xen-devel, Ian.Campbell, stefano.stabellini
On 05/24/2013 02:47 PM, Andre Przywara wrote:
> The UART memory mapped base address is currently hardcoded in the
> early-printk UART driver, which denies the driver to be used by
> two machines with a different mapping.
> Move this definition out to xen/arch/arm/Rules.mk, allowing easier
> user access and later sharing of the driver.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
> ---
> docs/misc/arm/early-printk.txt | 2 +-
> xen/arch/arm/Rules.mk | 4 +++-
> xen/arch/arm/arm32/debug-exynos4210.inc | 2 --
> xen/arch/arm/arm32/debug-pl011.inc | 2 --
> xen/arch/arm/arm64/debug-pl011.inc | 2 --
> 5 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index 965add5..9220113 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -12,7 +12,7 @@ where mach is the name of the machine:
> - vexpress: printk with pl011 for versatile express
> - exynos5250: printk with the second UART
>
> -The baud rate is hardcoded in xen/arch/arm/Rules.mk,
> +The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
> see there when adding support for new machines.
> If not explicitly requested with "EARLY_PRINTK_INIT_UART := y" in Rules.mk,
> the code will not try to initialize the UART, so that bootloader or
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index fdcf73e..902bddb 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -42,15 +42,16 @@ EARLY_PRINTK := n
> ifeq ($(debug),y)
>
> # Early printk for versatile express
> -# TODO handle UART base address from make command line
> ifeq ($(CONFIG_EARLY_PRINTK), vexpress)
> EARLY_PRINTK_INC := pl011
> EARLY_PRINTK_BAUD := 38400
> +EARLY_UART_BASE_ADDRESS := 0x1c090000
> endif
> ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
> EARLY_PRINTK_INC := exynos4210
> EARLY_PRINTK_INIT_UART := y
> EARLY_PRINTK_BAUD := 115200
> +EARLY_UART_BASE_ADDRESS := 0x12c20000
> endif
>
> ifneq ($(EARLY_PRINTK_INC),)
> @@ -61,4 +62,5 @@ CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
> CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
> CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
> +CFLAGS-$(EARLY_PRINTK) += -DEARLY_UART_BASE_ADDRESS=$(EARLY_UART_BASE_ADDRESS)
> endif
> diff --git a/xen/arch/arm/arm32/debug-exynos4210.inc b/xen/arch/arm/arm32/debug-exynos4210.inc
> index 4922148..d746c35 100644
> --- a/xen/arch/arm/arm32/debug-exynos4210.inc
> +++ b/xen/arch/arm/arm32/debug-exynos4210.inc
> @@ -18,8 +18,6 @@
>
> #include <asm/exynos4210-uart.h>
>
> -#define EARLY_UART_BASE_ADDRESS 0x12c20000
> -
> /* Exynos 5 UART initialization
> * rb: register which contains the UART base address
> * rc: scratch register 1
> diff --git a/xen/arch/arm/arm32/debug-pl011.inc b/xen/arch/arm/arm32/debug-pl011.inc
> index 2d970ea..8b085b8 100644
> --- a/xen/arch/arm/arm32/debug-pl011.inc
> +++ b/xen/arch/arm/arm32/debug-pl011.inc
> @@ -16,8 +16,6 @@
> * GNU General Public License for more details.
> */
>
> -#define EARLY_UART_BASE_ADDRESS 0x1c090000
> -
> /* PL011 UART initialization
> * rb: register which contains the UART base address
> * rc: scratch register 1
> diff --git a/xen/arch/arm/arm64/debug-pl011.inc b/xen/arch/arm/arm64/debug-pl011.inc
> index 7220940..b416235 100644
> --- a/xen/arch/arm/arm64/debug-pl011.inc
> +++ b/xen/arch/arm/arm64/debug-pl011.inc
> @@ -18,8 +18,6 @@
>
> #include <asm/asm_defns.h>
>
> -#define EARLY_UART_BASE_ADDRESS 0x1c090000
> -
> /* PL011 UART initialization
> * xb: register which containts the UART base address
> * c: scratch register number */
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel
2013-05-24 13:47 ` [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel Andre Przywara
@ 2013-05-24 14:03 ` Julien Grall
0 siblings, 0 replies; 14+ messages in thread
From: Julien Grall @ 2013-05-24 14:03 UTC (permalink / raw)
To: Andre Przywara; +Cc: xen-devel, Ian.Campbell, stefano.stabellini
On 05/24/2013 02:47 PM, Andre Przywara wrote:
> Though the ARM Fastmodel software emulator mimics a Versatile Express
> board, the boot process is different compared to the real hardware,
> so the early printk differs slightly. Create a new early-printk
> target to model this correctly.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
> ---
> docs/misc/arm/early-printk.txt | 1 +
> xen/arch/arm/Rules.mk | 6 ++++++
> 2 files changed, 7 insertions(+)
>
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index 9220113..e423cc4 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -11,6 +11,7 @@ CONFIG_EARLY_PRINTK=mach
> where mach is the name of the machine:
> - vexpress: printk with pl011 for versatile express
> - exynos5250: printk with the second UART
> + - fastmodel: printk on ARM Fastmodel software emulators
>
> The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
> see there when adding support for new machines.
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index 902bddb..d010c69 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -47,6 +47,12 @@ EARLY_PRINTK_INC := pl011
> EARLY_PRINTK_BAUD := 38400
> EARLY_UART_BASE_ADDRESS := 0x1c090000
> endif
> +ifeq ($(CONFIG_EARLY_PRINTK), fastmodel)
> +EARLY_PRINTK_INC := pl011
> +EARLY_PRINTK_INIT_UART := y
> +EARLY_PRINTK_BAUD := 115200
> +EARLY_UART_BASE_ADDRESS := 0x1c090000
> +endif
> ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
> EARLY_PRINTK_INC := exynos4210
> EARLY_PRINTK_INIT_UART := y
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support
2013-05-24 13:47 ` [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support Andre Przywara
@ 2013-05-24 14:03 ` Julien Grall
0 siblings, 0 replies; 14+ messages in thread
From: Julien Grall @ 2013-05-24 14:03 UTC (permalink / raw)
To: Andre Przywara; +Cc: xen-devel, Ian.Campbell, stefano.stabellini
On 05/24/2013 02:47 PM, Andre Przywara wrote:
> With the help of the previous patches add a stanza to
> xen/arch/arm/Rules.mk to specify the UART configuration of the
> Calxeda Midway machine.
> The information has been taken from the Linux kernel's .dts file.
> This can be enabled by adding "CONFIG_EARLY_PRINTK=midway" to
> Config.mk.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
> ---
> docs/misc/arm/early-printk.txt | 1 +
> xen/arch/arm/Rules.mk | 5 +++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index e423cc4..fbc3208 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -11,6 +11,7 @@ CONFIG_EARLY_PRINTK=mach
> where mach is the name of the machine:
> - vexpress: printk with pl011 for versatile express
> - exynos5250: printk with the second UART
> + - midway: printk with the pl011 on Calxeda Midway processors
> - fastmodel: printk on ARM Fastmodel software emulators
>
> The base address and baud rate is hardcoded in xen/arch/arm/Rules.mk,
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index d010c69..422ed04 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -59,6 +59,11 @@ EARLY_PRINTK_INIT_UART := y
> EARLY_PRINTK_BAUD := 115200
> EARLY_UART_BASE_ADDRESS := 0x12c20000
> endif
> +ifeq ($(CONFIG_EARLY_PRINTK), midway)
> +EARLY_PRINTK_INC := pl011
> +EARLY_PRINTK_BAUD := 115200
> +EARLY_UART_BASE_ADDRESS := 0xfff36000
> +endif
>
> ifneq ($(EARLY_PRINTK_INC),)
> EARLY_PRINTK := y
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
` (4 preceding siblings ...)
2013-05-24 13:47 ` [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support Andre Przywara
@ 2013-05-30 8:59 ` Ian Campbell
2013-05-30 9:14 ` Andre Przywara
5 siblings, 1 reply; 14+ messages in thread
From: Ian Campbell @ 2013-05-30 8:59 UTC (permalink / raw)
To: Andre Przywara; +Cc: julien.grall, xen-devel, stefano.stabellini
On Fri, 2013-05-24 at 15:47 +0200, Andre Przywara wrote:
> The current early-printk support for ARM is rather hard-coded, making
> it hard to add machines or tweak settings.
> This series slightly moves some code to gather UART settings in
> xen/arch/arm/Rules.mk instead of the actual .c files. Also it allows
> two different machines with different settings to share the same
> driver, which the last patch exploits to add support the Calxeda
> Midway hardware.
>
> This haven't been extensively tested, but I looked at the generated
> assembly and did some quick checks on Versatile Express.
>
> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
All Acked + applied, thanks.
I did wonder vaguely about:
pulling the per board configs out of Rules.mk into
earlyprintk-<board>.mk and doing:
ifneq($(CONFIG_EARLY_PRINTK),)
include earlyprintk-$(CONFIG_EARLY_PRINTK).mk
endif
and
using the presence or absence of EARLY_PRINTK_BAUD instead of using a
separate EARLY_PRINTK_INIT_UART.
Neither of which affect the correctness of this series though.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support
2013-05-30 8:59 ` [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Ian Campbell
@ 2013-05-30 9:14 ` Andre Przywara
2013-05-30 9:22 ` Ian Campbell
0 siblings, 1 reply; 14+ messages in thread
From: Andre Przywara @ 2013-05-30 9:14 UTC (permalink / raw)
To: Ian Campbell
Cc: julien.grall@linaro.org, xen-devel@lists.xen.org,
stefano.stabellini@eu.citrix.com
On 05/30/2013 10:59 AM, Ian Campbell wrote:
> On Fri, 2013-05-24 at 15:47 +0200, Andre Przywara wrote:
>> The current early-printk support for ARM is rather hard-coded, making
>> it hard to add machines or tweak settings.
>> This series slightly moves some code to gather UART settings in
>> xen/arch/arm/Rules.mk instead of the actual .c files. Also it allows
>> two different machines with different settings to share the same
>> driver, which the last patch exploits to add support the Calxeda
>> Midway hardware.
>>
>> This haven't been extensively tested, but I looked at the generated
>> assembly and did some quick checks on Versatile Express.
>>
>> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
>
> All Acked + applied, thanks.
Thanks!
> I did wonder vaguely about:
>
> pulling the per board configs out of Rules.mk into
> earlyprintk-<board>.mk and doing:
> ifneq($(CONFIG_EARLY_PRINTK),)
> include earlyprintk-$(CONFIG_EARLY_PRINTK).mk
> endif
Yeah, I also found it being in kind of the wrong place.
Just wasn't sure if early_printk justifies <n> extra files to be
created. What about moving all the boards definitions into one file and
including this? This keeps Rules.mk clean and avoids too much clutter.
> and
>
> using the presence or absence of EARLY_PRINTK_BAUD instead of using a
> separate EARLY_PRINTK_INIT_UART.
I was also wondering about this redundancy, this seems to be a nice
solution for this. Thanks, will make a patch.
Regards,
Andre.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support
2013-05-30 9:14 ` Andre Przywara
@ 2013-05-30 9:22 ` Ian Campbell
0 siblings, 0 replies; 14+ messages in thread
From: Ian Campbell @ 2013-05-30 9:22 UTC (permalink / raw)
To: Andre Przywara
Cc: julien.grall@linaro.org, xen-devel@lists.xen.org,
stefano.stabellini@eu.citrix.com
On Thu, 2013-05-30 at 11:14 +0200, Andre Przywara wrote:
> On 05/30/2013 10:59 AM, Ian Campbell wrote:
> > On Fri, 2013-05-24 at 15:47 +0200, Andre Przywara wrote:
> >> The current early-printk support for ARM is rather hard-coded, making
> >> it hard to add machines or tweak settings.
> >> This series slightly moves some code to gather UART settings in
> >> xen/arch/arm/Rules.mk instead of the actual .c files. Also it allows
> >> two different machines with different settings to share the same
> >> driver, which the last patch exploits to add support the Calxeda
> >> Midway hardware.
> >>
> >> This haven't been extensively tested, but I looked at the generated
> >> assembly and did some quick checks on Versatile Express.
> >>
> >> Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
> >
> > All Acked + applied, thanks.
>
> Thanks!
>
> > I did wonder vaguely about:
> >
> > pulling the per board configs out of Rules.mk into
> > earlyprintk-<board>.mk and doing:
> > ifneq($(CONFIG_EARLY_PRINTK),)
> > include earlyprintk-$(CONFIG_EARLY_PRINTK).mk
> > endif
>
> Yeah, I also found it being in kind of the wrong place.
> Just wasn't sure if early_printk justifies <n> extra files to be
> created. What about moving all the boards definitions into one file and
> including this? This keeps Rules.mk clean and avoids too much clutter.
That sounds reasonable.
>
> > and
> >
> > using the presence or absence of EARLY_PRINTK_BAUD instead of using a
> > separate EARLY_PRINTK_INIT_UART.
>
> I was also wondering about this redundancy, this seems to be a nice
> solution for this. Thanks, will make a patch.
Cheers!
Lets hope we don't have to implement 9n1 vs 7n0 and stuff too, things
other than 8n1 are pretty uncommon now though I think...
Ian.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-05-30 9:22 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-24 13:47 [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Andre Przywara
2013-05-24 13:47 ` [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value Andre Przywara
2013-05-24 14:01 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 2/5] arm/early-printk: allow skipping of UART init Andre Przywara
2013-05-24 14:02 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 3/5] arm/early-printk: move UART base address to Rules.mk Andre Przywara
2013-05-24 14:02 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 4/5] arm/early-printk: add support for ARM Fastmodel Andre Przywara
2013-05-24 14:03 ` Julien Grall
2013-05-24 13:47 ` [PATCH v2 5/5] arm/early-printk: add Calxeda Midway UART support Andre Przywara
2013-05-24 14:03 ` Julien Grall
2013-05-30 8:59 ` [PATCH v2 0/5] arm/early-printk: Improve reusability and add Calxeda support Ian Campbell
2013-05-30 9:14 ` Andre Przywara
2013-05-30 9:22 ` Ian Campbell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).