diff options
Diffstat (limited to 'target/linux/adm8668/files/arch/mips')
3 files changed, 17 insertions, 43 deletions
diff --git a/target/linux/adm8668/files/arch/mips/adm8668/Makefile b/target/linux/adm8668/files/arch/mips/adm8668/Makefile index c69864d16..dbd3f12d1 100644 --- a/target/linux/adm8668/files/arch/mips/adm8668/Makefile +++ b/target/linux/adm8668/files/arch/mips/adm8668/Makefile @@ -3,5 +3,5 @@  #  obj-y	 	:= irq.o pci.o prom.o platform.o serial.o proc.o \ -		   setup.o time.o \ +		   setup.o time.o early_printk.o \  		   net_core.o net_intr.o diff --git a/target/linux/adm8668/files/arch/mips/adm8668/early_printk.c b/target/linux/adm8668/files/arch/mips/adm8668/early_printk.c new file mode 100644 index 000000000..2a3e87148 --- /dev/null +++ b/target/linux/adm8668/files/arch/mips/adm8668/early_printk.c @@ -0,0 +1,16 @@ +#include <linux/io.h> +#include <linux/serial_core.h> +#include <adm8668.h> + +#define UART_READ(r) \ +	__raw_readl((void __iomem *)(KSEG1ADDR(ADM8668_UART0_BASE) + (r))) + +#define UART_WRITE(v, r) \ +	__raw_writel((v), (void __iomem *)(KSEG1ADDR(ADM8668_UART0_BASE) + (r))) + +void prom_putchar(char c) +{ +	UART_WRITE(c, UART_DR_REG); +	while ((UART_READ(UART_FR_REG) & UART_TX_FIFO_FULL) != 0) +		; +} diff --git a/target/linux/adm8668/files/arch/mips/adm8668/prom.c b/target/linux/adm8668/files/arch/mips/adm8668/prom.c index 7187f2982..24b77f8b9 100644 --- a/target/linux/adm8668/files/arch/mips/adm8668/prom.c +++ b/target/linux/adm8668/files/arch/mips/adm8668/prom.c @@ -25,44 +25,6 @@  register volatile struct global_data *gd asm ("k0"); -#ifdef CONFIG_SERIAL_ADM8668_CONSOLE -static inline unsigned int adm_uart_readl(unsigned int offset) -{ -	return (*(volatile unsigned int *)(0xbe400000 + offset)); -} - -static inline void adm_uart_writel(unsigned int value, unsigned int offset) -{ -	(*((volatile unsigned int *)(0xbe400000 + offset))) = value; -} - -static void prom_putchar(char c) -{ -	adm_uart_writel(c, UART_DR_REG); -	while ((adm_uart_readl(UART_FR_REG) & UART_TX_FIFO_FULL) != 0) -		; -} - -static void __init -early_console_write(struct console *con, const char *s, unsigned n) -{ -	while (n-- && *s) { -		if (*s == '\n') -			prom_putchar('\r'); -		prom_putchar(*s); -		s++; -	} -} - -static struct console early_console __initdata = { -	.name	= "early", -	.write	= early_console_write, -	.flags	= CON_BOOT, -	.index	= -1 -}; - -#endif -  void __init prom_free_prom_memory(void)  {  	/* No prom memory to free */ @@ -122,10 +84,6 @@ void __init prom_init(void)  	bd_t *bd = gd->bd;  	int memsize; -#ifdef CONFIG_SERIAL_ADM8668_CONSOLE -	register_console(&early_console); -#endif -  	memsize = bd->bi_memsize;  	printk("Board info:\n");  	printk("  RAM size: %d MB\n", (int)memsize/(1024*1024));  | 
