Loading arch/arm/configs/msmcortex_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ CONFIG_ARCH_MSMTITANIUM=y CONFIG_SMP=y CONFIG_SCHED_MC=y CONFIG_NR_CPUS=8 CONFIG_ARM_PSCI=y CONFIG_PREEMPT=y CONFIG_AEABI=y CONFIG_HIGHMEM=y Loading arch/arm/include/asm/suspend.h +5 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ struct sleep_save_sp { }; extern void cpu_resume(void); extern int cpu_suspend(unsigned long, int (*)(unsigned long)); extern int cpu_suspend(unsigned long); extern int __cpu_suspend(unsigned long, int (*fn)(unsigned long)); extern int __cpu_suspend_enter(unsigned long arg, int (*fn)(unsigned long), unsigned int); #endif arch/arm/kernel/sleep.S +2 −2 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ * r1 = suspend function * r2 = MPIDR value the resuming CPU will use */ ENTRY(__cpu_suspend) ENTRY(__cpu_suspend_enter) stmfd sp!, {r4 - r11, lr} #ifdef MULTI_CPU ldr r10, =processor Loading @@ -83,7 +83,7 @@ ENTRY(__cpu_suspend) bl __cpu_suspend_save adr lr, BSYM(cpu_suspend_abort) ldmfd sp!, {r0, pc} @ call suspend fn ENDPROC(__cpu_suspend) ENDPROC(__cpu_suspend_enter) .ltorg cpu_suspend_abort: Loading arch/arm/kernel/suspend.c +15 −5 Original line number Diff line number Diff line Loading @@ -9,8 +9,8 @@ #include <asm/smp_plat.h> #include <asm/suspend.h> #include <asm/tlbflush.h> #include <asm/psci.h> extern int __cpu_suspend(unsigned long, int (*)(unsigned long), u32 cpuid); extern void cpu_resume_mmu(void); #ifdef CONFIG_MMU Loading @@ -18,7 +18,7 @@ extern void cpu_resume_mmu(void); * Hide the first two arguments to __cpu_suspend - these are an implementation * detail which platform code shouldn't have to know about. */ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) { struct mm_struct *mm = current->active_mm; u32 __mpidr = cpu_logical_map(smp_processor_id()); Loading @@ -33,7 +33,7 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) * resume (indicated by a zero return code), we need to switch * back to the correct page tables. */ ret = __cpu_suspend(arg, fn, __mpidr); ret = __cpu_suspend_enter(arg, fn, __mpidr); if (ret == 0) { cpu_switch_mm(mm->pgd, mm); local_flush_bp_all(); Loading @@ -43,10 +43,10 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) return ret; } #else int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) { u32 __mpidr = cpu_logical_map(smp_processor_id()); return __cpu_suspend(arg, fn, __mpidr); return __cpu_suspend_enter(arg, fn, __mpidr); } #define idmap_pgd NULL #endif Loading Loading @@ -88,6 +88,16 @@ void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr) virt_to_phys(save_ptr) + sizeof(*save_ptr)); } int cpu_suspend(unsigned long arg) { #if defined(CONFIG_ARM_PSCI) return cpu_psci_cpu_suspend(arg); #else WARN_ONCE(true, "PSCI is not enabled\n"); return 0; #endif } extern struct sleep_save_sp sleep_save_sp; static int cpu_suspend_alloc_sp(void) Loading drivers/power/qcom/msm-pm.c +0 −5 Original line number Diff line number Diff line Loading @@ -285,13 +285,8 @@ static bool __ref msm_pm_spm_power_collapse( msm_jtag_save_state(); #ifdef CONFIG_CPU_V7 collapsed = save_cpu_regs ? !cpu_suspend(0, msm_pm_collapse) : msm_pm_pc_hotplug(); #else collapsed = save_cpu_regs ? !__cpu_suspend(0, msm_pm_collapse) : msm_pm_pc_hotplug(); #endif msm_jtag_restore_state(); Loading Loading
arch/arm/configs/msmcortex_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ CONFIG_ARCH_MSMTITANIUM=y CONFIG_SMP=y CONFIG_SCHED_MC=y CONFIG_NR_CPUS=8 CONFIG_ARM_PSCI=y CONFIG_PREEMPT=y CONFIG_AEABI=y CONFIG_HIGHMEM=y Loading
arch/arm/include/asm/suspend.h +5 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ struct sleep_save_sp { }; extern void cpu_resume(void); extern int cpu_suspend(unsigned long, int (*)(unsigned long)); extern int cpu_suspend(unsigned long); extern int __cpu_suspend(unsigned long, int (*fn)(unsigned long)); extern int __cpu_suspend_enter(unsigned long arg, int (*fn)(unsigned long), unsigned int); #endif
arch/arm/kernel/sleep.S +2 −2 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ * r1 = suspend function * r2 = MPIDR value the resuming CPU will use */ ENTRY(__cpu_suspend) ENTRY(__cpu_suspend_enter) stmfd sp!, {r4 - r11, lr} #ifdef MULTI_CPU ldr r10, =processor Loading @@ -83,7 +83,7 @@ ENTRY(__cpu_suspend) bl __cpu_suspend_save adr lr, BSYM(cpu_suspend_abort) ldmfd sp!, {r0, pc} @ call suspend fn ENDPROC(__cpu_suspend) ENDPROC(__cpu_suspend_enter) .ltorg cpu_suspend_abort: Loading
arch/arm/kernel/suspend.c +15 −5 Original line number Diff line number Diff line Loading @@ -9,8 +9,8 @@ #include <asm/smp_plat.h> #include <asm/suspend.h> #include <asm/tlbflush.h> #include <asm/psci.h> extern int __cpu_suspend(unsigned long, int (*)(unsigned long), u32 cpuid); extern void cpu_resume_mmu(void); #ifdef CONFIG_MMU Loading @@ -18,7 +18,7 @@ extern void cpu_resume_mmu(void); * Hide the first two arguments to __cpu_suspend - these are an implementation * detail which platform code shouldn't have to know about. */ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) { struct mm_struct *mm = current->active_mm; u32 __mpidr = cpu_logical_map(smp_processor_id()); Loading @@ -33,7 +33,7 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) * resume (indicated by a zero return code), we need to switch * back to the correct page tables. */ ret = __cpu_suspend(arg, fn, __mpidr); ret = __cpu_suspend_enter(arg, fn, __mpidr); if (ret == 0) { cpu_switch_mm(mm->pgd, mm); local_flush_bp_all(); Loading @@ -43,10 +43,10 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) return ret; } #else int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) { u32 __mpidr = cpu_logical_map(smp_processor_id()); return __cpu_suspend(arg, fn, __mpidr); return __cpu_suspend_enter(arg, fn, __mpidr); } #define idmap_pgd NULL #endif Loading Loading @@ -88,6 +88,16 @@ void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr) virt_to_phys(save_ptr) + sizeof(*save_ptr)); } int cpu_suspend(unsigned long arg) { #if defined(CONFIG_ARM_PSCI) return cpu_psci_cpu_suspend(arg); #else WARN_ONCE(true, "PSCI is not enabled\n"); return 0; #endif } extern struct sleep_save_sp sleep_save_sp; static int cpu_suspend_alloc_sp(void) Loading
drivers/power/qcom/msm-pm.c +0 −5 Original line number Diff line number Diff line Loading @@ -285,13 +285,8 @@ static bool __ref msm_pm_spm_power_collapse( msm_jtag_save_state(); #ifdef CONFIG_CPU_V7 collapsed = save_cpu_regs ? !cpu_suspend(0, msm_pm_collapse) : msm_pm_pc_hotplug(); #else collapsed = save_cpu_regs ? !__cpu_suspend(0, msm_pm_collapse) : msm_pm_pc_hotplug(); #endif msm_jtag_restore_state(); Loading