diff options
Diffstat (limited to 'arch/mips/cobalt/reset.c')
-rw-r--r-- | arch/mips/cobalt/reset.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/arch/mips/cobalt/reset.c b/arch/mips/cobalt/reset.c index 71eb4cc..516b442 100644 --- a/arch/mips/cobalt/reset.c +++ b/arch/mips/cobalt/reset.c @@ -10,9 +10,10 @@ */ #include <linux/init.h> #include <linux/io.h> -#include <linux/jiffies.h> #include <linux/leds.h> +#include <asm/processor.h> + #include <cobalt.h> #define RESET_PORT ((void __iomem *)CKSEG1ADDR(0x1c000000)) @@ -29,28 +30,15 @@ device_initcall(ledtrig_power_off_init); void cobalt_machine_halt(void) { - int state, last, diff; - unsigned long mark; - /* * turn on power off LED on RaQ - * - * restart if ENTER and SELECT are pressed */ - - last = COBALT_KEY_PORT; - led_trigger_event(power_off_led_trigger, LED_FULL); - for (state = 0;;) { - diff = COBALT_KEY_PORT ^ last; - last ^= diff; - - if((diff & (COBALT_KEY_ENTER | COBALT_KEY_SELECT)) && !(~last & (COBALT_KEY_ENTER | COBALT_KEY_SELECT))) - writeb(RESET, RESET_PORT); - - for (mark = jiffies; jiffies - mark < HZ;) - ; + local_irq_disable(); + while (1) { + if (cpu_wait) + cpu_wait(); } } |