xref: /linux/arch/mips/loongson2ef/common/uart_base.c (revision a4eb44a6435d6d8f9e642407a4a06f65eb90ca04)
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2009 Lemote Inc.
4  * Author: Wu Zhangjin, wuzhangjin@gmail.com
5  */
6 
7 #include <linux/export.h>
8 #include <asm/bootinfo.h>
9 #include <asm/setup.h>
10 
11 #include <loongson.h>
12 
13 /* raw */
14 unsigned long loongson_uart_base;
15 /* ioremapped */
16 unsigned long _loongson_uart_base;
17 
18 EXPORT_SYMBOL(loongson_uart_base);
19 EXPORT_SYMBOL(_loongson_uart_base);
20 
21 void prom_init_loongson_uart_base(void)
22 {
23 	switch (mips_machtype) {
24 	case MACH_LEMOTE_FL2E:
25 		loongson_uart_base = LOONGSON_PCIIO_BASE + 0x3f8;
26 		break;
27 	case MACH_LEMOTE_FL2F:
28 	case MACH_LEMOTE_LL2F:
29 		loongson_uart_base = LOONGSON_PCIIO_BASE + 0x2f8;
30 		break;
31 	case MACH_LEMOTE_ML2F7:
32 	case MACH_LEMOTE_YL2F89:
33 	case MACH_DEXXON_GDIUM2F10:
34 	case MACH_LEMOTE_NAS:
35 	default:
36 		/* The CPU provided serial port (LPC) */
37 		loongson_uart_base = LOONGSON_LIO1_BASE + 0x3f8;
38 		break;
39 	}
40 
41 	_loongson_uart_base = TO_UNCAC(loongson_uart_base);
42 	setup_8250_early_printk_port(_loongson_uart_base, 0, 1024);
43 }
44