Signed-off-by: Huacai Chen <chenhc@xxxxxxxxxx> Signed-off-by: Hongliang Tao <taohl@xxxxxxxxxx> Signed-off-by: Hua Yan <yanh@xxxxxxxxxx> --- arch/mips/include/asm/mach-loongson/loongson.h | 3 ++ arch/mips/loongson/common/serial.c | 27 ++++++++++++++++++++++++ arch/mips/loongson/common/uart_base.c | 5 ++++ 3 files changed, 35 insertions(+), 0 deletions(-) diff --git a/arch/mips/include/asm/mach-loongson/loongson.h b/arch/mips/include/asm/mach-loongson/loongson.h index fe7d9a6..16d0924 100644 --- a/arch/mips/include/asm/mach-loongson/loongson.h +++ b/arch/mips/include/asm/mach-loongson/loongson.h @@ -125,6 +125,9 @@ static inline void do_perfcnt_IRQ(void) #define LOONGSON_PCICONFIGBASE 0x00 #define LOONGSON_REGBASE 0x100 +/* Loongson-3A cpu uart */ +#define LOONGSON_UART_BASE 0x1fe001e0 + /* PCI Configuration Registers */ #define LOONGSON_PCI_REG(x) LOONGSON_REG(LOONGSON_PCICONFIGBASE + (x)) diff --git a/arch/mips/loongson/common/serial.c b/arch/mips/loongson/common/serial.c index 7580873..6bfe9dd 100644 --- a/arch/mips/loongson/common/serial.c +++ b/arch/mips/loongson/common/serial.c @@ -47,6 +47,33 @@ static struct plat_serial8250_port uart8250_data[][2] = { [MACH_DEXXON_GDIUM2F10] {PORT_M(3), {} }, [MACH_LEMOTE_NAS] {PORT_M(3), {} }, [MACH_LEMOTE_LL2F] {PORT(3), {} }, + [MACH_LEMOTE_A1004] { + { + .irq = MIPS_CPU_IRQ_BASE + 2, + .uartclk = 33177600, + .iotype = UPIO_MEM, + .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, + }, + {} + }, + [MACH_LEMOTE_A1101] { + { + .irq = MIPS_CPU_IRQ_BASE + 2, + .uartclk = 25000000, + .iotype = UPIO_MEM, + .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, + }, + {} + }, + [MACH_LEMOTE_A1205] { + { + .irq = MIPS_CPU_IRQ_BASE + 2, + .uartclk = 25000000, + .iotype = UPIO_MEM, + .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, + }, + {} + }, [MACH_LOONGSON_END] {}, }; diff --git a/arch/mips/loongson/common/uart_base.c b/arch/mips/loongson/common/uart_base.c index d69ea54..ca86c07 100644 --- a/arch/mips/loongson/common/uart_base.c +++ b/arch/mips/loongson/common/uart_base.c @@ -30,6 +30,11 @@ void prom_init_loongson_uart_base(void) case MACH_LEMOTE_LL2F: loongson_uart_base = LOONGSON_PCIIO_BASE + 0x2f8; break; + case MACH_LEMOTE_A1004: + case MACH_LEMOTE_A1101: + case MACH_LEMOTE_A1205: + loongson_uart_base = LOONGSON_UART_BASE; + break; case MACH_LEMOTE_ML2F7: case MACH_LEMOTE_YL2F89: case MACH_DEXXON_GDIUM2F10: -- 1.7.7.3