Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 813c1410 authored by Kelvin Cheung's avatar Kelvin Cheung Committed by Ralf Baechle
Browse files

MIPS: Loongson1B: Improve early printk



- Determine serial port for early printk according to kernel command line.
  - Move to 8250/16550 serial early printk driver.

Signed-off-by: default avatarKelvin Cheung <keguang.zhang@gmail.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/8023/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent a13f0795
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ config LOONGSON1_LS1B
	select SYS_SUPPORTS_HIGHMEM
	select SYS_SUPPORTS_MIPS16
	select SYS_HAS_EARLY_PRINTK
	select USE_GENERIC_EARLY_PRINTK_8250
	select COMMON_CLK

endchoice
+13 −17
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ void __init prom_init_cmdline(void)

void __init prom_init(void)
{
	void __iomem *uart_base;
	prom_argc = fw_arg0;
	prom_argv = (char **)fw_arg1;
	prom_envp = (char **)fw_arg2;
@@ -65,23 +66,18 @@ void __init prom_init(void)

	memsize = env_or_default("memsize", DEFAULT_MEMSIZE);
	highmemsize = env_or_default("highmemsize", 0x0);
}

void __init prom_free_prom_memory(void)
{
	if (strstr(arcs_cmdline, "console=ttyS3"))
		uart_base = ioremap_nocache(LS1X_UART3_BASE, 0x0f);
	else if (strstr(arcs_cmdline, "console=ttyS2"))
		uart_base = ioremap_nocache(LS1X_UART2_BASE, 0x0f);
	else if (strstr(arcs_cmdline, "console=ttyS1"))
		uart_base = ioremap_nocache(LS1X_UART1_BASE, 0x0f);
	else
		uart_base = ioremap_nocache(LS1X_UART0_BASE, 0x0f);
	setup_8250_early_printk_port((unsigned long)uart_base, 0, 0);
}

#define PORT(offset)	(u8 *)(KSEG1ADDR(LS1X_UART0_BASE + offset))

void prom_putchar(char c)
void __init prom_free_prom_memory(void)
{
	int timeout;

	timeout = 1024;

	while (((readb(PORT(UART_LSR)) & UART_LSR_THRE) == 0)
			&& (timeout-- > 0))
		;

	writeb(c, PORT(UART_TX));
}