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>
This commit is contained in:

committed by
Ralf Baechle

parent
937893cf5b
commit
6f7a251a25
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org>
|
||||
* Copyright (c) 2009 Wu Zhangjin <wuzj@lemote.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
@@ -24,7 +25,30 @@
|
||||
|
||||
extern struct pci_ops loongson_pci_ops;
|
||||
|
||||
#ifdef CONFIG_LEMOTE_FULOONG2E
|
||||
/* this is an offset from mips_io_port_base */
|
||||
#define LOONGSON_PCI_IO_START 0x00004000UL
|
||||
|
||||
#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
|
||||
|
||||
/*
|
||||
* we use address window2 to map cpu address space to pci space
|
||||
* window2: cpu [1G, 2G] -> pci [1G, 2G]
|
||||
* why not use window 0 & 1? because they are used by cpu when booting.
|
||||
* window0: cpu [0, 256M] -> ddr [0, 256M]
|
||||
* window1: cpu [256M, 512M] -> pci [256M, 512M]
|
||||
*/
|
||||
|
||||
/* the smallest LOONGSON_CPU_MEM_SRC can be 512M */
|
||||
#define LOONGSON_CPU_MEM_SRC 0x40000000ul /* 1G */
|
||||
#define LOONGSON_PCI_MEM_DST LOONGSON_CPU_MEM_SRC
|
||||
|
||||
#define LOONGSON_PCI_MEM_START LOONGSON_PCI_MEM_DST
|
||||
#define LOONGSON_PCI_MEM_END (0x80000000ul-1) /* 2G */
|
||||
|
||||
#define MMAP_CPUTOPCI_SIZE (LOONGSON_PCI_MEM_END - \
|
||||
LOONGSON_PCI_MEM_START + 1)
|
||||
|
||||
#else /* loongson2f/32bit & loongson2e */
|
||||
|
||||
/* this pci memory space is mapped by pcimap in pci.c */
|
||||
#define LOONGSON_PCI_MEM_START LOONGSON_PCILO1_BASE
|
||||
@@ -32,6 +56,6 @@ extern struct pci_ops loongson_pci_ops;
|
||||
/* this is an offset from mips_io_port_base */
|
||||
#define LOONGSON_PCI_IO_START 0x00004000UL
|
||||
|
||||
#endif
|
||||
#endif /* !(defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT))*/
|
||||
|
||||
#endif /* !__ASM_MACH_LOONGSON_PCI_H_ */
|
||||
|
Reference in New Issue
Block a user