diff --git a/kernel/nv.c b/kernel/nv.c index 7c9bb1f..7d31456 100644 --- a/kernel/nv.c +++ b/kernel/nv.c @@ -301,7 +301,7 @@ irqreturn_t nv_kern_isr(int, void *, struct pt_regs *); #else irqreturn_t nv_kern_isr(int, void *); #endif -void nv_kern_rc_timer(unsigned long); +void nv_kern_rc_timer(struct timer_list*); #if defined(NV_PM_SUPPORT_OLD_STYLE_APM) static int nv_kern_apm_event(struct pm_dev *, pm_request_t, void *); #endif @@ -2075,10 +2075,10 @@ void nv_kern_isr_bh( } void nv_kern_rc_timer( - unsigned long data + struct timer_list *timer ) { - nv_linux_state_t *nvl = (nv_linux_state_t *) data; + nv_linux_state_t *nvl = from_timer(nvl, timer, rc_timer); nv_state_t *nv = NV_STATE_PTR(nvl); NV_CHECK_PCI_CONFIG_SPACE(nvl->timer_sp, nv, TRUE, TRUE, FALSE); @@ -3029,9 +3029,7 @@ int NV_API_CALL nv_start_rc_timer( return -1; nv_printf(NV_DBG_INFO, "NVRM: initializing rc timer\n"); - init_timer(&nvl->rc_timer); - nvl->rc_timer.function = nv_kern_rc_timer; - nvl->rc_timer.data = (unsigned long) nv; + timer_setup(&nvl->rc_timer, nv_kern_rc_timer, 0); nv->rc_timer_enabled = 1; mod_timer(&nvl->rc_timer, jiffies + HZ); /* set our timeout for 1 second */ nv_printf(NV_DBG_INFO, "NVRM: rc timer initialized\n");