29cb3cd208
There are SoCs where attempting to enter a low power state is ignored, and the CPU continues executing instructions with all state preserved. It is over-complex at that point to disable the MMU just to call the resume path. Instead, allow the suspend finisher to return error codes to abort suspend in this circumstance, where the cpu_suspend internals will then unwind the saved state on the stack. Also omit the tlb flush as no changes to the page tables will have happened. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
22 lines
550 B
C
22 lines
550 B
C
#ifndef __ASM_ARM_SUSPEND_H
|
|
#define __ASM_ARM_SUSPEND_H
|
|
|
|
#include <asm/memory.h>
|
|
#include <asm/tlbflush.h>
|
|
|
|
extern void cpu_resume(void);
|
|
|
|
/*
|
|
* Hide the first two arguments to __cpu_suspend - these are an implementation
|
|
* detail which platform code shouldn't have to know about.
|
|
*/
|
|
static inline int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
|
{
|
|
extern int __cpu_suspend(int, long, unsigned long,
|
|
int (*)(unsigned long));
|
|
int ret = __cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, arg, fn);
|
|
flush_tlb_all();
|
|
return ret;
|
|
}
|
|
|
|
#endif
|