From 756aea59d99741416e83f788d9788194c13422d2 Mon Sep 17 00:00:00 2001 From: Jerome Forissier Date: Fri, 17 Feb 2017 08:38:22 +0100 Subject: core: add common implementation for console_putc() and console_flush() Since most platforms now use the same console_putc() and console_flush(), move them to core/kernel/console.c. Make them __weak so that platforms may still provide their own. The common code expects the platforms to initialize whatever serial device from console_init() and call register_console(). Signed-off-by: Jerome Forissier Reviewed-by: Jens Wiklander Reviewed-by: Etienne Carriere --- core/arch/arm/plat-d02/main.c | 17 +---------------- core/arch/arm/plat-hikey/main.c | 17 +---------------- core/arch/arm/plat-imx/main.c | 17 +---------------- core/arch/arm/plat-ls/main.c | 17 +---------------- core/arch/arm/plat-mediatek/main.c | 17 +---------------- core/arch/arm/plat-rcar/main.c | 18 +----------------- core/arch/arm/plat-rpi3/main.c | 18 ++---------------- core/arch/arm/plat-sprd/console.c | 7 +------ core/arch/arm/plat-sunxi/console.c | 15 +-------------- core/arch/arm/plat-ti/console.c | 17 +---------------- core/arch/arm/plat-vexpress/main.c | 17 +---------------- core/arch/arm/plat-zynq7k/main.c | 17 +---------------- core/arch/arm/plat-zynqmp/main.c | 17 +---------------- 13 files changed, 14 insertions(+), 197 deletions(-) (limited to 'core/arch/arm') diff --git a/core/arch/arm/plat-d02/main.c b/core/arch/arm/plat-d02/main.c index ec1d574e..2cd339b5 100644 --- a/core/arch/arm/plat-d02/main.c +++ b/core/arch/arm/plat-d02/main.c @@ -69,20 +69,5 @@ void console_init(void) { hi16xx_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } diff --git a/core/arch/arm/plat-hikey/main.c b/core/arch/arm/plat-hikey/main.c index 0149e1b5..8d72f388 100644 --- a/core/arch/arm/plat-hikey/main.c +++ b/core/arch/arm/plat-hikey/main.c @@ -84,22 +84,7 @@ void console_init(void) { pl011_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } vaddr_t nsec_periph_base(paddr_t pa) diff --git a/core/arch/arm/plat-imx/main.c b/core/arch/arm/plat-imx/main.c index 816f4e8a..36dc11b4 100644 --- a/core/arch/arm/plat-imx/main.c +++ b/core/arch/arm/plat-imx/main.c @@ -131,22 +131,7 @@ void plat_cpu_reset_late(void) void console_init(void) { imx_uart_init(&console_data, CONSOLE_UART_BASE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } void main_init_gic(void) diff --git a/core/arch/arm/plat-ls/main.c b/core/arch/arm/plat-ls/main.c index fd0fd540..7f8d523d 100644 --- a/core/arch/arm/plat-ls/main.c +++ b/core/arch/arm/plat-ls/main.c @@ -124,22 +124,7 @@ void plat_cpu_reset_late(void) void console_init(void) { ns16550_init(&console_data, CONSOLE_UART_BASE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } void main_init_gic(void) diff --git a/core/arch/arm/plat-mediatek/main.c b/core/arch/arm/plat-mediatek/main.c index 2553ae3c..62180fcb 100644 --- a/core/arch/arm/plat-mediatek/main.c +++ b/core/arch/arm/plat-mediatek/main.c @@ -66,20 +66,5 @@ void console_init(void) { serial8250_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } diff --git a/core/arch/arm/plat-rcar/main.c b/core/arch/arm/plat-rcar/main.c index f6f38283..6a7e3320 100644 --- a/core/arch/arm/plat-rcar/main.c +++ b/core/arch/arm/plat-rcar/main.c @@ -70,21 +70,5 @@ static void main_fiq(void) void console_init(void) { scif_uart_init(&console_data, CONSOLE_UART_BASE); + register_serial_console(&console_data.chip); } - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); -} - diff --git a/core/arch/arm/plat-rpi3/main.c b/core/arch/arm/plat-rpi3/main.c index ccfa9642..8a714cb7 100644 --- a/core/arch/arm/plat-rpi3/main.c +++ b/core/arch/arm/plat-rpi3/main.c @@ -60,24 +60,10 @@ const struct thread_handlers *generic_boot_get_handlers(void) { return &handlers; } + void console_init(void) { serial8250_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } diff --git a/core/arch/arm/plat-sprd/console.c b/core/arch/arm/plat-sprd/console.c index 54771c74..ae56d956 100644 --- a/core/arch/arm/plat-sprd/console.c +++ b/core/arch/arm/plat-sprd/console.c @@ -34,6 +34,7 @@ static struct sprd_uart_data console_data __early_bss; void console_init(void) { sprd_uart_init(&console_data, CONSOLE_UART_BASE); + register_serial_console(&console_data.chip); } void console_putc(int ch) @@ -43,9 +44,3 @@ void console_putc(int ch) cons->ops->putc(cons, ch & 0xff); } -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); -} diff --git a/core/arch/arm/plat-sunxi/console.c b/core/arch/arm/plat-sunxi/console.c index 499fcd88..c22bcd14 100644 --- a/core/arch/arm/plat-sunxi/console.c +++ b/core/arch/arm/plat-sunxi/console.c @@ -35,18 +35,5 @@ static struct sunxi_uart_data console_data __early_bss; void console_init(void) { sunxi_uart_init(&console_data, CONSOLE_UART_BASE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } diff --git a/core/arch/arm/plat-ti/console.c b/core/arch/arm/plat-ti/console.c index 34f7a7fa..8f4461bf 100644 --- a/core/arch/arm/plat-ti/console.c +++ b/core/arch/arm/plat-ti/console.c @@ -40,20 +40,5 @@ void console_init(void) { serial8250_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } diff --git a/core/arch/arm/plat-vexpress/main.c b/core/arch/arm/plat-vexpress/main.c index 962cf13b..44eef24f 100644 --- a/core/arch/arm/plat-vexpress/main.c +++ b/core/arch/arm/plat-vexpress/main.c @@ -121,22 +121,7 @@ void console_init(void) { pl011_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } #ifdef IT_CONSOLE_UART diff --git a/core/arch/arm/plat-zynq7k/main.c b/core/arch/arm/plat-zynq7k/main.c index 0b29948c..2991b948 100644 --- a/core/arch/arm/plat-zynq7k/main.c +++ b/core/arch/arm/plat-zynq7k/main.c @@ -121,22 +121,7 @@ void plat_cpu_reset_late(void) void console_init(void) { cdns_uart_init(&console_data, CONSOLE_UART_BASE, 0, 0); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } vaddr_t pl310_base(void) diff --git a/core/arch/arm/plat-zynqmp/main.c b/core/arch/arm/plat-zynqmp/main.c index 8ae3366a..a00d1ae8 100644 --- a/core/arch/arm/plat-zynqmp/main.c +++ b/core/arch/arm/plat-zynqmp/main.c @@ -95,20 +95,5 @@ void console_init(void) { cdns_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - struct serial_chip *cons = &console_data.chip; - - if (ch == '\n') - cons->ops->putc(cons, '\r'); - cons->ops->putc(cons, ch); -} - -void console_flush(void) -{ - struct serial_chip *cons = &console_data.chip; - - cons->ops->flush(cons); + register_serial_console(&console_data.chip); } -- cgit v1.2.3