From: Arnd Bergmann Date: Sat, 26 Jul 2014 09:58:35 +0000 (+0200) Subject: Merge branches 'samsung/cleanup' and 'samsung/s5p-cleanup-v2', tag 'v3.16-rc6' into... X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f169f4007e46c41adadcb34ce248a39f543aaac0;p=linux-beck.git Merge branches 'samsung/cleanup' and 'samsung/s5p-cleanup-v2', tag 'v3.16-rc6' into next/soc The following samsung branches are based on these cleanups, which are already in mainline before this branch gets pulled. Signed-off-by: Arnd Bergmann --- f169f4007e46c41adadcb34ce248a39f543aaac0 diff --cc arch/arm/mach-exynos/exynos.c index c7d960aa95a8,46d893fcbe85,80cbbc74d2c8,f38cf7c110cc..2a43a1734eca --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@@@@ -295,12 -295,10 -332,10 -297,10 +332,12 @@@@@ static void __init exynos_dt_machine_in * This is called from smp_prepare_cpus if we've built for SMP, but * we still need to set it up for PM and firmware ops if not. */ - if (!IS_ENABLED(SMP)) + if (!IS_ENABLED(CONFIG_SMP)) exynos_sysram_init(); --- exynos_cpuidle_init(); +++ if (!of_machine_is_compatible("samsung,exynos5420")) +++ exynos_cpuidle_init(); +++ exynos_cpufreq_init(); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); diff --cc arch/arm/mach-exynos/hotplug.c index 8a134d019cb3,920a4baa53cd,572f6b1a08f1,69fa48397394..4d86961a7957 --- a/arch/arm/mach-exynos/hotplug.c +++ b/arch/arm/mach-exynos/hotplug.c @@@@@ -40,15 -40,17 -39,15 -40,21 +39,17 @@@@@ static inline void cpu_leave_lowpower(v static inline void platform_do_lowpower(unsigned int cpu, int *spurious) { + ++ u32 mpidr = cpu_logical_map(cpu); + ++ u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); + ++ for (;;) { - -- /* make cpu1 to be turned off at next WFI command */ - -- if (cpu == 1) - -- exynos_cpu_power_down(cpu); + ++ /* Turn the CPU off on next WFI instruction. */ + ++ exynos_cpu_power_down(core_id); - /* - * here's the WFI - */ - asm(".word 0xe320f003\n" - : - : - : "memory", "cc"); + wfi(); - -- if (pen_release == cpu_logical_map(cpu)) { + ++ if (pen_release == core_id) { /* * OK, proper wakeup, we're done */ diff --cc arch/arm/mach-mvebu/pmsu.c index 34f173e7267d,25aa8237d668,a1d407c0febe,53a55c8520bf..b31a8293a347 --- a/arch/arm/mach-mvebu/pmsu.c +++ b/arch/arm/mach-mvebu/pmsu.c @@@@@ -142,8 -142,8 -142,8 -140,15 +142,8 @@@@@ static void armada_370_xp_pmsu_enable_l writel(reg, pmsu_mp_base + L2C_NFABRIC_PM_CTL); } -static void armada_370_xp_cpu_resume(void) -{ - asm volatile("bl ll_add_cpu_to_smp_group\n\t" - "bl ll_enable_coherency\n\t" - "b cpu_resume\n\t"); -} - /* No locking is needed because we only access per-CPU registers */ ---void armada_370_xp_pmsu_idle_prepare(bool deepidle) +++int armada_370_xp_pmsu_idle_enter(unsigned long deepidle) { unsigned int hw_cpu = cpu_logical_map(smp_processor_id()); u32 reg;