[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] arm/early-printk: calculate baud rate divisor from user provided value
On 05/24/2013 11:42 AM, 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@xxxxxxxxxxx> Reviewed-by: Julien Grall <julien.grall@xxxxxxxxxx> > --- > 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 ++-- > 4 files changed, 9 insertions(+), 6 deletions(-) > > 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) */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |