|
@@ -47,7 +47,7 @@ static void interrupt_event_handler(struct controller *ctrl);
|
|
|
|
|
|
|
|
|
static struct task_struct *cpqhp_event_thread;
|
|
|
-static unsigned long pushbutton_pending; /* = 0 */
|
|
|
+static struct timer_list *pushbutton_pending; /* = NULL */
|
|
|
|
|
|
/* delay is in jiffies to wait for */
|
|
|
static void long_delay(int delay)
|
|
@@ -1732,9 +1732,10 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static void pushbutton_helper_thread(unsigned long data)
|
|
|
+static void pushbutton_helper_thread(struct timer_list *t)
|
|
|
{
|
|
|
- pushbutton_pending = data;
|
|
|
+ pushbutton_pending = t;
|
|
|
+
|
|
|
wake_up_process(cpqhp_event_thread);
|
|
|
}
|
|
|
|
|
@@ -1883,13 +1884,13 @@ static void interrupt_event_handler(struct controller *ctrl)
|
|
|
wait_for_ctrl_irq(ctrl);
|
|
|
|
|
|
mutex_unlock(&ctrl->crit_sect);
|
|
|
- init_timer(&p_slot->task_event);
|
|
|
+ timer_setup(&p_slot->task_event,
|
|
|
+ pushbutton_helper_thread,
|
|
|
+ 0);
|
|
|
p_slot->hp_slot = hp_slot;
|
|
|
p_slot->ctrl = ctrl;
|
|
|
/* p_slot->physical_slot = physical_slot; */
|
|
|
p_slot->task_event.expires = jiffies + 5 * HZ; /* 5 second delay */
|
|
|
- p_slot->task_event.function = pushbutton_helper_thread;
|
|
|
- p_slot->task_event.data = (u32) p_slot;
|
|
|
|
|
|
dbg("add_timer p_slot = %p\n", p_slot);
|
|
|
add_timer(&p_slot->task_event);
|
|
@@ -1920,15 +1921,15 @@ static void interrupt_event_handler(struct controller *ctrl)
|
|
|
* Scheduled procedure to handle blocking stuff for the pushbuttons.
|
|
|
* Handles all pending events and exits.
|
|
|
*/
|
|
|
-void cpqhp_pushbutton_thread(unsigned long slot)
|
|
|
+void cpqhp_pushbutton_thread(struct timer_list *t)
|
|
|
{
|
|
|
u8 hp_slot;
|
|
|
u8 device;
|
|
|
struct pci_func *func;
|
|
|
- struct slot *p_slot = (struct slot *) slot;
|
|
|
+ struct slot *p_slot = from_timer(p_slot, t, task_event);
|
|
|
struct controller *ctrl = (struct controller *) p_slot->ctrl;
|
|
|
|
|
|
- pushbutton_pending = 0;
|
|
|
+ pushbutton_pending = NULL;
|
|
|
hp_slot = p_slot->hp_slot;
|
|
|
|
|
|
device = p_slot->device;
|