diff options
author | Wang Long <long.wanglong@huawei.com> | 2014-12-24 03:10:02 +0000 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2015-01-21 14:33:39 -0800 |
commit | 7fda91e731554336c08a8157b886387d890a9676 (patch) | |
tree | 3cdf75fa716ec06d77f3ec95eccd34a9978db06c /arch/arm/mach-hisi/hotplug.c | |
parent | 29d189e1395a3f0924f7a442bb4b968c9e6de9c1 (diff) | |
download | linux-stable-7fda91e731554336c08a8157b886387d890a9676.tar.gz linux-stable-7fda91e731554336c08a8157b886387d890a9676.tar.bz2 linux-stable-7fda91e731554336c08a8157b886387d890a9676.zip |
ARM: hisi: enable smp for HiP01
Enable smp for HiP01 board.
Signed-off-by: Wang Long <long.wanglong@huawei.com>
Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
[olof: split off the dts change to a separate commit]
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-hisi/hotplug.c')
-rw-r--r-- | arch/arm/mach-hisi/hotplug.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-hisi/hotplug.c b/arch/arm/mach-hisi/hotplug.c index 84e6919f68c7..a129aae72602 100644 --- a/arch/arm/mach-hisi/hotplug.c +++ b/arch/arm/mach-hisi/hotplug.c @@ -65,6 +65,9 @@ #define PMC0_CPU1_PMC_ENABLE (1 << 7) #define PMC0_CPU1_POWERDOWN (1 << 3) +#define HIP01_PERI9 0x50 +#define PERI9_CPU1_RESET (1 << 1) + enum { HI3620_CTRL, ERROR_CTRL, @@ -209,6 +212,34 @@ void hix5hd2_set_cpu(int cpu, bool enable) } } +void hip01_set_cpu(int cpu, bool enable) +{ + unsigned int temp; + struct device_node *np; + + if (!ctrl_base) { + np = of_find_compatible_node(NULL, NULL, "hisilicon,hip01-sysctrl"); + if (np) + ctrl_base = of_iomap(np, 0); + else + BUG(); + } + + if (enable) { + /* reset on CPU1 */ + temp = readl_relaxed(ctrl_base + HIP01_PERI9); + temp |= PERI9_CPU1_RESET; + writel_relaxed(temp, ctrl_base + HIP01_PERI9); + + udelay(50); + + /* unreset on CPU1 */ + temp = readl_relaxed(ctrl_base + HIP01_PERI9); + temp &= ~PERI9_CPU1_RESET; + writel_relaxed(temp, ctrl_base + HIP01_PERI9); + } +} + static inline void cpu_enter_lowpower(void) { unsigned int v; |