Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e352953c authored by Atsushi Nemoto's avatar Atsushi Nemoto Committed by Ralf Baechle
Browse files

[MIPS] TXx9: Support early_printk



Kill jmr3927-specific prom_putchar and add txx9-generic prom_putchar
to support early_printk.

Signed-off-by: default avatarAtsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 7779a5e0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ config SOC_TX3927
	select IRQ_TXX9
	select SWAP_IO_SPACE
	select SYS_HAS_CPU_TX39XX
	select SYS_HAS_EARLY_PRINTK
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_LITTLE_ENDIAN
	select SYS_SUPPORTS_BIG_ENDIAN
@@ -49,6 +50,7 @@ config SOC_TX4927
	select PCI_TX4927
	select SWAP_IO_SPACE
	select SYS_HAS_CPU_TX49XX
	select SYS_HAS_EARLY_PRINTK
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_LITTLE_ENDIAN
@@ -70,6 +72,7 @@ config SOC_TX4938
	select PCI_TX4927
	select SWAP_IO_SPACE
	select SYS_HAS_CPU_TX49XX
	select SYS_HAS_EARLY_PRINTK
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_LITTLE_ENDIAN
+31 −0
Original line number Diff line number Diff line
@@ -271,6 +271,37 @@ void __init txx9_sio_init(unsigned long baseaddr, int irq,
#endif /* CONFIG_SERIAL_TXX9 */
}

#ifdef CONFIG_EARLY_PRINTK
static void __init null_prom_putchar(char c)
{
}
void (*txx9_prom_putchar)(char c) __initdata = null_prom_putchar;

void __init prom_putchar(char c)
{
	txx9_prom_putchar(c);
}

static void __iomem *early_txx9_sio_port;

static void __init early_txx9_sio_putchar(char c)
{
#define TXX9_SICISR	0x0c
#define TXX9_SITFIFO	0x1c
#define TXX9_SICISR_TXALS	0x00000002
	while (!(__raw_readl(early_txx9_sio_port + TXX9_SICISR) &
		 TXX9_SICISR_TXALS))
		;
	__raw_writel(c, early_txx9_sio_port + TXX9_SITFIFO);
}

void __init txx9_sio_putchar_init(unsigned long baseaddr)
{
	early_txx9_sio_port = ioremap(baseaddr, 0x24);
	txx9_prom_putchar = early_txx9_sio_putchar;
}
#endif /* CONFIG_EARLY_PRINTK */

/* wrappers */
void __init plat_mem_setup(void)
{
+1 −16
Original line number Diff line number Diff line
@@ -41,22 +41,6 @@
#include <asm/txx9/generic.h>
#include <asm/txx9/jmr3927.h>

#define TIMEOUT       0xffffff

void
prom_putchar(char c)
{
        int i = 0;

        do {
            i++;
            if (i>TIMEOUT)
                break;
        } while (!(tx3927_sioptr(1)->cisr & TXx927_SICISR_TXALS));
	tx3927_sioptr(1)->tfifo = c;
	return;
}

void __init jmr3927_prom_init(void)
{
	/* CCFG */
@@ -65,4 +49,5 @@ void __init jmr3927_prom_init(void)

	prom_init_cmdline();
	add_memory_region(0, JMR3927_SDRAM_SIZE, BOOT_MEM_RAM);
	txx9_sio_putchar_init(TX3927_SIO_REG(1));
}
+1 −0
Original line number Diff line number Diff line
@@ -38,4 +38,5 @@ void __init rbtx4927_prom_init(void)
{
	prom_init_cmdline();
	add_memory_region(0, tx4927_get_mem_size(), BOOT_MEM_RAM);
	txx9_sio_putchar_init(TX4927_SIO_REG(0) & 0xfffffffffULL);
}
+1 −0
Original line number Diff line number Diff line
@@ -22,4 +22,5 @@ void __init rbtx4938_prom_init(void)
	prom_init_cmdline();
#endif
	add_memory_region(0, tx4938_get_mem_size(), BOOT_MEM_RAM);
	txx9_sio_putchar_init(TX4938_SIO_REG(0) & 0xfffffffffULL);
}
Loading