[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 1/5] arm/early-printk: calculate baud rate divisor from user provided value
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@xxxxxxxxxxx> --- 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |