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

Commit e87dddeb authored by Peter Horton's avatar Peter Horton Committed by Ralf Baechle
Browse files

[MIPS] Add early console for Cobalt.

parent c4a1745a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -790,6 +790,7 @@ source "arch/mips/tx4927/Kconfig"
source "arch/mips/tx4938/Kconfig"
source "arch/mips/vr41xx/Kconfig"
source "arch/mips/philips/pnx8550/common/Kconfig"
source "arch/mips/cobalt/Kconfig"

endmenu

+7 −0
Original line number Diff line number Diff line
config EARLY_PRINTK
	bool "Early console support"
	depends on MIPS_COBALT
	help
	  Provide early console support by direct access to the
	  on board UART. The UART must have been previously
	  initialised by the boot loader.
+2 −0
Original line number Diff line number Diff line
@@ -4,4 +4,6 @@

obj-y	 := irq.o int-handler.o reset.o setup.o

obj-$(CONFIG_EARLY_PRINTK)	+= console.o

EXTRA_AFLAGS := $(CFLAGS)
+43 −0
Original line number Diff line number Diff line
/*
 * (C) P. Horton 2006
 */

#include <linux/config.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/console.h>
#include <linux/serial_reg.h>
#include <asm/addrspace.h>
#include <asm/mach-cobalt/cobalt.h>

static void putchar(int c)
{
	if(c == '\n')
		putchar('\r');

	while(!(COBALT_UART[UART_LSR] & UART_LSR_THRE))
		;

	COBALT_UART[UART_TX] = c;
}

static void cons_write(struct console *c, const char *s, unsigned n)
{
	while(n-- && *s)
		putchar(*s++);
}

static struct console cons_info =
{
	.name	= "uart",
	.write	= cons_write,
	.flags	= CON_PRINTBUFFER | CON_BOOT,
	.index	= -1,
};

void __init cobalt_early_console(void)
{
	register_console(&cons_info);

	printk("Cobalt: early console registered\n");
}
+5 −8
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
extern void cobalt_machine_restart(char *command);
extern void cobalt_machine_halt(void);
extern void cobalt_machine_power_off(void);
extern void cobalt_early_console(void);

int cobalt_board_id;

@@ -109,14 +110,6 @@ void __init plat_setup(void)
	/* I/O port resource must include UART and LCD/buttons */
	ioport_resource.end = 0x0fffffff;

	/*
	 * This is a prom style console. We just poke at the
	 *  UART to make it talk.
	 * Only use this console if you really screw up and can't
	 *  get to the stage of setting up a real serial console.
	 */
	/*ns16550_setup_console();*/

	/* request I/O space for devices used on all i[345]86 PCs */
	for (i = 0; i < COBALT_IO_RESOURCES; i++)
		request_resource(&ioport_resource, cobalt_io_resources + i);
@@ -136,6 +129,10 @@ void __init plat_setup(void)
#ifdef CONFIG_SERIAL_8250
	if (cobalt_board_id > COBALT_BRD_ID_RAQ1) {

#ifdef CONFIG_EARLY_PRINTK
		cobalt_early_console();
#endif

		uart.line	= 0;
		uart.type	= PORT_UNKNOWN;
		uart.uartclk	= 18432000;
Loading