aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/Makefile9
-rw-r--r--arch/arm/mach-mvebu/Kconfig19
-rw-r--r--arch/arm/mach-mvebu/Makefile1
-rw-r--r--arch/arm/mach-mvebu/include/mach/bridge-regs.h85
-rw-r--r--arch/arm/mach-mvebu/include/mach/kirkwood.h142
-rw-r--r--arch/arm/mach-mvebu/kirkwood-pm.c76
-rw-r--r--arch/arm/mach-mvebu/kirkwood-pm.h26
-rw-r--r--arch/arm/mach-mvebu/kirkwood.c209
8 files changed, 563 insertions, 4 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b9d6a8b485e0..e135182992b2 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -81,8 +81,8 @@ dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \
81 ecx-2000.dtb 81 ecx-2000.dtb
82dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ 82dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
83 integratorcp.dtb 83 integratorcp.dtb
84dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb 84kirkwood := \
85dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \ 85 kirkwood-cloudbox.dtb \
86 kirkwood-db-88f6281.dtb \ 86 kirkwood-db-88f6281.dtb \
87 kirkwood-db-88f6282.dtb \ 87 kirkwood-db-88f6282.dtb \
88 kirkwood-dns320.dtb \ 88 kirkwood-dns320.dtb \
@@ -116,6 +116,8 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
116 kirkwood-topkick.dtb \ 116 kirkwood-topkick.dtb \
117 kirkwood-ts219-6281.dtb \ 117 kirkwood-ts219-6281.dtb \
118 kirkwood-ts219-6282.dtb 118 kirkwood-ts219-6282.dtb
119dtb-$(CONFIG_ARCH_KIRKWOOD) += $(kirkwood)
120dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
119dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb 121dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
120dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb 122dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb
121dtb-$(CONFIG_ARCH_MSM) += qcom-msm8660-surf.dtb \ 123dtb-$(CONFIG_ARCH_MSM) += qcom-msm8660-surf.dtb \
@@ -131,7 +133,8 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
131 armada-xp-gp.dtb \ 133 armada-xp-gp.dtb \
132 armada-xp-netgear-rn2120.dtb \ 134 armada-xp-netgear-rn2120.dtb \
133 armada-xp-matrix.dtb \ 135 armada-xp-matrix.dtb \
134 armada-xp-openblocks-ax3-4.dtb 136 armada-xp-openblocks-ax3-4.dtb \
137 $(kirkwood)
135dtb-$(CONFIG_ARCH_MXC) += \ 138dtb-$(CONFIG_ARCH_MXC) += \
136 imx25-karo-tx25.dtb \ 139 imx25-karo-tx25.dtb \
137 imx25-pdk.dtb \ 140 imx25-pdk.dtb \
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 6c0824ef6d03..2d7af55e9f75 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -1,5 +1,5 @@
1config ARCH_MVEBU 1config ARCH_MVEBU
2 bool "Marvell Engineering Business Unit (MVEBU) SoCs" if ARCH_MULTI_V7 2 bool "Marvell Engineering Business Unit (MVEBU) SoCs" if (ARCH_MULTI_V7 || ARCH_MULTI_V5)
3 select ARCH_SUPPORTS_BIG_ENDIAN 3 select ARCH_SUPPORTS_BIG_ENDIAN
4 select CLKSRC_MMIO 4 select CLKSRC_MMIO
5 select COMMON_CLK 5 select COMMON_CLK
@@ -46,6 +46,23 @@ config MACH_ARMADA_XP
46 Say 'Y' here if you want your kernel to support boards based 46 Say 'Y' here if you want your kernel to support boards based
47 on the Marvell Armada XP SoC with device tree. 47 on the Marvell Armada XP SoC with device tree.
48 48
49config MACH_KIRKWOOD
50 bool "Marvell Kirkwood boards" if ARCH_MULTI_V5
51 select ARCH_HAS_CPUFREQ
52 select ARCH_REQUIRE_GPIOLIB
53 select CPU_FEROCEON
54 select KIRKWOOD_CLK
55 select OF_IRQ
56 select ORION_IRQCHIP
57 select ORION_TIMER
58 select PCI
59 select PCI_QUIRKS
60 select PINCTRL_KIRKWOOD
61 select USE_OF
62 help
63 Say 'Y' here if you want your kernel to support boards based
64 on the Marvell Kirkwood device tree.
65
49endmenu 66endmenu
50 67
51endif 68endif
diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
index d99846103bbb..6809ec769dd6 100644
--- a/arch/arm/mach-mvebu/Makefile
+++ b/arch/arm/mach-mvebu/Makefile
@@ -7,3 +7,4 @@ obj-y += coherency.o coherency_ll.o pmsu.o system-controller.o mvebu-soc-id.
7obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o 7obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o
8obj-$(CONFIG_SMP) += platsmp.o headsmp.o 8obj-$(CONFIG_SMP) += platsmp.o headsmp.o
9obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o 9obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
10obj-$(CONFIG_MACH_KIRKWOOD) += kirkwood.o kirkwood-pm.o
diff --git a/arch/arm/mach-mvebu/include/mach/bridge-regs.h b/arch/arm/mach-mvebu/include/mach/bridge-regs.h
new file mode 100644
index 000000000000..6eb8fea1f76f
--- /dev/null
+++ b/arch/arm/mach-mvebu/include/mach/bridge-regs.h
@@ -0,0 +1,85 @@
1/*
2 * arch/arm/mach-mvebu/include/mach/bridge-regs.h
3 *
4 * Mbus-L to Mbus Bridge Registers
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#ifndef __ASM_ARCH_BRIDGE_REGS_H
12#define __ASM_ARCH_BRIDGE_REGS_H
13
14#include <mach/kirkwood.h>
15
16#define CPU_CONFIG (BRIDGE_VIRT_BASE + 0x0100)
17#define CPU_CONFIG_PHYS (BRIDGE_PHYS_BASE + 0x0100)
18#define CPU_CONFIG_ERROR_PROP 0x00000004
19
20#define CPU_CONTROL (BRIDGE_VIRT_BASE + 0x0104)
21#define CPU_CONTROL_PHYS (BRIDGE_PHYS_BASE + 0x0104)
22#define CPU_RESET 0x00000002
23
24#define RSTOUTn_MASK (BRIDGE_VIRT_BASE + 0x0108)
25#define SOFT_RESET_OUT_EN 0x00000004
26
27#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE + 0x010c)
28#define SOFT_RESET 0x00000001
29
30#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE + 0x0110)
31
32#define BRIDGE_INT_TIMER1_CLR (~0x0004)
33
34#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE + 0x0200)
35#define IRQ_CAUSE_LOW_OFF 0x0000
36#define IRQ_MASK_LOW_OFF 0x0004
37#define IRQ_CAUSE_HIGH_OFF 0x0010
38#define IRQ_MASK_HIGH_OFF 0x0014
39
40#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE + 0x0300)
41#define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE + 0x0300)
42
43#define L2_CONFIG_REG (BRIDGE_VIRT_BASE + 0x0128)
44#define L2_WRITETHROUGH 0x00000010
45
46#define CLOCK_GATING_CTRL (BRIDGE_VIRT_BASE + 0x11c)
47#define CGC_BIT_GE0 (0)
48#define CGC_BIT_PEX0 (2)
49#define CGC_BIT_USB0 (3)
50#define CGC_BIT_SDIO (4)
51#define CGC_BIT_TSU (5)
52#define CGC_BIT_DUNIT (6)
53#define CGC_BIT_RUNIT (7)
54#define CGC_BIT_XOR0 (8)
55#define CGC_BIT_AUDIO (9)
56#define CGC_BIT_SATA0 (14)
57#define CGC_BIT_SATA1 (15)
58#define CGC_BIT_XOR1 (16)
59#define CGC_BIT_CRYPTO (17)
60#define CGC_BIT_PEX1 (18)
61#define CGC_BIT_GE1 (19)
62#define CGC_BIT_TDM (20)
63#define CGC_GE0 (1 << 0)
64#define CGC_PEX0 (1 << 2)
65#define CGC_USB0 (1 << 3)
66#define CGC_SDIO (1 << 4)
67#define CGC_TSU (1 << 5)
68#define CGC_DUNIT (1 << 6)
69#define CGC_RUNIT (1 << 7)
70#define CGC_XOR0 (1 << 8)
71#define CGC_AUDIO (1 << 9)
72#define CGC_POWERSAVE (1 << 11)
73#define CGC_SATA0 (1 << 14)
74#define CGC_SATA1 (1 << 15)
75#define CGC_XOR1 (1 << 16)
76#define CGC_CRYPTO (1 << 17)
77#define CGC_PEX1 (1 << 18)
78#define CGC_GE1 (1 << 19)
79#define CGC_TDM (1 << 20)
80#define CGC_RESERVED (0x6 << 21)
81
82#define MEMORY_PM_CTRL (BRIDGE_VIRT_BASE + 0x118)
83#define MEMORY_PM_CTRL_PHYS (BRIDGE_PHYS_BASE + 0x118)
84
85#endif
diff --git a/arch/arm/mach-mvebu/include/mach/kirkwood.h b/arch/arm/mach-mvebu/include/mach/kirkwood.h
new file mode 100644
index 000000000000..9d966dc78d67
--- /dev/null
+++ b/arch/arm/mach-mvebu/include/mach/kirkwood.h
@@ -0,0 +1,142 @@
1/*
2 * arch/arm/mach-mvebu/include/mach/kirkwood.h
3 *
4 * Generic definitions for Marvell Kirkwood SoC flavors:
5 * 88F6180, 88F6192 and 88F6281.
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 */