diff options
author | Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> | 2013-09-09 08:36:19 -0400 |
---|---|---|
committer | Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> | 2013-12-13 10:31:07 -0500 |
commit | 1c37fa10b275d3e5b6285066b5b27c8feae688c8 (patch) | |
tree | 63238e4ff8f4872bcff7ff7cc960fa686b7bbf5a /arch | |
parent | a90921185fe5db3e02aecf473f0c54343ae17191 (diff) |
ARM: add initial support for Marvell Berlin SoCs
This adds initial support for the Marvell Berlin SoC family with
Armada 1500 (88DE3100) and Armada 1500-mini (88DE3005) SoCs.
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Reviewed-by: Jason Cooper <jason@lakedaemon.net>
Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-berlin/Kconfig | 29 | ||||
-rw-r--r-- | arch/arm/mach-berlin/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-berlin/berlin.c | 39 |
5 files changed, 72 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c1f1a7eee953..121153f57796 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -911,6 +911,8 @@ source "arch/arm/mach-bcm/Kconfig" | |||
911 | 911 | ||
912 | source "arch/arm/mach-bcm2835/Kconfig" | 912 | source "arch/arm/mach-bcm2835/Kconfig" |
913 | 913 | ||
914 | source "arch/arm/mach-berlin/Kconfig" | ||
915 | |||
914 | source "arch/arm/mach-clps711x/Kconfig" | 916 | source "arch/arm/mach-clps711x/Kconfig" |
915 | 917 | ||
916 | source "arch/arm/mach-cns3xxx/Kconfig" | 918 | source "arch/arm/mach-cns3xxx/Kconfig" |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c99b1086d83d..483abc7a9834 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -148,6 +148,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000 | |||
148 | machine-$(CONFIG_ARCH_AT91) += at91 | 148 | machine-$(CONFIG_ARCH_AT91) += at91 |
149 | machine-$(CONFIG_ARCH_BCM) += bcm | 149 | machine-$(CONFIG_ARCH_BCM) += bcm |
150 | machine-$(CONFIG_ARCH_BCM2835) += bcm2835 | 150 | machine-$(CONFIG_ARCH_BCM2835) += bcm2835 |
151 | machine-$(CONFIG_ARCH_BERLIN) += berlin | ||
151 | machine-$(CONFIG_ARCH_CLPS711X) += clps711x | 152 | machine-$(CONFIG_ARCH_CLPS711X) += clps711x |
152 | machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx | 153 | machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx |
153 | machine-$(CONFIG_ARCH_DAVINCI) += davinci | 154 | machine-$(CONFIG_ARCH_DAVINCI) += davinci |
diff --git a/arch/arm/mach-berlin/Kconfig b/arch/arm/mach-berlin/Kconfig new file mode 100644 index 000000000000..7a02d222c378 --- /dev/null +++ b/arch/arm/mach-berlin/Kconfig | |||
@@ -0,0 +1,29 @@ | |||
1 | config ARCH_BERLIN | ||
2 | bool "Marvell Berlin SoCs" if ARCH_MULTI_V7 | ||
3 | select ARM_GIC | ||
4 | select GENERIC_CLOCKEVENTS | ||
5 | select GENERIC_IRQ_CHIP | ||
6 | select COMMON_CLK | ||
7 | select DW_APB_ICTL | ||
8 | select DW_APB_TIMER_OF | ||
9 | |||
10 | if ARCH_BERLIN | ||
11 | |||
12 | menu "Marvell Berlin SoC variants" | ||
13 | |||
14 | config MACH_BERLIN_BG2 | ||
15 | bool "Marvell Armada 1500 (BG2)" | ||
16 | select CACHE_L2X0 | ||
17 | select CPU_PJ4B | ||
18 | select HAVE_ARM_TWD if SMP | ||
19 | select HAVE_SMP | ||
20 | |||
21 | config MACH_BERLIN_BG2CD | ||
22 | bool "Marvell Armada 1500-mini (BG2CD)" | ||
23 | select CACHE_L2X0 | ||
24 | select CPU_V7 | ||
25 | select HAVE_ARM_TWD if SMP | ||
26 | |||
27 | endmenu | ||
28 | |||
29 | endif | ||
diff --git a/arch/arm/mach-berlin/Makefile b/arch/arm/mach-berlin/Makefile new file mode 100644 index 000000000000..ab69fe956f49 --- /dev/null +++ b/arch/arm/mach-berlin/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y += berlin.o | |||
diff --git a/arch/arm/mach-berlin/berlin.c b/arch/arm/mach-berlin/berlin.c new file mode 100644 index 000000000000..025bcb5473eb --- /dev/null +++ b/arch/arm/mach-berlin/berlin.c | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Device Tree support for Marvell Berlin SoCs. | ||
3 | * | ||
4 | * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> | ||
5 | * | ||
6 | * based on GPL'ed 2.6 kernel sources | ||
7 | * (c) Marvell International Ltd. | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <linux/init.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/of_platform.h> | ||
18 | #include <asm/hardware/cache-l2x0.h> | ||
19 | #include <asm/mach/arch.h> | ||
20 | |||
21 | static void __init berlin_init_machine(void) | ||
22 | { | ||
23 | /* | ||
24 | * with DT probing for L2CCs, berlin_init_machine can be removed. | ||
25 | * Note: 88DE3005 (Armada 1500-mini) uses pl310 l2cc | ||
26 | */ | ||
27 | l2x0_of_init(0x70c00000, 0xfeffffff); | ||
28 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
29 | } | ||
30 | |||
31 | static const char * const berlin_dt_compat[] = { | ||
32 | "marvell,berlin", | ||
33 | NULL, | ||
34 | }; | ||
35 | |||
36 | DT_MACHINE_START(BERLIN_DT, "Marvell Berlin") | ||
37 | .dt_compat = berlin_dt_compat, | ||
38 | .init_machine = berlin_init_machine, | ||
39 | MACHINE_END | ||