diff options
author | Florian Fainelli <florian@openwrt.org> | 2012-12-06 22:39:33 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2012-12-06 22:39:33 +0000 |
commit | 2dee2133c5d6a3aa87b341c09c8978dd771edb94 (patch) | |
tree | 99675ca56b6cc2f0fa23f86426bc89f1957c5592 /target/linux/adm8668/files/arch | |
parent | f85115efd8e3ef399f015bbbe9d9468d5a5ba8b4 (diff) | |
download | upstream-2dee2133c5d6a3aa87b341c09c8978dd771edb94.tar.gz upstream-2dee2133c5d6a3aa87b341c09c8978dd771edb94.tar.bz2 upstream-2dee2133c5d6a3aa87b341c09c8978dd771edb94.zip |
implement early_printk without an early_console
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 34547
Diffstat (limited to 'target/linux/adm8668/files/arch')
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 c69864d164..dbd3f12d11 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 0000000000..2a3e87148a --- /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 7187f29825..24b77f8b9d 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)); |