[adm8668] implement early_printk without an early_console
Signed-off-by: Florian Fainelli <florian@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34547 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
c42e9b5f6a
commit
f7b556bf27
|
@ -5,6 +5,9 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||||
CONFIG_CEVT_R4K=y
|
CONFIG_CEVT_R4K=y
|
||||||
CONFIG_CEVT_R4K_LIB=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_PREFETCH=y
|
||||||
CONFIG_CPU_HAS_SYNC=y
|
CONFIG_CPU_HAS_SYNC=y
|
||||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||||
|
@ -17,6 +20,7 @@ CONFIG_CSRC_R4K=y
|
||||||
CONFIG_CSRC_R4K_LIB=y
|
CONFIG_CSRC_R4K_LIB=y
|
||||||
CONFIG_DECOMPRESS_LZMA=y
|
CONFIG_DECOMPRESS_LZMA=y
|
||||||
CONFIG_DMA_NONCOHERENT=y
|
CONFIG_DMA_NONCOHERENT=y
|
||||||
|
CONFIG_EARLY_PRINTK=y
|
||||||
CONFIG_EEPROM_93CX6=m
|
CONFIG_EEPROM_93CX6=m
|
||||||
CONFIG_GENERIC_ATOMIC64=y
|
CONFIG_GENERIC_ATOMIC64=y
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||||
|
@ -69,6 +73,7 @@ CONFIG_SERIAL_ADM8668=y
|
||||||
CONFIG_SERIAL_ADM8668_CONSOLE=y
|
CONFIG_SERIAL_ADM8668_CONSOLE=y
|
||||||
CONFIG_SWAP_IO_SPACE=y
|
CONFIG_SWAP_IO_SPACE=y
|
||||||
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
|
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
|
||||||
|
CONFIG_SYS_HAS_EARLY_PRINTK=y
|
||||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||||
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y := irq.o pci.o prom.o platform.o serial.o proc.o \
|
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
|
net_core.o net_intr.o
|
||||||
|
|
|
@ -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)
|
||||||
|
;
|
||||||
|
}
|
|
@ -25,44 +25,6 @@
|
||||||
|
|
||||||
register volatile struct global_data *gd asm ("k0");
|
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)
|
void __init prom_free_prom_memory(void)
|
||||||
{
|
{
|
||||||
/* No prom memory to free */
|
/* No prom memory to free */
|
||||||
|
@ -122,10 +84,6 @@ void __init prom_init(void)
|
||||||
bd_t *bd = gd->bd;
|
bd_t *bd = gd->bd;
|
||||||
int memsize;
|
int memsize;
|
||||||
|
|
||||||
#ifdef CONFIG_SERIAL_ADM8668_CONSOLE
|
|
||||||
register_console(&early_console);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memsize = bd->bi_memsize;
|
memsize = bd->bi_memsize;
|
||||||
printk("Board info:\n");
|
printk("Board info:\n");
|
||||||
printk(" RAM size: %d MB\n", (int)memsize/(1024*1024));
|
printk(" RAM size: %d MB\n", (int)memsize/(1024*1024));
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
include $(patsubst %, $(srctree)/arch/mips/%/Platform, $(platforms))
|
include $(patsubst %, $(srctree)/arch/mips/%/Platform, $(platforms))
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -105,6 +105,26 @@ config BCM47XX
|
@@ -105,6 +105,27 @@ config BCM47XX
|
||||||
help
|
help
|
||||||
Support for BCM47XX based boards
|
Support for BCM47XX based boards
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
||||||
+ select SWAP_IO_SPACE
|
+ select SWAP_IO_SPACE
|
||||||
+ select SERIAL_ADM8668
|
+ select SERIAL_ADM8668
|
||||||
+ select SERIAL_ADM8668_CONSOLE
|
+ select SERIAL_ADM8668_CONSOLE
|
||||||
|
+ select SYS_HAS_EARLY_PRINTK
|
||||||
+ help
|
+ help
|
||||||
+ ADM8668 board support by neutronscott
|
+ ADM8668 board support by neutronscott
|
||||||
+ Scott Nicholas <neutronscott@scottn.us>
|
+ Scott Nicholas <neutronscott@scottn.us>
|
||||||
|
|
Loading…
Reference in New Issue