|
@@ -38,6 +38,7 @@
|
|
|
#define PANIC_FREQ (HZ / 8)
|
|
|
|
|
|
static struct timer_list power_timer, blink_timer, debounce_timer;
|
|
|
+static unsigned long blink_timer_timeout;
|
|
|
|
|
|
#define MACHINE_PANICED 1
|
|
|
#define MACHINE_SHUTTING_DOWN 2
|
|
@@ -81,21 +82,21 @@ static void __noreturn sgi_machine_halt(void)
|
|
|
ArcEnterInteractiveMode();
|
|
|
}
|
|
|
|
|
|
-static void power_timeout(unsigned long data)
|
|
|
+static void power_timeout(struct timer_list *unused)
|
|
|
{
|
|
|
sgi_machine_power_off();
|
|
|
}
|
|
|
|
|
|
-static void blink_timeout(unsigned long data)
|
|
|
+static void blink_timeout(struct timer_list *unused)
|
|
|
{
|
|
|
/* XXX fix this for fullhouse */
|
|
|
sgi_ioc_reset ^= (SGIOC_RESET_LC0OFF|SGIOC_RESET_LC1OFF);
|
|
|
sgioc->reset = sgi_ioc_reset;
|
|
|
|
|
|
- mod_timer(&blink_timer, jiffies + data);
|
|
|
+ mod_timer(&blink_timer, jiffies + blink_timer_timeout);
|
|
|
}
|
|
|
|
|
|
-static void debounce(unsigned long data)
|
|
|
+static void debounce(struct timer_list *unused)
|
|
|
{
|
|
|
del_timer(&debounce_timer);
|
|
|
if (sgint->istat1 & SGINT_ISTAT1_PWR) {
|
|
@@ -128,11 +129,10 @@ static inline void power_button(void)
|
|
|
}
|
|
|
|
|
|
machine_state |= MACHINE_SHUTTING_DOWN;
|
|
|
- blink_timer.data = POWERDOWN_FREQ;
|
|
|
- blink_timeout(POWERDOWN_FREQ);
|
|
|
+ blink_timer_timeout = POWERDOWN_FREQ;
|
|
|
+ blink_timeout(&blink_timer);
|
|
|
|
|
|
- init_timer(&power_timer);
|
|
|
- power_timer.function = power_timeout;
|
|
|
+ timer_setup(&power_timer, power_timeout, 0);
|
|
|
power_timer.expires = jiffies + POWERDOWN_TIMEOUT * HZ;
|
|
|
add_timer(&power_timer);
|
|
|
}
|
|
@@ -147,8 +147,7 @@ static irqreturn_t panel_int(int irq, void *dev_id)
|
|
|
if (sgint->istat1 & SGINT_ISTAT1_PWR) {
|
|
|
/* Wait until interrupt goes away */
|
|
|
disable_irq_nosync(SGI_PANEL_IRQ);
|
|
|
- init_timer(&debounce_timer);
|
|
|
- debounce_timer.function = debounce;
|
|
|
+ timer_setup(&debounce_timer, debounce, 0);
|
|
|
debounce_timer.expires = jiffies + 5;
|
|
|
add_timer(&debounce_timer);
|
|
|
}
|
|
@@ -171,8 +170,8 @@ static int panic_event(struct notifier_block *this, unsigned long event,
|
|
|
return NOTIFY_DONE;
|
|
|
machine_state |= MACHINE_PANICED;
|
|
|
|
|
|
- blink_timer.data = PANIC_FREQ;
|
|
|
- blink_timeout(PANIC_FREQ);
|
|
|
+ blink_timer_timeout = PANIC_FREQ;
|
|
|
+ blink_timeout(&blink_timer);
|
|
|
|
|
|
return NOTIFY_DONE;
|
|
|
}
|
|
@@ -195,8 +194,7 @@ static int __init reboot_setup(void)
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
- init_timer(&blink_timer);
|
|
|
- blink_timer.function = blink_timeout;
|
|
|
+ timer_setup(&blink_timer, blink_timeout, 0);
|
|
|
atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
|
|
|
|
|
|
return 0;
|