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 250e5a7..9e0fdec 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 81a1ba4..3030fcd 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 8dc4b3c..e2328fe 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 50a8be8..19f340b 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) |