aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/adm8668/files/arch
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2012-12-06 22:39:33 +0000
committerFlorian Fainelli <florian@openwrt.org>2012-12-06 22:39:33 +0000
commit2dee2133c5d6a3aa87b341c09c8978dd771edb94 (patch)
tree99675ca56b6cc2f0fa23f86426bc89f1957c5592 /target/linux/adm8668/files/arch
parentf85115efd8e3ef399f015bbbe9d9468d5a5ba8b4 (diff)
downloadupstream-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')
-rw-r--r--target/linux/adm8668/files/arch/mips/adm8668/Makefile2
-rw-r--r--target/linux/adm8668/files/arch/mips/adm8668/early_printk.c16
-rw-r--r--target/linux/adm8668/files/arch/mips/adm8668/prom.c42
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));