* Use timer struct to check if the given source is initialized
         * by wakeup_source_add.
         */
-       return ws->timer.function != (TIMER_FUNC_TYPE)pm_wakeup_timer_fn;
+       return ws->timer.function != pm_wakeup_timer_fn;
 }
 
 /*
 
 
        d->rttavg = RTTAVG_INIT;
        d->rttdev = RTTDEV_INIT;
-       d->timer.function = (TIMER_FUNC_TYPE)rexmit_timer;
+       d->timer.function = rexmit_timer;
 
        skb = skb_clone(skb, GFP_ATOMIC);
        if (skb) {
 
        if (fs->timeout_pending)
                del_timer(&fs->timeout);
        fs->timeout.expires = jiffies + nticks;
-       fs->timeout.function = (TIMER_FUNC_TYPE)proc;
+       fs->timeout.function = proc;
        add_timer(&fs->timeout);
        fs->timeout_pending = 1;
 }
 
        if (!nesvnic->event_timer.function) {
                ib_dispatch_event(&event);
                nesvnic->last_dispatched_event = event.event;
-               nesvnic->event_timer.function = (TIMER_FUNC_TYPE)nes_handle_delayed_event;
+               nesvnic->event_timer.function = nes_handle_delayed_event;
                nesvnic->event_timer.expires = jiffies + NES_EVENT_DELAY;
                add_timer(&nesvnic->event_timer);
        } else {
 
  */
 void input_enable_softrepeat(struct input_dev *dev, int delay, int period)
 {
-       dev->timer.function = (TIMER_FUNC_TYPE)input_repeat_key;
+       dev->timer.function = input_repeat_key;
        dev->rep[REP_DELAY] = delay;
        dev->rep[REP_PERIOD] = period;
 }
 
                            sizeof(struct saa7146_buf),
                            file, &dev->v4l2_lock);
 
-       vv->vbi_read_timeout.function = (TIMER_FUNC_TYPE)vbi_read_timeout;
+       vv->vbi_read_timeout.function = vbi_read_timeout;
        vv->vbi_read_timeout_file = file;
 
        /* initialize the brs */
 
                        spin_unlock_irqrestore(&priv->lock, flags);
                return;
        }
-       priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
+       priv->timer.function = tlan_timer;
        if (!in_irq())
                spin_unlock_irqrestore(&priv->lock, flags);
 
                tlan_dio_write8(dev->base_addr,
                                TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
                if (priv->timer.function == NULL) {
-                       priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
+                       priv->timer.function = tlan_timer;
                        priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
                        priv->timer_set_at = jiffies;
                        priv->timer_type = TLAN_TIMER_ACTIVITY;
                tlan_dio_write8(dev->base_addr,
                                TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
                if (priv->timer.function == NULL)  {
-                       priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
+                       priv->timer.function = tlan_timer;
                        priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
                        priv->timer_set_at = jiffies;
                        priv->timer_type = TLAN_TIMER_ACTIVITY;
 
        } else 
        if (when != TIMER_OFF)
        {
-               scc->tx_t.function = (TIMER_FUNC_TYPE)handler;
+               scc->tx_t.function = handler;
                scc->tx_t.expires = jiffies + (when*HZ)/100;
                add_timer(&scc->tx_t);
        }
        
        if (scc->kiss.maxdefer != 0 && scc->kiss.maxdefer != TIMER_OFF)
        {
-               scc->tx_wdog.function = (TIMER_FUNC_TYPE)t_busy;
+               scc->tx_wdog.function = t_busy;
                scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxdefer;
                add_timer(&scc->tx_wdog);
        }
        
        if (scc->kiss.maxkeyup != 0 && scc->kiss.maxkeyup != TIMER_OFF)
        {
-               scc->tx_wdog.function = (TIMER_FUNC_TYPE)t_maxkeyup;
+               scc->tx_wdog.function = t_maxkeyup;
                scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxkeyup;
                add_timer(&scc->tx_wdog);
        }
 
        del_timer(&scc->tx_wdog);
 
-       scc->tx_wdog.function = (TIMER_FUNC_TYPE)scc_stop_calibrate;
+       scc->tx_wdog.function = scc_stop_calibrate;
        scc->tx_wdog.expires = jiffies + HZ*duration;
        add_timer(&scc->tx_wdog);
 
 
                return -EFAULT;
        }
 
-       mac->scan_timeout.function = (TIMER_FUNC_TYPE)qtnf_scan_timeout;
+       mac->scan_timeout.function = qtnf_scan_timeout;
        mod_timer(&mac->scan_timeout,
                  jiffies + QTNF_SCAN_TIMEOUT_SEC * HZ);
 
 
        local->card_status = CARD_DL_PARAM;
        /* Start kernel timer to wait for dl startup to complete. */
        local->timer.expires = jiffies + HZ / 2;
-       local->timer.function = (TIMER_FUNC_TYPE)verify_dl_startup;
+       local->timer.function = verify_dl_startup;
        add_timer(&local->timer);
        dev_dbg(&link->dev,
              "ray_cs dl_startup_params started timer for verify_dl_startup\n");
                                        dev_dbg(&link->dev,
                                              "ray_cs interrupt network \"%s\" start failed\n",
                                              memtmp);
-                                       local->timer.function = (TIMER_FUNC_TYPE)start_net;
+                                       local->timer.function = start_net;
                                } else {
                                        dev_dbg(&link->dev,
                                              "ray_cs interrupt network \"%s\" join failed\n",
                                              memtmp);
-                                       local->timer.function = (TIMER_FUNC_TYPE)join_net;
+                                       local->timer.function = join_net;
                                }
                                add_timer(&local->timer);
                        }
 
        del_timer(&local->timer);
        if (build_auth_frame(local, local->bss_id, OPEN_AUTH_REQUEST)) {
-               local->timer.function = (TIMER_FUNC_TYPE)join_net;
+               local->timer.function = join_net;
        } else {
-               local->timer.function = (TIMER_FUNC_TYPE)authenticate_timeout;
+               local->timer.function = authenticate_timeout;
        }
        local->timer.expires = jiffies + HZ * 2;
        add_timer(&local->timer);
 
                del_timer(&local->timer);
                local->timer.expires = jiffies + HZ * 2;
-               local->timer.function = (TIMER_FUNC_TYPE)join_net;
+               local->timer.function = join_net;
                add_timer(&local->timer);
                local->card_status = CARD_ASSOC_FAILED;
                return;
 
 __sclp_set_request_timer(unsigned long time, void (*cb)(struct timer_list *))
 {
        del_timer(&sclp_request_timer);
-       sclp_request_timer.function = (TIMER_FUNC_TYPE)cb;
+       sclp_request_timer.function = cb;
        sclp_request_timer.expires = jiffies + time;
        add_timer(&sclp_request_timer);
 }
                if (timer_pending(&sclp_request_timer) &&
                    get_tod_clock_fast() > timeout &&
                    del_timer(&sclp_request_timer))
-                       sclp_request_timer.function((TIMER_DATA_TYPE)&sclp_request_timer);
+                       sclp_request_timer.function(&sclp_request_timer);
                cpu_relax();
        }
        local_irq_disable();
 
 static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req,
                                 unsigned long timeout)
 {
-       fsf_req->timer.function = (TIMER_FUNC_TYPE)zfcp_fsf_request_timeout_handler;
+       fsf_req->timer.function = zfcp_fsf_request_timeout_handler;
        fsf_req->timer.expires = jiffies + timeout;
        add_timer(&fsf_req->timer);
 }
 static void zfcp_fsf_start_erp_timer(struct zfcp_fsf_req *fsf_req)
 {
        BUG_ON(!fsf_req->erp_action);
-       fsf_req->timer.function = (TIMER_FUNC_TYPE)zfcp_erp_timeout_handler;
+       fsf_req->timer.function = zfcp_erp_timeout_handler;
        fsf_req->timer.expires = jiffies + 30 * HZ;
        add_timer(&fsf_req->timer);
 }
 
        struct asd_ascb *ascb;
        list_for_each_entry(ascb, list, list) {
                if (!ascb->uldd_timer) {
-                       ascb->timer.function = (TIMER_FUNC_TYPE)asd_ascb_timedout;
+                       ascb->timer.function = asd_ascb_timedout;
                        ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
                        add_timer(&ascb->timer);
                }
 
        ascb->tasklet_complete = tasklet_complete;
        ascb->uldd_timer = 1;
 
-       ascb->timer.function = (TIMER_FUNC_TYPE)timed_out;
+       ascb->timer.function = timed_out;
        ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
 
        add_timer(&ascb->timer);
 
                if (!test_bit(BEISCSI_HBA_UER_SUPP, &phba->state))
                        return;
                /* modify this timer to check TPE */
-               phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_tpe_check;
+               phba->hw_check.function = beiscsi_hw_tpe_check;
        }
 
        mod_timer(&phba->hw_check,
         * Timer function gets modified for TPE detection.
         * Always reinit to do health check first.
         */
-       phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_health_check;
+       phba->hw_check.function = beiscsi_hw_health_check;
        mod_timer(&phba->hw_check,
                  jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL));
        return 0;
 
        cxgbi_sock_get(csk);
        spin_lock_bh(&csk->lock);
        if (rpl->status == CPL_ERR_CONN_EXIST &&
-           csk->retry_timer.function != (TIMER_FUNC_TYPE)act_open_retry_timer) {
-               csk->retry_timer.function = (TIMER_FUNC_TYPE)act_open_retry_timer;
+           csk->retry_timer.function != act_open_retry_timer) {
+               csk->retry_timer.function = act_open_retry_timer;
                mod_timer(&csk->retry_timer, jiffies + HZ / 2);
        } else
                cxgbi_sock_fail_act_open(csk,
 
        spin_lock_bh(&csk->lock);
 
        if (status == CPL_ERR_CONN_EXIST &&
-           csk->retry_timer.function != (TIMER_FUNC_TYPE)csk_act_open_retry_timer) {
-               csk->retry_timer.function = (TIMER_FUNC_TYPE)csk_act_open_retry_timer;
+           csk->retry_timer.function != csk_act_open_retry_timer) {
+               csk->retry_timer.function = csk_act_open_retry_timer;
                mod_timer(&csk->retry_timer, jiffies + HZ / 2);
        } else
                cxgbi_sock_fail_act_open(csk,
 
                }
                task->task_done = hisi_sas_task_done;
 
-               task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout;
+               task->slow_task->timer.function = hisi_sas_tmf_timedout;
                task->slow_task->timer.expires = jiffies + TASK_TIMEOUT*HZ;
                add_timer(&task->slow_task->timer);
 
        task->dev = device;
        task->task_proto = device->tproto;
        task->task_done = hisi_sas_task_done;
-       task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout;
+       task->slow_task->timer.function = hisi_sas_tmf_timedout;
        task->slow_task->timer.expires = jiffies + msecs_to_jiffies(110);
        add_timer(&task->slow_task->timer);
 
 
                }
        }
 
-       hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link;
+       hisi_hba->timer.function = link_timeout_disable_link;
        mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(900));
 }
 
                }
        }
 
-       hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_enable_link;
+       hisi_hba->timer.function = link_timeout_enable_link;
        mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(100));
 }
 
 static void set_link_timer_quirk(struct hisi_hba *hisi_hba)
 {
-       hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link;
+       hisi_hba->timer.function = link_timeout_disable_link;
        hisi_hba->timer.expires = jiffies + msecs_to_jiffies(1000);
        add_timer(&hisi_hba->timer);
 }
 
        ipr_cmd->done = done;
 
        ipr_cmd->timer.expires = jiffies + timeout;
-       ipr_cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func;
+       ipr_cmd->timer.function = timeout_func;
 
        add_timer(&ipr_cmd->timer);
 
        ipr_cmd->done = ipr_reset_ioa_job;
 
        ipr_cmd->timer.expires = jiffies + timeout;
-       ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_reset_timer_done;
+       ipr_cmd->timer.function = ipr_reset_timer_done;
        add_timer(&ipr_cmd->timer);
 }
 
        }
 
        ipr_cmd->timer.expires = jiffies + stage_time * HZ;
-       ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout;
+       ipr_cmd->timer.function = ipr_oper_timeout;
        ipr_cmd->done = ipr_reset_ioa_job;
        add_timer(&ipr_cmd->timer);
 
        }
 
        ipr_cmd->timer.expires = jiffies + (ioa_cfg->transop_timeout * HZ);
-       ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout;
+       ipr_cmd->timer.function = ipr_oper_timeout;
        ipr_cmd->done = ipr_reset_ioa_job;
        add_timer(&ipr_cmd->timer);
        list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q);
 
        fsp->seq_ptr = seq;
        fc_fcp_pkt_hold(fsp);   /* hold for fc_fcp_pkt_destroy */
 
-       fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
+       fsp->timer.function = fc_fcp_timeout;
        if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED)
                fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
 
                        return;
                if (fc_fcp_lock_pkt(fsp))
                        return;
-               fsp->timer.function = (TIMER_FUNC_TYPE)fc_lun_reset_send;
+               fsp->timer.function = fc_lun_reset_send;
                fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
                fc_fcp_unlock_pkt(fsp);
        }
        if (fsp->lp->qfull) {
                FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n",
                           fsp->timer_delay);
-               fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
+               fsp->timer.function = fc_fcp_timeout;
                fc_fcp_timer_set(fsp, fsp->timer_delay);
                goto unlock;
        }
 
 
                task->task_done = smp_task_done;
 
-               task->slow_task->timer.function = (TIMER_FUNC_TYPE)smp_task_timedout;
+               task->slow_task->timer.function = smp_task_timedout;
                task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
                add_timer(&task->slow_task->timer);
 
 
                        return;
                if (!del_timer(&slow->timer))
                        return;
-               slow->timer.function((TIMER_DATA_TYPE)&slow->timer);
+               slow->timer.function(&slow->timer);
                return;
        }
 
 
                memcpy(&task->ssp_task, parameter, para_len);
                task->task_done = mvs_task_done;
 
-               task->slow_task->timer.function = (TIMER_FUNC_TYPE)mvs_tmf_timedout;
+               task->slow_task->timer.function = mvs_tmf_timedout;
                task->slow_task->timer.expires = jiffies + MVS_TASK_TIMEOUT*HZ;
                add_timer(&task->slow_task->timer);
 
                MVS_CHIP_DISP->write_port_irq_mask(mvi, phy_no,
                                        tmp | PHYEV_SIG_FIS);
                if (phy->timer.function == NULL) {
-                       phy->timer.function = (TIMER_FUNC_TYPE)mvs_sig_time_out;
+                       phy->timer.function = mvs_sig_time_out;
                        phy->timer.expires = jiffies + 5*HZ;
                        add_timer(&phy->timer);
                }
 
                task->task_proto = dev->tproto;
                memcpy(&task->ssp_task, parameter, para_len);
                task->task_done = pm8001_task_done;
-               task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
+               task->slow_task->timer.function = pm8001_tmf_timedout;
                task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT*HZ;
                add_timer(&task->slow_task->timer);
 
                task->dev = dev;
                task->task_proto = dev->tproto;
                task->task_done = pm8001_task_done;
-               task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
+               task->slow_task->timer.function = pm8001_tmf_timedout;
                task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ;
                add_timer(&task->slow_task->timer);
 
 
 
        cmd->time_left = msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
        cmd->timer.expires = jiffies + msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
-       cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_bist_done;
+       cmd->timer.function = pmcraid_bist_done;
        add_timer(&cmd->timer);
 }
 
                /* restart timer if some more time is available to wait */
                cmd->time_left -= PMCRAID_CHECK_FOR_RESET_TIMEOUT;
                cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
-               cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done;
+               cmd->timer.function = pmcraid_reset_alert_done;
                add_timer(&cmd->timer);
        }
 }
                 */
                cmd->time_left = PMCRAID_RESET_TIMEOUT;
                cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
-               cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done;
+               cmd->timer.function = pmcraid_reset_alert_done;
                add_timer(&cmd->timer);
 
                iowrite32(DOORBELL_IOA_RESET_ALERT,
        if (timeout_func) {
                /* setup timeout handler */
                cmd->timer.expires = jiffies + timeout;
-               cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func;
+               cmd->timer.function = timeout_func;
                add_timer(&cmd->timer);
        }
 
        cmd->cmd_done = pmcraid_ioa_reset;
        cmd->timer.expires = jiffies +
                             msecs_to_jiffies(PMCRAID_TRANSOP_TIMEOUT);
-       cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_timeout_handler;
+       cmd->timer.function = pmcraid_timeout_handler;
 
        if (!timer_pending(&cmd->timer))
                add_timer(&cmd->timer);
 
 static inline void irda_start_timer(struct timer_list *ptimer, int timeout,
                                    void (*callback)(struct timer_list *))
 {
-       ptimer->function = (TIMER_FUNC_TYPE) callback;
+       ptimer->function =  callback;
 
        /* Set new value for timer (update or add timer).
         * We use mod_timer() because it's more efficient and also
 
        if (up->bugs & UART_BUG_THRE) {
                pr_debug("ttyS%d - using backup timer\n", serial_index(port));
 
-               up->timer.function = (TIMER_FUNC_TYPE)serial8250_backup_timeout;
+               up->timer.function = serial8250_backup_timeout;
                mod_timer(&up->timer, jiffies +
                          uart_poll_timeout(port) + HZ / 5);
        }
        struct uart_port *port = &up->port;
 
        del_timer_sync(&up->timer);
-       up->timer.function = (TIMER_FUNC_TYPE)serial8250_timeout;
+       up->timer.function = serial8250_timeout;
        if (port->irq)
                serial_unlink_irq_chain(up);
 }
 
 
 #define KTHREAD_DELAYED_WORK_INIT(dwork, fn) {                         \
        .work = KTHREAD_WORK_INIT((dwork).work, (fn)),                  \
-       .timer = __TIMER_INITIALIZER((TIMER_FUNC_TYPE)kthread_delayed_work_timer_fn,\
+       .timer = __TIMER_INITIALIZER(kthread_delayed_work_timer_fn,\
                                     TIMER_IRQSAFE),                    \
        }
 
 
 
 #define TIMER_TRACE_FLAGMASK   (TIMER_MIGRATING | TIMER_DEFERRABLE | TIMER_PINNED | TIMER_IRQSAFE)
 
-#define TIMER_DATA_TYPE                struct timer_list *
-#define TIMER_FUNC_TYPE                void (*)(TIMER_DATA_TYPE)
-
 #define __TIMER_INITIALIZER(_function, _flags) {               \
                .entry = { .next = TIMER_ENTRY_STATIC },        \
                .function = (_function),                        \
 
 #define DEFINE_TIMER(_name, _function)                         \
        struct timer_list _name =                               \
-               __TIMER_INITIALIZER((TIMER_FUNC_TYPE)_function, 0)
+               __TIMER_INITIALIZER(_function, 0)
 
 /*
  * LOCKDEP and DEBUG timer interfaces.
 
 
 #define __DELAYED_WORK_INITIALIZER(n, f, tflags) {                     \
        .work = __WORK_INITIALIZER((n).work, (f)),                      \
-       .timer = __TIMER_INITIALIZER((TIMER_FUNC_TYPE)delayed_work_timer_fn,\
+       .timer = __TIMER_INITIALIZER(delayed_work_timer_fn,\
                                     (tflags) | TIMER_IRQSAFE),         \
        }
 
 
        struct timer_list *timer = &dwork->timer;
        struct kthread_work *work = &dwork->work;
 
-       WARN_ON_ONCE(timer->function != (TIMER_FUNC_TYPE)kthread_delayed_work_timer_fn);
+       WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn);
 
        /*
         * If @delay is 0, queue @dwork->work immediately.  This is for
 
        struct work_struct *work = &dwork->work;
 
        WARN_ON_ONCE(!wq);
-       WARN_ON_ONCE(timer->function != (TIMER_FUNC_TYPE)delayed_work_timer_fn);
+       WARN_ON_ONCE(timer->function != delayed_work_timer_fn);
        WARN_ON_ONCE(timer_pending(timer));
        WARN_ON_ONCE(!list_empty(&work->entry));
 
 
                else
                        send_to_lecd(priv, l_arp_xmt, mac_to_find, NULL, NULL);
                entry->timer.expires = jiffies + (1 * HZ);
-               entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_arp;
+               entry->timer.function = lec_arp_expire_arp;
                add_timer(&entry->timer);
                found = priv->mcast_vcc;
        }
                entry->old_recv_push = old_push;
                entry->status = ESI_UNKNOWN;
                entry->timer.expires = jiffies + priv->vcc_timeout_period;
-               entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_vcc;
+               entry->timer.function = lec_arp_expire_vcc;
                hlist_add_head(&entry->next, &priv->lec_no_forward);
                add_timer(&entry->timer);
                dump_arp_table(priv);
        entry->status = ESI_UNKNOWN;
        hlist_add_head(&entry->next, &priv->lec_arp_empty_ones);
        entry->timer.expires = jiffies + priv->vcc_timeout_period;
-       entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_vcc;
+       entry->timer.function = lec_arp_expire_vcc;
        add_timer(&entry->timer);
        pr_debug("After vcc was added\n");
        dump_arp_table(priv);
 
 
        seq_putc(m, '\n');
 
-       if (net->can.can_stattimer.function == (TIMER_FUNC_TYPE)can_stat_update) {
+       if (net->can.can_stattimer.function == can_stat_update) {
                seq_printf(m, " %8ld %% total match ratio (RXMR)\n",
                                can_stats->total_rx_match_ratio);
 
 
        user_reset = 1;
 
-       if (net->can.can_stattimer.function == (TIMER_FUNC_TYPE)can_stat_update) {
+       if (net->can.can_stattimer.function == can_stat_update) {
                seq_printf(m, "Scheduled statistic reset #%ld.\n",
                                can_pstats->stats_reset + 1);
        } else {
 
 {
        del_timer(&lapb->t1timer);
 
-       lapb->t1timer.function = (TIMER_FUNC_TYPE)lapb_t1timer_expiry;
+       lapb->t1timer.function = lapb_t1timer_expiry;
        lapb->t1timer.expires  = jiffies + lapb->t1;
 
        add_timer(&lapb->t1timer);
 {
        del_timer(&lapb->t2timer);
 
-       lapb->t2timer.function = (TIMER_FUNC_TYPE)lapb_t2timer_expiry;
+       lapb->t2timer.function = lapb_t2timer_expiry;
        lapb->t2timer.expires  = jiffies + lapb->t2;
 
        add_timer(&lapb->t2timer);
 
 
        if (sk_has_allocations(sk)) {
                /* Defer: outstanding buffers */
-               sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_destroy_timer;
+               sk->sk_timer.function = nr_destroy_timer;
                sk->sk_timer.expires  = jiffies + 2 * HZ;
                add_timer(&sk->sk_timer);
        } else
 
        timer_setup(&nr->idletimer, nr_idletimer_expiry, 0);
 
        /* initialized by sock_init_data */
-       sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_heartbeat_expiry;
+       sk->sk_timer.function = nr_heartbeat_expiry;
 }
 
 void nr_start_t1timer(struct sock *sk)
 
 {
        del_timer(&neigh->ftimer);
 
-       neigh->ftimer.function = (TIMER_FUNC_TYPE)rose_ftimer_expiry;
+       neigh->ftimer.function = rose_ftimer_expiry;
        neigh->ftimer.expires  =
                jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout);
 
 {
        del_timer(&neigh->t0timer);
 
-       neigh->t0timer.function = (TIMER_FUNC_TYPE)rose_t0timer_expiry;
+       neigh->t0timer.function = rose_t0timer_expiry;
        neigh->t0timer.expires  =
                jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout);
 
 
 {
        del_timer(&sk->sk_timer);
 
-       sk->sk_timer.function = (TIMER_FUNC_TYPE)rose_heartbeat_expiry;
+       sk->sk_timer.function = rose_heartbeat_expiry;
        sk->sk_timer.expires  = jiffies + 5 * HZ;
 
        add_timer(&sk->sk_timer);
 
        del_timer(&rose->timer);
 
-       rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
+       rose->timer.function = rose_timer_expiry;
        rose->timer.expires  = jiffies + rose->t1;
 
        add_timer(&rose->timer);
 
        del_timer(&rose->timer);
 
-       rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
+       rose->timer.function = rose_timer_expiry;
        rose->timer.expires  = jiffies + rose->t2;
 
        add_timer(&rose->timer);
 
        del_timer(&rose->timer);
 
-       rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
+       rose->timer.function = rose_timer_expiry;
        rose->timer.expires  = jiffies + rose->t3;
 
        add_timer(&rose->timer);
 
        del_timer(&rose->timer);
 
-       rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
+       rose->timer.function = rose_timer_expiry;
        rose->timer.expires  = jiffies + rose->hb;
 
        add_timer(&rose->timer);
        del_timer(&rose->idletimer);
 
        if (rose->idle > 0) {
-               rose->idletimer.function = (TIMER_FUNC_TYPE)rose_idletimer_expiry;
+               rose->idletimer.function = rose_idletimer_expiry;
                rose->idletimer.expires  = jiffies + rose->idle;
 
                add_timer(&rose->idletimer);
 
        serv->sv_tmpcnt++;
        if (serv->sv_temptimer.function == NULL) {
                /* setup timer to age temp transports */
-               serv->sv_temptimer.function = (TIMER_FUNC_TYPE)svc_age_temp_xprts;
+               serv->sv_temptimer.function = svc_age_temp_xprts;
                mod_timer(&serv->sv_temptimer,
                          jiffies + svc_conn_age_period * HZ);
        }
 
        if (sk_has_allocations(sk)) {
                /* Defer: outstanding buffers */
                sk->sk_timer.expires  = jiffies + 10 * HZ;
-               sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_destroy_timer;
+               sk->sk_timer.function = x25_destroy_timer;
                add_timer(&sk->sk_timer);
        } else {
                /* drop last reference so sock_put will free */
 
        timer_setup(&x25->timer, x25_timer_expiry, 0);
 
        /* initialized by sock_init_data */
-       sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_heartbeat_expiry;
+       sk->sk_timer.function = x25_heartbeat_expiry;
 }
 
 void x25_start_heartbeat(struct sock *sk)
 
 void line6_start_timer(struct timer_list *timer, unsigned long msecs,
                       void (*function)(struct timer_list *t))
 {
-       timer->function = (TIMER_FUNC_TYPE)function;
+       timer->function = function;
        mod_timer(timer, jiffies + msecs_to_jiffies(msecs));
 }
 EXPORT_SYMBOL_GPL(line6_start_timer);