diff options
| -rw-r--r-- | arch/arm/boot/dts/Makefile | 9 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/Kconfig | 19 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/include/mach/bridge-regs.h | 85 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/include/mach/kirkwood.h | 142 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/kirkwood-pm.c | 76 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/kirkwood-pm.h | 26 | ||||
| -rw-r--r-- | arch/arm/mach-mvebu/kirkwood.c | 209 |
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 |
| 82 | dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ | 82 | dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ |
| 83 | integratorcp.dtb | 83 | integratorcp.dtb |
| 84 | dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb | 84 | kirkwood := \ |
| 85 | dtb-$(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 |
| 119 | dtb-$(CONFIG_ARCH_KIRKWOOD) += $(kirkwood) | ||
| 120 | dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb | ||
| 119 | dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb | 121 | dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb |
| 120 | dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb | 122 | dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb |
| 121 | dtb-$(CONFIG_ARCH_MSM) += qcom-msm8660-surf.dtb \ | 123 | dtb-$(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) | ||
| 135 | dtb-$(CONFIG_ARCH_MXC) += \ | 138 | dtb-$(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 @@ | |||
| 1 | config ARCH_MVEBU | 1 | config 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 | ||
| 49 | config 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 | |||
| 49 | endmenu | 66 | endmenu |
| 50 | 67 | ||
| 51 | endif | 68 | endif |
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. | |||
| 7 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o | 7 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o |
| 8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
| 9 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 9 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
| 10 | obj-$(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 | */ | ||
