diff options
-rw-r--r-- | arch/arm/mach-mvebu/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-mvebu/board-v7.c | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index 475cf8a6d165..736bd2cbc1f0 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig | |||
@@ -40,6 +40,7 @@ config MACH_ARMADA_375 | |||
40 | select ARM_GIC | 40 | select ARM_GIC |
41 | select ARMADA_375_CLK | 41 | select ARMADA_375_CLK |
42 | select CPU_V7 | 42 | select CPU_V7 |
43 | select HAVE_ARM_SCU | ||
43 | select MACH_MVEBU_V7 | 44 | select MACH_MVEBU_V7 |
44 | select PINCTRL_ARMADA_375 | 45 | select PINCTRL_ARMADA_375 |
45 | help | 46 | help |
@@ -53,6 +54,7 @@ config MACH_ARMADA_38X | |||
53 | select ARM_GIC | 54 | select ARM_GIC |
54 | select ARMADA_38X_CLK | 55 | select ARMADA_38X_CLK |
55 | select CPU_V7 | 56 | select CPU_V7 |
57 | select HAVE_ARM_SCU | ||
56 | select MACH_MVEBU_V7 | 58 | select MACH_MVEBU_V7 |
57 | select PINCTRL_ARMADA_38X | 59 | select PINCTRL_ARMADA_38X |
58 | help | 60 | help |
diff --git a/arch/arm/mach-mvebu/board-v7.c b/arch/arm/mach-mvebu/board-v7.c index 1730e0cdb6f6..85f964e55bf3 100644 --- a/arch/arm/mach-mvebu/board-v7.c +++ b/arch/arm/mach-mvebu/board-v7.c | |||
@@ -27,12 +27,30 @@ | |||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/time.h> | 29 | #include <asm/mach/time.h> |
30 | #include <asm/smp_scu.h> | ||
30 | #include "armada-370-xp.h" | 31 | #include "armada-370-xp.h" |
31 | #include "common.h" | 32 | #include "common.h" |
32 | #include "coherency.h" | 33 | #include "coherency.h" |
33 | #include "mvebu-soc-id.h" | 34 | #include "mvebu-soc-id.h" |
34 | 35 | ||
35 | /* | 36 | /* |
37 | * Enables the SCU when available. Obviously, this is only useful on | ||
38 | * Cortex-A based SOCs, not on PJ4B based ones. | ||
39 | */ | ||
40 | static void __init mvebu_scu_enable(void) | ||
41 | { | ||
42 | void __iomem *scu_base; | ||
43 | |||
44 | struct device_node *np = | ||
45 | of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu"); | ||
46 | if (np) { | ||
47 | scu_base = of_iomap(np, 0); | ||
48 | scu_enable(scu_base); | ||
49 | of_node_put(np); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | /* | ||
36 | * Early versions of Armada 375 SoC have a bug where the BootROM | 54 | * Early versions of Armada 375 SoC have a bug where the BootROM |
37 | * leaves an external data abort pending. The kernel is hit by this | 55 | * leaves an external data abort pending. The kernel is hit by this |
38 | * data abort as soon as it enters userspace, because it unmasks the | 56 | * data abort as soon as it enters userspace, because it unmasks the |
@@ -57,6 +75,7 @@ static void __init mvebu_timer_and_clk_init(void) | |||
57 | { | 75 | { |
58 | of_clk_init(NULL); | 76 | of_clk_init(NULL); |
59 | clocksource_of_init(); | 77 | clocksource_of_init(); |
78 | mvebu_scu_enable(); | ||
60 | coherency_init(); | 79 | coherency_init(); |
61 | BUG_ON(mvebu_mbus_dt_init(coherency_available())); | 80 | BUG_ON(mvebu_mbus_dt_init(coherency_available())); |
62 | #ifdef CONFIG_CACHE_L2X0 | 81 | #ifdef CONFIG_CACHE_L2X0 |