aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/loongson/common/init.c
diff options
context:
space:
mode:
authorWu Zhangjin <wuzhangjin@gmail.com>2009-11-06 05:45:05 -0500
committerRalf Baechle <ralf@linux-mips.org>2009-12-16 20:57:10 -0500
commit6f7a251a259e5bf58a9ff334bdcfa3e42b6cb7a3 (patch)
treef5b65babda54c52073819629cc0f1047b5d1b413 /arch/mips/loongson/common/init.c
parent937893cf5be53203eabc6f4db29f86b1fdeea203 (diff)
MIPS: Loongson: Add basic Loongson 2F support
Loongson 2F has built-in DDR2 and PCI-X controller. The PCI-X controller has a programming interface similiar to the the FPGA northbridge used on Loongson 2E. The main differences between Loongson 2E and Loongson 2F include: 1. Loongson 2F has an extra address window configuration module, which is used to map CPU address space to DDR or PCI address space, or map the PCI-DMA address space to DDR or LIO address space. 2. Loongson 2F supports 8 levels of software configurable CPu frequency which can be configured in the LOONGSON_CHIPCFG0 register. The coming cpufreq and standby support are based on this feature. Loongson.h abstracts the modules and corresponding methods are abstracted. Add other Loongson-2F-specific source code including gcc 4.4 support, PCI memory space, PCI IO space, DMA address. Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> Cc: linux-mips@linux-mips.org Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/loongson/common/init.c')
-rw-r--r--arch/mips/loongson/common/init.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/mips/loongson/common/init.c b/arch/mips/loongson/common/init.c
index 3b1dbc1ca242..743d3571f010 100644
--- a/arch/mips/loongson/common/init.c
+++ b/arch/mips/loongson/common/init.c
@@ -12,12 +12,20 @@
12 12
13#include <loongson.h> 13#include <loongson.h>
14 14
15/* Loongson CPU address windows config space base address */
16unsigned long __maybe_unused _loongson_addrwincfg_base;
17
15void __init prom_init(void) 18void __init prom_init(void)
16{ 19{
17 /* init base address of io space */ 20 /* init base address of io space */
18 set_io_port_base((unsigned long) 21 set_io_port_base((unsigned long)
19 ioremap(LOONGSON_PCIIO_BASE, LOONGSON_PCIIO_SIZE)); 22 ioremap(LOONGSON_PCIIO_BASE, LOONGSON_PCIIO_SIZE));
20 23
24#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
25 _loongson_addrwincfg_base = (unsigned long)
26 ioremap(LOONGSON_ADDRWINCFG_BASE, LOONGSON_ADDRWINCFG_SIZE);
27#endif
28
21 prom_init_cmdline(); 29 prom_init_cmdline();
22 prom_init_env(); 30 prom_init_env();
23 prom_init_memory(); 31 prom_init_memory();