diff options
Diffstat (limited to 'arch/mips/kernel/idle.c')
| -rw-r--r-- | arch/mips/kernel/idle.c | 36 | 
1 files changed, 19 insertions, 17 deletions
diff --git a/arch/mips/kernel/idle.c b/arch/mips/kernel/idle.c index f7991d95bff..09ce4598075 100644 --- a/arch/mips/kernel/idle.c +++ b/arch/mips/kernel/idle.c @@ -64,7 +64,7 @@ void r4k_wait_irqoff(void)  	if (!need_resched())  		__asm__(  		"	.set	push		\n" -		"	.set	mips3		\n" +		"	.set	arch=r4000	\n"  		"	wait			\n"  		"	.set	pop		\n");  	local_irq_enable(); @@ -82,7 +82,7 @@ static void rm7k_wait_irqoff(void)  	if (!need_resched())  		__asm__(  		"	.set	push					\n" -		"	.set	mips3					\n" +		"	.set	arch=r4000				\n"  		"	.set	noat					\n"  		"	mfc0	$1, $12					\n"  		"	sync						\n" @@ -103,7 +103,7 @@ static void au1k_wait(void)  	unsigned long c0status = read_c0_status() | 1;	/* irqs on */  	__asm__( -	"	.set	mips3			\n" +	"	.set	arch=r4000			\n"  	"	cache	0x14, 0(%0)		\n"  	"	cache	0x14, 32(%0)		\n"  	"	sync				\n" @@ -184,6 +184,11 @@ void __init check_wait(void)  	case CPU_24K:  	case CPU_34K:  	case CPU_1004K: +	case CPU_1074K: +	case CPU_INTERAPTIV: +	case CPU_PROAPTIV: +	case CPU_P5600: +	case CPU_M5150:  		cpu_wait = r4k_wait;  		if (read_c0_config7() & MIPS_CONF7_WII)  			cpu_wait = r4k_wait_irqoff; @@ -219,29 +224,26 @@ void __init check_wait(void)  		   cpu_wait = r4k_wait;  		 */  		break; -	case CPU_RM9000: -		if ((c->processor_id & 0x00ff) >= 0x40) -			cpu_wait = r4k_wait; -		break;  	default:  		break;  	}  } -static void smtc_idle_hook(void) -{ -#ifdef CONFIG_MIPS_MT_SMTC -	void smtc_idle_loop_hook(void); - -	smtc_idle_loop_hook(); -#endif -} -  void arch_cpu_idle(void)  { -	smtc_idle_hook();  	if (cpu_wait)  		cpu_wait();  	else  		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  | 
