diff options
4 files changed, 35 insertions, 70 deletions
| diff --git a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/common.h b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/common.h index 250e5a778..9e0fdeca6 100644 --- a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/common.h +++ b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/common.h @@ -17,5 +17,7 @@ void __init ramips_intc_irq_init(unsigned intc_base, unsigned irq,  u32 ramips_intc_get_status(void);  void __init ramips_soc_setup(void); +void __init ramips_early_serial_setup(int line, unsigned base, unsigned freq, +				      unsigned irq);  #endif /* __ASM_MACH_RALINK_COMMON_H */ diff --git a/target/linux/ramips/files/arch/mips/ralink/common/setup.c b/target/linux/ramips/files/arch/mips/ralink/common/setup.c index 81a1ba4fa..3030fcd15 100644 --- a/target/linux/ramips/files/arch/mips/ralink/common/setup.c +++ b/target/linux/ramips/files/arch/mips/ralink/common/setup.c @@ -12,6 +12,7 @@  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/io.h> +#include <linux/serial_8250.h>  #include <asm/bootinfo.h>  #include <asm/addrspace.h> @@ -43,6 +44,30 @@ static void __init detect_mem_size(void)  	add_memory_region(RALINK_SOC_SDRAM_BASE, size, BOOT_MEM_RAM);  } +void __init ramips_early_serial_setup(int line, unsigned base, unsigned freq, +				      unsigned irq) +{ +	struct uart_port p; +	int err; + +	memset(&p, 0, sizeof(p)); +	p.flags		= UPF_SKIP_TEST; +	p.iotype	= UPIO_AU; +	p.uartclk	= freq; +	p.regshift	= 2; +	p.type		= PORT_16550A; + +	p.mapbase	= base; +	p.membase	= ioremap_nocache(p.mapbase, PAGE_SIZE); +	p.line		= line; +	p.irq		= irq; + +	err = early_serial_setup(&p); +	if (err) +		printk(KERN_ERR "early serial%d registration failed %d\n", +		       line, err); +} +  void __init plat_mem_setup(void)  {  	set_io_port_base(KSEG1); diff --git a/target/linux/ramips/files/arch/mips/ralink/rt288x/setup.c b/target/linux/ramips/files/arch/mips/ralink/rt288x/setup.c index 8dc4b3c32..e2328fe5e 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt288x/setup.c +++ b/target/linux/ramips/files/arch/mips/ralink/rt288x/setup.c @@ -14,7 +14,6 @@  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/io.h> -#include <linux/serial_8250.h>  #include <asm/mips_machine.h>  #include <asm/reboot.h> @@ -38,39 +37,6 @@ static void rt288x_halt(void)  		cpu_wait();  } -static void __init rt288x_early_serial_setup(void) -{ -	struct uart_port p; -	int err; - -	memset(&p, 0, sizeof(p)); -	p.flags		= UPF_SKIP_TEST; -	p.iotype	= UPIO_AU; -	p.uartclk	= rt288x_sys_freq; -	p.regshift	= 2; -	p.type		= PORT_16550A; - -	p.mapbase	= RT2880_UART0_BASE; -	p.membase	= ioremap_nocache(p.mapbase, RT2880_UART0_SIZE); -	p.line		= 0; -	p.irq		= RT2880_INTC_IRQ_UART0; - -	err = early_serial_setup(&p); -	if (err) -		printk(KERN_ERR "RT288x: early UART0 registration failed %d\n", -			err); - -	p.mapbase	= RT2880_UART1_BASE; -	p.membase	= ioremap_nocache(p.mapbase, RT2880_UART1_SIZE); -	p.line		= 1; -	p.irq		= RT2880_INTC_IRQ_UART1; - -	err = early_serial_setup(&p); -	if (err) -		printk(KERN_ERR "RT288x: early UART1 registration failed %d\n", -			err); -} -  unsigned int __cpuinit get_c0_compare_irq(void)  {  	return CP0_LEGACY_COMPARE_IRQ; @@ -92,7 +58,10 @@ void __init ramips_soc_setup(void)  	_machine_halt = rt288x_halt;  	pm_power_off = rt288x_halt; -	rt288x_early_serial_setup(); +	ramips_early_serial_setup(0, RT2880_UART0_BASE, rt288x_sys_freq, +				  RT2880_INTC_IRQ_UART0); +	ramips_early_serial_setup(1, RT2880_UART1_BASE, rt288x_sys_freq, +				  RT2880_INTC_IRQ_UART1);  }  void __init plat_time_init(void) diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/setup.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/setup.c index 50a8be873..19f340bd4 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/setup.c +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/setup.c @@ -13,7 +13,6 @@  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/io.h> -#include <linux/serial_8250.h>  #include <asm/mips_machine.h>  #include <asm/reboot.h> @@ -38,39 +37,6 @@ static void rt305x_halt(void)  			cpu_wait();  } -static void __init rt305x_early_serial_setup(void) -{ -	struct uart_port p; -	int err; - -	memset(&p, 0, sizeof(p)); -	p.flags		= UPF_SKIP_TEST; -	p.iotype	= UPIO_AU; -	p.uartclk	= rt305x_sys_freq; -	p.regshift	= 2; -	p.type		= PORT_16550A; - -	p.mapbase	= RT305X_UART0_BASE; -	p.membase	= ioremap_nocache(p.mapbase, RT305X_UART0_SIZE); -	p.line		= 0; -	p.irq		= RT305X_INTC_IRQ_UART0; - -	err = early_serial_setup(&p); -	if (err) -		printk(KERN_ERR "RT305x: early UART0 registration failed %d\n", -			err); - -	p.mapbase	= RT305X_UART1_BASE; -	p.membase	= ioremap_nocache(p.mapbase, RT305X_UART1_SIZE); -	p.line		= 1; -	p.irq		= RT305X_INTC_IRQ_UART1; - -	err = early_serial_setup(&p); -	if (err) -		printk(KERN_ERR "RT305x: early UART1 registration failed %d\n", -			err); -} -  unsigned int __cpuinit get_c0_compare_irq(void)  {  	return CP0_LEGACY_COMPARE_IRQ; @@ -92,7 +58,10 @@ void __init ramips_soc_setup(void)  	_machine_halt = rt305x_halt;  	pm_power_off = rt305x_halt; -	rt305x_early_serial_setup(); +	ramips_early_serial_setup(0, RT305X_UART0_BASE, rt305x_sys_freq, +				  RT305X_INTC_IRQ_UART0); +	ramips_early_serial_setup(1, RT305X_UART1_BASE, rt305x_sys_freq, +				  RT305X_INTC_IRQ_UART1);  }  void __init plat_time_init(void) | 
