Commit da9f970f authored by Paul Burton's avatar Paul Burton

MIPS: cpuidle wait instruction state

Defines a macro intended to allow trivial use of the regular MIPS wait
instruction from cpuidle drivers, which may simply invoke the macro
within their array of states.
Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
parent 0155a065
#ifndef __ASM_IDLE_H #ifndef __ASM_IDLE_H
#define __ASM_IDLE_H #define __ASM_IDLE_H
#include <linux/cpuidle.h>
#include <linux/linkage.h> #include <linux/linkage.h>
extern void (*cpu_wait)(void); extern void (*cpu_wait)(void);
...@@ -20,4 +21,17 @@ static inline int address_is_in_r4k_wait_irqoff(unsigned long addr) ...@@ -20,4 +21,17 @@ static inline int address_is_in_r4k_wait_irqoff(unsigned long addr)
addr < (unsigned long)__pastwait; addr < (unsigned long)__pastwait;
} }
extern int mips_cpuidle_wait_enter(struct cpuidle_device *dev,
struct cpuidle_driver *drv, int index);
#define MIPS_CPUIDLE_WAIT_STATE {\
.enter = mips_cpuidle_wait_enter,\
.exit_latency = 1,\
.target_residency = 1,\
.power_usage = UINT_MAX,\
.flags = CPUIDLE_FLAG_TIME_VALID,\
.name = "wait",\
.desc = "MIPS wait",\
}
#endif /* __ASM_IDLE_H */ #endif /* __ASM_IDLE_H */
...@@ -250,3 +250,14 @@ void arch_cpu_idle(void) ...@@ -250,3 +250,14 @@ void arch_cpu_idle(void)
else else
local_irq_enable(); local_irq_enable();
} }
#ifdef CONFIG_CPU_IDLE
int mips_cpuidle_wait_enter(struct cpuidle_device *dev,
struct cpuidle_driver *drv, int index)
{
arch_cpu_idle();
return index;
}
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment