implement early_printk without an early_console
authorFlorian Fainelli <florian@openwrt.org>
Thu, 6 Dec 2012 22:39:33 +0000 (22:39 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Thu, 6 Dec 2012 22:39:33 +0000 (22:39 +0000)
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 34547

target/linux/adm8668/config-3.3
target/linux/adm8668/files/arch/mips/adm8668/Makefile
target/linux/adm8668/files/arch/mips/adm8668/early_printk.c [new file with mode: 0644]
target/linux/adm8668/files/arch/mips/adm8668/prom.c
target/linux/adm8668/patches-3.3/001-adm8668_arch.patch

index 60fd062a1c10d56ba76e75a105da079506863f14..efdab2e0a2db482cc63025c3328493f64c3689aa 100644 (file)
@@ -5,6 +5,9 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CEVT_R4K_LIB=y
+CONFIG_CMDLINE="console=ttyS0 earlyprintk"
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE_OVERRIDE=y
 CONFIG_CPU_HAS_PREFETCH=y
 CONFIG_CPU_HAS_SYNC=y
 CONFIG_CPU_LITTLE_ENDIAN=y
@@ -17,6 +20,7 @@ CONFIG_CSRC_R4K=y
 CONFIG_CSRC_R4K_LIB=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DMA_NONCOHERENT=y
+CONFIG_EARLY_PRINTK=y
 CONFIG_EEPROM_93CX6=m
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_CLOCKEVENTS=y
@@ -69,6 +73,7 @@ CONFIG_SERIAL_ADM8668=y
 CONFIG_SERIAL_ADM8668_CONSOLE=y
 CONFIG_SWAP_IO_SPACE=y
 CONFIG_SYS_HAS_CPU_MIPS32_R1=y
+CONFIG_SYS_HAS_EARLY_PRINTK=y
 CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
 CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
 CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
index c69864d164f2e6a03cc1104b25bfc1b6cb5f2035..dbd3f12d11e6849feb2f87e8c00ea71545792012 100644 (file)
@@ -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 (file)
index 0000000..2a3e871
--- /dev/null
@@ -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)
+               ;
+}
index 7187f29825e057642938319c1bb04c70fc6a32f2..24b77f8b9df61200fff8b7d30a00af9f160c5c94 100644 (file)
 
 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));
index c00188cf0dd8387d812ed0b9a0c3e0e4bff0e0a6..53a627ecc1b6a0c3d01c5efd00dfa4851173b5aa 100644 (file)
@@ -10,7 +10,7 @@
  include $(patsubst %, $(srctree)/arch/mips/%/Platform, $(platforms))
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -105,6 +105,26 @@ config BCM47XX
+@@ -105,6 +105,27 @@ config BCM47XX
        help
         Support for BCM47XX based boards
  
@@ -30,6 +30,7 @@
 +      select SWAP_IO_SPACE
 +      select SERIAL_ADM8668
 +      select SERIAL_ADM8668_CONSOLE
++      select SYS_HAS_EARLY_PRINTK
 +      help
 +              ADM8668 board support by neutronscott
 +              Scott Nicholas <neutronscott@scottn.us>