diff options
author | Wu Zhangjin <wuzhangjin@gmail.com> | 2009-11-28 01:21:50 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2009-12-16 20:57:34 -0500 |
commit | c3d8d85019c9e4f6e4f23d194b6432a2c2464372 (patch) | |
tree | 644e1cf5e7f215fa6789d96bce9fac7e14666846 /arch/mips/loongson/common/uart_base.c | |
parent | c47a48d83a7a82c86ff3e74bdcabeee8f6e6b730 (diff) |
MIPS: Loongson: Cleanups of serial port support
This patchs uses a loongson_uart_base variable instead of the
uart_base[] array and adds a new kernel option to avoid to compile
uart_base.c all the time, which will save a little bit of memory for us.
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Cc: linux-mips@linux-mips.org
http://patchwork.linux-mips.org/patch/727/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/loongson/common/uart_base.c')
-rw-r--r-- | arch/mips/loongson/common/uart_base.c | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/arch/mips/loongson/common/uart_base.c b/arch/mips/loongson/common/uart_base.c index 1d636f4f7505..78ff66ae749e 100644 --- a/arch/mips/loongson/common/uart_base.c +++ b/arch/mips/loongson/common/uart_base.c | |||
@@ -13,24 +13,33 @@ | |||
13 | 13 | ||
14 | #include <loongson.h> | 14 | #include <loongson.h> |
15 | 15 | ||
16 | unsigned long __maybe_unused _loongson_uart_base; | 16 | /* ioremapped */ |
17 | unsigned long _loongson_uart_base; | ||
17 | EXPORT_SYMBOL(_loongson_uart_base); | 18 | EXPORT_SYMBOL(_loongson_uart_base); |
19 | /* raw */ | ||
20 | unsigned long loongson_uart_base; | ||
21 | EXPORT_SYMBOL(loongson_uart_base); | ||
18 | 22 | ||
19 | unsigned long __maybe_unused uart8250_base[] = { | 23 | void prom_init_loongson_uart_base(void) |
20 | [MACH_LOONGSON_UNKNOWN] 0, | ||
21 | [MACH_LEMOTE_FL2E] (LOONGSON_PCIIO_BASE + 0x3f8), | ||
22 | [MACH_LEMOTE_FL2F] (LOONGSON_PCIIO_BASE + 0x2f8), | ||
23 | [MACH_LEMOTE_ML2F7] (LOONGSON_LIO1_BASE + 0x3f8), | ||
24 | [MACH_LEMOTE_YL2F89] (LOONGSON_LIO1_BASE + 0x3f8), | ||
25 | [MACH_DEXXON_GDIUM2F10] (LOONGSON_LIO1_BASE + 0x3f8), | ||
26 | [MACH_LEMOTE_NAS] (LOONGSON_LIO1_BASE + 0x3f8), | ||
27 | [MACH_LEMOTE_LL2F] (LOONGSON_PCIIO_BASE + 0x2f8), | ||
28 | [MACH_LOONGSON_END] 0, | ||
29 | }; | ||
30 | EXPORT_SYMBOL(uart8250_base); | ||
31 | |||
32 | void __maybe_unused prom_init_uart_base(void) | ||
33 | { | 24 | { |
25 | switch (mips_machtype) { | ||
26 | case MACH_LEMOTE_FL2E: | ||
27 | loongson_uart_base = LOONGSON_PCIIO_BASE + 0x3f8; | ||
28 | break; | ||
29 | case MACH_LEMOTE_FL2F: | ||
30 | case MACH_LEMOTE_LL2F: | ||
31 | loongson_uart_base = LOONGSON_PCIIO_BASE + 0x2f8; | ||
32 | break; | ||
33 | case MACH_LEMOTE_ML2F7: | ||
34 | case MACH_LEMOTE_YL2F89: | ||
35 | case MACH_DEXXON_GDIUM2F10: | ||
36 | case MACH_LEMOTE_NAS: | ||
37 | default: | ||
38 | /* The CPU provided serial port */ | ||
39 | loongson_uart_base = LOONGSON_LIO1_BASE + 0x3f8; | ||
40 | break; | ||
41 | } | ||
42 | |||
34 | _loongson_uart_base = | 43 | _loongson_uart_base = |
35 | (unsigned long)ioremap_nocache(uart8250_base[mips_machtype], 8); | 44 | (unsigned long)ioremap_nocache(loongson_uart_base, 8); |
36 | } | 45 | } |