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

Commit f7be4e75 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by John Crispin
Browse files

MIPS: early_printk: drop __init annotations



We cannot use __init for earlyprintk code or data, since the kernel
parameter "keep_bootcon" allows leaving the boot console enabled.

Currently MIPS will crash/hang/die if you use keep_bootcon. The patch
fixes it at least on Lemote FuLoong mini-PC. Changes for other boards
were done based on what I could find with grep...

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Patchwork: http://patchwork.linux-mips.org/patch/4935/


Signed-off-by: default avatarJohn Crispin <blogic@openwrt.org>
parent 1e7decdb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@
#include <bcm63xx_io.h>
#include <bcm63xx_regs.h>

static void __init wait_xfered(void)
static void wait_xfered(void)
{
	unsigned int val;

@@ -22,7 +22,7 @@ static void __init wait_xfered(void)
	} while (1);
}

void __init prom_putchar(char c)
void prom_putchar(char c)
{
	wait_xfered();
	bcm_uart0_writel(c, UART_FIFO_REG);
+2 −3
Original line number Diff line number Diff line
@@ -14,8 +14,7 @@

extern void prom_putchar(char);

static void __init
early_console_write(struct console *con, const char *s, unsigned n)
static void early_console_write(struct console *con, const char *s, unsigned n)
{
	while (n-- && *s) {
		if (*s == '\n')
@@ -25,7 +24,7 @@ early_console_write(struct console *con, const char *s, unsigned n)
	}
}

static struct console early_console __initdata = {
static struct console early_console = {
	.name	= "early",
	.write	= early_console_write,
	.flags	= CON_PRINTBUFFER | CON_BOOT,
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ void __init prom_free_prom_memory(void)

#define PORT(offset)	(u8 *)(KSEG1ADDR(LS1X_UART0_BASE + offset))

void __init prom_putchar(char c)
void prom_putchar(char c)
{
	int timeout;

+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ static inline struct ioc3_uartregs *console_uart(void)
	return &ioc3->sregs.uarta;
}

void __init prom_putchar(char c)
void prom_putchar(char c)
{
	struct ioc3_uartregs *uart = console_uart();

+4 −4
Original line number Diff line number Diff line
@@ -513,19 +513,19 @@ void __init txx9_sio_init(unsigned long baseaddr, int irq,
}

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

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

static void __iomem *early_txx9_sio_port;

static void __init early_txx9_sio_putchar(char c)
static void early_txx9_sio_putchar(char c)
{
#define TXX9_SICISR	0x0c
#define TXX9_SITFIFO	0x1c