aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorTzachi Perelstein <tzachi@marvell.com>2007-10-23 15:14:41 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-01-26 10:03:42 -0500
commit585cf17561d3174a745bec49c422c1a621c95fc4 (patch)
tree66f0ff02c844a4bf22dcbca66b2babf387b4f628 /arch
parentd910a0aa21c9c6e824744d0139bbe6a9ae676e2d (diff)
[ARM] basic support for the Marvell Orion SoC family
The Marvell Orion is a family of ARM SoCs with a DDR/DDR2 memory controller, 10/100/1000 ethernet MAC, and USB 2.0 interfaces, and, depending on the specific model, PCI-E interface, PCI-X interface, SATA controllers, crypto unit, SPI interface, SDIO interface, device bus, NAND controller, DMA engine and/or XOR engine. This contains the basic structure and architecture register definitions. Signed-off-by: Tzachi Perelstein <tzachi@marvell.com> Reviewed-by: Nicolas Pitre <nico@marvell.com> Reviewed-by: Lennert Buytenhek <buytenh@marvell.com> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig8
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/mach-orion/Kconfig7
-rw-r--r--arch/arm/mach-orion/Makefile1
-rw-r--r--arch/arm/mach-orion/Makefile.boot3
-rw-r--r--arch/arm/mach-orion/common.c53
-rw-r--r--arch/arm/mach-orion/common.h9
7 files changed, 82 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index fae3f164218f..036239150ff8 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -333,6 +333,12 @@ config ARCH_MXC
333 help 333 help
334 Support for Freescale MXC/iMX-based family of processors 334 Support for Freescale MXC/iMX-based family of processors
335 335
336config ARCH_ORION
337 bool "Marvell Orion"
338 depends on MMU
339 help
340 Support for Marvell Orion System on Chip family.
341
336config ARCH_PNX4008 342config ARCH_PNX4008
337 bool "Philips Nexperia PNX4008 Mobile" 343 bool "Philips Nexperia PNX4008 Mobile"
338 help 344 help
@@ -441,6 +447,8 @@ source "arch/arm/mach-omap1/Kconfig"
441 447
442source "arch/arm/mach-omap2/Kconfig" 448source "arch/arm/mach-omap2/Kconfig"
443 449
450source "arch/arm/mach-orion/Kconfig"
451
444source "arch/arm/plat-s3c24xx/Kconfig" 452source "arch/arm/plat-s3c24xx/Kconfig"
445source "arch/arm/plat-s3c/Kconfig" 453source "arch/arm/plat-s3c/Kconfig"
446 454
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 35e56c99ad1d..2daa278149e0 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -139,6 +139,7 @@ endif
139 machine-$(CONFIG_ARCH_KS8695) := ks8695 139 machine-$(CONFIG_ARCH_KS8695) := ks8695
140 incdir-$(CONFIG_ARCH_MXC) := mxc 140 incdir-$(CONFIG_ARCH_MXC) := mxc
141 machine-$(CONFIG_ARCH_MX3) := mx3 141 machine-$(CONFIG_ARCH_MX3) := mx3
142 machine-$(CONFIG_ARCH_ORION) := orion
142 143
143ifeq ($(CONFIG_ARCH_EBSA110),y) 144ifeq ($(CONFIG_ARCH_EBSA110),y)
144# This is what happens if you forget the IOCS16 line. 145# This is what happens if you forget the IOCS16 line.
diff --git a/arch/arm/mach-orion/Kconfig b/arch/arm/mach-orion/Kconfig
new file mode 100644
index 000000000000..c2af02125ce9
--- /dev/null
+++ b/arch/arm/mach-orion/Kconfig
@@ -0,0 +1,7 @@
1if ARCH_ORION
2
3menu "Orion Implementations"
4
5endmenu
6
7endif
diff --git a/arch/arm/mach-orion/Makefile b/arch/arm/mach-orion/Makefile
new file mode 100644
index 000000000000..69eb30187738
--- /dev/null
+++ b/arch/arm/mach-orion/Makefile
@@ -0,0 +1 @@
obj-y += common.o
diff --git a/arch/arm/mach-orion/Makefile.boot b/arch/arm/mach-orion/Makefile.boot
new file mode 100644
index 000000000000..67039c3e0c48
--- /dev/null
+++ b/arch/arm/mach-orion/Makefile.boot
@@ -0,0 +1,3 @@
1 zreladdr-y := 0x00008000
2params_phys-y := 0x00000100
3initrd_phys-y := 0x00800000
diff --git a/arch/arm/mach-orion/common.c b/arch/arm/mach-orion/common.c
new file mode 100644
index 000000000000..e04f3f07cac0
--- /dev/null
+++ b/arch/arm/mach-orion/common.c
@@ -0,0 +1,53 @@
1/*
2 * arch/arm/mach-orion/common.c
3 *
4 * Core functions for Marvell Orion System On Chip
5 *
6 * Maintainer: Tzachi Perelstein <tzachi@marvell.com>
7 *
8 * This file is licensed under the terms of the GNU General Public
9 * License version 2. This program is licensed "as is" without any
10 * warranty of any kind, whether express or implied.
11 */
12
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <asm/page.h>
16#include <asm/mach/map.h>
17#include <asm/arch/orion.h>
18#include "common.h"
19
20/*****************************************************************************
21 * I/O Address Mapping
22 ****************************************************************************/
23static struct map_desc orion_io_desc[] __initdata = {
24 {
25 .virtual = ORION_REGS_BASE,
26 .pfn = __phys_to_pfn(ORION_REGS_BASE),
27 .length = ORION_REGS_SIZE,
28 .type = MT_DEVICE
29 },
30 {
31 .virtual = ORION_PCIE_IO_BASE,
32 .pfn = __phys_to_pfn(ORION_PCIE_IO_BASE),
33 .length = ORION_PCIE_IO_SIZE,
34 .type = MT_DEVICE
35 },
36 {
37 .virtual = ORION_PCI_IO_BASE,
38 .pfn = __phys_to_pfn(ORION_PCI_IO_BASE),
39 .length = ORION_PCI_IO_SIZE,
40 .type = MT_DEVICE
41 },
42 {
43 .virtual = ORION_PCIE_WA_BASE,
44 .pfn = __phys_to_pfn(ORION_PCIE_WA_BASE),
45 .length = ORION_PCIE_WA_SIZE,
46 .type = MT_DEVICE
47 },
48};
49
50void __init orion_map_io(void)
51{
52 iotable_init(orion_io_desc, ARRAY_SIZE(orion_io_desc));
53}
diff --git a/arch/arm/mach-orion/common.h b/arch/arm/mach-orion/common.h
new file mode 100644
index 000000000000..224b44618a72
--- /dev/null
+++ b/arch/arm/mach-orion/common.h
@@ -0,0 +1,9 @@
1#ifndef __ARCH_ORION_COMMON_H__
2#define __ARCH_ORION_COMMON_H__
3
4/*
5 * Basic Orion init functions used early by machine-setup.
6 */
7void __init orion_map_io(void);
8
9#endif /* __ARCH_ORION_COMMON_H__ */