aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-25 13:37:16 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-25 13:37:16 -0500
commit844056fd74ebdd826bd23a7d989597e15f478acb (patch)
tree25855ccc10878455acb61d38a62f92c1289912f8
parentca122fe376fc43f7565e3e56e6777d06a433a4cc (diff)
parent54b8a2306b928abca4d3e9d7e2c17a4673032e1c (diff)
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer updates from Thomas Gleixner: - The final conversion of timer wheel timers to timer_setup(). A few manual conversions and a large coccinelle assisted sweep and the removal of the old initialization mechanisms and the related code. - Remove the now unused VSYSCALL update code - Fix permissions of /proc/timer_list. I still need to get rid of that file completely - Rename a misnomed clocksource function and remove a stale declaration * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits) m68k/macboing: Fix missed timer callback assignment treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts timer: Remove redundant __setup_timer*() macros timer: Pass function down to initialization routines timer: Remove unused data arguments from macros timer: Switch callback prototype to take struct timer_list * argument timer: Pass timer_list pointer to callbacks unconditionally Coccinelle: Remove setup_timer.cocci timer: Remove setup_*timer() interface timer: Remove init_timer() interface treewide: setup_timer() -> timer_setup() (2 field) treewide: setup_timer() -> timer_setup() treewide: init_timer() -> setup_timer() treewide: Switch DEFINE_TIMER callbacks to struct timer_list * s390: cmm: Convert timers to use timer_setup() lightnvm: Convert timers to use timer_setup() drivers/net: cris: Convert timers to use timer_setup() drm/vc4: Convert timers to use timer_setup() block/laptop_mode: Convert timers to use timer_setup() net/atm/mpc: Avoid open-coded assignment of timer callback function ...
-rw-r--r--Documentation/core-api/local_ops.rst10
-rw-r--r--arch/alpha/kernel/srmcons.c7
-rw-r--r--arch/arm/mach-iop32x/n2100.c5
-rw-r--r--arch/arm/mach-ixp4xx/dsmg600-setup.c4
-rw-r--r--arch/arm/mach-ixp4xx/nas100d-setup.c4
-rw-r--r--arch/arm/mach-orion5x/db88f5281-setup.c4
-rw-r--r--arch/blackfin/kernel/nmi.c5
-rw-r--r--arch/m68k/amiga/amisound.c4
-rw-r--r--arch/m68k/mac/macboing.c8
-rw-r--r--arch/mips/lasat/picvue_proc.c4
-rw-r--r--arch/mips/mti-malta/malta-display.c4
-rw-r--r--arch/parisc/kernel/pdc_cons.c4
-rw-r--r--arch/powerpc/kernel/tau_6xx.c4
-rw-r--r--arch/powerpc/kvm/booke.c7
-rw-r--r--arch/powerpc/oprofile/op_model_cell.c8
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c8
-rw-r--r--arch/powerpc/platforms/powermac/low_i2c.c6
-rw-r--r--arch/s390/kernel/time.c4
-rw-r--r--arch/s390/mm/cmm.c8
-rw-r--r--arch/sh/drivers/heartbeat.c6
-rw-r--r--arch/sh/drivers/pci/common.c16
-rw-r--r--arch/sh/drivers/push-switch.c9
-rw-r--r--block/blk-core.c10
-rw-r--r--block/blk-stat.c6
-rw-r--r--block/blk-throttle.c9
-rw-r--r--drivers/atm/ambassador.c9
-rw-r--r--drivers/atm/firestream.c8
-rw-r--r--drivers/atm/horizon.c8
-rw-r--r--drivers/atm/idt77105.c8
-rw-r--r--drivers/atm/idt77252.c6
-rw-r--r--drivers/atm/iphase.c4
-rw-r--r--drivers/atm/lanai.c8
-rw-r--r--drivers/atm/nicstar.c8
-rw-r--r--drivers/base/power/wakeup.c2
-rw-r--r--drivers/block/DAC960.c9
-rw-r--r--drivers/block/DAC960.h2
-rw-r--r--drivers/block/aoe/aoecmd.c2
-rw-r--r--drivers/block/ataflop.c16
-rw-r--r--drivers/block/rsxx/cregs.c7
-rw-r--r--drivers/block/rsxx/dma.c7
-rw-r--r--drivers/block/skd_main.c6
-rw-r--r--drivers/block/sunvdc.c9
-rw-r--r--drivers/block/swim3.c2
-rw-r--r--drivers/block/umem.c5
-rw-r--r--drivers/block/xsysace.c6
-rw-r--r--drivers/char/dtlk.c4
-rw-r--r--drivers/char/hangcheck-timer.c4
-rw-r--r--drivers/char/ipmi/bt-bmc.c7
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c4
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c6
-rw-r--r--drivers/char/ipmi/ipmi_ssif.c7
-rw-r--r--drivers/char/nwbutton.c4
-rw-r--r--drivers/char/nwbutton.h2
-rw-r--r--drivers/char/rtc.c4
-rw-r--r--drivers/char/tpm/tpm-dev-common.c7
-rw-r--r--drivers/clocksource/timer-of.c9
-rw-r--r--drivers/clocksource/timer-of.h2
-rw-r--r--drivers/firmware/psci_checker.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c8
-rw-r--r--drivers/gpu/drm/drm_vblank.c11
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_vidi.c6
-rw-r--r--drivers/gpu/drm/i2c/tda998x_drv.c7
-rw-r--r--drivers/gpu/drm/i915/selftests/lib_sw_fence.c6
-rw-r--r--drivers/gpu/drm/msm/adreno/a5xx_preempt.c7
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.c7
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dsi.c6
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_psr.c6
-rw-r--r--drivers/gpu/drm/vc4/vc4_bo.c9
-rw-r--r--drivers/gpu/drm/vc4/vc4_gem.c10
-rw-r--r--drivers/gpu/drm/vgem/vgem_fence.c6
-rw-r--r--drivers/gpu/drm/via/via_dmablit.c7
-rw-r--r--drivers/hid/hid-appleir.c7
-rw-r--r--drivers/hid/hid-prodikeys.c7
-rw-r--r--drivers/hid/hid-wiimote-core.c6
-rw-r--r--drivers/iio/common/ssp_sensors/ssp_dev.c6
-rw-r--r--drivers/infiniband/hw/mlx5/mr.c6
-rw-r--r--drivers/infiniband/hw/mthca/mthca_catas.c8
-rw-r--r--drivers/infiniband/hw/nes/nes_verbs.c2
-rw-r--r--drivers/input/gameport/gameport.c7
-rw-r--r--drivers/input/input.c2
-rw-r--r--drivers/input/joystick/db9.c6
-rw-r--r--drivers/input/joystick/gamecon.c6
-rw-r--r--drivers/input/joystick/turbografx.c6
-rw-r--r--drivers/input/touchscreen/s3c2410_ts.c2
-rw-r--r--drivers/iommu/iova.c8
-rw-r--r--drivers/isdn/capi/capidrv.c6
-rw-r--r--drivers/isdn/divert/isdn_divert.c9
-rw-r--r--drivers/isdn/hardware/eicon/divasi.c9
-rw-r--r--drivers/isdn/hardware/mISDN/hfcmulti.c8
-rw-r--r--drivers/isdn/hardware/mISDN/hfcpci.c10
-rw-r--r--drivers/isdn/hardware/mISDN/mISDNisar.c10
-rw-r--r--drivers/isdn/i4l/isdn_common.c5
-rw-r--r--drivers/isdn/i4l/isdn_net.c9
-rw-r--r--drivers/isdn/i4l/isdn_ppp.c9
-rw-r--r--drivers/isdn/i4l/isdn_tty.c7
-rw-r--r--drivers/lightnvm/pblk-core.c4
-rw-r--r--drivers/lightnvm/pblk-gc.c6
-rw-r--r--drivers/lightnvm/pblk-init.c2
-rw-r--r--drivers/lightnvm/pblk-rl.c6
-rw-r--r--drivers/lightnvm/pblk.h2
-rw-r--r--drivers/lightnvm/rrpc.c6
-rw-r--r--drivers/media/common/saa7146/saa7146_vbi.c2
-rw-r--r--drivers/media/platform/fsl-viu.c7
-rw-r--r--drivers/media/platform/s5p-mfc/s5p_mfc.c8
-rw-r--r--drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c7
-rw-r--r--drivers/media/platform/vim2m.c6
-rw-r--r--drivers/media/usb/au0828/au0828-dvb.c8
-rw-r--r--drivers/media/usb/au0828/au0828-video.c14
-rw-r--r--drivers/memstick/core/ms_block.c7
-rw-r--r--drivers/mfd/rtsx_usb.c6
-rw-r--r--drivers/mmc/core/host.c6
-rw-r--r--drivers/mtd/sm_ftl.c6
-rw-r--r--drivers/net/caif/caif_hsi.c21
-rw-r--r--drivers/net/cris/eth_v10.c36
-rw-r--r--drivers/net/dsa/mv88e6xxx/phy.c7
-rw-r--r--drivers/net/eql.c6
-rw-r--r--drivers/net/ethernet/adi/bfin_mac.c9
-rw-r--r--drivers/net/ethernet/agere/et131x.c7
-rw-r--r--drivers/net/ethernet/amazon/ena/ena_netdev.c7
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_nic.c14
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_main.c8
-rw-r--r--drivers/net/ethernet/atheros/atl1e/atl1e_main.c8
-rw-r--r--drivers/net/ethernet/atheros/atlx/atl1.c8
-rw-r--r--drivers/net/ethernet/atheros/atlx/atl2.c15
-rw-r--r--drivers/net/ethernet/broadcom/b44.c6
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c6
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c6
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c6
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c6
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_clsf.c4
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_clsf.h5
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c7
-rw-r--r--drivers/net/ethernet/marvell/mv643xx_eth.c13
-rw-r--r--drivers/net/ethernet/marvell/pxa168_eth.c7
-rw-r--r--drivers/net/ethernet/marvell/skge.c6
-rw-r--r--drivers/net/ethernet/marvell/sky2.c6
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c7
-rw-r--r--drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c8
-rw-r--r--drivers/net/ethernet/pasemi/pasemi_mac.c7
-rw-r--r--drivers/net/ethernet/qlogic/qla3xxx.c6
-rw-r--r--drivers/net/ethernet/rocker/rocker_ofdpa.c7
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_main.c15
-rw-r--r--drivers/net/ethernet/synopsys/dwc-xlgmac-net.c7
-rw-r--r--drivers/net/ethernet/ti/cpsw_ale.c6
-rw-r--r--drivers/net/ethernet/ti/netcp_ethss.c7
-rw-r--r--drivers/net/ethernet/ti/tlan.c6
-rw-r--r--drivers/net/ethernet/toshiba/spider_net.c16
-rw-r--r--drivers/net/hamradio/scc.c8
-rw-r--r--drivers/net/slip/slip.c16
-rw-r--r--drivers/net/tun.c8
-rw-r--r--drivers/net/wan/hdlc_ppp.c6
-rw-r--r--drivers/net/wireless/atmel/at76c50x-usb.c4
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c6
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c7
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c7
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/main.c14
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/tt.c18
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/tx.c7
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ap.c8
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_hw.c17
-rw-r--r--drivers/net/wireless/intersil/orinoco/orinoco_usb.c6
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/cfg80211.c2
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/core.c2
-rw-r--r--drivers/net/wireless/ray_cs.c12
-rw-r--r--drivers/net/wireless/ti/wlcore/main.c7
-rw-r--r--drivers/net/xen-netfront.c7
-rw-r--r--drivers/nfc/nfcmrvl/fw_dnld.c7
-rw-r--r--drivers/nfc/pn533/pn533.c8
-rw-r--r--drivers/nfc/st-nci/ndlc.c17
-rw-r--r--drivers/nfc/st-nci/se.c19
-rw-r--r--drivers/nfc/st21nfca/se.c19
-rw-r--r--drivers/ntb/test/ntb_pingpong.c8
-rw-r--r--drivers/platform/x86/sony-laptop.c4
-rw-r--r--drivers/pps/clients/pps-ktimer.c4
-rw-r--r--drivers/rtc/rtc-dev.c6
-rw-r--r--drivers/s390/block/dasd.c20
-rw-r--r--drivers/s390/char/sclp.c4
-rw-r--r--drivers/s390/net/fsm.c11
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c4
-rw-r--r--drivers/scsi/aic94xx/aic94xx_hwi.c2
-rw-r--r--drivers/scsi/aic94xx/aic94xx_tmf.c2
-rw-r--r--drivers/scsi/arcmsr/arcmsr_hba.c14
-rw-r--r--drivers/scsi/arm/fas216.c8
-rw-r--r--drivers/scsi/be2iscsi/be_main.c4
-rw-r--r--drivers/scsi/bfa/bfad.c8
-rw-r--r--drivers/scsi/bfa/bfad_drv.h2
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_tgt.c16
-rw-r--r--drivers/scsi/cxgbi/cxgb3i/cxgb3i.c4
-rw-r--r--drivers/scsi/cxgbi/cxgb4i/cxgb4i.c4
-rw-r--r--drivers/scsi/esas2r/esas2r_main.c10
-rw-r--r--drivers/scsi/fcoe/fcoe_ctlr.c8
-rw-r--r--drivers/scsi/fnic/fnic_main.c14
-rw-r--r--drivers/scsi/hisi_sas/hisi_sas_main.c4
-rw-r--r--drivers/scsi/hisi_sas/hisi_sas_v2_hw.c6
-rw-r--r--drivers/scsi/ipr.c8
-rw-r--r--drivers/scsi/libfc/fc_fcp.c6
-rw-r--r--drivers/scsi/libsas/sas_expander.c2
-rw-r--r--drivers/scsi/libsas/sas_scsi_host.c2
-rw-r--r--drivers/scsi/mvsas/mv_sas.c4
-rw-r--r--drivers/scsi/ncr53c8xx.c8
-rw-r--r--drivers/scsi/pm8001/pm8001_sas.c4
-rw-r--r--drivers/scsi/pmcraid.c10
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_glue.c8
-rw-r--r--drivers/staging/greybus/operation.c7
-rw-r--r--drivers/staging/irda/include/net/irda/timer.h2
-rw-r--r--drivers/staging/lustre/lnet/lnet/net_fault.c6
-rw-r--r--drivers/staging/lustre/lustre/ptlrpc/service.c9
-rw-r--r--drivers/staging/media/imx/imx-ic-prpencvf.c7
-rw-r--r--drivers/staging/media/imx/imx-media-csi.c7
-rw-r--r--drivers/staging/most/hdm-usb/hdm_usb.c7
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c16
-rw-r--r--drivers/staging/rtl8712/recv_linux.c9
-rw-r--r--drivers/staging/rtl8712/rtl8712_led.c9
-rw-r--r--drivers/staging/speakup/main.c4
-rw-r--r--drivers/staging/speakup/synth.c2
-rw-r--r--drivers/staging/unisys/visorbus/visorbus_main.c6
-rw-r--r--drivers/staging/unisys/visornic/visornic_main.c8
-rw-r--r--drivers/staging/wilc1000/wilc_wfi_cfgoperations.c8
-rw-r--r--drivers/target/target_core_user.c7
-rw-r--r--drivers/tty/cyclades.c4
-rw-r--r--drivers/tty/ipwireless/hardware.c11
-rw-r--r--drivers/tty/isicom.c4
-rw-r--r--drivers/tty/moxa.c4
-rw-r--r--drivers/tty/n_gsm.c12
-rw-r--r--drivers/tty/n_r3964.c8
-rw-r--r--drivers/tty/rocket.c4
-rw-r--r--drivers/tty/serial/8250/8250_core.c4
-rw-r--r--drivers/tty/serial/crisv10.c4
-rw-r--r--drivers/tty/serial/fsl_lpuart.c7
-rw-r--r--drivers/tty/serial/ifx6x60.c7
-rw-r--r--drivers/tty/serial/imx.c6
-rw-r--r--drivers/tty/serial/kgdb_nmi.c6
-rw-r--r--drivers/tty/serial/max3100.c7
-rw-r--r--drivers/tty/serial/mux.c4
-rw-r--r--drivers/tty/serial/pnx8xxx_uart.c7
-rw-r--r--drivers/tty/serial/sa1100.c7
-rw-r--r--drivers/tty/serial/sh-sci.c16
-rw-r--r--drivers/tty/serial/sn_console.c6
-rw-r--r--drivers/tty/synclink.c8
-rw-r--r--drivers/tty/synclink_gt.c16
-rw-r--r--drivers/tty/synclinkmp.c17
-rw-r--r--drivers/tty/vt/keyboard.c2
-rw-r--r--drivers/tty/vt/vt.c4
-rw-r--r--drivers/usb/atm/cxacru.c23
-rw-r--r--drivers/usb/atm/speedtch.c16
-rw-r--r--drivers/usb/atm/usbatm.c10
-rw-r--r--drivers/usb/core/hcd.c8
-rw-r--r--drivers/usb/dwc2/hcd.c7
-rw-r--r--drivers/usb/dwc2/hcd_queue.c7
-rw-r--r--drivers/usb/gadget/udc/at91_udc.c7
-rw-r--r--drivers/usb/gadget/udc/dummy_hcd.c8
-rw-r--r--drivers/usb/gadget/udc/m66592-udc.c6
-rw-r--r--drivers/usb/gadget/udc/omap_udc.c8
-rw-r--r--drivers/usb/gadget/udc/pxa25x_udc.c6
-rw-r--r--drivers/usb/gadget/udc/r8a66597-udc.c6
-rw-r--r--drivers/usb/host/ohci-hcd.c9
-rw-r--r--drivers/usb/host/oxu210hp-hcd.c6
-rw-r--r--drivers/usb/host/r8a66597-hcd.c7
-rw-r--r--drivers/usb/host/sl811-hcd.c6
-rw-r--r--drivers/usb/host/uhci-hcd.c3
-rw-r--r--drivers/usb/host/uhci-q.c4
-rw-r--r--drivers/usb/host/xhci.c8
-rw-r--r--drivers/usb/serial/mos7840.c15
-rw-r--r--drivers/usb/storage/realtek_cr.c7
-rw-r--r--drivers/uwb/drp.c6
-rw-r--r--drivers/uwb/neh.c8
-rw-r--r--drivers/uwb/rsv.c15
-rw-r--r--drivers/uwb/uwb-internal.h2
-rw-r--r--drivers/watchdog/alim7101_wdt.c4
-rw-r--r--drivers/watchdog/at91sam9_wdt.c6
-rw-r--r--drivers/watchdog/bcm47xx_wdt.c9
-rw-r--r--drivers/watchdog/bcm63xx_wdt.c4
-rw-r--r--drivers/watchdog/cpu5wdt.c4
-rw-r--r--drivers/watchdog/machzwd.c4
-rw-r--r--drivers/watchdog/mixcomwd.c4
-rw-r--r--drivers/watchdog/mpc8xxx_wdt.c7
-rw-r--r--drivers/watchdog/mtx-1_wdt.c4
-rw-r--r--drivers/watchdog/nuc900_wdt.c4
-rw-r--r--drivers/watchdog/pcwd.c4
-rw-r--r--drivers/watchdog/pika_wdt.c4
-rw-r--r--drivers/watchdog/rdc321x_wdt.c4
-rw-r--r--drivers/watchdog/sbc60xxwdt.c4
-rw-r--r--drivers/watchdog/sc520_wdt.c4
-rw-r--r--drivers/watchdog/shwdt.c6
-rw-r--r--drivers/watchdog/via_wdt.c4
-rw-r--r--drivers/watchdog/w83877f_wdt.c4
-rw-r--r--drivers/xen/grant-table.c4
-rw-r--r--fs/ocfs2/cluster/tcp.c9
-rw-r--r--fs/pstore/platform.c4
-rw-r--r--include/linux/kthread.h10
-rw-r--r--include/linux/timekeeper_internal.h7
-rw-r--r--include/linux/timekeeping.h6
-rw-r--r--include/linux/timer.h120
-rw-r--r--include/linux/workqueue.h17
-rw-r--r--include/linux/writeback.h2
-rw-r--r--kernel/irq/spurious.c4
-rw-r--r--kernel/kthread.c2
-rw-r--r--kernel/padata.c6
-rw-r--r--kernel/time/Kconfig4
-rw-r--r--kernel/time/clocksource.c5
-rw-r--r--kernel/time/timekeeping.c45
-rw-r--r--kernel/time/timer.c40
-rw-r--r--kernel/time/timer_list.c2
-rw-r--r--kernel/workqueue.c2
-rw-r--r--lib/random32.c4
-rw-r--r--mm/page-writeback.c7
-rw-r--r--net/802/garp.c6
-rw-r--r--net/802/mrp.c13
-rw-r--r--net/appletalk/aarp.c4
-rw-r--r--net/appletalk/ddp.c7
-rw-r--r--net/atm/lec.c6
-rw-r--r--net/atm/mpc.c3
-rw-r--r--net/batman-adv/tp_meter.c14
-rw-r--r--net/bluetooth/hidp/core.c7
-rw-r--r--net/bluetooth/rfcomm/core.c12
-rw-r--r--net/bluetooth/sco.c6
-rw-r--r--net/can/proc.c4
-rw-r--r--net/core/drop_monitor.c7
-rw-r--r--net/core/gen_estimator.c6
-rw-r--r--net/core/neighbour.c14
-rw-r--r--net/decnet/dn_route.c8
-rw-r--r--net/decnet/dn_timer.c8
-rw-r--r--net/ipv4/igmp.c20
-rw-r--r--net/ipv4/ipmr.c9
-rw-r--r--net/ipv6/addrconf.c9
-rw-r--r--net/ipv6/ip6_fib.c10
-rw-r--r--net/ipv6/ip6_flowlabel.c4
-rw-r--r--net/ipv6/ip6mr.c9
-rw-r--r--net/ipv6/mcast.c33
-rw-r--r--net/lapb/lapb_timer.c4
-rw-r--r--net/ncsi/ncsi-manage.c15
-rw-r--r--net/netfilter/nf_conntrack_expect.c7
-rw-r--r--net/netfilter/nfnetlink_log.c8
-rw-r--r--net/netfilter/xt_IDLETIMER.c7
-rw-r--r--net/netfilter/xt_LED.c8
-rw-r--r--net/netrom/af_netrom.c2
-rw-r--r--net/netrom/nr_loopback.c4
-rw-r--r--net/netrom/nr_timer.c2
-rw-r--r--net/nfc/nci/core.c14
-rw-r--r--net/rose/rose_link.c4
-rw-r--r--net/rose/rose_timer.c12
-rw-r--r--net/rxrpc/call_object.c7
-rw-r--r--net/sunrpc/svc_xprt.c2
-rw-r--r--net/wireless/lib80211.c11
-rw-r--r--net/x25/af_x25.c2
-rw-r--r--net/x25/x25_link.c8
-rw-r--r--net/x25/x25_timer.c2
-rw-r--r--net/xfrm/xfrm_state.c9
-rw-r--r--scripts/coccinelle/api/setup_timer.cocci277
-rw-r--r--security/keys/gc.c4
-rw-r--r--sound/usb/line6/driver.c2
351 files changed, 1225 insertions, 1773 deletions
diff --git a/Documentation/core-api/local_ops.rst b/Documentation/core-api/local_ops.rst
index 1062ddba62c7..2ac3f9f29845 100644
--- a/Documentation/core-api/local_ops.rst
+++ b/Documentation/core-api/local_ops.rst
@@ -177,18 +177,14 @@ Here is a sample module which implements a basic per cpu counter using
177 printk("Read : CPU %d, count %ld\n", cpu, 177 printk("Read : CPU %d, count %ld\n", cpu,
178 local_read(&per_cpu(counters, cpu))); 178 local_read(&per_cpu(counters, cpu)));
179 } 179 }
180 del_timer(&test_timer); 180 mod_timer(&test_timer, jiffies + 1000);
181 test_timer.expires = jiffies + 1000;
182 add_timer(&test_timer);
183 } 181 }
184 182
185 static int __init test_init(void) 183 static int __init test_init(void)
186 { 184 {
187 /* initialize the timer that will increment the counter */ 185 /* initialize the timer that will increment the counter */
188 init_timer(&test_timer); 186 timer_setup(&test_timer, do_test_timer, 0);
189 test_timer.function = do_test_timer; 187 mod_timer(&test_timer, jiffies + 1);
190 test_timer.expires = jiffies + 1;
191 add_timer(&test_timer);
192 188
193 return 0; 189 return 0;
194 } 190 }
diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c
index 5da0aec8ce90..438b10c44d73 100644
--- a/arch/alpha/kernel/srmcons.c
+++ b/arch/alpha/kernel/srmcons.c
@@ -65,9 +65,9 @@ srmcons_do_receive_chars(struct tty_port *port)
65} 65}
66 66
67static void 67static void
68srmcons_receive_chars(unsigned long data) 68srmcons_receive_chars(struct timer_list *t)
69{ 69{
70 struct srmcons_private *srmconsp = (struct srmcons_private *)data; 70 struct srmcons_private *srmconsp = from_timer(srmconsp, t, timer);
71 struct tty_port *port = &srmconsp->port; 71 struct tty_port *port = &srmconsp->port;
72 unsigned long flags; 72 unsigned long flags;
73 int incr = 10; 73 int incr = 10;
@@ -206,8 +206,7 @@ static const struct tty_operations srmcons_ops = {
206static int __init 206static int __init
207srmcons_init(void) 207srmcons_init(void)
208{ 208{
209 setup_timer(&srmcons_singleton.timer, srmcons_receive_chars, 209 timer_setup(&srmcons_singleton.timer, srmcons_receive_chars, 0);
210 (unsigned long)&srmcons_singleton);
211 if (srm_is_registered_console) { 210 if (srm_is_registered_console) {
212 struct tty_driver *driver; 211 struct tty_driver *driver;
213 int err; 212 int err;
diff --git a/arch/arm/mach-iop32x/n2100.c b/arch/arm/mach-iop32x/n2100.c
index c1cd80ecc219..3b73813c6b04 100644
--- a/arch/arm/mach-iop32x/n2100.c
+++ b/arch/arm/mach-iop32x/n2100.c
@@ -305,7 +305,7 @@ static void n2100_restart(enum reboot_mode mode, const char *cmd)
305 305
306static struct timer_list power_button_poll_timer; 306static struct timer_list power_button_poll_timer;
307 307
308static void power_button_poll(unsigned long dummy) 308static void power_button_poll(struct timer_list *unused)
309{ 309{
310 if (gpio_get_value(N2100_POWER_BUTTON) == 0) { 310 if (gpio_get_value(N2100_POWER_BUTTON) == 0) {
311 ctrl_alt_del(); 311 ctrl_alt_del();
@@ -336,8 +336,7 @@ static int __init n2100_request_gpios(void)
336 pr_err("could not set power GPIO as input\n"); 336 pr_err("could not set power GPIO as input\n");
337 } 337 }
338 /* Set up power button poll timer */ 338 /* Set up power button poll timer */
339 init_timer(&power_button_poll_timer); 339 timer_setup(&power_button_poll_timer, power_button_poll, 0);
340 power_button_poll_timer.function = power_button_poll;
341 power_button_poll_timer.expires = jiffies + (HZ / 10); 340 power_button_poll_timer.expires = jiffies + (HZ / 10);
342 add_timer(&power_button_poll_timer); 341 add_timer(&power_button_poll_timer);
343 return 0; 342 return 0;
diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c
index ac97a4599034..0f5c99941a7d 100644
--- a/arch/arm/mach-ixp4xx/dsmg600-setup.c
+++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c
@@ -179,10 +179,10 @@ static int power_button_countdown;
179/* Must hold the button down for at least this many counts to be processed */ 179/* Must hold the button down for at least this many counts to be processed */
180#define PBUTTON_HOLDDOWN_COUNT 4 /* 2 secs */ 180#define PBUTTON_HOLDDOWN_COUNT 4 /* 2 secs */
181 181
182static void dsmg600_power_handler(unsigned long data); 182static void dsmg600_power_handler(struct timer_list *unused);
183static DEFINE_TIMER(dsmg600_power_timer, dsmg600_power_handler); 183static DEFINE_TIMER(dsmg600_power_timer, dsmg600_power_handler);
184 184
185static void dsmg600_power_handler(unsigned long data) 185static void dsmg600_power_handler(struct timer_list *unused)
186{ 186{
187 /* This routine is called twice per second to check the 187 /* This routine is called twice per second to check the
188 * state of the power button. 188 * state of the power button.
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
index 435602085408..76dfff03cb71 100644
--- a/arch/arm/mach-ixp4xx/nas100d-setup.c
+++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
@@ -202,10 +202,10 @@ static int power_button_countdown;
202/* Must hold the button down for at least this many counts to be processed */ 202/* Must hold the button down for at least this many counts to be processed */
203#define PBUTTON_HOLDDOWN_COUNT 4 /* 2 secs */ 203#define PBUTTON_HOLDDOWN_COUNT 4 /* 2 secs */
204 204
205static void nas100d_power_handler(unsigned long data); 205static void nas100d_power_handler(struct timer_list *unused);
206static DEFINE_TIMER(nas100d_power_timer, nas100d_power_handler); 206static DEFINE_TIMER(nas100d_power_timer, nas100d_power_handler);
207 207
208static void nas100d_power_handler(unsigned long data) 208static void nas100d_power_handler(struct timer_list *unused)
209{ 209{
210 /* This routine is called twice per second to check the 210 /* This routine is called twice per second to check the
211 * state of the power button. 211 * state of the power button.
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index 3f5863de766a..39eae10ac8de 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -172,7 +172,7 @@ static struct platform_device db88f5281_nand_flash = {
172static void __iomem *db88f5281_7seg; 172static void __iomem *db88f5281_7seg;
173static struct timer_list db88f5281_timer; 173static struct timer_list db88f5281_timer;
174 174
175static void db88f5281_7seg_event(unsigned long data) 175static void db88f5281_7seg_event(struct timer_list *unused)
176{ 176{
177 static int count = 0; 177 static int count = 0;
178 writel(0, db88f5281_7seg + (count << 4)); 178 writel(0, db88f5281_7seg + (count << 4));
@@ -189,7 +189,7 @@ static int __init db88f5281_7seg_init(void)
189 printk(KERN_ERR "Failed to ioremap db88f5281_7seg\n"); 189 printk(KERN_ERR "Failed to ioremap db88f5281_7seg\n");
190 return -EIO; 190 return -EIO;
191 } 191 }
192 setup_timer(&db88f5281_timer, db88f5281_7seg_event, 0); 192 timer_setup(&db88f5281_timer, db88f5281_7seg_event, 0);
193 mod_timer(&db88f5281_timer, jiffies + 2 * HZ); 193 mod_timer(&db88f5281_timer, jiffies + 2 * HZ);
194 } 194 }
195 195
diff --git a/arch/blackfin/kernel/nmi.c b/arch/blackfin/kernel/nmi.c
index 1e714329fe8a..8a211d95821f 100644
--- a/arch/blackfin/kernel/nmi.c
+++ b/arch/blackfin/kernel/nmi.c
@@ -166,7 +166,7 @@ int check_nmi_wdt_touched(void)
166 return 1; 166 return 1;
167} 167}
168 168
169static void nmi_wdt_timer(unsigned long data) 169static void nmi_wdt_timer(struct timer_list *unused)
170{ 170{
171 if (check_nmi_wdt_touched()) 171 if (check_nmi_wdt_touched())
172 nmi_wdt_keepalive(); 172 nmi_wdt_keepalive();
@@ -180,8 +180,7 @@ static int __init init_nmi_wdt(void)
180 nmi_wdt_start(); 180 nmi_wdt_start();
181 nmi_active = true; 181 nmi_active = true;
182 182
183 init_timer(&ntimer); 183 timer_setup(&ntimer, nmi_wdt_timer, 0);
184 ntimer.function = nmi_wdt_timer;
185 ntimer.expires = jiffies + NMI_CHECK_TIMEOUT; 184 ntimer.expires = jiffies + NMI_CHECK_TIMEOUT;
186 add_timer(&ntimer); 185 add_timer(&ntimer);
187 186
diff --git a/arch/m68k/amiga/amisound.c b/arch/m68k/amiga/amisound.c
index a23f48181fd6..442bdeee6bd7 100644
--- a/arch/m68k/amiga/amisound.c
+++ b/arch/m68k/amiga/amisound.c
@@ -65,7 +65,7 @@ void __init amiga_init_sound(void)
65#endif 65#endif
66} 66}
67 67
68static void nosound( unsigned long ignored ); 68static void nosound(struct timer_list *unused);
69static DEFINE_TIMER(sound_timer, nosound); 69static DEFINE_TIMER(sound_timer, nosound);
70 70
71void amiga_mksound( unsigned int hz, unsigned int ticks ) 71void amiga_mksound( unsigned int hz, unsigned int ticks )
@@ -107,7 +107,7 @@ void amiga_mksound( unsigned int hz, unsigned int ticks )
107} 107}
108 108
109 109
110static void nosound( unsigned long ignored ) 110static void nosound(struct timer_list *unused)
111{ 111{
112 /* turn off DMA for audio channel 2 */ 112 /* turn off DMA for audio channel 2 */
113 custom.dmacon = DMAF_AUD2; 113 custom.dmacon = DMAF_AUD2;
diff --git a/arch/m68k/mac/macboing.c b/arch/m68k/mac/macboing.c
index d17668649641..388780797f7d 100644
--- a/arch/m68k/mac/macboing.c
+++ b/arch/m68k/mac/macboing.c
@@ -48,9 +48,9 @@ static unsigned long mac_bell_phasepersample;
48 * some function protos 48 * some function protos
49 */ 49 */
50static void mac_init_asc( void ); 50static void mac_init_asc( void );
51static void mac_nosound( unsigned long ); 51static void mac_nosound(struct timer_list *);
52static void mac_quadra_start_bell( unsigned int, unsigned int, unsigned int ); 52static void mac_quadra_start_bell( unsigned int, unsigned int, unsigned int );
53static void mac_quadra_ring_bell( unsigned long ); 53static void mac_quadra_ring_bell(struct timer_list *);
54static void mac_av_start_bell( unsigned int, unsigned int, unsigned int ); 54static void mac_av_start_bell( unsigned int, unsigned int, unsigned int );
55static void ( *mac_special_bell )( unsigned int, unsigned int, unsigned int ); 55static void ( *mac_special_bell )( unsigned int, unsigned int, unsigned int );
56 56
@@ -216,7 +216,7 @@ void mac_mksound( unsigned int freq, unsigned int length )
216/* 216/*
217 * regular ASC: stop whining .. 217 * regular ASC: stop whining ..
218 */ 218 */
219static void mac_nosound( unsigned long ignored ) 219static void mac_nosound(struct timer_list *unused)
220{ 220{
221 mac_asc_regs[ ASC_ENABLE ] = 0; 221 mac_asc_regs[ ASC_ENABLE ] = 0;
222} 222}
@@ -270,7 +270,7 @@ static void mac_quadra_start_bell( unsigned int freq, unsigned int length, unsig
270 * already load the wave table, or at least call this one... 270 * already load the wave table, or at least call this one...
271 * This piece keeps reloading the wave table until done. 271 * This piece keeps reloading the wave table until done.
272 */ 272 */
273static void mac_quadra_ring_bell( unsigned long ignored ) 273static void mac_quadra_ring_bell(struct timer_list *unused)
274{ 274{
275 int i, count = mac_asc_samplespersec / HZ; 275 int i, count = mac_asc_samplespersec / HZ;
276 unsigned long flags; 276 unsigned long flags;
diff --git a/arch/mips/lasat/picvue_proc.c b/arch/mips/lasat/picvue_proc.c
index a8103f6972cd..5d89e1ec5fcc 100644
--- a/arch/mips/lasat/picvue_proc.c
+++ b/arch/mips/lasat/picvue_proc.c
@@ -156,7 +156,7 @@ static const struct file_operations pvc_scroll_proc_fops = {
156 .write = pvc_scroll_proc_write, 156 .write = pvc_scroll_proc_write,
157}; 157};
158 158
159void pvc_proc_timerfunc(unsigned long data) 159void pvc_proc_timerfunc(struct timer_list *unused)
160{ 160{
161 if (scroll_dir < 0) 161 if (scroll_dir < 0)
162 pvc_move(DISPLAY|RIGHT); 162 pvc_move(DISPLAY|RIGHT);
@@ -197,7 +197,7 @@ static int __init pvc_proc_init(void)
197 if (proc_entry == NULL) 197 if (proc_entry == NULL)
198 goto error; 198 goto error;
199 199
200 setup_timer(&timer, pvc_proc_timerfunc, 0UL); 200 timer_setup(&timer, pvc_proc_timerfunc, 0);
201 201
202 return 0; 202 return 0;
203error: 203error:
diff --git a/arch/mips/mti-malta/malta-display.c b/arch/mips/mti-malta/malta-display.c
index 063de44675ce..ee0bd50f754b 100644
--- a/arch/mips/mti-malta/malta-display.c
+++ b/arch/mips/mti-malta/malta-display.c
@@ -36,10 +36,10 @@ void mips_display_message(const char *str)
36 } 36 }
37} 37}
38 38
39static void scroll_display_message(unsigned long unused); 39static void scroll_display_message(struct timer_list *unused);
40static DEFINE_TIMER(mips_scroll_timer, scroll_display_message); 40static DEFINE_TIMER(mips_scroll_timer, scroll_display_message);
41 41
42static void scroll_display_message(unsigned long unused) 42static void scroll_display_message(struct timer_list *unused)
43{ 43{
44 mips_display_message(&display_string[display_count++]); 44 mips_display_message(&display_string[display_count++]);
45 if (display_count == max_display_count) 45 if (display_count == max_display_count)
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c
index 27a2dd616a7d..c46bf29ae412 100644
--- a/arch/parisc/kernel/pdc_cons.c
+++ b/arch/parisc/kernel/pdc_cons.c
@@ -91,7 +91,7 @@ static int pdc_console_setup(struct console *co, char *options)
91 91
92#define PDC_CONS_POLL_DELAY (30 * HZ / 1000) 92#define PDC_CONS_POLL_DELAY (30 * HZ / 1000)
93 93
94static void pdc_console_poll(unsigned long unused); 94static void pdc_console_poll(struct timer_list *unused);
95static DEFINE_TIMER(pdc_console_timer, pdc_console_poll); 95static DEFINE_TIMER(pdc_console_timer, pdc_console_poll);
96static struct tty_port tty_port; 96static struct tty_port tty_port;
97 97
@@ -135,7 +135,7 @@ static const struct tty_operations pdc_console_tty_ops = {
135 .chars_in_buffer = pdc_console_tty_chars_in_buffer, 135 .chars_in_buffer = pdc_console_tty_chars_in_buffer,
136}; 136};
137 137
138static void pdc_console_poll(unsigned long unused) 138static void pdc_console_poll(struct timer_list *unused)
139{ 139{
140 int data, count = 0; 140 int data, count = 0;
141 141
diff --git a/arch/powerpc/kernel/tau_6xx.c b/arch/powerpc/kernel/tau_6xx.c
index e3c5f75d137c..8cdd852aedd1 100644
--- a/arch/powerpc/kernel/tau_6xx.c
+++ b/arch/powerpc/kernel/tau_6xx.c
@@ -188,7 +188,7 @@ static void tau_timeout(void * info)
188 local_irq_restore(flags); 188 local_irq_restore(flags);
189} 189}
190 190
191static void tau_timeout_smp(unsigned long unused) 191static void tau_timeout_smp(struct timer_list *unused)
192{ 192{
193 193
194 /* schedule ourselves to be run again */ 194 /* schedule ourselves to be run again */
@@ -230,7 +230,7 @@ int __init TAU_init(void)
230 230
231 231
232 /* first, set up the window shrinking timer */ 232 /* first, set up the window shrinking timer */
233 setup_timer(&tau_timer, tau_timeout_smp, 0UL); 233 timer_setup(&tau_timer, tau_timeout_smp, 0);
234 tau_timer.expires = jiffies + shrink_timer; 234 tau_timer.expires = jiffies + shrink_timer;
235 add_timer(&tau_timer); 235 add_timer(&tau_timer);
236 236
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 071b87ee682f..83b485810aea 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -599,9 +599,9 @@ static void arm_next_watchdog(struct kvm_vcpu *vcpu)
599 spin_unlock_irqrestore(&vcpu->arch.wdt_lock, flags); 599 spin_unlock_irqrestore(&vcpu->arch.wdt_lock, flags);
600} 600}
601 601
602void kvmppc_watchdog_func(unsigned long data) 602void kvmppc_watchdog_func(struct timer_list *t)
603{ 603{
604 struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data; 604 struct kvm_vcpu *vcpu = from_timer(vcpu, t, arch.wdt_timer);
605 u32 tsr, new_tsr; 605 u32 tsr, new_tsr;
606 int final; 606 int final;
607 607
@@ -1412,8 +1412,7 @@ int kvmppc_subarch_vcpu_init(struct kvm_vcpu *vcpu)
1412{ 1412{
1413 /* setup watchdog timer once */ 1413 /* setup watchdog timer once */
1414 spin_lock_init(&vcpu->arch.wdt_lock); 1414 spin_lock_init(&vcpu->arch.wdt_lock);
1415 setup_timer(&vcpu->arch.wdt_timer, kvmppc_watchdog_func, 1415 timer_setup(&vcpu->arch.wdt_timer, kvmppc_watchdog_func, 0);
1416 (unsigned long)vcpu);
1417 1416
1418 /* 1417 /*
1419 * Clear DBSR.MRR to avoid guest debug interrupt as 1418 * Clear DBSR.MRR to avoid guest debug interrupt as
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c
index 264b6ab11978..b90a21bc2f3f 100644
--- a/arch/powerpc/oprofile/op_model_cell.c
+++ b/arch/powerpc/oprofile/op_model_cell.c
@@ -451,7 +451,7 @@ static inline void enable_ctr(u32 cpu, u32 ctr, u32 *pm07_cntrl)
451 * This routine will alternate loading the virtual counters for 451 * This routine will alternate loading the virtual counters for
452 * virtual CPUs 452 * virtual CPUs
453 */ 453 */
454static void cell_virtual_cntr(unsigned long data) 454static void cell_virtual_cntr(struct timer_list *unused)
455{ 455{
456 int i, prev_hdw_thread, next_hdw_thread; 456 int i, prev_hdw_thread, next_hdw_thread;
457 u32 cpu; 457 u32 cpu;
@@ -555,7 +555,7 @@ static void cell_virtual_cntr(unsigned long data)
555 555
556static void start_virt_cntrs(void) 556static void start_virt_cntrs(void)
557{ 557{
558 setup_timer(&timer_virt_cntr, cell_virtual_cntr, 0UL); 558 timer_setup(&timer_virt_cntr, cell_virtual_cntr, 0);
559 timer_virt_cntr.expires = jiffies + HZ / 10; 559 timer_virt_cntr.expires = jiffies + HZ / 10;
560 add_timer(&timer_virt_cntr); 560 add_timer(&timer_virt_cntr);
561} 561}
@@ -587,7 +587,7 @@ static int cell_reg_setup_spu_cycles(struct op_counter_config *ctr,
587 * periodically based on kernel timer to switch which SPU is 587 * periodically based on kernel timer to switch which SPU is
588 * being monitored in a round robbin fashion. 588 * being monitored in a round robbin fashion.
589 */ 589 */
590static void spu_evnt_swap(unsigned long data) 590static void spu_evnt_swap(struct timer_list *unused)
591{ 591{
592 int node; 592 int node;
593 int cur_phys_spu, nxt_phys_spu, cur_spu_evnt_phys_spu_indx; 593 int cur_phys_spu, nxt_phys_spu, cur_spu_evnt_phys_spu_indx;
@@ -677,7 +677,7 @@ static void spu_evnt_swap(unsigned long data)
677 677
678static void start_spu_event_swap(void) 678static void start_spu_event_swap(void)
679{ 679{
680 setup_timer(&timer_spu_event_swap, spu_evnt_swap, 0UL); 680 timer_setup(&timer_spu_event_swap, spu_evnt_swap, 0);
681 timer_spu_event_swap.expires = jiffies + HZ / 25; 681 timer_spu_event_swap.expires = jiffies + HZ / 25;
682 add_timer(&timer_spu_event_swap); 682 add_timer(&timer_spu_event_swap);
683} 683}
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index e47761cdcb98..9033c8194eda 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -992,13 +992,13 @@ static void spu_calc_load(void)
992 CALC_LOAD(spu_avenrun[2], EXP_15, active_tasks); 992 CALC_LOAD(spu_avenrun[2], EXP_15, active_tasks);
993} 993}
994 994
995static void spusched_wake(unsigned long data) 995static void spusched_wake(struct timer_list *unused)
996{ 996{
997 mod_timer(&spusched_timer, jiffies + SPUSCHED_TICK); 997 mod_timer(&spusched_timer, jiffies + SPUSCHED_TICK);
998 wake_up_process(spusched_task); 998 wake_up_process(spusched_task);
999} 999}
1000 1000
1001static void spuloadavg_wake(unsigned long data) 1001static void spuloadavg_wake(struct timer_list *unused)
1002{ 1002{
1003 mod_timer(&spuloadavg_timer, jiffies + LOAD_FREQ); 1003 mod_timer(&spuloadavg_timer, jiffies + LOAD_FREQ);
1004 spu_calc_load(); 1004 spu_calc_load();
@@ -1124,8 +1124,8 @@ int __init spu_sched_init(void)
1124 } 1124 }
1125 spin_lock_init(&spu_prio->runq_lock); 1125 spin_lock_init(&spu_prio->runq_lock);
1126 1126
1127 setup_timer(&spusched_timer, spusched_wake, 0); 1127 timer_setup(&spusched_timer, spusched_wake, 0);
1128 setup_timer(&spuloadavg_timer, spuloadavg_wake, 0); 1128 timer_setup(&spuloadavg_timer, spuloadavg_wake, 0);
1129 1129
1130 spusched_task = kthread_run(spusched_thread, NULL, "spusched"); 1130 spusched_task = kthread_run(spusched_thread, NULL, "spusched");
1131 if (IS_ERR(spusched_task)) { 1131 if (IS_ERR(spusched_task)) {
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c
index 39a1d4225e0f..3408f315ef48 100644
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -361,9 +361,9 @@ static irqreturn_t kw_i2c_irq(int irq, void *dev_id)
361 return IRQ_HANDLED; 361 return IRQ_HANDLED;
362} 362}
363 363
364static void kw_i2c_timeout(unsigned long data) 364static void kw_i2c_timeout(struct timer_list *t)
365{ 365{
366 struct pmac_i2c_host_kw *host = (struct pmac_i2c_host_kw *)data; 366 struct pmac_i2c_host_kw *host = from_timer(host, t, timeout_timer);
367 unsigned long flags; 367 unsigned long flags;
368 368
369 spin_lock_irqsave(&host->lock, flags); 369 spin_lock_irqsave(&host->lock, flags);
@@ -513,7 +513,7 @@ static struct pmac_i2c_host_kw *__init kw_i2c_host_init(struct device_node *np)
513 mutex_init(&host->mutex); 513 mutex_init(&host->mutex);
514 init_completion(&host->complete); 514 init_completion(&host->complete);
515 spin_lock_init(&host->lock); 515 spin_lock_init(&host->lock);
516 setup_timer(&host->timeout_timer, kw_i2c_timeout, (unsigned long)host); 516 timer_setup(&host->timeout_timer, kw_i2c_timeout, 0);
517 517
518 psteps = of_get_property(np, "AAPL,address-step", NULL); 518 psteps = of_get_property(np, "AAPL,address-step", NULL);
519 steps = psteps ? (*psteps) : 0x10; 519 steps = psteps ? (*psteps) : 0x10;
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 5cbd52169348..be6198193ec2 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -523,7 +523,7 @@ static void __init stp_reset(void)
523 } 523 }
524} 524}
525 525
526static void stp_timeout(unsigned long dummy) 526static void stp_timeout(struct timer_list *unused)
527{ 527{
528 queue_work(time_sync_wq, &stp_work); 528 queue_work(time_sync_wq, &stp_work);
529} 529}
@@ -532,7 +532,7 @@ static int __init stp_init(void)
532{ 532{
533 if (!test_bit(CLOCK_SYNC_HAS_STP, &clock_sync_flags)) 533 if (!test_bit(CLOCK_SYNC_HAS_STP, &clock_sync_flags))
534 return 0; 534 return 0;
535 setup_timer(&stp_timer, stp_timeout, 0UL); 535 timer_setup(&stp_timer, stp_timeout, 0);
536 time_init_wq(); 536 time_init_wq();
537 if (!stp_online) 537 if (!stp_online)
538 return 0; 538 return 0;
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c
index 2dbdcd85b68f..3d017171ff8f 100644
--- a/arch/s390/mm/cmm.c
+++ b/arch/s390/mm/cmm.c
@@ -56,10 +56,10 @@ static DEFINE_SPINLOCK(cmm_lock);
56 56
57static struct task_struct *cmm_thread_ptr; 57static struct task_struct *cmm_thread_ptr;
58static DECLARE_WAIT_QUEUE_HEAD(cmm_thread_wait); 58static DECLARE_WAIT_QUEUE_HEAD(cmm_thread_wait);
59static DEFINE_TIMER(cmm_timer, NULL);
60 59
61static void cmm_timer_fn(unsigned long); 60static void cmm_timer_fn(struct timer_list *);
62static void cmm_set_timer(void); 61static void cmm_set_timer(void);
62static DEFINE_TIMER(cmm_timer, cmm_timer_fn);
63 63
64static long cmm_alloc_pages(long nr, long *counter, 64static long cmm_alloc_pages(long nr, long *counter,
65 struct cmm_page_array **list) 65 struct cmm_page_array **list)
@@ -194,13 +194,11 @@ static void cmm_set_timer(void)
194 if (mod_timer(&cmm_timer, jiffies + cmm_timeout_seconds*HZ)) 194 if (mod_timer(&cmm_timer, jiffies + cmm_timeout_seconds*HZ))
195 return; 195 return;
196 } 196 }
197 cmm_timer.function = cmm_timer_fn;
198 cmm_timer.data = 0;
199 cmm_timer.expires = jiffies + cmm_timeout_seconds*HZ; 197 cmm_timer.expires = jiffies + cmm_timeout_seconds*HZ;
200 add_timer(&cmm_timer); 198 add_timer(&cmm_timer);
201} 199}
202 200
203static void cmm_timer_fn(unsigned long ignored) 201static void cmm_timer_fn(struct timer_list *unused)
204{ 202{
205 long nr; 203 long nr;
206 204
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c
index c6d96049a0bb..e8af2ff29bc3 100644
--- a/arch/sh/drivers/heartbeat.c
+++ b/arch/sh/drivers/heartbeat.c
@@ -59,9 +59,9 @@ static inline void heartbeat_toggle_bit(struct heartbeat_data *hd,
59 } 59 }
60} 60}
61 61
62static void heartbeat_timer(unsigned long data) 62static void heartbeat_timer(struct timer_list *t)
63{ 63{
64 struct heartbeat_data *hd = (struct heartbeat_data *)data; 64 struct heartbeat_data *hd = from_timer(hd, t, timer);
65 static unsigned bit = 0, up = 1; 65 static unsigned bit = 0, up = 1;
66 66
67 heartbeat_toggle_bit(hd, bit, hd->flags & HEARTBEAT_INVERTED); 67 heartbeat_toggle_bit(hd, bit, hd->flags & HEARTBEAT_INVERTED);
@@ -133,7 +133,7 @@ static int heartbeat_drv_probe(struct platform_device *pdev)
133 } 133 }
134 } 134 }
135 135
136 setup_timer(&hd->timer, heartbeat_timer, (unsigned long)hd); 136 timer_setup(&hd->timer, heartbeat_timer, 0);
137 platform_set_drvdata(pdev, hd); 137 platform_set_drvdata(pdev, hd);
138 138
139 return mod_timer(&hd->timer, jiffies + 1); 139 return mod_timer(&hd->timer, jiffies + 1);
diff --git a/arch/sh/drivers/pci/common.c b/arch/sh/drivers/pci/common.c
index cae707f3472d..fe163ecd0719 100644
--- a/arch/sh/drivers/pci/common.c
+++ b/arch/sh/drivers/pci/common.c
@@ -85,18 +85,18 @@ int __init pci_is_66mhz_capable(struct pci_channel *hose,
85 return cap66 > 0; 85 return cap66 > 0;
86} 86}
87 87
88static void pcibios_enable_err(unsigned long __data) 88static void pcibios_enable_err(struct timer_list *t)
89{ 89{
90 struct pci_channel *hose = (struct pci_channel *)__data; 90 struct pci_channel *hose = from_timer(hose, t, err_timer);
91 91
92 del_timer(&hose->err_timer); 92 del_timer(&hose->err_timer);
93 printk(KERN_DEBUG "PCI: re-enabling error IRQ.\n"); 93 printk(KERN_DEBUG "PCI: re-enabling error IRQ.\n");
94 enable_irq(hose->err_irq); 94 enable_irq(hose->err_irq);
95} 95}
96 96
97static void pcibios_enable_serr(unsigned long __data) 97static void pcibios_enable_serr(struct timer_list *t)
98{ 98{
99 struct pci_channel *hose = (struct pci_channel *)__data; 99 struct pci_channel *hose = from_timer(hose, t, serr_timer);
100 100
101 del_timer(&hose->serr_timer); 101 del_timer(&hose->serr_timer);
102 printk(KERN_DEBUG "PCI: re-enabling system error IRQ.\n"); 102 printk(KERN_DEBUG "PCI: re-enabling system error IRQ.\n");
@@ -106,15 +106,11 @@ static void pcibios_enable_serr(unsigned long __data)
106void pcibios_enable_timers(struct pci_channel *hose) 106void pcibios_enable_timers(struct pci_channel *hose)
107{ 107{
108 if (hose->err_irq) { 108 if (hose->err_irq) {
109 init_timer(&hose->err_timer); 109 timer_setup(&hose->err_timer, pcibios_enable_err, 0);
110 hose->err_timer.data = (unsigned long)hose;
111 hose->err_timer.function = pcibios_enable_err;
112 } 110 }
113 111
114 if (hose->serr_irq) { 112 if (hose->serr_irq) {
115 init_timer(&hose->serr_timer); 113 timer_setup(&hose->serr_timer, pcibios_enable_serr, 0);
116 hose->serr_timer.data = (unsigned long)hose;
117 hose->serr_timer.function = pcibios_enable_serr;
118 } 114 }
119} 115}
120 116
diff --git a/arch/sh/drivers/push-switch.c b/arch/sh/drivers/push-switch.c
index 5bfb341cc5c4..a17181160233 100644
--- a/arch/sh/drivers/push-switch.c
+++ b/arch/sh/drivers/push-switch.c
@@ -26,9 +26,9 @@ static ssize_t switch_show(struct device *dev,
26} 26}
27static DEVICE_ATTR(switch, S_IRUGO, switch_show, NULL); 27static DEVICE_ATTR(switch, S_IRUGO, switch_show, NULL);
28 28
29static void switch_timer(unsigned long data) 29static void switch_timer(struct timer_list *t)
30{ 30{
31 struct push_switch *psw = (struct push_switch *)data; 31 struct push_switch *psw = from_timer(psw, t, debounce);
32 32
33 schedule_work(&psw->work); 33 schedule_work(&psw->work);
34} 34}
@@ -78,10 +78,7 @@ static int switch_drv_probe(struct platform_device *pdev)
78 } 78 }
79 79
80 INIT_WORK(&psw->work, switch_work_handler); 80 INIT_WORK(&psw->work, switch_work_handler);
81 init_timer(&psw->debounce); 81 timer_setup(&psw->debounce, switch_timer, 0);
82
83 psw->debounce.function = switch_timer;
84 psw->debounce.data = (unsigned long)psw;
85 82
86 /* Workqueue API brain-damage */ 83 /* Workqueue API brain-damage */
87 psw->pdev = pdev; 84 psw->pdev = pdev;
diff --git a/block/blk-core.c b/block/blk-core.c
index 1038706edd87..b8881750a3ac 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -863,9 +863,9 @@ static void blk_queue_usage_counter_release(struct percpu_ref *ref)
863 wake_up_all(&q->mq_freeze_wq); 863 wake_up_all(&q->mq_freeze_wq);
864} 864}
865 865
866static void blk_rq_timed_out_timer(unsigned long data) 866static void blk_rq_timed_out_timer(struct timer_list *t)
867{ 867{
868 struct request_queue *q = (struct request_queue *)data; 868 struct request_queue *q = from_timer(q, t, timeout);
869 869
870 kblockd_schedule_work(&q->timeout_work); 870 kblockd_schedule_work(&q->timeout_work);
871} 871}
@@ -901,9 +901,9 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
901 q->backing_dev_info->name = "block"; 901 q->backing_dev_info->name = "block";
902 q->node = node_id; 902 q->node = node_id;
903 903
904 setup_timer(&q->backing_dev_info->laptop_mode_wb_timer, 904 timer_setup(&q->backing_dev_info->laptop_mode_wb_timer,
905 laptop_mode_timer_fn, (unsigned long) q); 905 laptop_mode_timer_fn, 0);
906 setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q); 906 timer_setup(&q->timeout, blk_rq_timed_out_timer, 0);
907 INIT_WORK(&q->timeout_work, NULL); 907 INIT_WORK(&q->timeout_work, NULL);
908 INIT_LIST_HEAD(&q->queue_head); 908 INIT_LIST_HEAD(&q->queue_head);
909 INIT_LIST_HEAD(&q->timeout_list); 909 INIT_LIST_HEAD(&q->timeout_list);
diff --git a/block/blk-stat.c b/block/blk-stat.c
index 3a2f3c96f367..28003bf9941c 100644
--- a/block/blk-stat.c
+++ b/block/blk-stat.c
@@ -79,9 +79,9 @@ void blk_stat_add(struct request *rq)
79 rcu_read_unlock(); 79 rcu_read_unlock();
80} 80}
81 81
82static void blk_stat_timer_fn(unsigned long data) 82static void blk_stat_timer_fn(struct timer_list *t)
83{ 83{
84 struct blk_stat_callback *cb = (void *)data; 84 struct blk_stat_callback *cb = from_timer(cb, t, timer);
85 unsigned int bucket; 85 unsigned int bucket;
86 int cpu; 86 int cpu;
87 87
@@ -130,7 +130,7 @@ blk_stat_alloc_callback(void (*timer_fn)(struct blk_stat_callback *),
130 cb->bucket_fn = bucket_fn; 130 cb->bucket_fn = bucket_fn;
131 cb->data = data; 131 cb->data = data;
132 cb->buckets = buckets; 132 cb->buckets = buckets;
133 setup_timer(&cb->timer, blk_stat_timer_fn, (unsigned long)cb); 133 timer_setup(&cb->timer, blk_stat_timer_fn, 0);
134 134
135 return cb; 135 return cb;
136} 136}
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 96ad32623427..825bc29767e6 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -225,7 +225,7 @@ struct throtl_data
225 bool track_bio_latency; 225 bool track_bio_latency;
226}; 226};
227 227
228static void throtl_pending_timer_fn(unsigned long arg); 228static void throtl_pending_timer_fn(struct timer_list *t);
229 229
230static inline struct throtl_grp *pd_to_tg(struct blkg_policy_data *pd) 230static inline struct throtl_grp *pd_to_tg(struct blkg_policy_data *pd)
231{ 231{
@@ -478,8 +478,7 @@ static void throtl_service_queue_init(struct throtl_service_queue *sq)
478 INIT_LIST_HEAD(&sq->queued[0]); 478 INIT_LIST_HEAD(&sq->queued[0]);
479 INIT_LIST_HEAD(&sq->queued[1]); 479 INIT_LIST_HEAD(&sq->queued[1]);
480 sq->pending_tree = RB_ROOT; 480 sq->pending_tree = RB_ROOT;
481 setup_timer(&sq->pending_timer, throtl_pending_timer_fn, 481 timer_setup(&sq->pending_timer, throtl_pending_timer_fn, 0);
482 (unsigned long)sq);
483} 482}
484 483
485static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp, int node) 484static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp, int node)
@@ -1249,9 +1248,9 @@ static bool throtl_can_upgrade(struct throtl_data *td,
1249 * the top-level service_tree is reached, throtl_data->dispatch_work is 1248 * the top-level service_tree is reached, throtl_data->dispatch_work is
1250 * kicked so that the ready bio's are issued. 1249 * kicked so that the ready bio's are issued.
1251 */ 1250 */
1252static void throtl_pending_timer_fn(unsigned long arg) 1251static void throtl_pending_timer_fn(struct timer_list *t)
1253{ 1252{
1254 struct throtl_service_queue *sq = (void *)arg; 1253 struct throtl_service_queue *sq = from_timer(sq, t, pending_timer);
1255 struct throtl_grp *tg = sq_to_tg(sq); 1254 struct throtl_grp *tg = sq_to_tg(sq);
1256 struct throtl_data *td = sq_to_td(sq); 1255 struct throtl_data *td = sq_to_td(sq);
1257 struct request_queue *q = td->queue; 1256 struct request_queue *q = td->queue;
diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c
index acf16c323e38..dd286ad404f8 100644
--- a/drivers/atm/ambassador.c
+++ b/drivers/atm/ambassador.c
@@ -293,7 +293,7 @@ static inline void __init show_version (void) {
293 293
294*/ 294*/
295 295
296static void do_housekeeping (unsigned long arg); 296static void do_housekeeping (struct timer_list *t);
297/********** globals **********/ 297/********** globals **********/
298 298
299static unsigned short debug = 0; 299static unsigned short debug = 0;
@@ -1493,8 +1493,8 @@ static const struct atmdev_ops amb_ops = {
1493}; 1493};
1494 1494
1495/********** housekeeping **********/ 1495/********** housekeeping **********/
1496static void do_housekeeping (unsigned long arg) { 1496static void do_housekeeping (struct timer_list *t) {
1497 amb_dev * dev = (amb_dev *) arg; 1497 amb_dev * dev = from_timer(dev, t, housekeeping);
1498 1498
1499 // could collect device-specific (not driver/atm-linux) stats here 1499 // could collect device-specific (not driver/atm-linux) stats here
1500 1500
@@ -2267,8 +2267,7 @@ static int amb_probe(struct pci_dev *pci_dev,
2267 dev->atm_dev->ci_range.vpi_bits = NUM_VPI_BITS; 2267 dev->atm_dev->ci_range.vpi_bits = NUM_VPI_BITS;
2268 dev->atm_dev->ci_range.vci_bits = NUM_VCI_BITS; 2268 dev->atm_dev->ci_range.vci_bits = NUM_VCI_BITS;
2269 2269
2270 setup_timer(&dev->housekeeping, do_housekeeping, 2270 timer_setup(&dev->housekeeping, do_housekeeping, 0);
2271 (unsigned long)dev);
2272 mod_timer(&dev->housekeeping, jiffies); 2271 mod_timer(&dev->housekeeping, jiffies);
2273 2272
2274 // enable host interrupts 2273 // enable host interrupts
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
index 6b6368a56526..d97c05690faa 100644
--- a/drivers/atm/firestream.c
+++ b/drivers/atm/firestream.c
@@ -1656,9 +1656,9 @@ static irqreturn_t fs_irq (int irq, void *dev_id)
1656 1656
1657 1657
1658#ifdef FS_POLL_FREQ 1658#ifdef FS_POLL_FREQ
1659static void fs_poll (unsigned long data) 1659static void fs_poll (struct timer_list *t)
1660{ 1660{
1661 struct fs_dev *dev = (struct fs_dev *) data; 1661 struct fs_dev *dev = from_timer(dev, t, timer);
1662 1662
1663 fs_irq (0, dev); 1663 fs_irq (0, dev);
1664 dev->timer.expires = jiffies + FS_POLL_FREQ; 1664 dev->timer.expires = jiffies + FS_POLL_FREQ;
@@ -1885,9 +1885,7 @@ static int fs_init(struct fs_dev *dev)
1885 } 1885 }
1886 1886
1887#ifdef FS_POLL_FREQ 1887#ifdef FS_POLL_FREQ
1888 init_timer (&dev->timer); 1888 timer_setup(&dev->timer, fs_poll, 0);
1889 dev->timer.data = (unsigned long) dev;
1890 dev->timer.function = fs_poll;
1891 dev->timer.expires = jiffies + FS_POLL_FREQ; 1889 dev->timer.expires = jiffies + FS_POLL_FREQ;
1892 add_timer (&dev->timer); 1890 add_timer (&dev->timer);
1893#endif 1891#endif
diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
index e121b8485731..5ddc203206b8 100644
--- a/drivers/atm/horizon.c
+++ b/drivers/atm/horizon.c
@@ -357,7 +357,7 @@ static inline void __init show_version (void) {
357 357
358/********** globals **********/ 358/********** globals **********/
359 359
360static void do_housekeeping (unsigned long arg); 360static void do_housekeeping (struct timer_list *t);
361 361
362static unsigned short debug = 0; 362static unsigned short debug = 0;
363static unsigned short vpi_bits = 0; 363static unsigned short vpi_bits = 0;
@@ -1418,9 +1418,9 @@ static irqreturn_t interrupt_handler(int irq, void *dev_id)
1418 1418
1419/********** housekeeping **********/ 1419/********** housekeeping **********/
1420 1420
1421static void do_housekeeping (unsigned long arg) { 1421static void do_housekeeping (struct timer_list *t) {
1422 // just stats at the moment 1422 // just stats at the moment
1423 hrz_dev * dev = (hrz_dev *) arg; 1423 hrz_dev * dev = from_timer(dev, t, housekeeping);
1424 1424
1425 // collect device-specific (not driver/atm-linux) stats here 1425 // collect device-specific (not driver/atm-linux) stats here
1426 dev->tx_cell_count += rd_regw (dev, TX_CELL_COUNT_OFF); 1426 dev->tx_cell_count += rd_regw (dev, TX_CELL_COUNT_OFF);
@@ -2796,7 +2796,7 @@ static int hrz_probe(struct pci_dev *pci_dev,
2796 dev->atm_dev->ci_range.vpi_bits = vpi_bits; 2796 dev->atm_dev->ci_range.vpi_bits = vpi_bits;
2797 dev->atm_dev->ci_range.vci_bits = 10-vpi_bits; 2797 dev->atm_dev->ci_range.vci_bits = 10-vpi_bits;
2798 2798
2799 setup_timer(&dev->housekeeping, do_housekeeping, (unsigned long) dev); 2799 timer_setup(&dev->housekeeping, do_housekeeping, 0);
2800 mod_timer(&dev->housekeeping, jiffies); 2800 mod_timer(&dev->housekeeping, jiffies);
2801 2801
2802out: 2802out:
diff --git a/drivers/atm/idt77105.c b/drivers/atm/idt77105.c
index 909744eb7bab..0a67487c0b1d 100644
--- a/drivers/atm/idt77105.c
+++ b/drivers/atm/idt77105.c
@@ -45,8 +45,8 @@ static DEFINE_SPINLOCK(idt77105_priv_lock);
45#define PUT(val,reg) dev->ops->phy_put(dev,val,IDT77105_##reg) 45#define PUT(val,reg) dev->ops->phy_put(dev,val,IDT77105_##reg)
46#define GET(reg) dev->ops->phy_get(dev,IDT77105_##reg) 46#define GET(reg) dev->ops->phy_get(dev,IDT77105_##reg)
47 47
48static void idt77105_stats_timer_func(unsigned long); 48static void idt77105_stats_timer_func(struct timer_list *);
49static void idt77105_restart_timer_func(unsigned long); 49static void idt77105_restart_timer_func(struct timer_list *);
50 50
51 51
52static DEFINE_TIMER(stats_timer, idt77105_stats_timer_func); 52static DEFINE_TIMER(stats_timer, idt77105_stats_timer_func);
@@ -80,7 +80,7 @@ static u16 get_counter(struct atm_dev *dev, int counter)
80 * a separate copy of the stats allows implementation of 80 * a separate copy of the stats allows implementation of
81 * an ioctl which gathers the stats *without* zero'ing them. 81 * an ioctl which gathers the stats *without* zero'ing them.
82 */ 82 */
83static void idt77105_stats_timer_func(unsigned long dummy) 83static void idt77105_stats_timer_func(struct timer_list *unused)
84{ 84{
85 struct idt77105_priv *walk; 85 struct idt77105_priv *walk;
86 struct atm_dev *dev; 86 struct atm_dev *dev;
@@ -109,7 +109,7 @@ static void idt77105_stats_timer_func(unsigned long dummy)
109 * interrupts need to be disabled when the cable is pulled out 109 * interrupts need to be disabled when the cable is pulled out
110 * to avoid lots of spurious cell error interrupts. 110 * to avoid lots of spurious cell error interrupts.
111 */ 111 */
112static void idt77105_restart_timer_func(unsigned long dummy) 112static void idt77105_restart_timer_func(struct timer_list *unused)
113{ 113{
114 struct idt77105_priv *walk; 114 struct idt77105_priv *walk;
115 struct atm_dev *dev; 115 struct atm_dev *dev;
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 0e3b9c44c808..0277f36be85b 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -1528,9 +1528,9 @@ idt77252_tx(struct idt77252_dev *card)
1528 1528
1529 1529
1530static void 1530static void
1531tst_timer(unsigned long data) 1531tst_timer(struct timer_list *t)
1532{ 1532{
1533 struct idt77252_dev *card = (struct idt77252_dev *)data; 1533 struct idt77252_dev *card = from_timer(card, t, tst_timer);
1534 unsigned long base, idle, jump; 1534 unsigned long base, idle, jump;
1535 unsigned long flags; 1535 unsigned long flags;
1536 u32 pc; 1536 u32 pc;
@@ -3634,7 +3634,7 @@ static int idt77252_init_one(struct pci_dev *pcidev,
3634 spin_lock_init(&card->cmd_lock); 3634 spin_lock_init(&card->cmd_lock);
3635 spin_lock_init(&card->tst_lock); 3635 spin_lock_init(&card->tst_lock);
3636 3636
3637 setup_timer(&card->tst_timer, tst_timer, (unsigned long)card); 3637 timer_setup(&card->tst_timer, tst_timer, 0);
3638 3638
3639 /* Do the I/O remapping... */ 3639 /* Do the I/O remapping... */
3640 card->membase = ioremap(membase, 1024); 3640 card->membase = ioremap(membase, 1024);
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index 12f646760b68..98a3a43484c8 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -75,7 +75,7 @@ static void desc_dbg(IADEV *iadev);
75static IADEV *ia_dev[8]; 75static IADEV *ia_dev[8];
76static struct atm_dev *_ia_dev[8]; 76static struct atm_dev *_ia_dev[8];
77static int iadev_count; 77static int iadev_count;
78static void ia_led_timer(unsigned long arg); 78static void ia_led_timer(struct timer_list *unused);
79static DEFINE_TIMER(ia_timer, ia_led_timer); 79static DEFINE_TIMER(ia_timer, ia_led_timer);
80static int IA_TX_BUF = DFL_TX_BUFFERS, IA_TX_BUF_SZ = DFL_TX_BUF_SZ; 80static int IA_TX_BUF = DFL_TX_BUFFERS, IA_TX_BUF_SZ = DFL_TX_BUF_SZ;
81static int IA_RX_BUF = DFL_RX_BUFFERS, IA_RX_BUF_SZ = DFL_RX_BUF_SZ; 81static int IA_RX_BUF = DFL_RX_BUFFERS, IA_RX_BUF_SZ = DFL_RX_BUF_SZ;
@@ -2432,7 +2432,7 @@ static void ia_update_stats(IADEV *iadev) {
2432 return; 2432 return;
2433} 2433}
2434 2434
2435static void ia_led_timer(unsigned long arg) { 2435static void ia_led_timer(struct timer_list *unused) {
2436 unsigned long flags; 2436 unsigned long flags;
2437 static u_char blinking[8] = {0, 0, 0, 0, 0, 0, 0, 0}; 2437 static u_char blinking[8] = {0, 0, 0, 0, 0, 0, 0, 0};
2438 u_char i; 2438 u_char i;
diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
index 2351dad78ff5..6664aa50789e 100644
--- a/drivers/atm/lanai.c
+++ b/drivers/atm/lanai.c
@@ -1761,9 +1761,9 @@ static void iter_dequeue(struct lanai_dev *lanai, vci_t vci)
1761} 1761}
1762#endif /* !DEBUG_RW */ 1762#endif /* !DEBUG_RW */
1763 1763
1764static void lanai_timed_poll(unsigned long arg) 1764static void lanai_timed_poll(struct timer_list *t)
1765{ 1765{
1766 struct lanai_dev *lanai = (struct lanai_dev *) arg; 1766 struct lanai_dev *lanai = from_timer(lanai, t, timer);
1767#ifndef DEBUG_RW 1767#ifndef DEBUG_RW
1768 unsigned long flags; 1768 unsigned long flags;
1769#ifdef USE_POWERDOWN 1769#ifdef USE_POWERDOWN
@@ -1790,10 +1790,8 @@ static void lanai_timed_poll(unsigned long arg)
1790 1790
1791static inline void lanai_timed_poll_start(struct lanai_dev *lanai) 1791static inline void lanai_timed_poll_start(struct lanai_dev *lanai)
1792{ 1792{
1793 init_timer(&lanai->timer); 1793 timer_setup(&lanai->timer, lanai_timed_poll, 0);
1794 lanai->timer.expires = jiffies + LANAI_POLL_PERIOD; 1794 lanai->timer.expires = jiffies + LANAI_POLL_PERIOD;
1795 lanai->timer.data = (unsigned long) lanai;
1796 lanai->timer.function = lanai_timed_poll;
1797 add_timer(&lanai->timer); 1795 add_timer(&lanai->timer);
1798} 1796}
1799 1797
diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
index a9702836cbae..cbec9adc01c7 100644
--- a/drivers/atm/nicstar.c
+++ b/drivers/atm/nicstar.c
@@ -145,7 +145,7 @@ static int ns_ioctl(struct atm_dev *dev, unsigned int cmd, void __user * arg);
145#ifdef EXTRA_DEBUG 145#ifdef EXTRA_DEBUG
146static void which_list(ns_dev * card, struct sk_buff *skb); 146static void which_list(ns_dev * card, struct sk_buff *skb);
147#endif 147#endif
148static void ns_poll(unsigned long arg); 148static void ns_poll(struct timer_list *unused);
149static void ns_phy_put(struct atm_dev *dev, unsigned char value, 149static void ns_phy_put(struct atm_dev *dev, unsigned char value,
150 unsigned long addr); 150 unsigned long addr);
151static unsigned char ns_phy_get(struct atm_dev *dev, unsigned long addr); 151static unsigned char ns_phy_get(struct atm_dev *dev, unsigned long addr);
@@ -284,10 +284,8 @@ static int __init nicstar_init(void)
284 XPRINTK("nicstar: nicstar_init() returned.\n"); 284 XPRINTK("nicstar: nicstar_init() returned.\n");
285 285
286 if (!error) { 286 if (!error) {
287 init_timer(&ns_timer); 287 timer_setup(&ns_timer, ns_poll, 0);
288 ns_timer.expires = jiffies + NS_POLL_PERIOD; 288 ns_timer.expires = jiffies + NS_POLL_PERIOD;
289 ns_timer.data = 0UL;
290 ns_timer.function = ns_poll;
291 add_timer(&ns_timer); 289 add_timer(&ns_timer);
292 } 290 }
293 291
@@ -2681,7 +2679,7 @@ static void which_list(ns_dev * card, struct sk_buff *skb)
2681} 2679}
2682#endif /* EXTRA_DEBUG */ 2680#endif /* EXTRA_DEBUG */
2683 2681
2684static void ns_poll(unsigned long arg) 2682static void ns_poll(struct timer_list *unused)
2685{ 2683{
2686 int i; 2684 int i;
2687 ns_dev *card; 2685 ns_dev *card;
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 680ee1d36ac9..38559f04db2c 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -481,7 +481,7 @@ static bool wakeup_source_not_registered(struct wakeup_source *ws)
481 * Use timer struct to check if the given source is initialized 481 * Use timer struct to check if the given source is initialized
482 * by wakeup_source_add. 482 * by wakeup_source_add.
483 */ 483 */
484 return ws->timer.function != (TIMER_FUNC_TYPE)pm_wakeup_timer_fn; 484 return ws->timer.function != pm_wakeup_timer_fn;
485} 485}
486 486
487/* 487/*
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index 255591ab3716..442e777bdfb2 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -3079,11 +3079,10 @@ DAC960_InitializeController(DAC960_Controller_T *Controller)
3079 /* 3079 /*
3080 Initialize the Monitoring Timer. 3080 Initialize the Monitoring Timer.
3081 */ 3081 */
3082 init_timer(&Controller->MonitoringTimer); 3082 timer_setup(&Controller->MonitoringTimer,
3083 DAC960_MonitoringTimerFunction, 0);
3083 Controller->MonitoringTimer.expires = 3084 Controller->MonitoringTimer.expires =
3084 jiffies + DAC960_MonitoringTimerInterval; 3085 jiffies + DAC960_MonitoringTimerInterval;
3085 Controller->MonitoringTimer.data = (unsigned long) Controller;
3086 Controller->MonitoringTimer.function = DAC960_MonitoringTimerFunction;
3087 add_timer(&Controller->MonitoringTimer); 3086 add_timer(&Controller->MonitoringTimer);
3088 Controller->ControllerInitialized = true; 3087 Controller->ControllerInitialized = true;
3089 return true; 3088 return true;
@@ -5620,9 +5619,9 @@ static void DAC960_V2_QueueMonitoringCommand(DAC960_Command_T *Command)
5620 the status of DAC960 Controllers. 5619 the status of DAC960 Controllers.
5621*/ 5620*/
5622 5621
5623static void DAC960_MonitoringTimerFunction(unsigned long TimerData) 5622static void DAC960_MonitoringTimerFunction(struct timer_list *t)
5624{ 5623{
5625 DAC960_Controller_T *Controller = (DAC960_Controller_T *) TimerData; 5624 DAC960_Controller_T *Controller = from_timer(Controller, t, MonitoringTimer);
5626 DAC960_Command_T *Command; 5625 DAC960_Command_T *Command;
5627 unsigned long flags; 5626 unsigned long flags;
5628 5627
diff --git a/drivers/block/DAC960.h b/drivers/block/DAC960.h
index 85fa9bb63759..6a6226a2b932 100644
--- a/drivers/block/DAC960.h
+++ b/drivers/block/DAC960.h
@@ -4406,7 +4406,7 @@ static irqreturn_t DAC960_PD_InterruptHandler(int, void *);
4406static irqreturn_t DAC960_P_InterruptHandler(int, void *); 4406static irqreturn_t DAC960_P_InterruptHandler(int, void *);
4407static void DAC960_V1_QueueMonitoringCommand(DAC960_Command_T *); 4407static void DAC960_V1_QueueMonitoringCommand(DAC960_Command_T *);
4408static void DAC960_V2_QueueMonitoringCommand(DAC960_Command_T *); 4408static void DAC960_V2_QueueMonitoringCommand(DAC960_Command_T *);
4409static void DAC960_MonitoringTimerFunction(unsigned long); 4409static void DAC960_MonitoringTimerFunction(struct timer_list *);
4410static void DAC960_Message(DAC960_MessageLevel_T, unsigned char *, 4410static void DAC960_Message(DAC960_MessageLevel_T, unsigned char *,
4411 DAC960_Controller_T *, ...); 4411 DAC960_Controller_T *, ...);
4412static void DAC960_CreateProcEntries(DAC960_Controller_T *); 4412static void DAC960_CreateProcEntries(DAC960_Controller_T *);
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c
index 55ab25f79a08..812fed069708 100644
--- a/drivers/block/aoe/aoecmd.c
+++ b/drivers/block/aoe/aoecmd.c
@@ -1429,7 +1429,7 @@ aoecmd_ata_id(struct aoedev *d)
1429 1429
1430 d->rttavg = RTTAVG_INIT; 1430 d->rttavg = RTTAVG_INIT;
1431 d->rttdev = RTTDEV_INIT; 1431 d->rttdev = RTTDEV_INIT;
1432 d->timer.function = (TIMER_FUNC_TYPE)rexmit_timer; 1432 d->timer.function = rexmit_timer;
1433 1433
1434 skb = skb_clone(skb, GFP_ATOMIC); 1434 skb = skb_clone(skb, GFP_ATOMIC);
1435 if (skb) { 1435 if (skb) {
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
index ae596e55bcb6..8bc3b9fd8dd2 100644
--- a/drivers/block/ataflop.c
+++ b/drivers/block/ataflop.c
@@ -342,8 +342,8 @@ static int NeedSeek = 0;
342static void fd_select_side( int side ); 342static void fd_select_side( int side );
343static void fd_select_drive( int drive ); 343static void fd_select_drive( int drive );
344static void fd_deselect( void ); 344static void fd_deselect( void );
345static void fd_motor_off_timer( unsigned long dummy ); 345static void fd_motor_off_timer(struct timer_list *unused);
346static void check_change( unsigned long dummy ); 346static void check_change(struct timer_list *unused);
347static irqreturn_t floppy_irq (int irq, void *dummy); 347static irqreturn_t floppy_irq (int irq, void *dummy);
348static void fd_error( void ); 348static void fd_error( void );
349static int do_format(int drive, int type, struct atari_format_descr *desc); 349static int do_format(int drive, int type, struct atari_format_descr *desc);
@@ -353,12 +353,12 @@ static void fd_calibrate_done( int status );
353static void fd_seek( void ); 353static void fd_seek( void );
354static void fd_seek_done( int status ); 354static void fd_seek_done( int status );
355static void fd_rwsec( void ); 355static void fd_rwsec( void );
356static void fd_readtrack_check( unsigned long dummy ); 356static void fd_readtrack_check(struct timer_list *unused);
357static void fd_rwsec_done( int status ); 357static void fd_rwsec_done( int status );
358static void fd_rwsec_done1(int status); 358static void fd_rwsec_done1(int status);
359static void fd_writetrack( void ); 359static void fd_writetrack( void );
360static void fd_writetrack_done( int status ); 360static void fd_writetrack_done( int status );
361static void fd_times_out( unsigned long dummy ); 361static void fd_times_out(struct timer_list *unused);
362static void finish_fdc( void ); 362static void finish_fdc( void );
363static void finish_fdc_done( int dummy ); 363static void finish_fdc_done( int dummy );
364static void setup_req_params( int drive ); 364static void setup_req_params( int drive );
@@ -479,7 +479,7 @@ static void fd_deselect( void )
479 * counts the index signals, which arrive only if one drive is selected. 479 * counts the index signals, which arrive only if one drive is selected.
480 */ 480 */
481 481
482static void fd_motor_off_timer( unsigned long dummy ) 482static void fd_motor_off_timer(struct timer_list *unused)
483{ 483{
484 unsigned char status; 484 unsigned char status;
485 485
@@ -515,7 +515,7 @@ static void fd_motor_off_timer( unsigned long dummy )
515 * as possible) and keep track of the current state of the write protection. 515 * as possible) and keep track of the current state of the write protection.
516 */ 516 */
517 517
518static void check_change( unsigned long dummy ) 518static void check_change(struct timer_list *unused)
519{ 519{
520 static int drive = 0; 520 static int drive = 0;
521 521
@@ -966,7 +966,7 @@ static void fd_rwsec( void )
966} 966}
967 967
968 968
969static void fd_readtrack_check( unsigned long dummy ) 969static void fd_readtrack_check(struct timer_list *unused)
970{ 970{
971 unsigned long flags, addr, addr2; 971 unsigned long flags, addr, addr2;
972 972
@@ -1237,7 +1237,7 @@ static void fd_writetrack_done( int status )
1237 fd_error(); 1237 fd_error();
1238} 1238}
1239 1239
1240static void fd_times_out( unsigned long dummy ) 1240static void fd_times_out(struct timer_list *unused)
1241{ 1241{
1242 atari_disable_irq( IRQ_MFP_FDC ); 1242 atari_disable_irq( IRQ_MFP_FDC );
1243 if (!FloppyIRQHandler) goto end; /* int occurred after timer was fired, but 1243 if (!FloppyIRQHandler) goto end; /* int occurred after timer was fired, but
diff --git a/drivers/block/rsxx/cregs.c b/drivers/block/rsxx/cregs.c
index 926dce9c452f..c148e83e4ed7 100644
--- a/drivers/block/rsxx/cregs.c
+++ b/drivers/block/rsxx/cregs.c
@@ -203,9 +203,9 @@ static int creg_queue_cmd(struct rsxx_cardinfo *card,
203 return 0; 203 return 0;
204} 204}
205 205
206static void creg_cmd_timed_out(unsigned long data) 206static void creg_cmd_timed_out(struct timer_list *t)
207{ 207{
208 struct rsxx_cardinfo *card = (struct rsxx_cardinfo *) data; 208 struct rsxx_cardinfo *card = from_timer(card, t, creg_ctrl.cmd_timer);
209 struct creg_cmd *cmd; 209 struct creg_cmd *cmd;
210 210
211 spin_lock(&card->creg_ctrl.lock); 211 spin_lock(&card->creg_ctrl.lock);
@@ -745,8 +745,7 @@ int rsxx_creg_setup(struct rsxx_cardinfo *card)
745 mutex_init(&card->creg_ctrl.reset_lock); 745 mutex_init(&card->creg_ctrl.reset_lock);
746 INIT_LIST_HEAD(&card->creg_ctrl.queue); 746 INIT_LIST_HEAD(&card->creg_ctrl.queue);
747 spin_lock_init(&card->creg_ctrl.lock); 747 spin_lock_init(&card->creg_ctrl.lock);
748 setup_timer(&card->creg_ctrl.cmd_timer, creg_cmd_timed_out, 748 timer_setup(&card->creg_ctrl.cmd_timer, creg_cmd_timed_out, 0);
749 (unsigned long) card);
750 749
751 return 0; 750 return 0;
752} 751}
diff --git a/drivers/block/rsxx/dma.c b/drivers/block/rsxx/dma.c
index 6a1b2177951c..beaccf197a5a 100644
--- a/drivers/block/rsxx/dma.c
+++ b/drivers/block/rsxx/dma.c
@@ -354,9 +354,9 @@ static void rsxx_handle_dma_error(struct rsxx_dma_ctrl *ctrl,
354 rsxx_complete_dma(ctrl, dma, status); 354 rsxx_complete_dma(ctrl, dma, status);
355} 355}
356 356
357static void dma_engine_stalled(unsigned long data) 357static void dma_engine_stalled(struct timer_list *t)
358{ 358{
359 struct rsxx_dma_ctrl *ctrl = (struct rsxx_dma_ctrl *)data; 359 struct rsxx_dma_ctrl *ctrl = from_timer(ctrl, t, activity_timer);
360 int cnt; 360 int cnt;
361 361
362 if (atomic_read(&ctrl->stats.hw_q_depth) == 0 || 362 if (atomic_read(&ctrl->stats.hw_q_depth) == 0 ||
@@ -838,8 +838,7 @@ static int rsxx_dma_ctrl_init(struct pci_dev *dev,
838 mutex_init(&ctrl->work_lock); 838 mutex_init(&ctrl->work_lock);
839 INIT_LIST_HEAD(&ctrl->queue); 839 INIT_LIST_HEAD(&ctrl->queue);
840 840
841 setup_timer(&ctrl->activity_timer, dma_engine_stalled, 841 timer_setup(&ctrl->activity_timer, dma_engine_stalled, 0);
842 (unsigned long)ctrl);
843 842
844 ctrl->issue_wq = alloc_ordered_workqueue(DRIVER_NAME"_issue", 0); 843 ctrl->issue_wq = alloc_ordered_workqueue(DRIVER_NAME"_issue", 0);
845 if (!ctrl->issue_wq) 844 if (!ctrl->issue_wq)
diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c
index 2819f23e8bf2..de0d08133c7e 100644
--- a/drivers/block/skd_main.c
+++ b/drivers/block/skd_main.c
@@ -707,9 +707,9 @@ static void skd_start_queue(struct work_struct *work)
707 blk_mq_start_hw_queues(skdev->queue); 707 blk_mq_start_hw_queues(skdev->queue);
708} 708}
709 709
710static void skd_timer_tick(ulong arg) 710static void skd_timer_tick(struct timer_list *t)
711{ 711{
712 struct skd_device *skdev = (struct skd_device *)arg; 712 struct skd_device *skdev = from_timer(skdev, t, timer);
713 unsigned long reqflags; 713 unsigned long reqflags;
714 u32 state; 714 u32 state;
715 715
@@ -857,7 +857,7 @@ static int skd_start_timer(struct skd_device *skdev)
857{ 857{
858 int rc; 858 int rc;
859 859
860 setup_timer(&skdev->timer, skd_timer_tick, (ulong)skdev); 860 timer_setup(&skdev->timer, skd_timer_tick, 0);
861 861
862 rc = mod_timer(&skdev->timer, (jiffies + HZ)); 862 rc = mod_timer(&skdev->timer, (jiffies + HZ));
863 if (rc) 863 if (rc)
diff --git a/drivers/block/sunvdc.c b/drivers/block/sunvdc.c
index ad9749463d4f..5ca56bfae63c 100644
--- a/drivers/block/sunvdc.c
+++ b/drivers/block/sunvdc.c
@@ -81,7 +81,7 @@ struct vdc_port {
81 81
82static void vdc_ldc_reset(struct vdc_port *port); 82static void vdc_ldc_reset(struct vdc_port *port);
83static void vdc_ldc_reset_work(struct work_struct *work); 83static void vdc_ldc_reset_work(struct work_struct *work);
84static void vdc_ldc_reset_timer(unsigned long _arg); 84static void vdc_ldc_reset_timer(struct timer_list *t);
85 85
86static inline struct vdc_port *to_vdc_port(struct vio_driver_state *vio) 86static inline struct vdc_port *to_vdc_port(struct vio_driver_state *vio)
87{ 87{
@@ -974,8 +974,7 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
974 */ 974 */
975 ldc_timeout = mdesc_get_property(hp, vdev->mp, "vdc-timeout", NULL); 975 ldc_timeout = mdesc_get_property(hp, vdev->mp, "vdc-timeout", NULL);
976 port->ldc_timeout = ldc_timeout ? *ldc_timeout : 0; 976 port->ldc_timeout = ldc_timeout ? *ldc_timeout : 0;
977 setup_timer(&port->ldc_reset_timer, vdc_ldc_reset_timer, 977 timer_setup(&port->ldc_reset_timer, vdc_ldc_reset_timer, 0);
978 (unsigned long)port);
979 INIT_WORK(&port->ldc_reset_work, vdc_ldc_reset_work); 978 INIT_WORK(&port->ldc_reset_work, vdc_ldc_reset_work);
980 979
981 err = vio_driver_init(&port->vio, vdev, VDEV_DISK, 980 err = vio_driver_init(&port->vio, vdev, VDEV_DISK,
@@ -1087,9 +1086,9 @@ static void vdc_queue_drain(struct vdc_port *port)
1087 __blk_end_request_all(req, BLK_STS_IOERR); 1086 __blk_end_request_all(req, BLK_STS_IOERR);
1088} 1087}
1089 1088
1090static void vdc_ldc_reset_timer(unsigned long _arg) 1089static void vdc_ldc_reset_timer(struct timer_list *t)
1091{ 1090{
1092 struct vdc_port *port = (struct vdc_port *) _arg; 1091 struct vdc_port *port = from_timer(port, t, ldc_reset_timer);
1093 struct vio_driver_state *vio = &port->vio; 1092 struct vio_driver_state *vio = &port->vio;
1094 unsigned long flags; 1093 unsigned long flags;
1095 1094
diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c
index e620e423102b..af51015d056e 100644
--- a/drivers/block/swim3.c
+++ b/drivers/block/swim3.c
@@ -397,7 +397,7 @@ static void set_timeout(struct floppy_state *fs, int nticks,
397 if (fs->timeout_pending) 397 if (fs->timeout_pending)
398 del_timer(&fs->timeout); 398 del_timer(&fs->timeout);
399 fs->timeout.expires = jiffies + nticks; 399 fs->timeout.expires = jiffies + nticks;
400 fs->timeout.function = (TIMER_FUNC_TYPE)proc; 400 fs->timeout.function = proc;
401 add_timer(&fs->timeout); 401 add_timer(&fs->timeout);
402 fs->timeout_pending = 1; 402 fs->timeout_pending = 1;
403} 403}
diff --git a/drivers/block/umem.c b/drivers/block/umem.c
index 0677d2514665..8077123678ad 100644
--- a/drivers/block/umem.c
+++ b/drivers/block/umem.c
@@ -718,7 +718,7 @@ static void check_batteries(struct cardinfo *card)
718 set_fault_to_battery_status(card); 718 set_fault_to_battery_status(card);
719} 719}
720 720
721static void check_all_batteries(unsigned long ptr) 721static void check_all_batteries(struct timer_list *unused)
722{ 722{
723 int i; 723 int i;
724 724
@@ -738,8 +738,7 @@ static void check_all_batteries(unsigned long ptr)
738 738
739static void init_battery_timer(void) 739static void init_battery_timer(void)
740{ 740{
741 init_timer(&battery_timer); 741 timer_setup(&battery_timer, check_all_batteries, 0);
742 battery_timer.function = check_all_batteries;
743 battery_timer.expires = jiffies + (HZ * 60); 742 battery_timer.expires = jiffies + (HZ * 60);
744 add_timer(&battery_timer); 743 add_timer(&battery_timer);
745} 744}
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 14459d66ef0c..c24589414c75 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -770,9 +770,9 @@ static void ace_fsm_tasklet(unsigned long data)
770 spin_unlock_irqrestore(&ace->lock, flags); 770 spin_unlock_irqrestore(&ace->lock, flags);
771} 771}
772 772
773static void ace_stall_timer(unsigned long data) 773static void ace_stall_timer(struct timer_list *t)
774{ 774{
775 struct ace_device *ace = (void *)data; 775 struct ace_device *ace = from_timer(ace, t, stall_timer);
776 unsigned long flags; 776 unsigned long flags;
777 777
778 dev_warn(ace->dev, 778 dev_warn(ace->dev,
@@ -984,7 +984,7 @@ static int ace_setup(struct ace_device *ace)
984 * Initialize the state machine tasklet and stall timer 984 * Initialize the state machine tasklet and stall timer
985 */ 985 */
986 tasklet_init(&ace->fsm_tasklet, ace_fsm_tasklet, (unsigned long)ace); 986 tasklet_init(&ace->fsm_tasklet, ace_fsm_tasklet, (unsigned long)ace);
987 setup_timer(&ace->stall_timer, ace_stall_timer, (unsigned long)ace); 987 timer_setup(&ace->stall_timer, ace_stall_timer, 0);
988 988
989 /* 989 /*
990 * Initialize the request queue 990 * Initialize the request queue
diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c
index 1a0385ed6417..839ee61d352a 100644
--- a/drivers/char/dtlk.c
+++ b/drivers/char/dtlk.c
@@ -74,7 +74,7 @@
74#endif /* TRACING */ 74#endif /* TRACING */
75 75
76static DEFINE_MUTEX(dtlk_mutex); 76static DEFINE_MUTEX(dtlk_mutex);
77static void dtlk_timer_tick(unsigned long data); 77static void dtlk_timer_tick(struct timer_list *unused);
78 78
79static int dtlk_major; 79static int dtlk_major;
80static int dtlk_port_lpc; 80static int dtlk_port_lpc;
@@ -259,7 +259,7 @@ static unsigned int dtlk_poll(struct file *file, poll_table * wait)
259 return mask; 259 return mask;
260} 260}
261 261
262static void dtlk_timer_tick(unsigned long data) 262static void dtlk_timer_tick(struct timer_list *unused)
263{ 263{
264 TRACE_TEXT(" dtlk_timer_tick"); 264 TRACE_TEXT(" dtlk_timer_tick");
265 wake_up_interruptible(&dtlk_process_list); 265 wake_up_interruptible(&dtlk_process_list);
diff --git a/drivers/char/hangcheck-timer.c b/drivers/char/hangcheck-timer.c
index 5b8db2ed844d..7700280717f2 100644
--- a/drivers/char/hangcheck-timer.c
+++ b/drivers/char/hangcheck-timer.c
@@ -122,11 +122,11 @@ __setup("hcheck_dump_tasks", hangcheck_parse_dump_tasks);
122/* Last time scheduled */ 122/* Last time scheduled */
123static unsigned long long hangcheck_tsc, hangcheck_tsc_margin; 123static unsigned long long hangcheck_tsc, hangcheck_tsc_margin;
124 124
125static void hangcheck_fire(unsigned long); 125static void hangcheck_fire(struct timer_list *);
126 126
127static DEFINE_TIMER(hangcheck_ticktock, hangcheck_fire); 127static DEFINE_TIMER(hangcheck_ticktock, hangcheck_fire);
128 128
129static void hangcheck_fire(unsigned long data) 129static void hangcheck_fire(struct timer_list *unused)
130{ 130{
131 unsigned long long cur_tsc, tsc_diff; 131 unsigned long long cur_tsc, tsc_diff;
132 132
diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c
index c4ef73c6f455..6edfaa72b98b 100644
--- a/drivers/char/ipmi/bt-bmc.c
+++ b/drivers/char/ipmi/bt-bmc.c
@@ -367,9 +367,9 @@ static const struct file_operations bt_bmc_fops = {
367 .unlocked_ioctl = bt_bmc_ioctl, 367 .unlocked_ioctl = bt_bmc_ioctl,
368}; 368};
369 369
370static void poll_timer(unsigned long data) 370static void poll_timer(struct timer_list *t)
371{ 371{
372 struct bt_bmc *bt_bmc = (void *)data; 372 struct bt_bmc *bt_bmc = from_timer(bt_bmc, t, poll_timer);
373 373
374 bt_bmc->poll_timer.expires += msecs_to_jiffies(500); 374 bt_bmc->poll_timer.expires += msecs_to_jiffies(500);
375 wake_up(&bt_bmc->queue); 375 wake_up(&bt_bmc->queue);
@@ -487,8 +487,7 @@ static int bt_bmc_probe(struct platform_device *pdev)
487 dev_info(dev, "Using IRQ %d\n", bt_bmc->irq); 487 dev_info(dev, "Using IRQ %d\n", bt_bmc->irq);
488 } else { 488 } else {
489 dev_info(dev, "No IRQ; using timer\n"); 489 dev_info(dev, "No IRQ; using timer\n");
490 setup_timer(&bt_bmc->poll_timer, poll_timer, 490 timer_setup(&bt_bmc->poll_timer, poll_timer, 0);
491 (unsigned long)bt_bmc);
492 bt_bmc->poll_timer.expires = jiffies + msecs_to_jiffies(10); 491 bt_bmc->poll_timer.expires = jiffies + msecs_to_jiffies(10);
493 add_timer(&bt_bmc->poll_timer); 492 add_timer(&bt_bmc->poll_timer);
494 } 493 }
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index 9de189db2cc3..f45732a2cb3e 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -4766,7 +4766,7 @@ static struct timer_list ipmi_timer;
4766 4766
4767static atomic_t stop_operation; 4767static atomic_t stop_operation;
4768 4768
4769static void ipmi_timeout(unsigned long data) 4769static void ipmi_timeout(struct timer_list *unused)
4770{ 4770{
4771 ipmi_smi_t intf; 4771 ipmi_smi_t intf;
4772 int nt = 0; 4772 int nt = 0;
@@ -5172,7 +5172,7 @@ static int ipmi_init_msghandler(void)
5172 5172
5173#endif /* CONFIG_IPMI_PROC_INTERFACE */ 5173#endif /* CONFIG_IPMI_PROC_INTERFACE */
5174 5174
5175 setup_timer(&ipmi_timer, ipmi_timeout, 0); 5175 timer_setup(&ipmi_timer, ipmi_timeout, 0);
5176 mod_timer(&ipmi_timer, jiffies + IPMI_TIMEOUT_JIFFIES); 5176 mod_timer(&ipmi_timer, jiffies + IPMI_TIMEOUT_JIFFIES);
5177 5177
5178 atomic_notifier_chain_register(&panic_notifier_list, &panic_block); 5178 atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 71d33a1807e4..779869ed32b1 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -1091,9 +1091,9 @@ static void set_need_watch(void *send_info, bool enable)
1091 spin_unlock_irqrestore(&smi_info->si_lock, flags); 1091 spin_unlock_irqrestore(&smi_info->si_lock, flags);
1092} 1092}
1093 1093
1094static void smi_timeout(unsigned long data) 1094static void smi_timeout(struct timer_list *t)
1095{ 1095{
1096 struct smi_info *smi_info = (struct smi_info *) data; 1096 struct smi_info *smi_info = from_timer(smi_info, t, si_timer);
1097 enum si_sm_result smi_result; 1097 enum si_sm_result smi_result;
1098 unsigned long flags; 1098 unsigned long flags;
1099 unsigned long jiffies_now; 1099 unsigned long jiffies_now;
@@ -1166,7 +1166,7 @@ static int smi_start_processing(void *send_info,
1166 new_smi->intf = intf; 1166 new_smi->intf = intf;
1167 1167
1168 /* Set up the timer that drives the interface. */ 1168 /* Set up the timer that drives the interface. */
1169 setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi); 1169 timer_setup(&new_smi->si_timer, smi_timeout, 0);
1170 smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES); 1170 smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES);
1171 1171
1172 /* Try to claim any interrupts. */ 1172 /* Try to claim any interrupts. */
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 466b3a1c0adf..3cfaec728604 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -551,9 +551,9 @@ static void start_get(struct ssif_info *ssif_info)
551 } 551 }
552} 552}
553 553
554static void retry_timeout(unsigned long data) 554static void retry_timeout(struct timer_list *t)
555{ 555{
556 struct ssif_info *ssif_info = (void *) data; 556 struct ssif_info *ssif_info = from_timer(ssif_info, t, retry_timer);
557 unsigned long oflags, *flags; 557 unsigned long oflags, *flags;
558 bool waiting; 558 bool waiting;
559 559
@@ -1691,8 +1691,7 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)
1691 1691
1692 spin_lock_init(&ssif_info->lock); 1692 spin_lock_init(&ssif_info->lock);
1693 ssif_info->ssif_state = SSIF_NORMAL; 1693 ssif_info->ssif_state = SSIF_NORMAL;
1694 setup_timer(&ssif_info->retry_timer, retry_timeout, 1694 timer_setup(&ssif_info->retry_timer, retry_timeout, 0);
1695 (unsigned long)ssif_info);
1696 1695
1697 for (i = 0; i < SSIF_NUM_STATS; i++) 1696 for (i = 0; i < SSIF_NUM_STATS; i++)
1698 atomic_set(&ssif_info->stats[i], 0); 1697 atomic_set(&ssif_info->stats[i], 0);
diff --git a/drivers/char/nwbutton.c b/drivers/char/nwbutton.c
index 44006ed9558f..a7113b78251a 100644
--- a/drivers/char/nwbutton.c
+++ b/drivers/char/nwbutton.c
@@ -23,7 +23,7 @@
23#define __NWBUTTON_C /* Tell the header file who we are */ 23#define __NWBUTTON_C /* Tell the header file who we are */
24#include "nwbutton.h" 24#include "nwbutton.h"
25 25
26static void button_sequence_finished (unsigned long parameters); 26static void button_sequence_finished(struct timer_list *unused);
27 27
28static int button_press_count; /* The count of button presses */ 28static int button_press_count; /* The count of button presses */
29/* Times for the end of a sequence */ 29/* Times for the end of a sequence */
@@ -127,7 +127,7 @@ static void button_consume_callbacks (int bpcount)
127 * any matching registered function callbacks, initiate reboot, etc.). 127 * any matching registered function callbacks, initiate reboot, etc.).
128 */ 128 */
129 129
130static void button_sequence_finished (unsigned long parameters) 130static void button_sequence_finished(struct timer_list *unused)
131{ 131{
132 if (IS_ENABLED(CONFIG_NWBUTTON_REBOOT) && 132 if (IS_ENABLED(CONFIG_NWBUTTON_REBOOT) &&
133 button_press_count == reboot_count) 133 button_press_count == reboot_count)
diff --git a/drivers/char/nwbutton.h b/drivers/char/nwbutton.h
index abee3ca74801..9dedfd7adc0e 100644
--- a/drivers/char/nwbutton.h
+++ b/drivers/char/nwbutton.h
@@ -25,7 +25,7 @@ struct button_callback {
25 25
26/* Function prototypes: */ 26/* Function prototypes: */
27 27
28static void button_sequence_finished (unsigned long parameters); 28static void button_sequence_finished(struct timer_list *unused);
29static irqreturn_t button_handler (int irq, void *dev_id); 29static irqreturn_t button_handler (int irq, void *dev_id);
30int button_init (void); 30int button_init (void);
31int button_add_callback (void (*callback) (void), int count); 31int button_add_callback (void (*callback) (void), int count);
diff --git a/drivers/char/rtc.c b/drivers/char/rtc.c
index 616871e68e09..5542a438bbd0 100644
--- a/drivers/char/rtc.c
+++ b/drivers/char/rtc.c
@@ -135,7 +135,7 @@ static struct fasync_struct *rtc_async_queue;
135static DECLARE_WAIT_QUEUE_HEAD(rtc_wait); 135static DECLARE_WAIT_QUEUE_HEAD(rtc_wait);
136 136
137#ifdef RTC_IRQ 137#ifdef RTC_IRQ
138static void rtc_dropped_irq(unsigned long data); 138static void rtc_dropped_irq(struct timer_list *unused);
139 139
140static DEFINE_TIMER(rtc_irq_timer, rtc_dropped_irq); 140static DEFINE_TIMER(rtc_irq_timer, rtc_dropped_irq);
141#endif 141#endif
@@ -1171,7 +1171,7 @@ module_exit(rtc_exit);
1171 * for something that requires a steady > 1KHz signal anyways.) 1171 * for something that requires a steady > 1KHz signal anyways.)
1172 */ 1172 */
1173 1173
1174static void rtc_dropped_irq(unsigned long data) 1174static void rtc_dropped_irq(struct timer_list *unused)
1175{ 1175{
1176 unsigned long freq; 1176 unsigned long freq;
1177 1177
diff --git a/drivers/char/tpm/tpm-dev-common.c b/drivers/char/tpm/tpm-dev-common.c
index 461bf0b8a094..230b99288024 100644
--- a/drivers/char/tpm/tpm-dev-common.c
+++ b/drivers/char/tpm/tpm-dev-common.c
@@ -22,9 +22,9 @@
22#include "tpm.h" 22#include "tpm.h"
23#include "tpm-dev.h" 23#include "tpm-dev.h"
24 24
25static void user_reader_timeout(unsigned long ptr) 25static void user_reader_timeout(struct timer_list *t)
26{ 26{
27 struct file_priv *priv = (struct file_priv *)ptr; 27 struct file_priv *priv = from_timer(priv, t, user_read_timer);
28 28
29 pr_warn("TPM user space timeout is deprecated (pid=%d)\n", 29 pr_warn("TPM user space timeout is deprecated (pid=%d)\n",
30 task_tgid_nr(current)); 30 task_tgid_nr(current));
@@ -48,8 +48,7 @@ void tpm_common_open(struct file *file, struct tpm_chip *chip,
48 priv->chip = chip; 48 priv->chip = chip;
49 atomic_set(&priv->data_pending, 0); 49 atomic_set(&priv->data_pending, 0);
50 mutex_init(&priv->buffer_mutex); 50 mutex_init(&priv->buffer_mutex);
51 setup_timer(&priv->user_read_timer, user_reader_timeout, 51 timer_setup(&priv->user_read_timer, user_reader_timeout, 0);
52 (unsigned long)priv);
53 INIT_WORK(&priv->work, timeout_work); 52 INIT_WORK(&priv->work, timeout_work);
54 53
55 file->private_data = priv; 54 file->private_data = priv;
diff --git a/drivers/clocksource/timer-of.c b/drivers/clocksource/timer-of.c
index 7c64a5c1bfc1..a31990408153 100644
--- a/drivers/clocksource/timer-of.c
+++ b/drivers/clocksource/timer-of.c
@@ -177,7 +177,14 @@ out_fail:
177 return ret; 177 return ret;
178} 178}
179 179
180void timer_of_exit(struct timer_of *to) 180/**
181 * timer_of_cleanup - release timer_of ressources
182 * @to: timer_of structure
183 *
184 * Release the ressources that has been used in timer_of_init().
185 * This function should be called in init error cases
186 */
187void __init timer_of_cleanup(struct timer_of *to)
181{ 188{
182 if (to->flags & TIMER_OF_IRQ) 189 if (to->flags & TIMER_OF_IRQ)
183 timer_irq_exit(&to->of_irq); 190 timer_irq_exit(&to->of_irq);
diff --git a/drivers/clocksource/timer-of.h b/drivers/clocksource/timer-of.h
index 43f5ba3f8979..3f708f1be43d 100644
--- a/drivers/clocksource/timer-of.h
+++ b/drivers/clocksource/timer-of.h
@@ -68,6 +68,6 @@ static inline unsigned long timer_of_period(struct timer_of *to)
68extern int __init timer_of_init(struct device_node *np, 68extern int __init timer_of_init(struct device_node *np,
69 struct timer_of *to); 69 struct timer_of *to);
70 70
71extern void timer_of_exit(struct timer_of *to); 71extern void __init timer_of_cleanup(struct timer_of *to);
72 72
73#endif 73#endif
diff --git a/drivers/firmware/psci_checker.c b/drivers/firmware/psci_checker.c
index 56cf825ed779..f3f4f810e5df 100644
--- a/drivers/firmware/psci_checker.c
+++ b/drivers/firmware/psci_checker.c
@@ -220,7 +220,7 @@ out_free_cpus:
220 return err; 220 return err;
221} 221}
222 222
223static void dummy_callback(unsigned long ignored) {} 223static void dummy_callback(struct timer_list *unused) {}
224 224
225static int suspend_cpu(int index, bool broadcast) 225static int suspend_cpu(int index, bool broadcast)
226{ 226{
@@ -287,7 +287,7 @@ static int suspend_test_thread(void *arg)
287 pr_info("CPU %d entering suspend cycles, states 1 through %d\n", 287 pr_info("CPU %d entering suspend cycles, states 1 through %d\n",
288 cpu, drv->state_count - 1); 288 cpu, drv->state_count - 1);
289 289
290 setup_timer_on_stack(&wakeup_timer, dummy_callback, 0); 290 timer_setup_on_stack(&wakeup_timer, dummy_callback, 0);
291 for (i = 0; i < NUM_SUSPEND_CYCLE; ++i) { 291 for (i = 0; i < NUM_SUSPEND_CYCLE; ++i) {
292 int index; 292 int index;
293 /* 293 /*
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index bd5b8065c32e..2fa95aef74d5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -268,9 +268,10 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
268 * 268 *
269 * Checks for fence activity. 269 * Checks for fence activity.
270 */ 270 */
271static void amdgpu_fence_fallback(unsigned long arg) 271static void amdgpu_fence_fallback(struct timer_list *t)
272{ 272{
273 struct amdgpu_ring *ring = (void *)arg; 273 struct amdgpu_ring *ring = from_timer(ring, t,
274 fence_drv.fallback_timer);
274 275
275 amdgpu_fence_process(ring); 276 amdgpu_fence_process(ring);
276} 277}
@@ -422,8 +423,7 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
422 atomic_set(&ring->fence_drv.last_seq, 0); 423 atomic_set(&ring->fence_drv.last_seq, 0);
423 ring->fence_drv.initialized = false; 424 ring->fence_drv.initialized = false;
424 425
425 setup_timer(&ring->fence_drv.fallback_timer, amdgpu_fence_fallback, 426 timer_setup(&ring->fence_drv.fallback_timer, amdgpu_fence_fallback, 0);
426 (unsigned long)ring);
427 427
428 ring->fence_drv.num_fences_mask = num_hw_submission * 2 - 1; 428 ring->fence_drv.num_fences_mask = num_hw_submission * 2 - 1;
429 spin_lock_init(&ring->fence_drv.lock); 429 spin_lock_init(&ring->fence_drv.lock);
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 09c1c4ff93ca..3717b3df34a4 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -367,9 +367,9 @@ void drm_vblank_disable_and_save(struct drm_device *dev, unsigned int pipe)
367 spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags); 367 spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags);
368} 368}
369 369
370static void vblank_disable_fn(unsigned long arg) 370static void vblank_disable_fn(struct timer_list *t)
371{ 371{
372 struct drm_vblank_crtc *vblank = (void *)arg; 372 struct drm_vblank_crtc *vblank = from_timer(vblank, t, disable_timer);
373 struct drm_device *dev = vblank->dev; 373 struct drm_device *dev = vblank->dev;
374 unsigned int pipe = vblank->pipe; 374 unsigned int pipe = vblank->pipe;
375 unsigned long irqflags; 375 unsigned long irqflags;
@@ -436,8 +436,7 @@ int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs)
436 vblank->dev = dev; 436 vblank->dev = dev;
437 vblank->pipe = i; 437 vblank->pipe = i;
438 init_waitqueue_head(&vblank->queue); 438 init_waitqueue_head(&vblank->queue);
439 setup_timer(&vblank->disable_timer, vblank_disable_fn, 439 timer_setup(&vblank->disable_timer, vblank_disable_fn, 0);
440 (unsigned long)vblank);
441 seqlock_init(&vblank->seqlock); 440 seqlock_init(&vblank->seqlock);
442 } 441 }
443 442
@@ -1019,7 +1018,7 @@ static void drm_vblank_put(struct drm_device *dev, unsigned int pipe)
1019 if (drm_vblank_offdelay == 0) 1018 if (drm_vblank_offdelay == 0)
1020 return; 1019 return;
1021 else if (drm_vblank_offdelay < 0) 1020 else if (drm_vblank_offdelay < 0)
1022 vblank_disable_fn((unsigned long)vblank); 1021 vblank_disable_fn(&vblank->disable_timer);
1023 else if (!dev->vblank_disable_immediate) 1022 else if (!dev->vblank_disable_immediate)
1024 mod_timer(&vblank->disable_timer, 1023 mod_timer(&vblank->disable_timer,
1025 jiffies + ((drm_vblank_offdelay * HZ)/1000)); 1024 jiffies + ((drm_vblank_offdelay * HZ)/1000));
@@ -1650,7 +1649,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe)
1650 spin_unlock_irqrestore(&dev->event_lock, irqflags); 1649 spin_unlock_irqrestore(&dev->event_lock, irqflags);
1651 1650
1652 if (disable_irq) 1651 if (disable_irq)
1653 vblank_disable_fn((unsigned long)vblank); 1652 vblank_disable_fn(&vblank->disable_timer);
1654 1653
1655 return true; 1654 return true;
1656} 1655}
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
index 53e03f8af3d5..e6b0940b1ac2 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
@@ -161,9 +161,9 @@ static const struct exynos_drm_crtc_ops vidi_crtc_ops = {
161 .atomic_flush = exynos_crtc_handle_event, 161 .atomic_flush = exynos_crtc_handle_event,
162}; 162};
163 163
164static void vidi_fake_vblank_timer(unsigned long arg) 164static void vidi_fake_vblank_timer(struct timer_list *t)
165{ 165{
166 struct vidi_context *ctx = (void *)arg; 166 struct vidi_context *ctx = from_timer(ctx, t, timer);
167 167
168 if (drm_crtc_handle_vblank(&ctx->crtc->base)) 168 if (drm_crtc_handle_vblank(&ctx->crtc->base))
169 mod_timer(&ctx->timer, 169 mod_timer(&ctx->timer,
@@ -449,7 +449,7 @@ static int vidi_probe(struct platform_device *pdev)
449 449
450 ctx->pdev = pdev; 450 ctx->pdev = pdev;
451 451
452 setup_timer(&ctx->timer, vidi_fake_vblank_timer, (unsigned long)ctx); 452 timer_setup(&ctx->timer, vidi_fake_vblank_timer, 0);
453 453
454 mutex_init(&ctx->lock); 454 mutex_init(&ctx->lock);
455 455
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 4d1f45acf2cd..127815253a84 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -601,9 +601,9 @@ tda998x_reset(struct tda998x_priv *priv)
601 * we have seen a HPD inactive->active transition. This code implements 601 * we have seen a HPD inactive->active transition. This code implements
602 * that delay. 602 * that delay.
603 */ 603 */
604static void tda998x_edid_delay_done(unsigned long data) 604static void tda998x_edid_delay_done(struct timer_list *t)
605{ 605{
606 struct tda998x_priv *priv = (struct tda998x_priv *)data; 606 struct tda998x_priv *priv = from_timer(priv, t, edid_delay_timer);
607 607
608 priv->edid_delay_active = false; 608 priv->edid_delay_active = false;
609 wake_up(&priv->edid_delay_waitq); 609 wake_up(&priv->edid_delay_waitq);
@@ -1492,8 +1492,7 @@ static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
1492 1492
1493 mutex_init(&priv->mutex); /* protect the page access */ 1493 mutex_init(&priv->mutex); /* protect the page access */
1494 init_waitqueue_head(&priv->edid_delay_waitq); 1494 init_waitqueue_head(&priv->edid_delay_waitq);
1495 setup_timer(&priv->edid_delay_timer, tda998x_edid_delay_done, 1495 timer_setup(&priv->edid_delay_timer, tda998x_edid_delay_done, 0);
1496 (unsigned long)priv);
1497 INIT_WORK(&priv->detect_work, tda998x_detect_work); 1496 INIT_WORK(&priv->detect_work, tda998x_detect_work);
1498 1497
1499 /* wake up the device: */ 1498 /* wake up the device: */
diff --git a/drivers/gpu/drm/i915/selftests/lib_sw_fence.c b/drivers/gpu/drm/i915/selftests/lib_sw_fence.c
index 3790fdf44a1a..b26f07b55d86 100644
--- a/drivers/gpu/drm/i915/selftests/lib_sw_fence.c
+++ b/drivers/gpu/drm/i915/selftests/lib_sw_fence.c
@@ -49,9 +49,9 @@ void onstack_fence_fini(struct i915_sw_fence *fence)
49 i915_sw_fence_fini(fence); 49 i915_sw_fence_fini(fence);
50} 50}
51 51
52static void timed_fence_wake(unsigned long data) 52static void timed_fence_wake(struct timer_list *t)
53{ 53{
54 struct timed_fence *tf = (struct timed_fence *)data; 54 struct timed_fence *tf = from_timer(tf, t, timer);
55 55
56 i915_sw_fence_commit(&tf->fence); 56 i915_sw_fence_commit(&tf->fence);
57} 57}
@@ -60,7 +60,7 @@ void timed_fence_init(struct timed_fence *tf, unsigned long expires)
60{ 60{
61 onstack_fence_init(&tf->fence); 61 onstack_fence_init(&tf->fence);
62 62
63 setup_timer_on_stack(&tf->timer, timed_fence_wake, (unsigned long)tf); 63 timer_setup_on_stack(&tf->timer, timed_fence_wake, 0);
64 64
65 if (time_after(expires, jiffies)) 65 if (time_after(expires, jiffies))
66 mod_timer(&tf->timer, expires); 66 mod_timer(&tf->timer, expires);
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_preempt.c b/drivers/gpu/drm/msm/adreno/a5xx_preempt.c
index 40f4840ef98e..970c7963ae29 100644
--- a/drivers/gpu/drm/msm/adreno/a5xx_preempt.c
+++ b/drivers/gpu/drm/msm/adreno/a5xx_preempt.c
@@ -82,9 +82,9 @@ static struct msm_ringbuffer *get_next_ring(struct msm_gpu *gpu)
82 return NULL; 82 return NULL;
83} 83}
84 84
85static void a5xx_preempt_timer(unsigned long data) 85static void a5xx_preempt_timer(struct timer_list *t)
86{ 86{
87 struct a5xx_gpu *a5xx_gpu = (struct a5xx_gpu *) data; 87 struct a5xx_gpu *a5xx_gpu = from_timer(a5xx_gpu, t, preempt_timer);
88 struct msm_gpu *gpu = &a5xx_gpu->base.base; 88 struct msm_gpu *gpu = &a5xx_gpu->base.base;
89 struct drm_device *dev = gpu->dev; 89 struct drm_device *dev = gpu->dev;
90 struct msm_drm_private *priv = dev->dev_private; 90 struct msm_drm_private *priv = dev->dev_private;
@@ -300,6 +300,5 @@ void a5xx_preempt_init(struct msm_gpu *gpu)
300 } 300 }
301 } 301 }
302 302
303 setup_timer(&a5xx_gpu->preempt_timer, a5xx_preempt_timer, 303 timer_setup(&a5xx_gpu->preempt_timer, a5xx_preempt_timer, 0);
304 (unsigned long) a5xx_gpu);
305} 304}
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index 8d4477818ec2..232201403439 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -353,9 +353,9 @@ static void hangcheck_timer_reset(struct msm_gpu *gpu)
353 round_jiffies_up(jiffies + DRM_MSM_HANGCHECK_JIFFIES)); 353 round_jiffies_up(jiffies + DRM_MSM_HANGCHECK_JIFFIES));
354} 354}
355 355
356static void hangcheck_handler(unsigned long data) 356static void hangcheck_handler(struct timer_list *t)
357{ 357{
358 struct msm_gpu *gpu = (struct msm_gpu *)data; 358 struct msm_gpu *gpu = from_timer(gpu, t, hangcheck_timer);
359 struct drm_device *dev = gpu->dev; 359 struct drm_device *dev = gpu->dev;
360 struct msm_drm_private *priv = dev->dev_private; 360 struct msm_drm_private *priv = dev->dev_private;
361 struct msm_ringbuffer *ring = gpu->funcs->active_ring(gpu); 361 struct msm_ringbuffer *ring = gpu->funcs->active_ring(gpu);
@@ -703,8 +703,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
703 INIT_WORK(&gpu->recover_work, recover_worker); 703 INIT_WORK(&gpu->recover_work, recover_worker);
704 704
705 705
706 setup_timer(&gpu->hangcheck_timer, hangcheck_handler, 706 timer_setup(&gpu->hangcheck_timer, hangcheck_handler, 0);
707 (unsigned long)gpu);
708 707
709 spin_lock_init(&gpu->perf_lock); 708 spin_lock_init(&gpu->perf_lock);
710 709
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index b56a05730314..c2cf6d98e577 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -4095,7 +4095,7 @@ static void dsi_update_screen_dispc(struct platform_device *dsidev)
4095} 4095}
4096 4096
4097#ifdef DSI_CATCH_MISSING_TE 4097#ifdef DSI_CATCH_MISSING_TE
4098static void dsi_te_timeout(unsigned long arg) 4098static void dsi_te_timeout(struct timer_list *unused)
4099{ 4099{
4100 DSSERR("TE not received for 250ms!\n"); 4100 DSSERR("TE not received for 250ms!\n");
4101} 4101}
@@ -5449,9 +5449,7 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
5449 dsi_framedone_timeout_work_callback); 5449 dsi_framedone_timeout_work_callback);
5450 5450
5451#ifdef DSI_CATCH_MISSING_TE 5451#ifdef DSI_CATCH_MISSING_TE
5452 init_timer(&dsi->te_timer); 5452 timer_setup(&dsi->te_timer, dsi_te_timeout, 0);
5453 dsi->te_timer.function = dsi_te_timeout;
5454 dsi->te_timer.data = 0;
5455#endif 5453#endif
5456 5454
5457 dsi_mem = platform_get_resource_byname(dsidev, IORESOURCE_MEM, "proto"); 5455 dsi_mem = platform_get_resource_byname(dsidev, IORESOURCE_MEM, "proto");
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
index a553e182ff53..3acfd576b7df 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
@@ -101,9 +101,9 @@ static void psr_set_state(struct psr_drv *psr, enum psr_state state)
101 spin_unlock_irqrestore(&psr->lock, flags); 101 spin_unlock_irqrestore(&psr->lock, flags);
102} 102}
103 103
104static void psr_flush_handler(unsigned long data) 104static void psr_flush_handler(struct timer_list *t)
105{ 105{
106 struct psr_drv *psr = (struct psr_drv *)data; 106 struct psr_drv *psr = from_timer(psr, t, flush_timer);
107 unsigned long flags; 107 unsigned long flags;
108 108
109 /* If the state has changed since we initiated the flush, do nothing */ 109 /* If the state has changed since we initiated the flush, do nothing */
@@ -232,7 +232,7 @@ int rockchip_drm_psr_register(struct drm_encoder *encoder,
232 if (!psr) 232 if (!psr)
233 return -ENOMEM; 233 return -ENOMEM;
234 234
235 setup_timer(&psr->flush_timer, psr_flush_handler, (unsigned long)psr); 235 timer_setup(&psr->flush_timer, psr_flush_handler, 0);
236 spin_lock_init(&psr->lock); 236 spin_lock_init(&psr->lock);
237 237
238 psr->active = true; 238 psr->active = true;
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index 98a6cb9f44fc..4ae45d7dac42 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -674,10 +674,9 @@ void vc4_bo_dec_usecnt(struct vc4_bo *bo)
674 mutex_unlock(&bo->madv_lock); 674 mutex_unlock(&bo->madv_lock);
675} 675}
676 676
677static void vc4_bo_cache_time_timer(unsigned long data) 677static void vc4_bo_cache_time_timer(struct timer_list *t)
678{ 678{
679 struct drm_device *dev = (struct drm_device *)data; 679 struct vc4_dev *vc4 = from_timer(vc4, t, bo_cache.time_timer);
680 struct vc4_dev *vc4 = to_vc4_dev(dev);
681 680
682 schedule_work(&vc4->bo_cache.time_work); 681 schedule_work(&vc4->bo_cache.time_work);
683} 682}
@@ -1039,9 +1038,7 @@ int vc4_bo_cache_init(struct drm_device *dev)
1039 INIT_LIST_HEAD(&vc4->bo_cache.time_list); 1038 INIT_LIST_HEAD(&vc4->bo_cache.time_list);
1040 1039
1041 INIT_WORK(&vc4->bo_cache.time_work, vc4_bo_cache_time_work); 1040 INIT_WORK(&vc4->bo_cache.time_work, vc4_bo_cache_time_work);
1042 setup_timer(&vc4->bo_cache.time_timer, 1041 timer_setup(&vc4->bo_cache.time_timer, vc4_bo_cache_time_timer, 0);
1043 vc4_bo_cache_time_timer,
1044 (unsigned long)dev);
1045 1042
1046 return 0; 1043 return 0;
1047} 1044}
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index e00ac2f3a264..6c32c89a83a9 100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -312,10 +312,10 @@ vc4_reset_work(struct work_struct *work)
312} 312}
313 313
314static void 314static void
315vc4_hangcheck_elapsed(unsigned long data) 315vc4_hangcheck_elapsed(struct timer_list *t)
316{ 316{
317 struct drm_device *dev = (struct drm_device *)data; 317 struct vc4_dev *vc4 = from_timer(vc4, t, hangcheck.timer);
318 struct vc4_dev *vc4 = to_vc4_dev(dev); 318 struct drm_device *dev = vc4->dev;
319 uint32_t ct0ca, ct1ca; 319 uint32_t ct0ca, ct1ca;
320 unsigned long irqflags; 320 unsigned long irqflags;
321 struct vc4_exec_info *bin_exec, *render_exec; 321 struct vc4_exec_info *bin_exec, *render_exec;
@@ -1154,9 +1154,7 @@ vc4_gem_init(struct drm_device *dev)
1154 spin_lock_init(&vc4->job_lock); 1154 spin_lock_init(&vc4->job_lock);
1155 1155
1156 INIT_WORK(&vc4->hangcheck.reset_work, vc4_reset_work); 1156 INIT_WORK(&vc4->hangcheck.reset_work, vc4_reset_work);
1157 setup_timer(&vc4->hangcheck.timer, 1157 timer_setup(&vc4->hangcheck.timer, vc4_hangcheck_elapsed, 0);
1158 vc4_hangcheck_elapsed,
1159 (unsigned long)dev);
1160 1158
1161 INIT_WORK(&vc4->job_done_work, vc4_job_done_work); 1159 INIT_WORK(&vc4->job_done_work, vc4_job_done_work);
1162 1160
diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c
index 8fd52f211e9d..b28876c222b4 100644
--- a/drivers/gpu/drm/vgem/vgem_fence.c
+++ b/drivers/gpu/drm/vgem/vgem_fence.c
@@ -85,9 +85,9 @@ static const struct dma_fence_ops vgem_fence_ops = {
85 .timeline_value_str = vgem_fence_timeline_value_str, 85 .timeline_value_str = vgem_fence_timeline_value_str,
86}; 86};
87 87
88static void vgem_fence_timeout(unsigned long data) 88static void vgem_fence_timeout(struct timer_list *t)
89{ 89{
90 struct vgem_fence *fence = (struct vgem_fence *)data; 90 struct vgem_fence *fence = from_timer(fence, t, timer);
91 91
92 dma_fence_signal(&fence->base); 92 dma_fence_signal(&fence->base);
93} 93}
@@ -105,7 +105,7 @@ static struct dma_fence *vgem_fence_create(struct vgem_file *vfile,
105 dma_fence_init(&fence->base, &vgem_fence_ops, &fence->lock, 105 dma_fence_init(&fence->base, &vgem_fence_ops, &fence->lock,
106 dma_fence_context_alloc(1), 1); 106 dma_fence_context_alloc(1), 1);
107 107
108 setup_timer(&fence->timer, vgem_fence_timeout, (unsigned long)fence); 108 timer_setup(&fence->timer, vgem_fence_timeout, 0);
109 109
110 /* We force the fence to expire within 10s to prevent driver hangs */ 110 /* We force the fence to expire within 10s to prevent driver hangs */
111 mod_timer(&fence->timer, jiffies + VGEM_FENCE_TIMEOUT); 111 mod_timer(&fence->timer, jiffies + VGEM_FENCE_TIMEOUT);
diff --git a/drivers/gpu/drm/via/via_dmablit.c b/drivers/gpu/drm/via/via_dmablit.c
index 32c9938e1e1e..d6e84a589ef1 100644
--- a/drivers/gpu/drm/via/via_dmablit.c
+++ b/drivers/gpu/drm/via/via_dmablit.c
@@ -452,9 +452,9 @@ via_dmablit_sync(struct drm_device *dev, uint32_t handle, int engine)
452 452
453 453
454static void 454static void
455via_dmablit_timer(unsigned long data) 455via_dmablit_timer(struct timer_list *t)
456{ 456{
457 drm_via_blitq_t *blitq = (drm_via_blitq_t *) data; 457 drm_via_blitq_t *blitq = from_timer(blitq, t, poll_timer);
458 struct drm_device *dev = blitq->dev; 458 struct drm_device *dev = blitq->dev;
459 int engine = (int) 459 int engine = (int)
460 (blitq - ((drm_via_private_t *)dev->dev_private)->blit_queues); 460 (blitq - ((drm_via_private_t *)dev->dev_private)->blit_queues);
@@ -559,8 +559,7 @@ via_init_dmablit(struct drm_device *dev)
559 init_waitqueue_head(blitq->blit_queue + j); 559 init_waitqueue_head(blitq->blit_queue + j);
560 init_waitqueue_head(&blitq->busy_queue); 560 init_waitqueue_head(&blitq->busy_queue);
561 INIT_WORK(&blitq->wq, via_dmablit_workqueue); 561 INIT_WORK(&blitq->wq, via_dmablit_workqueue);
562 setup_timer(&blitq->poll_timer, via_dmablit_timer, 562 timer_setup(&blitq->poll_timer, via_dmablit_timer, 0);
563 (unsigned long)blitq);
564 } 563 }
565} 564}
566 565
diff --git a/drivers/hid/hid-appleir.c b/drivers/hid/hid-appleir.c
index 07cbc70f00e7..eae7d52cf1a8 100644
--- a/drivers/hid/hid-appleir.c
+++ b/drivers/hid/hid-appleir.c
@@ -173,9 +173,9 @@ static void battery_flat(struct appleir *appleir)
173 dev_err(&appleir->input_dev->dev, "possible flat battery?\n"); 173 dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
174} 174}
175 175
176static void key_up_tick(unsigned long data) 176static void key_up_tick(struct timer_list *t)
177{ 177{
178 struct appleir *appleir = (struct appleir *)data; 178 struct appleir *appleir = from_timer(appleir, t, key_up_timer);
179 struct hid_device *hid = appleir->hid; 179 struct hid_device *hid = appleir->hid;
180 unsigned long flags; 180 unsigned long flags;
181 181
@@ -303,8 +303,7 @@ static int appleir_probe(struct hid_device *hid, const struct hid_device_id *id)
303 hid->quirks |= HID_QUIRK_HIDINPUT_FORCE; 303 hid->quirks |= HID_QUIRK_HIDINPUT_FORCE;
304 304
305 spin_lock_init(&appleir->lock); 305 spin_lock_init(&appleir->lock);
306 setup_timer(&appleir->key_up_timer, 306 timer_setup(&appleir->key_up_timer, key_up_tick, 0);
307 key_up_tick, (unsigned long) appleir);
308 307
309 hid_set_drvdata(hid, appleir); 308 hid_set_drvdata(hid, appleir);
310 309
diff --git a/drivers/hid/hid-prodikeys.c b/drivers/hid/hid-prodikeys.c
index 49c4bd34b3c5..87eda34ea2f8 100644
--- a/drivers/hid/hid-prodikeys.c
+++ b/drivers/hid/hid-prodikeys.c
@@ -239,9 +239,9 @@ drop_note:
239 return; 239 return;
240} 240}
241 241
242static void pcmidi_sustained_note_release(unsigned long data) 242static void pcmidi_sustained_note_release(struct timer_list *t)
243{ 243{
244 struct pcmidi_sustain *pms = (struct pcmidi_sustain *)data; 244 struct pcmidi_sustain *pms = from_timer(pms, t, timer);
245 245
246 pcmidi_send_note(pms->pm, pms->status, pms->note, pms->velocity); 246 pcmidi_send_note(pms->pm, pms->status, pms->note, pms->velocity);
247 pms->in_use = 0; 247 pms->in_use = 0;
@@ -256,8 +256,7 @@ static void init_sustain_timers(struct pcmidi_snd *pm)
256 pms = &pm->sustained_notes[i]; 256 pms = &pm->sustained_notes[i];
257 pms->in_use = 0; 257 pms->in_use = 0;
258 pms->pm = pm; 258 pms->pm = pm;
259 setup_timer(&pms->timer, pcmidi_sustained_note_release, 259 timer_setup(&pms->timer, pcmidi_sustained_note_release, 0);
260 (unsigned long)pms);
261 } 260 }
262} 261}
263 262
diff --git a/drivers/hid/hid-wiimote-core.c b/drivers/hid/hid-wiimote-core.c
index d00391418d1a..579884ebd94d 100644
--- a/drivers/hid/hid-wiimote-core.c
+++ b/drivers/hid/hid-wiimote-core.c
@@ -1226,9 +1226,9 @@ static void wiimote_schedule(struct wiimote_data *wdata)
1226 spin_unlock_irqrestore(&wdata->state.lock, flags); 1226 spin_unlock_irqrestore(&wdata->state.lock, flags);
1227} 1227}
1228 1228
1229static void wiimote_init_timeout(unsigned long arg) 1229static void wiimote_init_timeout(struct timer_list *t)
1230{ 1230{
1231 struct wiimote_data *wdata = (void*)arg; 1231 struct wiimote_data *wdata = from_timer(wdata, t, timer);
1232 1232
1233 wiimote_schedule(wdata); 1233 wiimote_schedule(wdata);
1234} 1234}
@@ -1740,7 +1740,7 @@ static struct wiimote_data *wiimote_create(struct hid_device *hdev)
1740 wdata->state.cmd_battery = 0xff; 1740 wdata->state.cmd_battery = 0xff;
1741 1741
1742 INIT_WORK(&wdata->init_worker, wiimote_init_worker); 1742 INIT_WORK(&wdata->init_worker, wiimote_init_worker);
1743 setup_timer(&wdata->timer, wiimote_init_timeout, (long)wdata); 1743 timer_setup(&wdata->timer, wiimote_init_timeout, 0);
1744 1744
1745 return wdata; 1745 return wdata;
1746} 1746}
diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c b/drivers/iio/common/ssp_sensors/ssp_dev.c
index ea7adb638d99..2ba2ff5e59c4 100644
--- a/drivers/iio/common/ssp_sensors/ssp_dev.c
+++ b/drivers/iio/common/ssp_sensors/ssp_dev.c
@@ -175,9 +175,9 @@ static void ssp_wdt_work_func(struct work_struct *work)
175 data->timeout_cnt = 0; 175 data->timeout_cnt = 0;
176} 176}
177 177
178static void ssp_wdt_timer_func(unsigned long ptr) 178static void ssp_wdt_timer_func(struct timer_list *t)
179{ 179{
180 struct ssp_data *data = (struct ssp_data *)ptr; 180 struct ssp_data *data = from_timer(data, t, wdt_timer);
181 181
182 switch (data->fw_dl_state) { 182 switch (data->fw_dl_state) {
183 case SSP_FW_DL_STATE_FAIL: 183 case SSP_FW_DL_STATE_FAIL:
@@ -571,7 +571,7 @@ static int ssp_probe(struct spi_device *spi)
571 INIT_WORK(&data->work_wdt, ssp_wdt_work_func); 571 INIT_WORK(&data->work_wdt, ssp_wdt_work_func);
572 INIT_DELAYED_WORK(&data->work_refresh, ssp_refresh_task); 572 INIT_DELAYED_WORK(&data->work_refresh, ssp_refresh_task);
573 573
574 setup_timer(&data->wdt_timer, ssp_wdt_timer_func, (unsigned long)data); 574 timer_setup(&data->wdt_timer, ssp_wdt_timer_func, 0);
575 575
576 ret = request_threaded_irq(data->spi->irq, NULL, 576 ret = request_threaded_irq(data->spi->irq, NULL,
577 ssp_irq_thread_fn, 577 ssp_irq_thread_fn,
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 9beee9cef137..ee0ee1f9994b 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -642,9 +642,9 @@ err:
642 return -ENOMEM; 642 return -ENOMEM;
643} 643}
644 644
645static void delay_time_func(unsigned long ctx) 645static void delay_time_func(struct timer_list *t)
646{ 646{
647 struct mlx5_ib_dev *dev = (struct mlx5_ib_dev *)ctx; 647 struct mlx5_ib_dev *dev = from_timer(dev, t, delay_timer);
648 648
649 dev->fill_delay = 0; 649 dev->fill_delay = 0;
650} 650}
@@ -663,7 +663,7 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev)
663 return -ENOMEM; 663 return -ENOMEM;
664 } 664 }
665 665
666 setup_timer(&dev->delay_timer, delay_time_func, (unsigned long)dev); 666 timer_setup(&dev->delay_timer, delay_time_func, 0);
667 for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) { 667 for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
668 ent = &cache->ent[i]; 668 ent = &cache->ent[i];
669 INIT_LIST_HEAD(&ent->head); 669 INIT_LIST_HEAD(&ent->head);
diff --git a/drivers/infiniband/hw/mthca/mthca_catas.c b/drivers/infiniband/hw/mthca/mthca_catas.c
index f6474c24f193..ffb98eaaf1c2 100644
--- a/drivers/infiniband/hw/mthca/mthca_catas.c
+++ b/drivers/infiniband/hw/mthca/mthca_catas.c
@@ -130,9 +130,9 @@ static void handle_catas(struct mthca_dev *dev)
130 spin_unlock_irqrestore(&catas_lock, flags); 130 spin_unlock_irqrestore(&catas_lock, flags);
131} 131}
132 132
133static void poll_catas(unsigned long dev_ptr) 133static void poll_catas(struct timer_list *t)
134{ 134{
135 struct mthca_dev *dev = (struct mthca_dev *) dev_ptr; 135 struct mthca_dev *dev = from_timer(dev, t, catas_err.timer);
136 int i; 136 int i;
137 137
138 for (i = 0; i < dev->catas_err.size; ++i) 138 for (i = 0; i < dev->catas_err.size; ++i)
@@ -149,7 +149,7 @@ void mthca_start_catas_poll(struct mthca_dev *dev)
149{ 149{
150 phys_addr_t addr; 150 phys_addr_t addr;
151 151
152 init_timer(&dev->catas_err.timer); 152 timer_setup(&dev->catas_err.timer, poll_catas, 0);
153 dev->catas_err.map = NULL; 153 dev->catas_err.map = NULL;
154 154
155 addr = pci_resource_start(dev->pdev, 0) + 155 addr = pci_resource_start(dev->pdev, 0) +
@@ -164,8 +164,6 @@ void mthca_start_catas_poll(struct mthca_dev *dev)
164 return; 164 return;
165 } 165 }
166 166
167 dev->catas_err.timer.data = (unsigned long) dev;
168 dev->catas_err.timer.function = poll_catas;
169 dev->catas_err.timer.expires = jiffies + MTHCA_CATAS_POLL_INTERVAL; 167 dev->catas_err.timer.expires = jiffies + MTHCA_CATAS_POLL_INTERVAL;
170 INIT_LIST_HEAD(&dev->catas_err.list); 168 INIT_LIST_HEAD(&dev->catas_err.list);
171 add_timer(&dev->catas_err.timer); 169 add_timer(&dev->catas_err.timer);
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index db46b7b53fb4..162475aeeedd 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -3819,7 +3819,7 @@ void nes_port_ibevent(struct nes_vnic *nesvnic)
3819 if (!nesvnic->event_timer.function) { 3819 if (!nesvnic->event_timer.function) {
3820 ib_dispatch_event(&event); 3820 ib_dispatch_event(&event);
3821 nesvnic->last_dispatched_event = event.event; 3821 nesvnic->last_dispatched_event = event.event;
3822 nesvnic->event_timer.function = (TIMER_FUNC_TYPE)nes_handle_delayed_event; 3822 nesvnic->event_timer.function = nes_handle_delayed_event;
3823 nesvnic->event_timer.expires = jiffies + NES_EVENT_DELAY; 3823 nesvnic->event_timer.expires = jiffies + NES_EVENT_DELAY;
3824 add_timer(&nesvnic->event_timer); 3824 add_timer(&nesvnic->event_timer);
3825 } else { 3825 } else {
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index cedc665364cd..73862a836062 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -202,9 +202,9 @@ void gameport_stop_polling(struct gameport *gameport)
202} 202}
203EXPORT_SYMBOL(gameport_stop_polling); 203EXPORT_SYMBOL(gameport_stop_polling);
204 204
205static void gameport_run_poll_handler(unsigned long d) 205static void gameport_run_poll_handler(struct timer_list *t)
206{ 206{
207 struct gameport *gameport = (struct gameport *)d; 207 struct gameport *gameport = from_timer(gameport, t, poll_timer);
208 208
209 gameport->poll_handler(gameport); 209 gameport->poll_handler(gameport);
210 if (gameport->poll_cnt) 210 if (gameport->poll_cnt)
@@ -542,8 +542,7 @@ static void gameport_init_port(struct gameport *gameport)
542 542
543 INIT_LIST_HEAD(&gameport->node); 543 INIT_LIST_HEAD(&gameport->node);
544 spin_lock_init(&gameport->timer_lock); 544 spin_lock_init(&gameport->timer_lock);
545 setup_timer(&gameport->poll_timer, gameport_run_poll_handler, 545 timer_setup(&gameport->poll_timer, gameport_run_poll_handler, 0);
546 (unsigned long)gameport);
547} 546}
548 547
549/* 548/*
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 44916ef4a424..e30642db50d5 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -2047,7 +2047,7 @@ static void devm_input_device_unregister(struct device *dev, void *res)
2047 */ 2047 */
2048void input_enable_softrepeat(struct input_dev *dev, int delay, int period) 2048void input_enable_softrepeat(struct input_dev *dev, int delay, int period)
2049{ 2049{
2050 dev->timer.function = (TIMER_FUNC_TYPE)input_repeat_key; 2050 dev->timer.function = input_repeat_key;
2051 dev->rep[REP_DELAY] = delay; 2051 dev->rep[REP_DELAY] = delay;
2052 dev->rep[REP_PERIOD] = period; 2052 dev->rep[REP_PERIOD] = period;
2053} 2053}
diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
index f4ad83eab67f..de0dd4756c84 100644
--- a/drivers/input/joystick/db9.c
+++ b/drivers/input/joystick/db9.c
@@ -364,9 +364,9 @@ static int db9_saturn(int mode, struct parport *port, struct input_dev *devs[])
364 return 0; 364 return 0;
365} 365}
366 366
367static void db9_timer(unsigned long private) 367static void db9_timer(struct timer_list *t)
368{ 368{
369 struct db9 *db9 = (void *) private; 369 struct db9 *db9 = from_timer(db9, t, timer);
370 struct parport *port = db9->pd->port; 370 struct parport *port = db9->pd->port;
371 struct input_dev *dev = db9->dev[0]; 371 struct input_dev *dev = db9->dev[0];
372 struct input_dev *dev2 = db9->dev[1]; 372 struct input_dev *dev2 = db9->dev[1];
@@ -609,7 +609,7 @@ static void db9_attach(struct parport *pp)
609 db9->pd = pd; 609 db9->pd = pd;
610 db9->mode = mode; 610 db9->mode = mode;
611 db9->parportno = pp->number; 611 db9->parportno = pp->number;
612 setup_timer(&db9->timer, db9_timer, (long)db9); 612 timer_setup(&db9->timer, db9_timer, 0);
613 613
614 for (i = 0; i < (min(db9_mode->n_pads, DB9_MAX_DEVICES)); i++) { 614 for (i = 0; i < (min(db9_mode->n_pads, DB9_MAX_DEVICES)); i++) {
615 615
diff --git a/drivers/input/joystick/gamecon.c b/drivers/input/joystick/gamecon.c
index ca734ea97e53..2ffb2e8bdc3b 100644
--- a/drivers/input/joystick/gamecon.c
+++ b/drivers/input/joystick/gamecon.c
@@ -743,9 +743,9 @@ static void gc_psx_process_packet(struct gc *gc)
743 * gc_timer() initiates reads of console pads data. 743 * gc_timer() initiates reads of console pads data.
744 */ 744 */
745 745
746static void gc_timer(unsigned long private) 746static void gc_timer(struct timer_list *t)
747{ 747{
748 struct gc *gc = (void *) private; 748 struct gc *gc = from_timer(gc, t, timer);
749 749
750/* 750/*
751 * N64 pads - must be read first, any read confuses them for 200 us 751 * N64 pads - must be read first, any read confuses them for 200 us
@@ -974,7 +974,7 @@ static void gc_attach(struct parport *pp)
974 mutex_init(&gc->mutex); 974 mutex_init(&gc->mutex);
975 gc->pd = pd; 975 gc->pd = pd;
976 gc->parportno = pp->number; 976 gc->parportno = pp->number;
977 setup_timer(&gc->timer, gc_timer, (long) gc); 977 timer_setup(&gc->timer, gc_timer, 0);
978 978
979 for (i = 0; i < n_pads && i < GC_MAX_DEVICES; i++) { 979 for (i = 0; i < n_pads && i < GC_MAX_DEVICES; i++) {
980 if (!pads[i]) 980 if (!pads[i])
diff --git a/drivers/input/joystick/turbografx.c b/drivers/input/joystick/turbografx.c
index a1fdc75a438d..e2685753e460 100644
--- a/drivers/input/joystick/turbografx.c
+++ b/drivers/input/joystick/turbografx.c
@@ -89,9 +89,9 @@ static struct tgfx {
89 * tgfx_timer() reads and analyzes TurboGraFX joystick data. 89 * tgfx_timer() reads and analyzes TurboGraFX joystick data.
90 */ 90 */
91 91
92static void tgfx_timer(unsigned long private) 92static void tgfx_timer(struct timer_list *t)
93{ 93{
94 struct tgfx *tgfx = (void *) private; 94 struct tgfx *tgfx = from_timer(tgfx, t, timer);
95 struct input_dev *dev; 95 struct input_dev *dev;
96 int data1, data2, i; 96 int data1, data2, i;
97 97
@@ -200,7 +200,7 @@ static void tgfx_attach(struct parport *pp)
200 mutex_init(&tgfx->sem); 200 mutex_init(&tgfx->sem);
201 tgfx->pd = pd; 201 tgfx->pd = pd;
202 tgfx->parportno = pp->number; 202 tgfx->parportno = pp->number;
203 setup_timer(&tgfx->timer, tgfx_timer, (long)tgfx); 203 timer_setup(&tgfx->timer, tgfx_timer, 0);
204 204
205 for (i = 0; i < n_devs; i++) { 205 for (i = 0; i < n_devs; i++) {
206 if (n_buttons[i] < 1) 206 if (n_buttons[i] < 1)
diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
index d3265b6b58b8..1173890f6719 100644
--- a/drivers/input/touchscreen/s3c2410_ts.c
+++ b/drivers/input/touchscreen/s3c2410_ts.c
@@ -102,7 +102,7 @@ static inline bool get_down(unsigned long data0, unsigned long data1)
102 !(data1 & S3C2410_ADCDAT0_UPDOWN)); 102 !(data1 & S3C2410_ADCDAT0_UPDOWN));
103} 103}
104 104
105static void touch_timer_fire(unsigned long data) 105static void touch_timer_fire(struct timer_list *unused)
106{ 106{
107 unsigned long data0; 107 unsigned long data0;
108 unsigned long data1; 108 unsigned long data1;
diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c
index 466aaa8ba841..83fe2621effe 100644
--- a/drivers/iommu/iova.c
+++ b/drivers/iommu/iova.c
@@ -36,7 +36,7 @@ static unsigned long iova_rcache_get(struct iova_domain *iovad,
36static void init_iova_rcaches(struct iova_domain *iovad); 36static void init_iova_rcaches(struct iova_domain *iovad);
37static void free_iova_rcaches(struct iova_domain *iovad); 37static void free_iova_rcaches(struct iova_domain *iovad);
38static void fq_destroy_all_entries(struct iova_domain *iovad); 38static void fq_destroy_all_entries(struct iova_domain *iovad);
39static void fq_flush_timeout(unsigned long data); 39static void fq_flush_timeout(struct timer_list *t);
40 40
41void 41void
42init_iova_domain(struct iova_domain *iovad, unsigned long granule, 42init_iova_domain(struct iova_domain *iovad, unsigned long granule,
@@ -107,7 +107,7 @@ int init_iova_flush_queue(struct iova_domain *iovad,
107 spin_lock_init(&fq->lock); 107 spin_lock_init(&fq->lock);
108 } 108 }
109 109
110 setup_timer(&iovad->fq_timer, fq_flush_timeout, (unsigned long)iovad); 110 timer_setup(&iovad->fq_timer, fq_flush_timeout, 0);
111 atomic_set(&iovad->fq_timer_on, 0); 111 atomic_set(&iovad->fq_timer_on, 0);
112 112
113 return 0; 113 return 0;
@@ -519,9 +519,9 @@ static void fq_destroy_all_entries(struct iova_domain *iovad)
519 } 519 }
520} 520}
521 521
522static void fq_flush_timeout(unsigned long data) 522static void fq_flush_timeout(struct timer_list *t)
523{ 523{
524 struct iova_domain *iovad = (struct iova_domain *)data; 524 struct iova_domain *iovad = from_timer(iovad, t, fq_timer);
525 int cpu; 525 int cpu;
526 526
527 atomic_set(&iovad->fq_timer_on, 0); 527 atomic_set(&iovad->fq_timer_on, 0);
diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
index 89dd1303a98a..49fef08858c5 100644
--- a/drivers/isdn/capi/capidrv.c
+++ b/drivers/isdn/capi/capidrv.c
@@ -2235,9 +2235,9 @@ static void send_listen(capidrv_contr *card)
2235 send_message(card, &cmdcmsg); 2235 send_message(card, &cmdcmsg);
2236} 2236}
2237 2237
2238static void listentimerfunc(unsigned long x) 2238static void listentimerfunc(struct timer_list *t)
2239{ 2239{
2240 capidrv_contr *card = (capidrv_contr *)x; 2240 capidrv_contr *card = from_timer(card, t, listentimer);
2241 if (card->state != ST_LISTEN_NONE && card->state != ST_LISTEN_ACTIVE) 2241 if (card->state != ST_LISTEN_NONE && card->state != ST_LISTEN_ACTIVE)
2242 printk(KERN_ERR "%s: controller dead ??\n", card->name); 2242 printk(KERN_ERR "%s: controller dead ??\n", card->name);
2243 send_listen(card); 2243 send_listen(card);
@@ -2264,7 +2264,7 @@ static int capidrv_addcontr(u16 contr, struct capi_profile *profp)
2264 return -1; 2264 return -1;
2265 } 2265 }
2266 card->owner = THIS_MODULE; 2266 card->owner = THIS_MODULE;
2267 setup_timer(&card->listentimer, listentimerfunc, (unsigned long)card); 2267 timer_setup(&card->listentimer, listentimerfunc, 0);
2268 strcpy(card->name, id); 2268 strcpy(card->name, id);
2269 card->contrnr = contr; 2269 card->contrnr = contr;
2270 card->nbchan = profp->nbchannel; 2270 card->nbchan = profp->nbchannel;
diff --git a/drivers/isdn/divert/isdn_divert.c b/drivers/isdn/divert/isdn_divert.c
index 6f423bc49d0d..5620fd2c6009 100644
--- a/drivers/isdn/divert/isdn_divert.c
+++ b/drivers/isdn/divert/isdn_divert.c
@@ -55,10 +55,10 @@ DEFINE_SPINLOCK(divert_lock);
55/***************************/ 55/***************************/
56/* timer callback function */ 56/* timer callback function */
57/***************************/ 57/***************************/
58static void deflect_timer_expire(ulong arg) 58static void deflect_timer_expire(struct timer_list *t)
59{ 59{
60 unsigned long flags; 60 unsigned long flags;
61 struct call_struc *cs = (struct call_struc *) arg; 61 struct call_struc *cs = from_timer(cs, t, timer);
62 62
63 spin_lock_irqsave(&divert_lock, flags); 63 spin_lock_irqsave(&divert_lock, flags);
64 del_timer(&cs->timer); /* delete active timer */ 64 del_timer(&cs->timer); /* delete active timer */
@@ -157,7 +157,7 @@ int cf_command(int drvid, int mode,
157 /* allocate mem for information struct */ 157 /* allocate mem for information struct */
158 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC))) 158 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC)))
159 return (-ENOMEM); /* no memory */ 159 return (-ENOMEM); /* no memory */
160 setup_timer(&cs->timer, deflect_timer_expire, (ulong)cs); 160 timer_setup(&cs->timer, deflect_timer_expire, 0);
161 cs->info[0] = '\0'; 161 cs->info[0] = '\0';
162 cs->ics.driver = drvid; 162 cs->ics.driver = drvid;
163 cs->ics.command = ISDN_CMD_PROT_IO; /* protocol specific io */ 163 cs->ics.command = ISDN_CMD_PROT_IO; /* protocol specific io */
@@ -450,8 +450,7 @@ static int isdn_divert_icall(isdn_ctrl *ic)
450 return (0); /* no external deflection needed */ 450 return (0); /* no external deflection needed */
451 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC))) 451 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC)))
452 return (0); /* no memory */ 452 return (0); /* no memory */
453 setup_timer(&cs->timer, deflect_timer_expire, 453 timer_setup(&cs->timer, deflect_timer_expire, 0);
454 (ulong)cs);
455 cs->info[0] = '\0'; 454 cs->info[0] = '\0';
456 455
457 cs->ics = *ic; /* copy incoming data */ 456 cs->ics = *ic; /* copy incoming data */
diff --git a/drivers/isdn/hardware/eicon/divasi.c b/drivers/isdn/hardware/eicon/divasi.c
index c61049585cbd..0033d74a7291 100644
--- a/drivers/isdn/hardware/eicon/divasi.c
+++ b/drivers/isdn/hardware/eicon/divasi.c
@@ -78,7 +78,7 @@ static unsigned int um_idi_poll(struct file *file, poll_table *wait);
78static int um_idi_open(struct inode *inode, struct file *file); 78static int um_idi_open(struct inode *inode, struct file *file);
79static int um_idi_release(struct inode *inode, struct file *file); 79static int um_idi_release(struct inode *inode, struct file *file);
80static int remove_entity(void *entity); 80static int remove_entity(void *entity);
81static void diva_um_timer_function(unsigned long data); 81static void diva_um_timer_function(struct timer_list *t);
82 82
83/* 83/*
84 * proc entry 84 * proc entry
@@ -300,8 +300,7 @@ static int um_idi_open_adapter(struct file *file, int adapter_nr)
300 p_os = (diva_um_idi_os_context_t *) diva_um_id_get_os_context(e); 300 p_os = (diva_um_idi_os_context_t *) diva_um_id_get_os_context(e);
301 init_waitqueue_head(&p_os->read_wait); 301 init_waitqueue_head(&p_os->read_wait);
302 init_waitqueue_head(&p_os->close_wait); 302 init_waitqueue_head(&p_os->close_wait);
303 setup_timer(&p_os->diva_timer_id, (void *)diva_um_timer_function, 303 timer_setup(&p_os->diva_timer_id, diva_um_timer_function, 0);
304 (unsigned long)p_os);
305 p_os->aborted = 0; 304 p_os->aborted = 0;
306 p_os->adapter_nr = adapter_nr; 305 p_os->adapter_nr = adapter_nr;
307 return (1); 306 return (1);
@@ -457,9 +456,9 @@ void diva_os_wakeup_close(void *os_context)
457} 456}
458 457
459static 458static
460void diva_um_timer_function(unsigned long data) 459void diva_um_timer_function(struct timer_list *t)
461{ 460{
462 diva_um_idi_os_context_t *p_os = (diva_um_idi_os_context_t *) data; 461 diva_um_idi_os_context_t *p_os = from_timer(p_os, t, diva_timer_id);
463 462
464 p_os->aborted = 1; 463 p_os->aborted = 1;
465 wake_up_interruptible(&p_os->read_wait); 464 wake_up_interruptible(&p_os->read_wait);
diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index 3cf07b8ced1c..4d85645c87f7 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -2855,7 +2855,7 @@ irq_notforus:
2855 */ 2855 */
2856 2856
2857static void 2857static void
2858hfcmulti_dbusy_timer(struct hfc_multi *hc) 2858hfcmulti_dbusy_timer(struct timer_list *t)
2859{ 2859{
2860} 2860}
2861 2861
@@ -3877,8 +3877,7 @@ hfcmulti_initmode(struct dchannel *dch)
3877 if (hc->dnum[pt]) { 3877 if (hc->dnum[pt]) {
3878 mode_hfcmulti(hc, dch->slot, dch->dev.D.protocol, 3878 mode_hfcmulti(hc, dch->slot, dch->dev.D.protocol,
3879 -1, 0, -1, 0); 3879 -1, 0, -1, 0);
3880 setup_timer(&dch->timer, (void *)hfcmulti_dbusy_timer, 3880 timer_setup(&dch->timer, hfcmulti_dbusy_timer, 0);
3881 (long)dch);
3882 } 3881 }
3883 for (i = 1; i <= 31; i++) { 3882 for (i = 1; i <= 31; i++) {
3884 if (!((1 << i) & hc->bmask[pt])) /* skip unused chan */ 3883 if (!((1 << i) & hc->bmask[pt])) /* skip unused chan */
@@ -3984,8 +3983,7 @@ hfcmulti_initmode(struct dchannel *dch)
3984 hc->chan[i].slot_rx = -1; 3983 hc->chan[i].slot_rx = -1;
3985 hc->chan[i].conf = -1; 3984 hc->chan[i].conf = -1;
3986 mode_hfcmulti(hc, i, dch->dev.D.protocol, -1, 0, -1, 0); 3985 mode_hfcmulti(hc, i, dch->dev.D.protocol, -1, 0, -1, 0);
3987 setup_timer(&dch->timer, (void *)hfcmulti_dbusy_timer, 3986 timer_setup(&dch->timer, hfcmulti_dbusy_timer, 0);
3988 (long)dch);
3989 hc->chan[i - 2].slot_tx = -1; 3987 hc->chan[i - 2].slot_tx = -1;
3990 hc->chan[i - 2].slot_rx = -1; 3988 hc->chan[i - 2].slot_rx = -1;
3991 hc->chan[i - 2].conf = -1; 3989 hc->chan[i - 2].conf = -1;
diff --git a/drivers/isdn/hardware/mISDN/hfcpci.c b/drivers/isdn/hardware/mISDN/hfcpci.c
index e4ebbee863a1..34c93874af23 100644
--- a/drivers/isdn/hardware/mISDN/hfcpci.c
+++ b/drivers/isdn/hardware/mISDN/hfcpci.c
@@ -301,8 +301,9 @@ reset_hfcpci(struct hfc_pci *hc)
301 * Timer function called when kernel timer expires 301 * Timer function called when kernel timer expires
302 */ 302 */
303static void 303static void
304hfcpci_Timer(struct hfc_pci *hc) 304hfcpci_Timer(struct timer_list *t)
305{ 305{
306 struct hfc_pci *hc = from_timer(hc, t, hw.timer);
306 hc->hw.timer.expires = jiffies + 75; 307 hc->hw.timer.expires = jiffies + 75;
307 /* WD RESET */ 308 /* WD RESET */
308/* 309/*
@@ -1241,7 +1242,7 @@ hfcpci_int(int intno, void *dev_id)
1241 * timer callback for D-chan busy resolution. Currently no function 1242 * timer callback for D-chan busy resolution. Currently no function
1242 */ 1243 */
1243static void 1244static void
1244hfcpci_dbusy_timer(struct hfc_pci *hc) 1245hfcpci_dbusy_timer(struct timer_list *t)
1245{ 1246{
1246} 1247}
1247 1248
@@ -1717,8 +1718,7 @@ static void
1717inithfcpci(struct hfc_pci *hc) 1718inithfcpci(struct hfc_pci *hc)
1718{ 1719{
1719 printk(KERN_DEBUG "inithfcpci: entered\n"); 1720 printk(KERN_DEBUG "inithfcpci: entered\n");
1720 setup_timer(&hc->dch.timer, (void *)hfcpci_dbusy_timer, 1721 timer_setup(&hc->dch.timer, hfcpci_dbusy_timer, 0);
1721 (long)&hc->dch);
1722 hc->chanlimit = 2; 1722 hc->chanlimit = 2;
1723 mode_hfcpci(&hc->bch[0], 1, -1); 1723 mode_hfcpci(&hc->bch[0], 1, -1);
1724 mode_hfcpci(&hc->bch[1], 2, -1); 1724 mode_hfcpci(&hc->bch[1], 2, -1);
@@ -2043,7 +2043,7 @@ setup_hw(struct hfc_pci *hc)
2043 Write_hfc(hc, HFCPCI_INT_M1, hc->hw.int_m1); 2043 Write_hfc(hc, HFCPCI_INT_M1, hc->hw.int_m1);
2044 /* At this point the needed PCI config is done */ 2044 /* At this point the needed PCI config is done */
2045 /* fifos are still not enabled */ 2045 /* fifos are still not enabled */
2046 setup_timer(&hc->hw.timer, (void *)hfcpci_Timer, (long)hc); 2046 timer_setup(&hc->hw.timer, hfcpci_Timer, 0);
2047 /* default PCM master */ 2047 /* default PCM master */
2048 test_and_set_bit(HFC_CFG_MASTER, &hc->cfg); 2048 test_and_set_bit(HFC_CFG_MASTER, &hc->cfg);
2049 return 0; 2049 return 0;
diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c
index 5b078591b6ee..b791688d0228 100644
--- a/drivers/isdn/hardware/mISDN/mISDNisar.c
+++ b/drivers/isdn/hardware/mISDN/mISDNisar.c
@@ -1146,9 +1146,9 @@ mISDNisar_irq(struct isar_hw *isar)
1146EXPORT_SYMBOL(mISDNisar_irq); 1146EXPORT_SYMBOL(mISDNisar_irq);
1147 1147
1148static void 1148static void
1149ftimer_handler(unsigned long data) 1149ftimer_handler(struct timer_list *t)
1150{ 1150{
1151 struct isar_ch *ch = (struct isar_ch *)data; 1151 struct isar_ch *ch = from_timer(ch, t, ftimer);
1152 1152
1153 pr_debug("%s: ftimer flags %lx\n", ch->is->name, ch->bch.Flags); 1153 pr_debug("%s: ftimer flags %lx\n", ch->is->name, ch->bch.Flags);
1154 test_and_clear_bit(FLG_FTI_RUN, &ch->bch.Flags); 1154 test_and_clear_bit(FLG_FTI_RUN, &ch->bch.Flags);
@@ -1635,11 +1635,9 @@ init_isar(struct isar_hw *isar)
1635 } 1635 }
1636 if (isar->version != 1) 1636 if (isar->version != 1)
1637 return -EINVAL; 1637 return -EINVAL;
1638 setup_timer(&isar->ch[0].ftimer, &ftimer_handler, 1638 timer_setup(&isar->ch[0].ftimer, ftimer_handler, 0);
1639 (long)&isar->ch[0]);
1640 test_and_set_bit(FLG_INITIALIZED, &isar->ch[0].bch.Flags); 1639 test_and_set_bit(FLG_INITIALIZED, &isar->ch[0].bch.Flags);
1641 setup_timer(&isar->ch[1].ftimer, &ftimer_handler, 1640 timer_setup(&isar->ch[1].ftimer, ftimer_handler, 0);
1642 (long)&isar->ch[1]);
1643 test_and_set_bit(FLG_INITIALIZED, &isar->ch[1].bch.Flags); 1641 test_and_set_bit(FLG_INITIALIZED, &isar->ch[1].bch.Flags);
1644 return 0; 1642 return 0;
1645} 1643}
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 38a5bb764c7b..8b03d618185e 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -231,7 +231,7 @@ static int isdn_timer_cnt2 = 0;
231static int isdn_timer_cnt3 = 0; 231static int isdn_timer_cnt3 = 0;
232 232
233static void 233static void
234isdn_timer_funct(ulong dummy) 234isdn_timer_funct(struct timer_list *unused)
235{ 235{
236 int tf = dev->tflags; 236 int tf = dev->tflags;
237 if (tf & ISDN_TIMER_FAST) { 237 if (tf & ISDN_TIMER_FAST) {
@@ -2294,8 +2294,7 @@ static int __init isdn_init(void)
2294 printk(KERN_WARNING "isdn: Could not allocate device-struct.\n"); 2294 printk(KERN_WARNING "isdn: Could not allocate device-struct.\n");
2295 return -EIO; 2295 return -EIO;
2296 } 2296 }
2297 init_timer(&dev->timer); 2297 timer_setup(&dev->timer, isdn_timer_funct, 0);
2298 dev->timer.function = isdn_timer_funct;
2299 spin_lock_init(&dev->lock); 2298 spin_lock_init(&dev->lock);
2300 spin_lock_init(&dev->timerlock); 2299 spin_lock_init(&dev->timerlock);
2301#ifdef MODULE 2300#ifdef MODULE
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
index f63a110b7bcb..c138f66f2659 100644
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -1509,9 +1509,9 @@ static int isdn_net_ioctl(struct net_device *dev,
1509 1509
1510/* called via cisco_timer.function */ 1510/* called via cisco_timer.function */
1511static void 1511static void
1512isdn_net_ciscohdlck_slarp_send_keepalive(unsigned long data) 1512isdn_net_ciscohdlck_slarp_send_keepalive(struct timer_list *t)
1513{ 1513{
1514 isdn_net_local *lp = (isdn_net_local *) data; 1514 isdn_net_local *lp = from_timer(lp, t, cisco_timer);
1515 struct sk_buff *skb; 1515 struct sk_buff *skb;
1516 unsigned char *p; 1516 unsigned char *p;
1517 unsigned long last_cisco_myseq = lp->cisco_myseq; 1517 unsigned long last_cisco_myseq = lp->cisco_myseq;
@@ -1615,9 +1615,8 @@ isdn_net_ciscohdlck_connected(isdn_net_local *lp)
1615 /* send slarp request because interface/seq.no.s reset */ 1615 /* send slarp request because interface/seq.no.s reset */
1616 isdn_net_ciscohdlck_slarp_send_request(lp); 1616 isdn_net_ciscohdlck_slarp_send_request(lp);
1617 1617
1618 init_timer(&lp->cisco_timer); 1618 timer_setup(&lp->cisco_timer,
1619 lp->cisco_timer.data = (unsigned long) lp; 1619 isdn_net_ciscohdlck_slarp_send_keepalive, 0);
1620 lp->cisco_timer.function = isdn_net_ciscohdlck_slarp_send_keepalive;
1621 lp->cisco_timer.expires = jiffies + lp->cisco_keepalive_period * HZ; 1620 lp->cisco_timer.expires = jiffies + lp->cisco_keepalive_period * HZ;
1622 add_timer(&lp->cisco_timer); 1621 add_timer(&lp->cisco_timer);
1623} 1622}
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
index cd2b3c69771a..e07aefb9151d 100644
--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -50,7 +50,7 @@ static struct ippp_ccp_reset *isdn_ppp_ccp_reset_alloc(struct ippp_struct *is);
50static void isdn_ppp_ccp_reset_free(struct ippp_struct *is); 50static void isdn_ppp_ccp_reset_free(struct ippp_struct *is);
51static void isdn_ppp_ccp_reset_free_state(struct ippp_struct *is, 51static void isdn_ppp_ccp_reset_free_state(struct ippp_struct *is,
52 unsigned char id); 52 unsigned char id);
53static void isdn_ppp_ccp_timer_callback(unsigned long closure); 53static void isdn_ppp_ccp_timer_callback(struct timer_list *t);
54static struct ippp_ccp_reset_state *isdn_ppp_ccp_reset_alloc_state(struct ippp_struct *is, 54static struct ippp_ccp_reset_state *isdn_ppp_ccp_reset_alloc_state(struct ippp_struct *is,
55 unsigned char id); 55 unsigned char id);
56static void isdn_ppp_ccp_reset_trans(struct ippp_struct *is, 56static void isdn_ppp_ccp_reset_trans(struct ippp_struct *is,
@@ -2327,10 +2327,10 @@ static void isdn_ppp_ccp_reset_free_state(struct ippp_struct *is,
2327 2327
2328/* The timer callback function which is called when a ResetReq has timed out, 2328/* The timer callback function which is called when a ResetReq has timed out,
2329 aka has never been answered by a ResetAck */ 2329 aka has never been answered by a ResetAck */
2330static void isdn_ppp_ccp_timer_callback(unsigned long closure) 2330static void isdn_ppp_ccp_timer_callback(struct timer_list *t)
2331{ 2331{
2332 struct ippp_ccp_reset_state *rs = 2332 struct ippp_ccp_reset_state *rs =
2333 (struct ippp_ccp_reset_state *)closure; 2333 from_timer(rs, t, timer);
2334 2334
2335 if (!rs) { 2335 if (!rs) {
2336 printk(KERN_ERR "ippp_ccp: timer cb with zero closure.\n"); 2336 printk(KERN_ERR "ippp_ccp: timer cb with zero closure.\n");
@@ -2376,8 +2376,7 @@ static struct ippp_ccp_reset_state *isdn_ppp_ccp_reset_alloc_state(struct ippp_s
2376 rs->state = CCPResetIdle; 2376 rs->state = CCPResetIdle;
2377 rs->is = is; 2377 rs->is = is;
2378 rs->id = id; 2378 rs->id = id;
2379 setup_timer(&rs->timer, isdn_ppp_ccp_timer_callback, 2379 timer_setup(&rs->timer, isdn_ppp_ccp_timer_callback, 0);
2380 (unsigned long)rs);
2381 is->reset->rs[id] = rs; 2380 is->reset->rs[id] = rs;
2382 } 2381 }
2383 return rs; 2382 return rs;
diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
index d30130c8d0f3..960f26348bb5 100644
--- a/drivers/isdn/i4l/isdn_tty.c
+++ b/drivers/isdn/i4l/isdn_tty.c
@@ -541,9 +541,9 @@ isdn_tty_senddown(modem_info *info)
541 * into the tty's buffer. 541 * into the tty's buffer.
542 */ 542 */
543static void 543static void
544isdn_tty_modem_do_ncarrier(unsigned long data) 544isdn_tty_modem_do_ncarrier(struct timer_list *t)
545{ 545{
546 modem_info *info = (modem_info *) data; 546 modem_info *info = from_timer(info, t, nc_timer);
547 isdn_tty_modem_result(RESULT_NO_CARRIER, info); 547 isdn_tty_modem_result(RESULT_NO_CARRIER, info);
548} 548}
549 549
@@ -1812,8 +1812,7 @@ isdn_tty_modem_init(void)
1812 info->isdn_channel = -1; 1812 info->isdn_channel = -1;
1813 info->drv_index = -1; 1813 info->drv_index = -1;
1814 info->xmit_size = ISDN_SERIAL_XMIT_SIZE; 1814 info->xmit_size = ISDN_SERIAL_XMIT_SIZE;
1815 setup_timer(&info->nc_timer, isdn_tty_modem_do_ncarrier, 1815 timer_setup(&info->nc_timer, isdn_tty_modem_do_ncarrier, 0);
1816 (unsigned long)info);
1817 skb_queue_head_init(&info->xmit_queue); 1816 skb_queue_head_init(&info->xmit_queue);
1818#ifdef CONFIG_ISDN_AUDIO 1817#ifdef CONFIG_ISDN_AUDIO
1819 skb_queue_head_init(&info->dtmf_queue); 1818 skb_queue_head_init(&info->dtmf_queue);
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
index ce90213a42fa..76516ee84e9a 100644
--- a/drivers/lightnvm/pblk-core.c
+++ b/drivers/lightnvm/pblk-core.c
@@ -270,9 +270,9 @@ static void pblk_write_kick(struct pblk *pblk)
270 mod_timer(&pblk->wtimer, jiffies + msecs_to_jiffies(1000)); 270 mod_timer(&pblk->wtimer, jiffies + msecs_to_jiffies(1000));
271} 271}
272 272
273void pblk_write_timer_fn(unsigned long data) 273void pblk_write_timer_fn(struct timer_list *t)
274{ 274{
275 struct pblk *pblk = (struct pblk *)data; 275 struct pblk *pblk = from_timer(pblk, t, wtimer);
276 276
277 /* kick the write thread every tick to flush outstanding data */ 277 /* kick the write thread every tick to flush outstanding data */
278 pblk_write_kick(pblk); 278 pblk_write_kick(pblk);
diff --git a/drivers/lightnvm/pblk-gc.c b/drivers/lightnvm/pblk-gc.c
index 00d5698d64a9..9c8e114c8a54 100644
--- a/drivers/lightnvm/pblk-gc.c
+++ b/drivers/lightnvm/pblk-gc.c
@@ -442,9 +442,9 @@ next_gc_group:
442 goto next_gc_group; 442 goto next_gc_group;
443} 443}
444 444
445static void pblk_gc_timer(unsigned long data) 445static void pblk_gc_timer(struct timer_list *t)
446{ 446{
447 struct pblk *pblk = (struct pblk *)data; 447 struct pblk *pblk = from_timer(pblk, t, gc.gc_timer);
448 448
449 pblk_gc_kick(pblk); 449 pblk_gc_kick(pblk);
450} 450}
@@ -601,7 +601,7 @@ int pblk_gc_init(struct pblk *pblk)
601 goto fail_free_writer_kthread; 601 goto fail_free_writer_kthread;
602 } 602 }
603 603
604 setup_timer(&gc->gc_timer, pblk_gc_timer, (unsigned long)pblk); 604 timer_setup(&gc->gc_timer, pblk_gc_timer, 0);
605 mod_timer(&gc->gc_timer, jiffies + msecs_to_jiffies(GC_TIME_MSECS)); 605 mod_timer(&gc->gc_timer, jiffies + msecs_to_jiffies(GC_TIME_MSECS));
606 606
607 gc->gc_active = 0; 607 gc->gc_active = 0;
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index f62112ba5482..695826a06b5d 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -866,7 +866,7 @@ fail:
866 866
867static int pblk_writer_init(struct pblk *pblk) 867static int pblk_writer_init(struct pblk *pblk)
868{ 868{
869 setup_timer(&pblk->wtimer, pblk_write_timer_fn, (unsigned long)pblk); 869 timer_setup(&pblk->wtimer, pblk_write_timer_fn, 0);
870 mod_timer(&pblk->wtimer, jiffies + msecs_to_jiffies(100)); 870 mod_timer(&pblk->wtimer, jiffies + msecs_to_jiffies(100));
871 871
872 pblk->writer_ts = kthread_create(pblk_write_ts, pblk, "pblk-writer-t"); 872 pblk->writer_ts = kthread_create(pblk_write_ts, pblk, "pblk-writer-t");
diff --git a/drivers/lightnvm/pblk-rl.c b/drivers/lightnvm/pblk-rl.c
index abae31fd434e..dacc71922260 100644
--- a/drivers/lightnvm/pblk-rl.c
+++ b/drivers/lightnvm/pblk-rl.c
@@ -158,9 +158,9 @@ int pblk_rl_max_io(struct pblk_rl *rl)
158 return rl->rb_max_io; 158 return rl->rb_max_io;
159} 159}
160 160
161static void pblk_rl_u_timer(unsigned long data) 161static void pblk_rl_u_timer(struct timer_list *t)
162{ 162{
163 struct pblk_rl *rl = (struct pblk_rl *)data; 163 struct pblk_rl *rl = from_timer(rl, t, u_timer);
164 164
165 /* Release user I/O state. Protect from GC */ 165 /* Release user I/O state. Protect from GC */
166 smp_store_release(&rl->rb_user_active, 0); 166 smp_store_release(&rl->rb_user_active, 0);
@@ -202,7 +202,7 @@ void pblk_rl_init(struct pblk_rl *rl, int budget)
202 atomic_set(&rl->rb_gc_cnt, 0); 202 atomic_set(&rl->rb_gc_cnt, 0);
203 atomic_set(&rl->rb_space, -1); 203 atomic_set(&rl->rb_space, -1);
204 204
205 setup_timer(&rl->u_timer, pblk_rl_u_timer, (unsigned long)rl); 205 timer_setup(&rl->u_timer, pblk_rl_u_timer, 0);
206 206
207 rl->rb_user_active = 0; 207 rl->rb_user_active = 0;
208 rl->rb_gc_active = 0; 208 rl->rb_gc_active = 0;
diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index 90961033a79f..59a64d461a5d 100644
--- a/drivers/lightnvm/pblk.h
+++ b/drivers/lightnvm/pblk.h
@@ -797,7 +797,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry,
797 * pblk write thread 797 * pblk write thread
798 */ 798 */
799int pblk_write_ts(void *data); 799int pblk_write_ts(void *data);
800void pblk_write_timer_fn(unsigned long data); 800void pblk_write_timer_fn(struct timer_list *t);
801void pblk_write_should_kick(struct pblk *pblk); 801void pblk_write_should_kick(struct pblk *pblk);
802 802
803/* 803/*
diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c
index 267f01ae87e4..0993c14be860 100644
--- a/drivers/lightnvm/rrpc.c
+++ b/drivers/lightnvm/rrpc.c
@@ -267,9 +267,9 @@ static void rrpc_gc_kick(struct rrpc *rrpc)
267/* 267/*
268 * timed GC every interval. 268 * timed GC every interval.
269 */ 269 */
270static void rrpc_gc_timer(unsigned long data) 270static void rrpc_gc_timer(struct timer_list *t)
271{ 271{
272 struct rrpc *rrpc = (struct rrpc *)data; 272 struct rrpc *rrpc = from_timer(rrpc, t, gc_timer);
273 273
274 rrpc_gc_kick(rrpc); 274 rrpc_gc_kick(rrpc);
275 mod_timer(&rrpc->gc_timer, jiffies + msecs_to_jiffies(10)); 275 mod_timer(&rrpc->gc_timer, jiffies + msecs_to_jiffies(10));
@@ -1063,7 +1063,7 @@ static int rrpc_gc_init(struct rrpc *rrpc)
1063 if (!rrpc->kgc_wq) 1063 if (!rrpc->kgc_wq)
1064 return -ENOMEM; 1064 return -ENOMEM;
1065 1065
1066 setup_timer(&rrpc->gc_timer, rrpc_gc_timer, (unsigned long)rrpc); 1066 timer_setup(&rrpc->gc_timer, rrpc_gc_timer, 0);
1067 1067
1068 return 0; 1068 return 0;
1069} 1069}
diff --git a/drivers/media/common/saa7146/saa7146_vbi.c b/drivers/media/common/saa7146/saa7146_vbi.c
index ce8d78c137f0..e1d369b976ed 100644
--- a/drivers/media/common/saa7146/saa7146_vbi.c
+++ b/drivers/media/common/saa7146/saa7146_vbi.c
@@ -402,7 +402,7 @@ static int vbi_open(struct saa7146_dev *dev, struct file *file)
402 sizeof(struct saa7146_buf), 402 sizeof(struct saa7146_buf),
403 file, &dev->v4l2_lock); 403 file, &dev->v4l2_lock);
404 404
405 vv->vbi_read_timeout.function = (TIMER_FUNC_TYPE)vbi_read_timeout; 405 vv->vbi_read_timeout.function = vbi_read_timeout;
406 vv->vbi_read_timeout_file = file; 406 vv->vbi_read_timeout_file = file;
407 407
408 /* initialize the brs */ 408 /* initialize the brs */
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index fb43025df573..dba21215dc84 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -339,9 +339,9 @@ static int restart_video_queue(struct viu_dmaqueue *vidq)
339 } 339 }
340} 340}
341 341
342static void viu_vid_timeout(unsigned long data) 342static void viu_vid_timeout(struct timer_list *t)
343{ 343{
344 struct viu_dev *dev = (struct viu_dev *)data; 344 struct viu_dev *dev = from_timer(dev, t, vidq.timeout);
345 struct viu_buf *buf; 345 struct viu_buf *buf;
346 struct viu_dmaqueue *vidq = &dev->vidq; 346 struct viu_dmaqueue *vidq = &dev->vidq;
347 347
@@ -1466,8 +1466,7 @@ static int viu_of_probe(struct platform_device *op)
1466 viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad, 1466 viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad,
1467 "saa7113", VIU_VIDEO_DECODER_ADDR, NULL); 1467 "saa7113", VIU_VIDEO_DECODER_ADDR, NULL);
1468 1468
1469 setup_timer(&viu_dev->vidq.timeout, viu_vid_timeout, 1469 timer_setup(&viu_dev->vidq.timeout, viu_vid_timeout, 0);
1470 (unsigned long)viu_dev);
1471 viu_dev->std = V4L2_STD_NTSC_M; 1470 viu_dev->std = V4L2_STD_NTSC_M;
1472 viu_dev->first = 1; 1471 viu_dev->first = 1;
1473 1472
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
index 1839a86cc2a5..bc68dbbcaec1 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
@@ -145,9 +145,9 @@ void s5p_mfc_cleanup_queue(struct list_head *lh, struct vb2_queue *vq)
145 } 145 }
146} 146}
147 147
148static void s5p_mfc_watchdog(unsigned long arg) 148static void s5p_mfc_watchdog(struct timer_list *t)
149{ 149{
150 struct s5p_mfc_dev *dev = (struct s5p_mfc_dev *)arg; 150 struct s5p_mfc_dev *dev = from_timer(dev, t, watchdog_timer);
151 151
152 if (test_bit(0, &dev->hw_lock)) 152 if (test_bit(0, &dev->hw_lock))
153 atomic_inc(&dev->watchdog_cnt); 153 atomic_inc(&dev->watchdog_cnt);
@@ -1314,9 +1314,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
1314 dev->hw_lock = 0; 1314 dev->hw_lock = 0;
1315 INIT_WORK(&dev->watchdog_work, s5p_mfc_watchdog_worker); 1315 INIT_WORK(&dev->watchdog_work, s5p_mfc_watchdog_worker);
1316 atomic_set(&dev->watchdog_cnt, 0); 1316 atomic_set(&dev->watchdog_cnt, 0);
1317 init_timer(&dev->watchdog_timer); 1317 timer_setup(&dev->watchdog_timer, s5p_mfc_watchdog, 0);
1318 dev->watchdog_timer.data = (unsigned long)dev;
1319 dev->watchdog_timer.function = s5p_mfc_watchdog;
1320 1318
1321 ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); 1319 ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev);
1322 if (ret) 1320 if (ret)
diff --git a/drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c b/drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
index 59280ac31937..a0acee7671b1 100644
--- a/drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
+++ b/drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
@@ -61,9 +61,9 @@ static int load_c8sectpfe_fw(struct c8sectpfei *fei);
61 61
62#define FIFO_LEN 1024 62#define FIFO_LEN 1024
63 63
64static void c8sectpfe_timer_interrupt(unsigned long ac8sectpfei) 64static void c8sectpfe_timer_interrupt(struct timer_list *t)
65{ 65{
66 struct c8sectpfei *fei = (struct c8sectpfei *)ac8sectpfei; 66 struct c8sectpfei *fei = from_timer(fei, t, timer);
67 struct channel_info *channel; 67 struct channel_info *channel;
68 int chan_num; 68 int chan_num;
69 69
@@ -865,8 +865,7 @@ static int c8sectpfe_probe(struct platform_device *pdev)
865 } 865 }
866 866
867 /* Setup timer interrupt */ 867 /* Setup timer interrupt */
868 setup_timer(&fei->timer, c8sectpfe_timer_interrupt, 868 timer_setup(&fei->timer, c8sectpfe_timer_interrupt, 0);
869 (unsigned long)fei);
870 869
871 mutex_init(&fei->lock); 870 mutex_init(&fei->lock);
872 871
diff --git a/drivers/media/platform/vim2m.c b/drivers/media/platform/vim2m.c
index b01fba020d5f..7bf9fa2f8534 100644
--- a/drivers/media/platform/vim2m.c
+++ b/drivers/media/platform/vim2m.c
@@ -388,9 +388,9 @@ static void device_run(void *priv)
388 schedule_irq(dev, ctx->transtime); 388 schedule_irq(dev, ctx->transtime);
389} 389}
390 390
391static void device_isr(unsigned long priv) 391static void device_isr(struct timer_list *t)
392{ 392{
393 struct vim2m_dev *vim2m_dev = (struct vim2m_dev *)priv; 393 struct vim2m_dev *vim2m_dev = from_timer(vim2m_dev, t, timer);
394 struct vim2m_ctx *curr_ctx; 394 struct vim2m_ctx *curr_ctx;
395 struct vb2_v4l2_buffer *src_vb, *dst_vb; 395 struct vb2_v4l2_buffer *src_vb, *dst_vb;
396 unsigned long flags; 396 unsigned long flags;
@@ -1024,7 +1024,7 @@ static int vim2m_probe(struct platform_device *pdev)
1024 v4l2_info(&dev->v4l2_dev, 1024 v4l2_info(&dev->v4l2_dev,
1025 "Device registered as /dev/video%d\n", vfd->num); 1025 "Device registered as /dev/video%d\n", vfd->num);
1026 1026
1027 setup_timer(&dev->timer, device_isr, (long)dev); 1027 timer_setup(&dev->timer, device_isr, 0);
1028 platform_set_drvdata(pdev, dev); 1028 platform_set_drvdata(pdev, dev);
1029 1029
1030 dev->m2m_dev = v4l2_m2m_init(&m2m_ops); 1030 dev->m2m_dev = v4l2_m2m_init(&m2m_ops);
diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
index 34dc7e062471..d9093a3c57c5 100644
--- a/drivers/media/usb/au0828/au0828-dvb.c
+++ b/drivers/media/usb/au0828/au0828-dvb.c
@@ -105,9 +105,9 @@ static struct tda18271_config hauppauge_woodbury_tunerconfig = {
105 105
106static void au0828_restart_dvb_streaming(struct work_struct *work); 106static void au0828_restart_dvb_streaming(struct work_struct *work);
107 107
108static void au0828_bulk_timeout(unsigned long data) 108static void au0828_bulk_timeout(struct timer_list *t)
109{ 109{
110 struct au0828_dev *dev = (struct au0828_dev *) data; 110 struct au0828_dev *dev = from_timer(dev, t, bulk_timeout);
111 111
112 dprintk(1, "%s called\n", __func__); 112 dprintk(1, "%s called\n", __func__);
113 dev->bulk_timeout_running = 0; 113 dev->bulk_timeout_running = 0;
@@ -648,9 +648,7 @@ int au0828_dvb_register(struct au0828_dev *dev)
648 return ret; 648 return ret;
649 } 649 }
650 650
651 dev->bulk_timeout.function = au0828_bulk_timeout; 651 timer_setup(&dev->bulk_timeout, au0828_bulk_timeout, 0);
652 dev->bulk_timeout.data = (unsigned long) dev;
653 init_timer(&dev->bulk_timeout);
654 652
655 return 0; 653 return 0;
656} 654}
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index 654f67c25863..a240153821e0 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -954,9 +954,9 @@ int au0828_analog_unregister(struct au0828_dev *dev)
954/* This function ensures that video frames continue to be delivered even if 954/* This function ensures that video frames continue to be delivered even if
955 the ITU-656 input isn't receiving any data (thereby preventing applications 955 the ITU-656 input isn't receiving any data (thereby preventing applications
956 such as tvtime from hanging) */ 956 such as tvtime from hanging) */
957static void au0828_vid_buffer_timeout(unsigned long data) 957static void au0828_vid_buffer_timeout(struct timer_list *t)
958{ 958{
959 struct au0828_dev *dev = (struct au0828_dev *) data; 959 struct au0828_dev *dev = from_timer(dev, t, vid_timeout);
960 struct au0828_dmaqueue *dma_q = &dev->vidq; 960 struct au0828_dmaqueue *dma_q = &dev->vidq;
961 struct au0828_buffer *buf; 961 struct au0828_buffer *buf;
962 unsigned char *vid_data; 962 unsigned char *vid_data;
@@ -978,9 +978,9 @@ static void au0828_vid_buffer_timeout(unsigned long data)
978 spin_unlock_irqrestore(&dev->slock, flags); 978 spin_unlock_irqrestore(&dev->slock, flags);
979} 979}
980 980
981static void au0828_vbi_buffer_timeout(unsigned long data) 981static void au0828_vbi_buffer_timeout(struct timer_list *t)
982{ 982{
983 struct au0828_dev *dev = (struct au0828_dev *) data; 983 struct au0828_dev *dev = from_timer(dev, t, vbi_timeout);
984 struct au0828_dmaqueue *dma_q = &dev->vbiq; 984 struct au0828_dmaqueue *dma_q = &dev->vbiq;
985 struct au0828_buffer *buf; 985 struct au0828_buffer *buf;
986 unsigned char *vbi_data; 986 unsigned char *vbi_data;
@@ -1953,10 +1953,8 @@ int au0828_analog_register(struct au0828_dev *dev,
1953 INIT_LIST_HEAD(&dev->vidq.active); 1953 INIT_LIST_HEAD(&dev->vidq.active);
1954 INIT_LIST_HEAD(&dev->vbiq.active); 1954 INIT_LIST_HEAD(&dev->vbiq.active);
1955 1955
1956 setup_timer(&dev->vid_timeout, au0828_vid_buffer_timeout, 1956 timer_setup(&dev->vid_timeout, au0828_vid_buffer_timeout, 0);
1957 (unsigned long)dev); 1957 timer_setup(&dev->vbi_timeout, au0828_vbi_buffer_timeout, 0);
1958 setup_timer(&dev->vbi_timeout, au0828_vbi_buffer_timeout,
1959 (unsigned long)dev);
1960 1958
1961 dev->width = NTSC_STD_W; 1959 dev->width = NTSC_STD_W;
1962 dev->height = NTSC_STD_H; 1960 dev->height = NTSC_STD_H;
diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c
index 22de7f5ed032..57b13dfbd21e 100644
--- a/drivers/memstick/core/ms_block.c
+++ b/drivers/memstick/core/ms_block.c
@@ -1492,9 +1492,9 @@ static int msb_ftl_scan(struct msb_data *msb)
1492 return 0; 1492 return 0;
1493} 1493}
1494 1494
1495static void msb_cache_flush_timer(unsigned long data) 1495static void msb_cache_flush_timer(struct timer_list *t)
1496{ 1496{
1497 struct msb_data *msb = (struct msb_data *)data; 1497 struct msb_data *msb = from_timer(msb, t, cache_flush_timer);
1498 msb->need_flush_cache = true; 1498 msb->need_flush_cache = true;
1499 queue_work(msb->io_queue, &msb->io_work); 1499 queue_work(msb->io_queue, &msb->io_work);
1500} 1500}
@@ -1514,8 +1514,7 @@ static void msb_cache_discard(struct msb_data *msb)
1514 1514
1515static int msb_cache_init(struct msb_data *msb) 1515static int msb_cache_init(struct msb_data *msb)
1516{ 1516{
1517 setup_timer(&msb->cache_flush_timer, msb_cache_flush_timer, 1517 timer_setup(&msb->cache_flush_timer, msb_cache_flush_timer, 0);
1518 (unsigned long)msb);
1519 1518
1520 if (!msb->cache) 1519 if (!msb->cache)
1521 msb->cache = kzalloc(msb->block_size, GFP_KERNEL); 1520 msb->cache = kzalloc(msb->block_size, GFP_KERNEL);
diff --git a/drivers/mfd/rtsx_usb.c b/drivers/mfd/rtsx_usb.c
index 691dab791f7a..59d61b04c197 100644
--- a/drivers/mfd/rtsx_usb.c
+++ b/drivers/mfd/rtsx_usb.c
@@ -40,9 +40,9 @@ static const struct mfd_cell rtsx_usb_cells[] = {
40 }, 40 },
41}; 41};
42 42
43static void rtsx_usb_sg_timed_out(unsigned long data) 43static void rtsx_usb_sg_timed_out(struct timer_list *t)
44{ 44{
45 struct rtsx_ucr *ucr = (struct rtsx_ucr *)data; 45 struct rtsx_ucr *ucr = from_timer(ucr, t, sg_timer);
46 46
47 dev_dbg(&ucr->pusb_intf->dev, "%s: sg transfer timed out", __func__); 47 dev_dbg(&ucr->pusb_intf->dev, "%s: sg transfer timed out", __func__);
48 usb_sg_cancel(&ucr->current_sg); 48 usb_sg_cancel(&ucr->current_sg);
@@ -663,7 +663,7 @@ static int rtsx_usb_probe(struct usb_interface *intf,
663 goto out_init_fail; 663 goto out_init_fail;
664 664
665 /* initialize USB SG transfer timer */ 665 /* initialize USB SG transfer timer */
666 setup_timer(&ucr->sg_timer, rtsx_usb_sg_timed_out, (unsigned long) ucr); 666 timer_setup(&ucr->sg_timer, rtsx_usb_sg_timed_out, 0);
667 667
668 ret = mfd_add_hotplug_devices(&intf->dev, rtsx_usb_cells, 668 ret = mfd_add_hotplug_devices(&intf->dev, rtsx_usb_cells,
669 ARRAY_SIZE(rtsx_usb_cells)); 669 ARRAY_SIZE(rtsx_usb_cells));
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index 35a9e4fd1a9f..64b03d6eaf18 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -160,9 +160,9 @@ out:
160 return err; 160 return err;
161} 161}
162 162
163static void mmc_retune_timer(unsigned long data) 163static void mmc_retune_timer(struct timer_list *t)
164{ 164{
165 struct mmc_host *host = (struct mmc_host *)data; 165 struct mmc_host *host = from_timer(host, t, retune_timer);
166 166
167 mmc_retune_needed(host); 167 mmc_retune_needed(host);
168} 168}
@@ -389,7 +389,7 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
389 init_waitqueue_head(&host->wq); 389 init_waitqueue_head(&host->wq);
390 INIT_DELAYED_WORK(&host->detect, mmc_rescan); 390 INIT_DELAYED_WORK(&host->detect, mmc_rescan);
391 INIT_DELAYED_WORK(&host->sdio_irq_work, sdio_irq_work); 391 INIT_DELAYED_WORK(&host->sdio_irq_work, sdio_irq_work);
392 setup_timer(&host->retune_timer, mmc_retune_timer, (unsigned long)host); 392 timer_setup(&host->retune_timer, mmc_retune_timer, 0);
393 393
394 /* 394 /*
395 * By default, hosts do not support SGIO or large requests. 395 * By default, hosts do not support SGIO or large requests.
diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
index 3692dd547879..4237c7cebf02 100644
--- a/drivers/mtd/sm_ftl.c
+++ b/drivers/mtd/sm_ftl.c
@@ -989,9 +989,9 @@ restart:
989 989
990 990
991/* flush timer, runs a second after last write */ 991/* flush timer, runs a second after last write */
992static void sm_cache_flush_timer(unsigned long data) 992static void sm_cache_flush_timer(struct timer_list *t)
993{ 993{
994 struct sm_ftl *ftl = (struct sm_ftl *)data; 994 struct sm_ftl *ftl = from_timer(ftl, t, timer);
995 queue_work(cache_flush_workqueue, &ftl->flush_work); 995 queue_work(cache_flush_workqueue, &ftl->flush_work);
996} 996}
997 997
@@ -1139,7 +1139,7 @@ static void sm_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
1139 1139
1140 1140
1141 mutex_init(&ftl->mutex); 1141 mutex_init(&ftl->mutex);
1142 setup_timer(&ftl->timer, sm_cache_flush_timer, (unsigned long)ftl); 1142 timer_setup(&ftl->timer, sm_cache_flush_timer, 0);
1143 INIT_WORK(&ftl->flush_work, sm_cache_flush_work); 1143 INIT_WORK(&ftl->flush_work, sm_cache_flush_work);
1144 init_completion(&ftl->erase_completion); 1144 init_completion(&ftl->erase_completion);
1145 1145
diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
index fed75e75207a..b8029ea03307 100644
--- a/drivers/net/caif/caif_hsi.c
+++ b/drivers/net/caif/caif_hsi.c
@@ -66,9 +66,9 @@ static const struct cfhsi_config hsi_default_config = {
66 66
67static LIST_HEAD(cfhsi_list); 67static LIST_HEAD(cfhsi_list);
68 68
69static void cfhsi_inactivity_tout(unsigned long arg) 69static void cfhsi_inactivity_tout(struct timer_list *t)
70{ 70{
71 struct cfhsi *cfhsi = (struct cfhsi *)arg; 71 struct cfhsi *cfhsi = from_timer(cfhsi, t, inactivity_timer);
72 72
73 netdev_dbg(cfhsi->ndev, "%s.\n", 73 netdev_dbg(cfhsi->ndev, "%s.\n",
74 __func__); 74 __func__);
@@ -737,9 +737,9 @@ out_of_sync:
737 schedule_work(&cfhsi->out_of_sync_work); 737 schedule_work(&cfhsi->out_of_sync_work);
738} 738}
739 739
740static void cfhsi_rx_slowpath(unsigned long arg) 740static void cfhsi_rx_slowpath(struct timer_list *t)
741{ 741{
742 struct cfhsi *cfhsi = (struct cfhsi *)arg; 742 struct cfhsi *cfhsi = from_timer(cfhsi, t, rx_slowpath_timer);
743 743
744 netdev_dbg(cfhsi->ndev, "%s.\n", 744 netdev_dbg(cfhsi->ndev, "%s.\n",
745 __func__); 745 __func__);
@@ -997,9 +997,9 @@ static void cfhsi_wake_down_cb(struct cfhsi_cb_ops *cb_ops)
997 wake_up_interruptible(&cfhsi->wake_down_wait); 997 wake_up_interruptible(&cfhsi->wake_down_wait);
998} 998}
999 999
1000static void cfhsi_aggregation_tout(unsigned long arg) 1000static void cfhsi_aggregation_tout(struct timer_list *t)
1001{ 1001{
1002 struct cfhsi *cfhsi = (struct cfhsi *)arg; 1002 struct cfhsi *cfhsi = from_timer(cfhsi, t, aggregation_timer);
1003 1003
1004 netdev_dbg(cfhsi->ndev, "%s.\n", 1004 netdev_dbg(cfhsi->ndev, "%s.\n",
1005 __func__); 1005 __func__);
@@ -1211,14 +1211,11 @@ static int cfhsi_open(struct net_device *ndev)
1211 init_waitqueue_head(&cfhsi->flush_fifo_wait); 1211 init_waitqueue_head(&cfhsi->flush_fifo_wait);
1212 1212
1213 /* Setup the inactivity timer. */ 1213 /* Setup the inactivity timer. */
1214 setup_timer(&cfhsi->inactivity_timer, cfhsi_inactivity_tout, 1214 timer_setup(&cfhsi->inactivity_timer, cfhsi_inactivity_tout, 0);
1215 (unsigned long)cfhsi);
1216 /* Setup the slowpath RX timer. */ 1215 /* Setup the slowpath RX timer. */
1217 setup_timer(&cfhsi->rx_slowpath_timer, cfhsi_rx_slowpath, 1216 timer_setup(&cfhsi->rx_slowpath_timer, cfhsi_rx_slowpath, 0);
1218 (unsigned long)cfhsi);
1219 /* Setup the aggregation timer. */ 1217 /* Setup the aggregation timer. */
1220 setup_timer(&cfhsi->aggregation_timer, cfhsi_aggregation_tout, 1218 timer_setup(&cfhsi->aggregation_timer, cfhsi_aggregation_tout, 0);
1221 (unsigned long)cfhsi);
1222 1219
1223 /* Activate HSI interface. */ 1220 /* Activate HSI interface. */
1224 res = cfhsi->ops->cfhsi_up(cfhsi->ops); 1221 res = cfhsi->ops->cfhsi_up(cfhsi->ops);
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index b6e2bfd7d2d6..8b1a859f5140 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -165,9 +165,16 @@ static unsigned int network_rec_config_shadow = 0;
165 165
166static unsigned int network_tr_ctrl_shadow = 0; 166static unsigned int network_tr_ctrl_shadow = 0;
167 167
168/* Timers */
169static void e100_check_speed(struct timer_list *unused);
170static void e100_clear_network_leds(struct timer_list *unused);
171static void e100_check_duplex(struct timer_list *unused);
172static DEFINE_TIMER(speed_timer, e100_check_speed);
173static DEFINE_TIMER(clear_led_timer, e100_clear_network_leds);
174static DEFINE_TIMER(duplex_timer, e100_check_duplex);
175static struct net_device *timer_dev;
176
168/* Network speed indication. */ 177/* Network speed indication. */
169static DEFINE_TIMER(speed_timer, NULL);
170static DEFINE_TIMER(clear_led_timer, NULL);
171static int current_speed; /* Speed read from transceiver */ 178static int current_speed; /* Speed read from transceiver */
172static int current_speed_selection; /* Speed selected by user */ 179static int current_speed_selection; /* Speed selected by user */
173static unsigned long led_next_time; 180static unsigned long led_next_time;
@@ -175,7 +182,6 @@ static int led_active;
175static int rx_queue_len; 182static int rx_queue_len;
176 183
177/* Duplex */ 184/* Duplex */
178static DEFINE_TIMER(duplex_timer, NULL);
179static int full_duplex; 185static int full_duplex;
180static enum duplex current_duplex; 186static enum duplex current_duplex;
181 187
@@ -200,9 +206,7 @@ static void update_rx_stats(struct net_device_stats *);
200static void update_tx_stats(struct net_device_stats *); 206static void update_tx_stats(struct net_device_stats *);
201static int e100_probe_transceiver(struct net_device* dev); 207static int e100_probe_transceiver(struct net_device* dev);
202 208
203static void e100_check_speed(unsigned long priv);
204static void e100_set_speed(struct net_device* dev, unsigned long speed); 209static void e100_set_speed(struct net_device* dev, unsigned long speed);
205static void e100_check_duplex(unsigned long priv);
206static void e100_set_duplex(struct net_device* dev, enum duplex); 210static void e100_set_duplex(struct net_device* dev, enum duplex);
207static void e100_negotiate(struct net_device* dev); 211static void e100_negotiate(struct net_device* dev);
208 212
@@ -214,7 +218,6 @@ static void e100_send_mdio_bit(unsigned char bit);
214static unsigned char e100_receive_mdio_bit(void); 218static unsigned char e100_receive_mdio_bit(void);
215static void e100_reset_transceiver(struct net_device* net); 219static void e100_reset_transceiver(struct net_device* net);
216 220
217static void e100_clear_network_leds(unsigned long dummy);
218static void e100_set_network_leds(int active); 221static void e100_set_network_leds(int active);
219 222
220static const struct ethtool_ops e100_ethtool_ops; 223static const struct ethtool_ops e100_ethtool_ops;
@@ -381,17 +384,12 @@ etrax_ethernet_init(void)
381 current_speed = 10; 384 current_speed = 10;
382 current_speed_selection = 0; /* Auto */ 385 current_speed_selection = 0; /* Auto */
383 speed_timer.expires = jiffies + NET_LINK_UP_CHECK_INTERVAL; 386 speed_timer.expires = jiffies + NET_LINK_UP_CHECK_INTERVAL;
384 speed_timer.data = (unsigned long)dev;
385 speed_timer.function = e100_check_speed;
386
387 clear_led_timer.function = e100_clear_network_leds;
388 clear_led_timer.data = (unsigned long)dev;
389 387
390 full_duplex = 0; 388 full_duplex = 0;
391 current_duplex = autoneg; 389 current_duplex = autoneg;
392 duplex_timer.expires = jiffies + NET_DUPLEX_CHECK_INTERVAL; 390 duplex_timer.expires = jiffies + NET_DUPLEX_CHECK_INTERVAL;
393 duplex_timer.data = (unsigned long)dev; 391
394 duplex_timer.function = e100_check_duplex; 392 timer_dev = dev;
395 393
396 /* Initialize mii interface */ 394 /* Initialize mii interface */
397 np->mii_if.phy_id_mask = 0x1f; 395 np->mii_if.phy_id_mask = 0x1f;
@@ -680,9 +678,9 @@ intel_check_speed(struct net_device* dev)
680} 678}
681#endif 679#endif
682static void 680static void
683e100_check_speed(unsigned long priv) 681e100_check_speed(struct timer_list *unused)
684{ 682{
685 struct net_device* dev = (struct net_device*)priv; 683 struct net_device* dev = timer_dev;
686 struct net_local *np = netdev_priv(dev); 684 struct net_local *np = netdev_priv(dev);
687 static int led_initiated = 0; 685 static int led_initiated = 0;
688 unsigned long data; 686 unsigned long data;
@@ -799,9 +797,9 @@ e100_set_speed(struct net_device* dev, unsigned long speed)
799} 797}
800 798
801static void 799static void
802e100_check_duplex(unsigned long priv) 800e100_check_duplex(struct timer_list *unused)
803{ 801{
804 struct net_device *dev = (struct net_device *)priv; 802 struct net_device *dev = timer_dev;
805 struct net_local *np = netdev_priv(dev); 803 struct net_local *np = netdev_priv(dev);
806 int old_duplex; 804 int old_duplex;
807 805
@@ -1669,9 +1667,9 @@ e100_hardware_send_packet(struct net_local *np, char *buf, int length)
1669} 1667}
1670 1668
1671static void 1669static void
1672e100_clear_network_leds(unsigned long dummy) 1670e100_clear_network_leds(struct timer_list *unused)
1673{ 1671{
1674 struct net_device *dev = (struct net_device *)dummy; 1672 struct net_device *dev = timer_dev;
1675 struct net_local *np = netdev_priv(dev); 1673 struct net_local *np = netdev_priv(dev);
1676 1674
1677 spin_lock(&np->led_lock); 1675 spin_lock(&np->led_lock);
diff --git a/drivers/net/dsa/mv88e6xxx/phy.c b/drivers/net/dsa/mv88e6xxx/phy.c
index 436668bd50dc..46af8052e535 100644
--- a/drivers/net/dsa/mv88e6xxx/phy.c
+++ b/drivers/net/dsa/mv88e6xxx/phy.c
@@ -149,9 +149,9 @@ static void mv88e6xxx_phy_ppu_reenable_work(struct work_struct *ugly)
149 mutex_unlock(&chip->reg_lock); 149 mutex_unlock(&chip->reg_lock);
150} 150}
151 151
152static void mv88e6xxx_phy_ppu_reenable_timer(unsigned long _ps) 152static void mv88e6xxx_phy_ppu_reenable_timer(struct timer_list *t)
153{ 153{
154 struct mv88e6xxx_chip *chip = (void *)_ps; 154 struct mv88e6xxx_chip *chip = from_timer(chip, t, ppu_timer);
155 155
156 schedule_work(&chip->ppu_work); 156 schedule_work(&chip->ppu_work);
157} 157}
@@ -193,8 +193,7 @@ static void mv88e6xxx_phy_ppu_state_init(struct mv88e6xxx_chip *chip)
193{ 193{
194 mutex_init(&chip->ppu_mutex); 194 mutex_init(&chip->ppu_mutex);
195 INIT_WORK(&chip->ppu_work, mv88e6xxx_phy_ppu_reenable_work); 195 INIT_WORK(&chip->ppu_work, mv88e6xxx_phy_ppu_reenable_work);
196 setup_timer(&chip->ppu_timer, mv88e6xxx_phy_ppu_reenable_timer, 196 timer_setup(&chip->ppu_timer, mv88e6xxx_phy_ppu_reenable_timer, 0);
197 (unsigned long)chip);
198} 197}
199 198
200static void mv88e6xxx_phy_ppu_state_destroy(struct mv88e6xxx_chip *chip) 199static void mv88e6xxx_phy_ppu_state_destroy(struct mv88e6xxx_chip *chip)
diff --git a/drivers/net/eql.c b/drivers/net/eql.c
index fccce4b47778..74263f8efe1a 100644
--- a/drivers/net/eql.c
+++ b/drivers/net/eql.c
@@ -139,9 +139,9 @@ static netdev_tx_t eql_slave_xmit(struct sk_buff *skb, struct net_device *dev);
139 139
140static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave); 140static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave);
141 141
142static void eql_timer(unsigned long param) 142static void eql_timer(struct timer_list *t)
143{ 143{
144 equalizer_t *eql = (equalizer_t *) param; 144 equalizer_t *eql = from_timer(eql, t, timer);
145 struct list_head *this, *tmp, *head; 145 struct list_head *this, *tmp, *head;
146 146
147 spin_lock(&eql->queue.lock); 147 spin_lock(&eql->queue.lock);
@@ -178,7 +178,7 @@ static void __init eql_setup(struct net_device *dev)
178{ 178{
179 equalizer_t *eql = netdev_priv(dev); 179 equalizer_t *eql = netdev_priv(dev);
180 180
181 setup_timer(&eql->timer, eql_timer, (unsigned long)eql); 181 timer_setup(&eql->timer, eql_timer, 0);
182 eql->timer.expires = jiffies + EQL_DEFAULT_RESCHED_IVAL; 182 eql->timer.expires = jiffies + EQL_DEFAULT_RESCHED_IVAL;
183 183
184 spin_lock_init(&eql->queue.lock); 184 spin_lock_init(&eql->queue.lock);
diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c
index 0658cde1586a..7120f2b9c6ef 100644
--- a/drivers/net/ethernet/adi/bfin_mac.c
+++ b/drivers/net/ethernet/adi/bfin_mac.c
@@ -1092,9 +1092,11 @@ static void tx_reclaim_skb(struct bfin_mac_local *lp)
1092 return; 1092 return;
1093} 1093}
1094 1094
1095static void tx_reclaim_skb_timeout(unsigned long lp) 1095static void tx_reclaim_skb_timeout(struct timer_list *t)
1096{ 1096{
1097 tx_reclaim_skb((struct bfin_mac_local *)lp); 1097 struct bfin_mac_local *lp = from_timer(lp, t, tx_reclaim_timer);
1098
1099 tx_reclaim_skb(lp);
1098} 1100}
1099 1101
1100static int bfin_mac_hard_start_xmit(struct sk_buff *skb, 1102static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
@@ -1650,8 +1652,7 @@ static int bfin_mac_probe(struct platform_device *pdev)
1650 ndev->netdev_ops = &bfin_mac_netdev_ops; 1652 ndev->netdev_ops = &bfin_mac_netdev_ops;
1651 ndev->ethtool_ops = &bfin_mac_ethtool_ops; 1653 ndev->ethtool_ops = &bfin_mac_ethtool_ops;
1652 1654
1653 setup_timer(&lp->tx_reclaim_timer, tx_reclaim_skb_timeout, 1655 timer_setup(&lp->tx_reclaim_timer, tx_reclaim_skb_timeout, 0);
1654 (unsigned long)lp);
1655 1656
1656 lp->flags = 0; 1657 lp->flags = 0;
1657 netif_napi_add(ndev, &lp->napi, bfin_mac_poll, CONFIG_BFIN_RX_DESC_NUM); 1658 netif_napi_add(ndev, &lp->napi, bfin_mac_poll, CONFIG_BFIN_RX_DESC_NUM);
diff --git a/drivers/net/ethernet/agere/et131x.c b/drivers/net/ethernet/agere/et131x.c
index 658e92f79d36..48220b6c600d 100644
--- a/drivers/net/ethernet/agere/et131x.c
+++ b/drivers/net/ethernet/agere/et131x.c
@@ -3080,9 +3080,9 @@ err_out:
3080 * The routine called when the error timer expires, to track the number of 3080 * The routine called when the error timer expires, to track the number of
3081 * recurring errors. 3081 * recurring errors.
3082 */ 3082 */
3083static void et131x_error_timer_handler(unsigned long data) 3083static void et131x_error_timer_handler(struct timer_list *t)
3084{ 3084{
3085 struct et131x_adapter *adapter = (struct et131x_adapter *)data; 3085 struct et131x_adapter *adapter = from_timer(adapter, t, error_timer);
3086 struct phy_device *phydev = adapter->netdev->phydev; 3086 struct phy_device *phydev = adapter->netdev->phydev;
3087 3087
3088 if (et1310_in_phy_coma(adapter)) { 3088 if (et1310_in_phy_coma(adapter)) {
@@ -3624,8 +3624,7 @@ static int et131x_open(struct net_device *netdev)
3624 int result; 3624 int result;
3625 3625
3626 /* Start the timer to track NIC errors */ 3626 /* Start the timer to track NIC errors */
3627 setup_timer(&adapter->error_timer, et131x_error_timer_handler, 3627 timer_setup(&adapter->error_timer, et131x_error_timer_handler, 0);
3628 (unsigned long)adapter);
3629 adapter->error_timer.expires = jiffies + 3628 adapter->error_timer.expires = jiffies +
3630 msecs_to_jiffies(TX_ERROR_PERIOD); 3629 msecs_to_jiffies(TX_ERROR_PERIOD);
3631 add_timer(&adapter->error_timer); 3630 add_timer(&adapter->error_timer);
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 1c1ddd891ca3..97c5a89a9cf7 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -2859,9 +2859,9 @@ static void ena_update_host_info(struct ena_admin_host_info *host_info,
2859 (netdev->features & GENMASK_ULL(63, 32)) >> 32; 2859 (netdev->features & GENMASK_ULL(63, 32)) >> 32;
2860} 2860}
2861 2861
2862static void ena_timer_service(unsigned long data) 2862static void ena_timer_service(struct timer_list *t)
2863{ 2863{
2864 struct ena_adapter *adapter = (struct ena_adapter *)data; 2864 struct ena_adapter *adapter = from_timer(adapter, t, timer_service);
2865 u8 *debug_area = adapter->ena_dev->host_attr.debug_area_virt_addr; 2865 u8 *debug_area = adapter->ena_dev->host_attr.debug_area_virt_addr;
2866 struct ena_admin_host_info *host_info = 2866 struct ena_admin_host_info *host_info =
2867 adapter->ena_dev->host_attr.host_info; 2867 adapter->ena_dev->host_attr.host_info;
@@ -3278,8 +3278,7 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3278 3278
3279 ena_update_hints(adapter, &get_feat_ctx.hw_hints); 3279 ena_update_hints(adapter, &get_feat_ctx.hw_hints);
3280 3280
3281 setup_timer(&adapter->timer_service, ena_timer_service, 3281 timer_setup(&adapter->timer_service, ena_timer_service, 0);
3282 (unsigned long)adapter);
3283 mod_timer(&adapter->timer_service, round_jiffies(jiffies + HZ)); 3282 mod_timer(&adapter->timer_service, round_jiffies(jiffies + HZ));
3284 3283
3285 dev_info(&pdev->dev, "%s found at mem %lx, mac addr %pM Queues %d\n", 3284 dev_info(&pdev->dev, "%s found at mem %lx, mac addr %pM Queues %d\n",
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index 483e97691eea..78dfb2ab78ce 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -163,9 +163,9 @@ static int aq_nic_update_link_status(struct aq_nic_s *self)
163 return 0; 163 return 0;
164} 164}
165 165
166static void aq_nic_service_timer_cb(unsigned long param) 166static void aq_nic_service_timer_cb(struct timer_list *t)
167{ 167{
168 struct aq_nic_s *self = (struct aq_nic_s *)param; 168 struct aq_nic_s *self = from_timer(self, t, service_timer);
169 struct net_device *ndev = aq_nic_get_ndev(self); 169 struct net_device *ndev = aq_nic_get_ndev(self);
170 int err = 0; 170 int err = 0;
171 unsigned int i = 0U; 171 unsigned int i = 0U;
@@ -201,9 +201,9 @@ err_exit:
201 jiffies + AQ_CFG_SERVICE_TIMER_INTERVAL); 201 jiffies + AQ_CFG_SERVICE_TIMER_INTERVAL);
202} 202}
203 203
204static void aq_nic_polling_timer_cb(unsigned long param) 204static void aq_nic_polling_timer_cb(struct timer_list *t)
205{ 205{
206 struct aq_nic_s *self = (struct aq_nic_s *)param; 206 struct aq_nic_s *self = from_timer(self, t, polling_timer);
207 struct aq_vec_s *aq_vec = NULL; 207 struct aq_vec_s *aq_vec = NULL;
208 unsigned int i = 0U; 208 unsigned int i = 0U;
209 209
@@ -440,14 +440,12 @@ int aq_nic_start(struct aq_nic_s *self)
440 err = aq_nic_update_interrupt_moderation_settings(self); 440 err = aq_nic_update_interrupt_moderation_settings(self);
441 if (err) 441 if (err)
442 goto err_exit; 442 goto err_exit;
443 setup_timer(&self->service_timer, &aq_nic_service_timer_cb, 443 timer_setup(&self->service_timer, aq_nic_service_timer_cb, 0);
444 (unsigned long)self);
445 mod_timer(&self->service_timer, jiffies + 444 mod_timer(&self->service_timer, jiffies +
446 AQ_CFG_SERVICE_TIMER_INTERVAL); 445 AQ_CFG_SERVICE_TIMER_INTERVAL);
447 446
448 if (self->aq_nic_cfg.is_polling) { 447 if (self->aq_nic_cfg.is_polling) {
449 setup_timer(&self->polling_timer, &aq_nic_polling_timer_cb, 448 timer_setup(&self->polling_timer, aq_nic_polling_timer_cb, 0);
450 (unsigned long)self);
451 mod_timer(&self->polling_timer, jiffies + 449 mod_timer(&self->polling_timer, jiffies +
452 AQ_CFG_POLLING_TIMER_INTERVAL); 450 AQ_CFG_POLLING_TIMER_INTERVAL);
453 } else { 451 } else {
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index 8c9986f3fc01..94270f654b3b 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -222,9 +222,10 @@ static u32 atl1c_wait_until_idle(struct atl1c_hw *hw, u32 modu_ctrl)
222 * atl1c_phy_config - Timer Call-back 222 * atl1c_phy_config - Timer Call-back
223 * @data: pointer to netdev cast into an unsigned long 223 * @data: pointer to netdev cast into an unsigned long
224 */ 224 */
225static void atl1c_phy_config(unsigned long data) 225static void atl1c_phy_config(struct timer_list *t)
226{ 226{
227 struct atl1c_adapter *adapter = (struct atl1c_adapter *) data; 227 struct atl1c_adapter *adapter = from_timer(adapter, t,
228 phy_config_timer);
228 struct atl1c_hw *hw = &adapter->hw; 229 struct atl1c_hw *hw = &adapter->hw;
229 unsigned long flags; 230 unsigned long flags;
230 231
@@ -2613,8 +2614,7 @@ static int atl1c_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2613 adapter->mii.phy_id_mask = 0x1f; 2614 adapter->mii.phy_id_mask = 0x1f;
2614 adapter->mii.reg_num_mask = MDIO_CTRL_REG_MASK; 2615 adapter->mii.reg_num_mask = MDIO_CTRL_REG_MASK;
2615 netif_napi_add(netdev, &adapter->napi, atl1c_clean, 64); 2616 netif_napi_add(netdev, &adapter->napi, atl1c_clean, 64);
2616 setup_timer(&adapter->phy_config_timer, atl1c_phy_config, 2617 timer_setup(&adapter->phy_config_timer, atl1c_phy_config, 0);
2617 (unsigned long)adapter);
2618 /* setup the private structure */ 2618 /* setup the private structure */
2619 err = atl1c_sw_init(adapter); 2619 err = atl1c_sw_init(adapter);
2620 if (err) { 2620 if (err) {
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index 4f7e195af0bc..9dc6da039a6d 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -130,9 +130,10 @@ static inline void atl1e_irq_reset(struct atl1e_adapter *adapter)
130 * atl1e_phy_config - Timer Call-back 130 * atl1e_phy_config - Timer Call-back
131 * @data: pointer to netdev cast into an unsigned long 131 * @data: pointer to netdev cast into an unsigned long
132 */ 132 */
133static void atl1e_phy_config(unsigned long data) 133static void atl1e_phy_config(struct timer_list *t)
134{ 134{
135 struct atl1e_adapter *adapter = (struct atl1e_adapter *) data; 135 struct atl1e_adapter *adapter = from_timer(adapter, t,
136 phy_config_timer);
136 struct atl1e_hw *hw = &adapter->hw; 137 struct atl1e_hw *hw = &adapter->hw;
137 unsigned long flags; 138 unsigned long flags;
138 139
@@ -2361,8 +2362,7 @@ static int atl1e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2361 2362
2362 netif_napi_add(netdev, &adapter->napi, atl1e_clean, 64); 2363 netif_napi_add(netdev, &adapter->napi, atl1e_clean, 64);
2363 2364
2364 setup_timer(&adapter->phy_config_timer, atl1e_phy_config, 2365 timer_setup(&adapter->phy_config_timer, atl1e_phy_config, 0);
2365 (unsigned long)adapter);
2366 2366
2367 /* get user settings */ 2367 /* get user settings */
2368 atl1e_check_options(adapter); 2368 atl1e_check_options(adapter);
diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c
index 83d2db2abb45..b81fbf119bce 100644
--- a/drivers/net/ethernet/atheros/atlx/atl1.c
+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
@@ -2575,9 +2575,10 @@ static irqreturn_t atl1_intr(int irq, void *data)
2575 * atl1_phy_config - Timer Call-back 2575 * atl1_phy_config - Timer Call-back
2576 * @data: pointer to netdev cast into an unsigned long 2576 * @data: pointer to netdev cast into an unsigned long
2577 */ 2577 */
2578static void atl1_phy_config(unsigned long data) 2578static void atl1_phy_config(struct timer_list *t)
2579{ 2579{
2580 struct atl1_adapter *adapter = (struct atl1_adapter *)data; 2580 struct atl1_adapter *adapter = from_timer(adapter, t,
2581 phy_config_timer);
2581 struct atl1_hw *hw = &adapter->hw; 2582 struct atl1_hw *hw = &adapter->hw;
2582 unsigned long flags; 2583 unsigned long flags;
2583 2584
@@ -3071,8 +3072,7 @@ static int atl1_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3071 /* assume we have no link for now */ 3072 /* assume we have no link for now */
3072 netif_carrier_off(netdev); 3073 netif_carrier_off(netdev);
3073 3074
3074 setup_timer(&adapter->phy_config_timer, atl1_phy_config, 3075 timer_setup(&adapter->phy_config_timer, atl1_phy_config, 0);
3075 (unsigned long)adapter);
3076 adapter->phy_timer_pending = false; 3076 adapter->phy_timer_pending = false;
3077 3077
3078 INIT_WORK(&adapter->reset_dev_task, atl1_reset_dev_task); 3078 INIT_WORK(&adapter->reset_dev_task, atl1_reset_dev_task);
diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
index 77a1c03255de..db4bcc51023a 100644
--- a/drivers/net/ethernet/atheros/atlx/atl2.c
+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
@@ -1028,9 +1028,9 @@ static void atl2_tx_timeout(struct net_device *netdev)
1028 * atl2_watchdog - Timer Call-back 1028 * atl2_watchdog - Timer Call-back
1029 * @data: pointer to netdev cast into an unsigned long 1029 * @data: pointer to netdev cast into an unsigned long
1030 */ 1030 */
1031static void atl2_watchdog(unsigned long data) 1031static void atl2_watchdog(struct timer_list *t)
1032{ 1032{
1033 struct atl2_adapter *adapter = (struct atl2_adapter *) data; 1033 struct atl2_adapter *adapter = from_timer(adapter, t, watchdog_timer);
1034 1034
1035 if (!test_bit(__ATL2_DOWN, &adapter->flags)) { 1035 if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
1036 u32 drop_rxd, drop_rxs; 1036 u32 drop_rxd, drop_rxs;
@@ -1053,9 +1053,10 @@ static void atl2_watchdog(unsigned long data)
1053 * atl2_phy_config - Timer Call-back 1053 * atl2_phy_config - Timer Call-back
1054 * @data: pointer to netdev cast into an unsigned long 1054 * @data: pointer to netdev cast into an unsigned long
1055 */ 1055 */
1056static void atl2_phy_config(unsigned long data) 1056static void atl2_phy_config(struct timer_list *t)
1057{ 1057{
1058 struct atl2_adapter *adapter = (struct atl2_adapter *) data; 1058 struct atl2_adapter *adapter = from_timer(adapter, t,
1059 phy_config_timer);
1059 struct atl2_hw *hw = &adapter->hw; 1060 struct atl2_hw *hw = &adapter->hw;
1060 unsigned long flags; 1061 unsigned long flags;
1061 1062
@@ -1434,11 +1435,9 @@ static int atl2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1434 1435
1435 atl2_check_options(adapter); 1436 atl2_check_options(adapter);
1436 1437
1437 setup_timer(&adapter->watchdog_timer, atl2_watchdog, 1438 timer_setup(&adapter->watchdog_timer, atl2_watchdog, 0);
1438 (unsigned long)adapter);
1439 1439
1440 setup_timer(&adapter->phy_config_timer, atl2_phy_config, 1440 timer_setup(&adapter->phy_config_timer, atl2_phy_config, 0);
1441 (unsigned long)adapter);
1442 1441
1443 INIT_WORK(&adapter->reset_task, atl2_reset_task); 1442 INIT_WORK(&adapter->reset_task, atl2_reset_task);
1444 INIT_WORK(&adapter->link_chg_task, atl2_link_chg_task); 1443 INIT_WORK(&adapter->link_chg_task, atl2_link_chg_task);
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 42e44fc03a18..e445ab724827 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -599,9 +599,9 @@ static void b44_check_phy(struct b44 *bp)
599 } 599 }
600} 600}
601 601
602static void b44_timer(unsigned long __opaque) 602static void b44_timer(struct timer_list *t)
603{ 603{
604 struct b44 *bp = (struct b44 *) __opaque; 604 struct b44 *bp = from_timer(bp, t, timer);
605 605
606 spin_lock_irq(&bp->lock); 606 spin_lock_irq(&bp->lock);
607 607
@@ -1474,7 +1474,7 @@ static int b44_open(struct net_device *dev)
1474 goto out; 1474 goto out;
1475 } 1475 }
1476 1476
1477 setup_timer(&bp->timer, b44_timer, (unsigned long)bp); 1477 timer_setup(&bp->timer, b44_timer, 0);
1478 bp->timer.expires = jiffies + HZ; 1478 bp->timer.expires = jiffies + HZ;
1479 add_timer(&bp->timer); 1479 add_timer(&bp->timer);
1480 1480
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index b3055a76dfbf..7919f6112ecf 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -6183,9 +6183,9 @@ bnx2_5708_serdes_timer(struct bnx2 *bp)
6183} 6183}
6184 6184
6185static void 6185static void
6186bnx2_timer(unsigned long data) 6186bnx2_timer(struct timer_list *t)
6187{ 6187{
6188 struct bnx2 *bp = (struct bnx2 *) data; 6188 struct bnx2 *bp = from_timer(bp, t, timer);
6189 6189
6190 if (!netif_running(bp->dev)) 6190 if (!netif_running(bp->dev))
6191 return; 6191 return;
@@ -8462,7 +8462,7 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
8462 bnx2_set_default_link(bp); 8462 bnx2_set_default_link(bp);
8463 bp->req_flow_ctrl = FLOW_CTRL_RX | FLOW_CTRL_TX; 8463 bp->req_flow_ctrl = FLOW_CTRL_RX | FLOW_CTRL_TX;
8464 8464
8465 setup_timer(&bp->timer, bnx2_timer, (unsigned long)bp); 8465 timer_setup(&bp->timer, bnx2_timer, 0);
8466 bp->timer.expires = RUN_AT(BNX2_TIMER_INTERVAL); 8466 bp->timer.expires = RUN_AT(BNX2_TIMER_INTERVAL);
8467 8467
8468#ifdef BCM_CNIC 8468#ifdef BCM_CNIC
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index be9fd7d184d0..91e2a7560b48 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -5761,9 +5761,9 @@ void bnx2x_drv_pulse(struct bnx2x *bp)
5761 bp->fw_drv_pulse_wr_seq); 5761 bp->fw_drv_pulse_wr_seq);
5762} 5762}
5763 5763
5764static void bnx2x_timer(unsigned long data) 5764static void bnx2x_timer(struct timer_list *t)
5765{ 5765{
5766 struct bnx2x *bp = (struct bnx2x *) data; 5766 struct bnx2x *bp = from_timer(bp, t, timer);
5767 5767
5768 if (!netif_running(bp->dev)) 5768 if (!netif_running(bp->dev))
5769 return; 5769 return;
@@ -12421,7 +12421,7 @@ static int bnx2x_init_bp(struct bnx2x *bp)
12421 12421
12422 bp->current_interval = CHIP_REV_IS_SLOW(bp) ? 5*HZ : HZ; 12422 bp->current_interval = CHIP_REV_IS_SLOW(bp) ? 5*HZ : HZ;
12423 12423
12424 setup_timer(&bp->timer, bnx2x_timer, (unsigned long)bp); 12424 timer_setup(&bp->timer, bnx2x_timer, 0);
12425 bp->timer.expires = jiffies + bp->current_interval; 12425 bp->timer.expires = jiffies + bp->current_interval;
12426 12426
12427 if (SHMEM2_HAS(bp, dcbx_lldp_params_offset) && 12427 if (SHMEM2_HAS(bp, dcbx_lldp_params_offset) &&
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 33c49ad697e4..c5c38d4b7d1c 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -6962,9 +6962,9 @@ static void bnxt_poll_controller(struct net_device *dev)
6962} 6962}
6963#endif 6963#endif
6964 6964
6965static void bnxt_timer(unsigned long data) 6965static void bnxt_timer(struct timer_list *t)
6966{ 6966{
6967 struct bnxt *bp = (struct bnxt *)data; 6967 struct bnxt *bp = from_timer(bp, t, timer);
6968 struct net_device *dev = bp->dev; 6968 struct net_device *dev = bp->dev;
6969 6969
6970 if (!netif_running(dev)) 6970 if (!netif_running(dev))
@@ -7236,7 +7236,7 @@ static int bnxt_init_board(struct pci_dev *pdev, struct net_device *dev)
7236 7236
7237 bnxt_init_dflt_coal(bp); 7237 bnxt_init_dflt_coal(bp);
7238 7238
7239 setup_timer(&bp->timer, bnxt_timer, (unsigned long)bp); 7239 timer_setup(&bp->timer, bnxt_timer, 0);
7240 bp->current_interval = BNXT_TIMER_INTERVAL; 7240 bp->current_interval = BNXT_TIMER_INTERVAL;
7241 7241
7242 clear_bit(BNXT_STATE_OPEN, &bp->state); 7242 clear_bit(BNXT_STATE_OPEN, &bp->state);
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index d8d5f207c759..de51c2177d03 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -10931,9 +10931,9 @@ static void tg3_chk_missed_msi(struct tg3 *tp)
10931 } 10931 }
10932} 10932}
10933 10933
10934static void tg3_timer(unsigned long __opaque) 10934static void tg3_timer(struct timer_list *t)
10935{ 10935{
10936 struct tg3 *tp = (struct tg3 *) __opaque; 10936 struct tg3 *tp = from_timer(tp, t, timer);
10937 10937
10938 spin_lock(&tp->lock); 10938 spin_lock(&tp->lock);
10939 10939
@@ -11087,7 +11087,7 @@ static void tg3_timer_init(struct tg3 *tp)
11087 tp->asf_multiplier = (HZ / tp->timer_offset) * 11087 tp->asf_multiplier = (HZ / tp->timer_offset) *
11088 TG3_FW_UPDATE_FREQ_SEC; 11088 TG3_FW_UPDATE_FREQ_SEC;
11089 11089
11090 setup_timer(&tp->timer, tg3_timer, (unsigned long)tp); 11090 timer_setup(&tp->timer, tg3_timer, 0);
11091} 11091}
11092 11092
11093static void tg3_timer_start(struct tg3 *tp) 11093static void tg3_timer_start(struct tg3 *tp)
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.c b/drivers/net/ethernet/cisco/enic/enic_clsf.c
index 8dc21c9f9716..973c1fb70d09 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.c
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.c
@@ -123,9 +123,9 @@ struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id)
123} 123}
124 124
125#ifdef CONFIG_RFS_ACCEL 125#ifdef CONFIG_RFS_ACCEL
126void enic_flow_may_expire(unsigned long data) 126void enic_flow_may_expire(struct timer_list *t)
127{ 127{
128 struct enic *enic = (struct enic *)data; 128 struct enic *enic = from_timer(enic, t, rfs_h.rfs_may_expire);
129 bool res; 129 bool res;
130 int j; 130 int j;
131 131
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.h b/drivers/net/ethernet/cisco/enic/enic_clsf.h
index 0ae83e091a62..8c4ce50da6e1 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.h
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.h
@@ -16,12 +16,11 @@ struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id);
16#ifdef CONFIG_RFS_ACCEL 16#ifdef CONFIG_RFS_ACCEL
17int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, 17int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
18 u16 rxq_index, u32 flow_id); 18 u16 rxq_index, u32 flow_id);
19void enic_flow_may_expire(unsigned long data); 19void enic_flow_may_expire(struct timer_list *t);
20 20
21static inline void enic_rfs_timer_start(struct enic *enic) 21static inline void enic_rfs_timer_start(struct enic *enic)
22{ 22{
23 setup_timer(&enic->rfs_h.rfs_may_expire, enic_flow_may_expire, 23 timer_setup(&enic->rfs_h.rfs_may_expire, enic_flow_may_expire, 0);
24 (unsigned long)enic);
25 mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4); 24 mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4);
26} 25}
27 26
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 4a11baffe02d..e130fb757e7b 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1676,9 +1676,9 @@ static int enic_poll_msix_rq(struct napi_struct *napi, int budget)
1676 return work_done; 1676 return work_done;
1677} 1677}
1678 1678
1679static void enic_notify_timer(unsigned long data) 1679static void enic_notify_timer(struct timer_list *t)
1680{ 1680{
1681 struct enic *enic = (struct enic *)data; 1681 struct enic *enic = from_timer(enic, t, notify_timer);
1682 1682
1683 enic_notify_check(enic); 1683 enic_notify_check(enic);
1684 1684
@@ -2846,8 +2846,7 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2846 /* Setup notification timer, HW reset task, and wq locks 2846 /* Setup notification timer, HW reset task, and wq locks
2847 */ 2847 */
2848 2848
2849 setup_timer(&enic->notify_timer, enic_notify_timer, 2849 timer_setup(&enic->notify_timer, enic_notify_timer, 0);
2850 (unsigned long)enic);
2851 2850
2852 enic_set_rx_coal_setting(enic); 2851 enic_set_rx_coal_setting(enic);
2853 INIT_WORK(&enic->reset, enic_reset); 2852 INIT_WORK(&enic->reset, enic_reset);
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index 81c1fac00d33..62f204f32316 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -1346,9 +1346,9 @@ static void mib_counters_update(struct mv643xx_eth_private *mp)
1346 spin_unlock_bh(&mp->mib_counters_lock); 1346 spin_unlock_bh(&mp->mib_counters_lock);
1347} 1347}
1348 1348
1349static void mib_counters_timer_wrapper(unsigned long _mp) 1349static void mib_counters_timer_wrapper(struct timer_list *t)
1350{ 1350{
1351 struct mv643xx_eth_private *mp = (void *)_mp; 1351 struct mv643xx_eth_private *mp = from_timer(mp, t, mib_counters_timer);
1352 mib_counters_update(mp); 1352 mib_counters_update(mp);
1353 mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ); 1353 mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
1354} 1354}
@@ -2321,9 +2321,9 @@ static int mv643xx_eth_poll(struct napi_struct *napi, int budget)
2321 return work_done; 2321 return work_done;
2322} 2322}
2323 2323
2324static inline void oom_timer_wrapper(unsigned long data) 2324static inline void oom_timer_wrapper(struct timer_list *t)
2325{ 2325{
2326 struct mv643xx_eth_private *mp = (void *)data; 2326 struct mv643xx_eth_private *mp = from_timer(mp, t, rx_oom);
2327 2327
2328 napi_schedule(&mp->napi); 2328 napi_schedule(&mp->napi);
2329} 2329}
@@ -3178,8 +3178,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
3178 3178
3179 mib_counters_clear(mp); 3179 mib_counters_clear(mp);
3180 3180
3181 setup_timer(&mp->mib_counters_timer, mib_counters_timer_wrapper, 3181 timer_setup(&mp->mib_counters_timer, mib_counters_timer_wrapper, 0);
3182 (unsigned long)mp);
3183 mp->mib_counters_timer.expires = jiffies + 30 * HZ; 3182 mp->mib_counters_timer.expires = jiffies + 30 * HZ;
3184 3183
3185 spin_lock_init(&mp->mib_counters_lock); 3184 spin_lock_init(&mp->mib_counters_lock);
@@ -3188,7 +3187,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
3188 3187
3189 netif_napi_add(dev, &mp->napi, mv643xx_eth_poll, NAPI_POLL_WEIGHT); 3188 netif_napi_add(dev, &mp->napi, mv643xx_eth_poll, NAPI_POLL_WEIGHT);
3190 3189
3191 setup_timer(&mp->rx_oom, oom_timer_wrapper, (unsigned long)mp); 3190 timer_setup(&mp->rx_oom, oom_timer_wrapper, 0);
3192 3191
3193 3192
3194 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 3193 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
diff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c
index 91b1c154fd29..7bbd86f08e5f 100644
--- a/drivers/net/ethernet/marvell/pxa168_eth.c
+++ b/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -362,9 +362,9 @@ static void rxq_refill(struct net_device *dev)
362 } 362 }
363} 363}
364 364
365static inline void rxq_refill_timer_wrapper(unsigned long data) 365static inline void rxq_refill_timer_wrapper(struct timer_list *t)
366{ 366{
367 struct pxa168_eth_private *pep = (void *)data; 367 struct pxa168_eth_private *pep = from_timer(pep, t, timeout);
368 napi_schedule(&pep->napi); 368 napi_schedule(&pep->napi);
369} 369}
370 370
@@ -1496,8 +1496,7 @@ static int pxa168_eth_probe(struct platform_device *pdev)
1496 netif_napi_add(dev, &pep->napi, pxa168_rx_poll, pep->rx_ring_size); 1496 netif_napi_add(dev, &pep->napi, pxa168_rx_poll, pep->rx_ring_size);
1497 1497
1498 memset(&pep->timeout, 0, sizeof(struct timer_list)); 1498 memset(&pep->timeout, 0, sizeof(struct timer_list));
1499 setup_timer(&pep->timeout, rxq_refill_timer_wrapper, 1499 timer_setup(&pep->timeout, rxq_refill_timer_wrapper, 0);
1500 (unsigned long)pep);
1501 1500
1502 pep->smi_bus = mdiobus_alloc(); 1501 pep->smi_bus = mdiobus_alloc();
1503 if (!pep->smi_bus) { 1502 if (!pep->smi_bus) {
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index eef35bf3e849..6e423f098a60 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -1495,9 +1495,9 @@ static int xm_check_link(struct net_device *dev)
1495 * get an interrupt when carrier is detected, need to poll for 1495 * get an interrupt when carrier is detected, need to poll for
1496 * link coming up. 1496 * link coming up.
1497 */ 1497 */
1498static void xm_link_timer(unsigned long arg) 1498static void xm_link_timer(struct timer_list *t)
1499{ 1499{
1500 struct skge_port *skge = (struct skge_port *) arg; 1500 struct skge_port *skge = from_timer(skge, t, link_timer);
1501 struct net_device *dev = skge->netdev; 1501 struct net_device *dev = skge->netdev;
1502 struct skge_hw *hw = skge->hw; 1502 struct skge_hw *hw = skge->hw;
1503 int port = skge->port; 1503 int port = skge->port;
@@ -3897,7 +3897,7 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
3897 3897
3898 /* Only used for Genesis XMAC */ 3898 /* Only used for Genesis XMAC */
3899 if (is_genesis(hw)) 3899 if (is_genesis(hw))
3900 setup_timer(&skge->link_timer, xm_link_timer, (unsigned long) skge); 3900 timer_setup(&skge->link_timer, xm_link_timer, 0);
3901 else { 3901 else {
3902 dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG | 3902 dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG |
3903 NETIF_F_RXCSUM; 3903 NETIF_F_RXCSUM;
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 1145cde2274a..9efe1771423c 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -2974,9 +2974,9 @@ static int sky2_rx_hung(struct net_device *dev)
2974 } 2974 }
2975} 2975}
2976 2976
2977static void sky2_watchdog(unsigned long arg) 2977static void sky2_watchdog(struct timer_list *t)
2978{ 2978{
2979 struct sky2_hw *hw = (struct sky2_hw *) arg; 2979 struct sky2_hw *hw = from_timer(hw, t, watchdog_timer);
2980 2980
2981 /* Check for lost IRQ once a second */ 2981 /* Check for lost IRQ once a second */
2982 if (sky2_read32(hw, B0_ISRC)) { 2982 if (sky2_read32(hw, B0_ISRC)) {
@@ -5083,7 +5083,7 @@ static int sky2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
5083 sky2_show_addr(dev1); 5083 sky2_show_addr(dev1);
5084 } 5084 }
5085 5085
5086 setup_timer(&hw->watchdog_timer, sky2_watchdog, (unsigned long) hw); 5086 timer_setup(&hw->watchdog_timer, sky2_watchdog, 0);
5087 INIT_WORK(&hw->restart_work, sky2_restart); 5087 INIT_WORK(&hw->restart_work, sky2_restart);
5088 5088
5089 pci_set_drvdata(pdev, hw); 5089 pci_set_drvdata(pdev, hw);
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index b171ed2015fe..2521c8c40015 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -3501,7 +3501,7 @@ static void myri10ge_watchdog(struct work_struct *work)
3501 * cannot detect a NIC with a parity error in a timely fashion if the 3501 * cannot detect a NIC with a parity error in a timely fashion if the
3502 * NIC is lightly loaded. 3502 * NIC is lightly loaded.
3503 */ 3503 */
3504static void myri10ge_watchdog_timer(unsigned long arg) 3504static void myri10ge_watchdog_timer(struct timer_list *t)
3505{ 3505{
3506 struct myri10ge_priv *mgp; 3506 struct myri10ge_priv *mgp;
3507 struct myri10ge_slice_state *ss; 3507 struct myri10ge_slice_state *ss;
@@ -3509,7 +3509,7 @@ static void myri10ge_watchdog_timer(unsigned long arg)
3509 u32 rx_pause_cnt; 3509 u32 rx_pause_cnt;
3510 u16 cmd; 3510 u16 cmd;
3511 3511
3512 mgp = (struct myri10ge_priv *)arg; 3512 mgp = from_timer(mgp, t, watchdog_timer);
3513 3513
3514 rx_pause_cnt = ntohl(mgp->ss[0].fw_stats->dropped_pause); 3514 rx_pause_cnt = ntohl(mgp->ss[0].fw_stats->dropped_pause);
3515 busy_slice_cnt = 0; 3515 busy_slice_cnt = 0;
@@ -3930,8 +3930,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3930 pci_save_state(pdev); 3930 pci_save_state(pdev);
3931 3931
3932 /* Setup the watchdog timer */ 3932 /* Setup the watchdog timer */
3933 setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer, 3933 timer_setup(&mgp->watchdog_timer, myri10ge_watchdog_timer, 0);
3934 (unsigned long)mgp);
3935 3934
3936 netdev->ethtool_ops = &myri10ge_ethtool_ops; 3935 netdev->ethtool_ops = &myri10ge_ethtool_ops;
3937 INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog); 3936 INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog);
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 457ee80307ea..40e52ffb732f 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -1089,9 +1089,10 @@ static void pch_gbe_set_mode(struct pch_gbe_adapter *adapter, u16 speed,
1089 * pch_gbe_watchdog - Watchdog process 1089 * pch_gbe_watchdog - Watchdog process
1090 * @data: Board private structure 1090 * @data: Board private structure
1091 */ 1091 */
1092static void pch_gbe_watchdog(unsigned long data) 1092static void pch_gbe_watchdog(struct timer_list *t)
1093{ 1093{
1094 struct pch_gbe_adapter *adapter = (struct pch_gbe_adapter *)data; 1094 struct pch_gbe_adapter *adapter = from_timer(adapter, t,
1095 watchdog_timer);
1095 struct net_device *netdev = adapter->netdev; 1096 struct net_device *netdev = adapter->netdev;
1096 struct pch_gbe_hw *hw = &adapter->hw; 1097 struct pch_gbe_hw *hw = &adapter->hw;
1097 1098
@@ -2644,8 +2645,7 @@ static int pch_gbe_probe(struct pci_dev *pdev,
2644 dev_err(&pdev->dev, "Invalid MAC address, " 2645 dev_err(&pdev->dev, "Invalid MAC address, "
2645 "interface disabled.\n"); 2646 "interface disabled.\n");
2646 } 2647 }
2647 setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog, 2648 timer_setup(&adapter->watchdog_timer, pch_gbe_watchdog, 0);
2648 (unsigned long)adapter);
2649 2649
2650 INIT_WORK(&adapter->reset_task, pch_gbe_reset_task); 2650 INIT_WORK(&adapter->reset_task, pch_gbe_reset_task);
2651 2651
diff --git a/drivers/net/ethernet/pasemi/pasemi_mac.c b/drivers/net/ethernet/pasemi/pasemi_mac.c
index 49591d9c2e1b..c9a55b774935 100644
--- a/drivers/net/ethernet/pasemi/pasemi_mac.c
+++ b/drivers/net/ethernet/pasemi/pasemi_mac.c
@@ -943,9 +943,9 @@ static irqreturn_t pasemi_mac_rx_intr(int irq, void *data)
943 943
944#define TX_CLEAN_INTERVAL HZ 944#define TX_CLEAN_INTERVAL HZ
945 945
946static void pasemi_mac_tx_timer(unsigned long data) 946static void pasemi_mac_tx_timer(struct timer_list *t)
947{ 947{
948 struct pasemi_mac_txring *txring = (struct pasemi_mac_txring *)data; 948 struct pasemi_mac_txring *txring = from_timer(txring, t, clean_timer);
949 struct pasemi_mac *mac = txring->mac; 949 struct pasemi_mac *mac = txring->mac;
950 950
951 pasemi_mac_clean_tx(txring); 951 pasemi_mac_clean_tx(txring);
@@ -1199,8 +1199,7 @@ static int pasemi_mac_open(struct net_device *dev)
1199 if (dev->phydev) 1199 if (dev->phydev)
1200 phy_start(dev->phydev); 1200 phy_start(dev->phydev);
1201 1201
1202 setup_timer(&mac->tx->clean_timer, pasemi_mac_tx_timer, 1202 timer_setup(&mac->tx->clean_timer, pasemi_mac_tx_timer, 0);
1203 (unsigned long)mac->tx);
1204 mod_timer(&mac->tx->clean_timer, jiffies + HZ); 1203 mod_timer(&mac->tx->clean_timer, jiffies + HZ);
1205 1204
1206 return 0; 1205 return 0;
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c
index 05479d435469..9e5264d8773b 100644
--- a/drivers/net/ethernet/qlogic/qla3xxx.c
+++ b/drivers/net/ethernet/qlogic/qla3xxx.c
@@ -3749,9 +3749,9 @@ static void ql_get_board_info(struct ql3_adapter *qdev)
3749 qdev->pci_slot = (u8) PCI_SLOT(qdev->pdev->devfn); 3749 qdev->pci_slot = (u8) PCI_SLOT(qdev->pdev->devfn);
3750} 3750}
3751 3751
3752static void ql3xxx_timer(unsigned long ptr) 3752static void ql3xxx_timer(struct timer_list *t)
3753{ 3753{
3754 struct ql3_adapter *qdev = (struct ql3_adapter *)ptr; 3754 struct ql3_adapter *qdev = from_timer(qdev, t, adapter_timer);
3755 queue_delayed_work(qdev->workqueue, &qdev->link_state_work, 0); 3755 queue_delayed_work(qdev->workqueue, &qdev->link_state_work, 0);
3756} 3756}
3757 3757
@@ -3891,7 +3891,7 @@ static int ql3xxx_probe(struct pci_dev *pdev,
3891 INIT_DELAYED_WORK(&qdev->tx_timeout_work, ql_tx_timeout_work); 3891 INIT_DELAYED_WORK(&qdev->tx_timeout_work, ql_tx_timeout_work);
3892 INIT_DELAYED_WORK(&qdev->link_state_work, ql_link_state_machine_work); 3892 INIT_DELAYED_WORK(&qdev->link_state_work, ql_link_state_machine_work);
3893 3893
3894 setup_timer(&qdev->adapter_timer, ql3xxx_timer, (unsigned long)qdev); 3894 timer_setup(&qdev->adapter_timer, ql3xxx_timer, 0);
3895 qdev->adapter_timer.expires = jiffies + HZ * 2; /* two second delay */ 3895 qdev->adapter_timer.expires = jiffies + HZ * 2; /* two second delay */
3896 3896
3897 if (!cards_found) { 3897 if (!cards_found) {
diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c
index 0653b70723a3..6d6fb8cf3e7c 100644
--- a/drivers/net/ethernet/rocker/rocker_ofdpa.c
+++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c
@@ -1983,9 +1983,9 @@ err_out:
1983 return err; 1983 return err;
1984} 1984}
1985 1985
1986static void ofdpa_fdb_cleanup(unsigned long data) 1986static void ofdpa_fdb_cleanup(struct timer_list *t)
1987{ 1987{
1988 struct ofdpa *ofdpa = (struct ofdpa *)data; 1988 struct ofdpa *ofdpa = from_timer(ofdpa, t, fdb_cleanup_timer);
1989 struct ofdpa_port *ofdpa_port; 1989 struct ofdpa_port *ofdpa_port;
1990 struct ofdpa_fdb_tbl_entry *entry; 1990 struct ofdpa_fdb_tbl_entry *entry;
1991 struct hlist_node *tmp; 1991 struct hlist_node *tmp;
@@ -2368,8 +2368,7 @@ static int ofdpa_init(struct rocker *rocker)
2368 hash_init(ofdpa->neigh_tbl); 2368 hash_init(ofdpa->neigh_tbl);
2369 spin_lock_init(&ofdpa->neigh_tbl_lock); 2369 spin_lock_init(&ofdpa->neigh_tbl_lock);
2370 2370
2371 setup_timer(&ofdpa->fdb_cleanup_timer, ofdpa_fdb_cleanup, 2371 timer_setup(&ofdpa->fdb_cleanup_timer, ofdpa_fdb_cleanup, 0);
2372 (unsigned long) ofdpa);
2373 mod_timer(&ofdpa->fdb_cleanup_timer, jiffies); 2372 mod_timer(&ofdpa->fdb_cleanup_timer, jiffies);
2374 2373
2375 ofdpa->ageing_time = BR_DEFAULT_AGEING_TIME; 2374 ofdpa->ageing_time = BR_DEFAULT_AGEING_TIME;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index ff4fb5eae1af..f63c2ddced3c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -345,9 +345,9 @@ void stmmac_disable_eee_mode(struct stmmac_priv *priv)
345 * if there is no data transfer and if we are not in LPI state, 345 * if there is no data transfer and if we are not in LPI state,
346 * then MAC Transmitter can be moved to LPI state. 346 * then MAC Transmitter can be moved to LPI state.
347 */ 347 */
348static void stmmac_eee_ctrl_timer(unsigned long arg) 348static void stmmac_eee_ctrl_timer(struct timer_list *t)
349{ 349{
350 struct stmmac_priv *priv = (struct stmmac_priv *)arg; 350 struct stmmac_priv *priv = from_timer(priv, t, eee_ctrl_timer);
351 351
352 stmmac_enable_eee_mode(priv); 352 stmmac_enable_eee_mode(priv);
353 mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer)); 353 mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer));
@@ -401,9 +401,8 @@ bool stmmac_eee_init(struct stmmac_priv *priv)
401 spin_lock_irqsave(&priv->lock, flags); 401 spin_lock_irqsave(&priv->lock, flags);
402 if (!priv->eee_active) { 402 if (!priv->eee_active) {
403 priv->eee_active = 1; 403 priv->eee_active = 1;
404 setup_timer(&priv->eee_ctrl_timer, 404 timer_setup(&priv->eee_ctrl_timer,
405 stmmac_eee_ctrl_timer, 405 stmmac_eee_ctrl_timer, 0);
406 (unsigned long)priv);
407 mod_timer(&priv->eee_ctrl_timer, 406 mod_timer(&priv->eee_ctrl_timer,
408 STMMAC_LPI_T(eee_timer)); 407 STMMAC_LPI_T(eee_timer));
409 408
@@ -2221,9 +2220,9 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv)
2221 * Description: 2220 * Description:
2222 * This is the timer handler to directly invoke the stmmac_tx_clean. 2221 * This is the timer handler to directly invoke the stmmac_tx_clean.
2223 */ 2222 */
2224static void stmmac_tx_timer(unsigned long data) 2223static void stmmac_tx_timer(struct timer_list *t)
2225{ 2224{
2226 struct stmmac_priv *priv = (struct stmmac_priv *)data; 2225 struct stmmac_priv *priv = from_timer(priv, t, txtimer);
2227 u32 tx_queues_count = priv->plat->tx_queues_to_use; 2226 u32 tx_queues_count = priv->plat->tx_queues_to_use;
2228 u32 queue; 2227 u32 queue;
2229 2228
@@ -2244,7 +2243,7 @@ static void stmmac_init_tx_coalesce(struct stmmac_priv *priv)
2244{ 2243{
2245 priv->tx_coal_frames = STMMAC_TX_FRAMES; 2244 priv->tx_coal_frames = STMMAC_TX_FRAMES;
2246 priv->tx_coal_timer = STMMAC_COAL_TX_TIMER; 2245 priv->tx_coal_timer = STMMAC_COAL_TX_TIMER;
2247 setup_timer(&priv->txtimer, stmmac_tx_timer, (unsigned long)priv); 2246 timer_setup(&priv->txtimer, stmmac_tx_timer, 0);
2248 priv->txtimer.expires = STMMAC_COAL_TIMER(priv->tx_coal_timer); 2247 priv->txtimer.expires = STMMAC_COAL_TIMER(priv->tx_coal_timer);
2249 add_timer(&priv->txtimer); 2248 add_timer(&priv->txtimer);
2250} 2249}
diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
index e1b55b8fb8e0..1f8e9601592a 100644
--- a/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
+++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
@@ -358,9 +358,9 @@ static irqreturn_t xlgmac_dma_isr(int irq, void *data)
358 return IRQ_HANDLED; 358 return IRQ_HANDLED;
359} 359}
360 360
361static void xlgmac_tx_timer(unsigned long data) 361static void xlgmac_tx_timer(struct timer_list *t)
362{ 362{
363 struct xlgmac_channel *channel = (struct xlgmac_channel *)data; 363 struct xlgmac_channel *channel = from_timer(channel, t, tx_timer);
364 struct xlgmac_pdata *pdata = channel->pdata; 364 struct xlgmac_pdata *pdata = channel->pdata;
365 struct napi_struct *napi; 365 struct napi_struct *napi;
366 366
@@ -391,8 +391,7 @@ static void xlgmac_init_timers(struct xlgmac_pdata *pdata)
391 if (!channel->tx_ring) 391 if (!channel->tx_ring)
392 break; 392 break;
393 393
394 setup_timer(&channel->tx_timer, xlgmac_tx_timer, 394 timer_setup(&channel->tx_timer, xlgmac_tx_timer, 0);
395 (unsigned long)channel);
396 } 395 }
397} 396}
398 397
diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c
index cd1185e66133..b432a75fb874 100644
--- a/drivers/net/ethernet/ti/cpsw_ale.c
+++ b/drivers/net/ethernet/ti/cpsw_ale.c
@@ -765,9 +765,9 @@ int cpsw_ale_control_get(struct cpsw_ale *ale, int port, int control)
765} 765}
766EXPORT_SYMBOL_GPL(cpsw_ale_control_get); 766EXPORT_SYMBOL_GPL(cpsw_ale_control_get);
767 767
768static void cpsw_ale_timer(unsigned long arg) 768static void cpsw_ale_timer(struct timer_list *t)
769{ 769{
770 struct cpsw_ale *ale = (struct cpsw_ale *)arg; 770 struct cpsw_ale *ale = from_timer(ale, t, timer);
771 771
772 cpsw_ale_control_set(ale, 0, ALE_AGEOUT, 1); 772 cpsw_ale_control_set(ale, 0, ALE_AGEOUT, 1);
773 773
@@ -859,7 +859,7 @@ void cpsw_ale_start(struct cpsw_ale *ale)
859 cpsw_ale_control_set(ale, 0, ALE_ENABLE, 1); 859 cpsw_ale_control_set(ale, 0, ALE_ENABLE, 1);
860 cpsw_ale_control_set(ale, 0, ALE_CLEAR, 1); 860 cpsw_ale_control_set(ale, 0, ALE_CLEAR, 1);
861 861
862 setup_timer(&ale->timer, cpsw_ale_timer, (unsigned long)ale); 862 timer_setup(&ale->timer, cpsw_ale_timer, 0);
863 if (ale->ageout) { 863 if (ale->ageout) {
864 ale->timer.expires = jiffies + ale->ageout; 864 ale->timer.expires = jiffies + ale->ageout;
865 add_timer(&ale->timer); 865 add_timer(&ale->timer);
diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c
index 4ad821655e51..e831c49713ee 100644
--- a/drivers/net/ethernet/ti/netcp_ethss.c
+++ b/drivers/net/ethernet/ti/netcp_ethss.c
@@ -2745,9 +2745,9 @@ static int gbe_ioctl(void *intf_priv, struct ifreq *req, int cmd)
2745 return -EOPNOTSUPP; 2745 return -EOPNOTSUPP;
2746} 2746}
2747 2747
2748static void netcp_ethss_timer(unsigned long arg) 2748static void netcp_ethss_timer(struct timer_list *t)
2749{ 2749{
2750 struct gbe_priv *gbe_dev = (struct gbe_priv *)arg; 2750 struct gbe_priv *gbe_dev = from_timer(gbe_dev, t, timer);
2751 struct gbe_intf *gbe_intf; 2751 struct gbe_intf *gbe_intf;
2752 struct gbe_slave *slave; 2752 struct gbe_slave *slave;
2753 2753
@@ -3616,8 +3616,7 @@ static int gbe_probe(struct netcp_device *netcp_device, struct device *dev,
3616 } 3616 }
3617 spin_unlock_bh(&gbe_dev->hw_stats_lock); 3617 spin_unlock_bh(&gbe_dev->hw_stats_lock);
3618 3618
3619 setup_timer(&gbe_dev->timer, netcp_ethss_timer, 3619 timer_setup(&gbe_dev->timer, netcp_ethss_timer, 0);
3620 (unsigned long)gbe_dev);
3621 gbe_dev->timer.expires = jiffies + GBE_TIMER_INTERVAL; 3620 gbe_dev->timer.expires = jiffies + GBE_TIMER_INTERVAL;
3622 add_timer(&gbe_dev->timer); 3621 add_timer(&gbe_dev->timer);
3623 *inst_priv = gbe_dev; 3622 *inst_priv = gbe_dev;
diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c
index 8f53d762fbc4..5a4e78fde530 100644
--- a/drivers/net/ethernet/ti/tlan.c
+++ b/drivers/net/ethernet/ti/tlan.c
@@ -254,7 +254,7 @@ tlan_set_timer(struct net_device *dev, u32 ticks, u32 type)
254 spin_unlock_irqrestore(&priv->lock, flags); 254 spin_unlock_irqrestore(&priv->lock, flags);
255 return; 255 return;
256 } 256 }
257 priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer; 257 priv->timer.function = tlan_timer;
258 if (!in_irq()) 258 if (!in_irq())
259 spin_unlock_irqrestore(&priv->lock, flags); 259 spin_unlock_irqrestore(&priv->lock, flags);
260 260
@@ -1425,7 +1425,7 @@ static u32 tlan_handle_tx_eof(struct net_device *dev, u16 host_int)
1425 tlan_dio_write8(dev->base_addr, 1425 tlan_dio_write8(dev->base_addr,
1426 TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT); 1426 TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
1427 if (priv->timer.function == NULL) { 1427 if (priv->timer.function == NULL) {
1428 priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer; 1428 priv->timer.function = tlan_timer;
1429 priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY; 1429 priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
1430 priv->timer_set_at = jiffies; 1430 priv->timer_set_at = jiffies;
1431 priv->timer_type = TLAN_TIMER_ACTIVITY; 1431 priv->timer_type = TLAN_TIMER_ACTIVITY;
@@ -1576,7 +1576,7 @@ drop_and_reuse:
1576 tlan_dio_write8(dev->base_addr, 1576 tlan_dio_write8(dev->base_addr,
1577 TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT); 1577 TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
1578 if (priv->timer.function == NULL) { 1578 if (priv->timer.function == NULL) {
1579 priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer; 1579 priv->timer.function = tlan_timer;
1580 priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY; 1580 priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
1581 priv->timer_set_at = jiffies; 1581 priv->timer_set_at = jiffies;
1582 priv->timer_type = TLAN_TIMER_ACTIVITY; 1582 priv->timer_type = TLAN_TIMER_ACTIVITY;
diff --git a/drivers/net/ethernet/toshiba/spider_net.c b/drivers/net/ethernet/toshiba/spider_net.c
index a913538d3213..d925b8203996 100644
--- a/drivers/net/ethernet/toshiba/spider_net.c
+++ b/drivers/net/ethernet/toshiba/spider_net.c
@@ -912,8 +912,9 @@ spider_net_xmit(struct sk_buff *skb, struct net_device *netdev)
912 * packets, including updating the queue tail pointer. 912 * packets, including updating the queue tail pointer.
913 */ 913 */
914static void 914static void
915spider_net_cleanup_tx_ring(struct spider_net_card *card) 915spider_net_cleanup_tx_ring(struct timer_list *t)
916{ 916{
917 struct spider_net_card *card = from_timer(card, t, tx_timer);
917 if ((spider_net_release_tx_chain(card, 0) != 0) && 918 if ((spider_net_release_tx_chain(card, 0) != 0) &&
918 (card->netdev->flags & IFF_UP)) { 919 (card->netdev->flags & IFF_UP)) {
919 spider_net_kick_tx_dma(card); 920 spider_net_kick_tx_dma(card);
@@ -1265,7 +1266,7 @@ static int spider_net_poll(struct napi_struct *napi, int budget)
1265 spider_net_refill_rx_chain(card); 1266 spider_net_refill_rx_chain(card);
1266 spider_net_enable_rxdmac(card); 1267 spider_net_enable_rxdmac(card);
1267 1268
1268 spider_net_cleanup_tx_ring(card); 1269 spider_net_cleanup_tx_ring(&card->tx_timer);
1269 1270
1270 /* if all packets are in the stack, enable interrupts and return 0 */ 1271 /* if all packets are in the stack, enable interrupts and return 0 */
1271 /* if not, return 1 */ 1272 /* if not, return 1 */
@@ -1977,9 +1978,9 @@ init_firmware_failed:
1977 * @data: used for pointer to card structure 1978 * @data: used for pointer to card structure
1978 * 1979 *
1979 */ 1980 */
1980static void spider_net_link_phy(unsigned long data) 1981static void spider_net_link_phy(struct timer_list *t)
1981{ 1982{
1982 struct spider_net_card *card = (struct spider_net_card *)data; 1983 struct spider_net_card *card = from_timer(card, t, aneg_timer);
1983 struct mii_phy *phy = &card->phy; 1984 struct mii_phy *phy = &card->phy;
1984 1985
1985 /* if link didn't come up after SPIDER_NET_ANEG_TIMEOUT tries, setup phy again */ 1986 /* if link didn't come up after SPIDER_NET_ANEG_TIMEOUT tries, setup phy again */
@@ -2256,14 +2257,11 @@ spider_net_setup_netdev(struct spider_net_card *card)
2256 2257
2257 pci_set_drvdata(card->pdev, netdev); 2258 pci_set_drvdata(card->pdev, netdev);
2258 2259
2259 setup_timer(&card->tx_timer, 2260 timer_setup(&card->tx_timer, spider_net_cleanup_tx_ring, 0);
2260 (void(*)(unsigned long))spider_net_cleanup_tx_ring,
2261 (unsigned long)card);
2262 netdev->irq = card->pdev->irq; 2261 netdev->irq = card->pdev->irq;
2263 2262
2264 card->aneg_count = 0; 2263 card->aneg_count = 0;
2265 setup_timer(&card->aneg_timer, spider_net_link_phy, 2264 timer_setup(&card->aneg_timer, spider_net_link_phy, 0);
2266 (unsigned long)card);
2267 2265
2268 netif_napi_add(netdev, &card->napi, 2266 netif_napi_add(netdev, &card->napi,
2269 spider_net_poll, SPIDER_NET_NAPI_WEIGHT); 2267 spider_net_poll, SPIDER_NET_NAPI_WEIGHT);
diff --git a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c
index c9f7215c5dc2..3de272959090 100644
--- a/drivers/net/hamradio/scc.c
+++ b/drivers/net/hamradio/scc.c
@@ -1005,7 +1005,7 @@ static void __scc_start_tx_timer(struct scc_channel *scc,
1005 } else 1005 } else
1006 if (when != TIMER_OFF) 1006 if (when != TIMER_OFF)
1007 { 1007 {
1008 scc->tx_t.function = (TIMER_FUNC_TYPE)handler; 1008 scc->tx_t.function = handler;
1009 scc->tx_t.expires = jiffies + (when*HZ)/100; 1009 scc->tx_t.expires = jiffies + (when*HZ)/100;
1010 add_timer(&scc->tx_t); 1010 add_timer(&scc->tx_t);
1011 } 1011 }
@@ -1031,7 +1031,7 @@ static void scc_start_defer(struct scc_channel *scc)
1031 1031
1032 if (scc->kiss.maxdefer != 0 && scc->kiss.maxdefer != TIMER_OFF) 1032 if (scc->kiss.maxdefer != 0 && scc->kiss.maxdefer != TIMER_OFF)
1033 { 1033 {
1034 scc->tx_wdog.function = (TIMER_FUNC_TYPE)t_busy; 1034 scc->tx_wdog.function = t_busy;
1035 scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxdefer; 1035 scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxdefer;
1036 add_timer(&scc->tx_wdog); 1036 add_timer(&scc->tx_wdog);
1037 } 1037 }
@@ -1047,7 +1047,7 @@ static void scc_start_maxkeyup(struct scc_channel *scc)
1047 1047
1048 if (scc->kiss.maxkeyup != 0 && scc->kiss.maxkeyup != TIMER_OFF) 1048 if (scc->kiss.maxkeyup != 0 && scc->kiss.maxkeyup != TIMER_OFF)
1049 { 1049 {
1050 scc->tx_wdog.function = (TIMER_FUNC_TYPE)t_maxkeyup; 1050 scc->tx_wdog.function = t_maxkeyup;
1051 scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxkeyup; 1051 scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxkeyup;
1052 add_timer(&scc->tx_wdog); 1052 add_timer(&scc->tx_wdog);
1053 } 1053 }
@@ -1428,7 +1428,7 @@ scc_start_calibrate(struct scc_channel *scc, int duration, unsigned char pattern
1428 1428
1429 del_timer(&scc->tx_wdog); 1429 del_timer(&scc->tx_wdog);
1430 1430
1431 scc->tx_wdog.function = (TIMER_FUNC_TYPE)scc_stop_calibrate; 1431 scc->tx_wdog.function = scc_stop_calibrate;
1432 scc->tx_wdog.expires = jiffies + HZ*duration; 1432 scc->tx_wdog.expires = jiffies + HZ*duration;
1433 add_timer(&scc->tx_wdog); 1433 add_timer(&scc->tx_wdog);
1434 1434
diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c
index eb8a18991d8c..cc63102ca96e 100644
--- a/drivers/net/slip/slip.c
+++ b/drivers/net/slip/slip.c
@@ -106,8 +106,8 @@ static int slip_esc6(unsigned char *p, unsigned char *d, int len);
106static void slip_unesc6(struct slip *sl, unsigned char c); 106static void slip_unesc6(struct slip *sl, unsigned char c);
107#endif 107#endif
108#ifdef CONFIG_SLIP_SMART 108#ifdef CONFIG_SLIP_SMART
109static void sl_keepalive(unsigned long sls); 109static void sl_keepalive(struct timer_list *t);
110static void sl_outfill(unsigned long sls); 110static void sl_outfill(struct timer_list *t);
111static int sl_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 111static int sl_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
112#endif 112#endif
113 113
@@ -763,8 +763,8 @@ static struct slip *sl_alloc(dev_t line)
763 sl->mode = SL_MODE_DEFAULT; 763 sl->mode = SL_MODE_DEFAULT;
764#ifdef CONFIG_SLIP_SMART 764#ifdef CONFIG_SLIP_SMART
765 /* initialize timer_list struct */ 765 /* initialize timer_list struct */
766 setup_timer(&sl->keepalive_timer, sl_keepalive, (unsigned long)sl); 766 timer_setup(&sl->keepalive_timer, sl_keepalive, 0);
767 setup_timer(&sl->outfill_timer, sl_outfill, (unsigned long)sl); 767 timer_setup(&sl->outfill_timer, sl_outfill, 0);
768#endif 768#endif
769 slip_devs[i] = dev; 769 slip_devs[i] = dev;
770 return sl; 770 return sl;
@@ -1388,9 +1388,9 @@ module_exit(slip_exit);
1388 * added by Stanislav Voronyi. All changes before marked VSV 1388 * added by Stanislav Voronyi. All changes before marked VSV
1389 */ 1389 */
1390 1390
1391static void sl_outfill(unsigned long sls) 1391static void sl_outfill(struct timer_list *t)
1392{ 1392{
1393 struct slip *sl = (struct slip *)sls; 1393 struct slip *sl = from_timer(sl, t, outfill_timer);
1394 1394
1395 spin_lock(&sl->lock); 1395 spin_lock(&sl->lock);
1396 1396
@@ -1419,9 +1419,9 @@ out:
1419 spin_unlock(&sl->lock); 1419 spin_unlock(&sl->lock);
1420} 1420}
1421 1421
1422static void sl_keepalive(unsigned long sls) 1422static void sl_keepalive(struct timer_list *t)
1423{ 1423{
1424 struct slip *sl = (struct slip *)sls; 1424 struct slip *sl = from_timer(sl, t, keepalive_timer);
1425 1425
1426 spin_lock(&sl->lock); 1426 spin_lock(&sl->lock);
1427 1427
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 6a7bde9bc4b2..95749006d687 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -444,9 +444,9 @@ static void tun_flow_delete_by_queue(struct tun_struct *tun, u16 queue_index)
444 spin_unlock_bh(&tun->lock); 444 spin_unlock_bh(&tun->lock);
445} 445}
446 446
447static void tun_flow_cleanup(unsigned long data) 447static void tun_flow_cleanup(struct timer_list *t)
448{ 448{
449 struct tun_struct *tun = (struct tun_struct *)data; 449 struct tun_struct *tun = from_timer(tun, t, flow_gc_timer);
450 unsigned long delay = tun->ageing_time; 450 unsigned long delay = tun->ageing_time;
451 unsigned long next_timer = jiffies + delay; 451 unsigned long next_timer = jiffies + delay;
452 unsigned long count = 0; 452 unsigned long count = 0;
@@ -1196,7 +1196,9 @@ static void tun_flow_init(struct tun_struct *tun)
1196 INIT_HLIST_HEAD(&tun->flows[i]); 1196 INIT_HLIST_HEAD(&tun->flows[i]);
1197 1197
1198 tun->ageing_time = TUN_FLOW_EXPIRE; 1198 tun->ageing_time = TUN_FLOW_EXPIRE;
1199 setup_timer(&tun->flow_gc_timer, tun_flow_cleanup, (unsigned long)tun); 1199 timer_setup(&tun->flow_gc_timer, tun_flow_cleanup, 0);
1200 mod_timer(&tun->flow_gc_timer,
1201 round_jiffies_up(jiffies + tun->ageing_time));
1200} 1202}
1201 1203
1202static void tun_flow_uninit(struct tun_struct *tun) 1204static void tun_flow_uninit(struct tun_struct *tun)
diff --git a/drivers/net/wan/hdlc_ppp.c b/drivers/net/wan/hdlc_ppp.c
index c7721c729541..afeca6bcdade 100644
--- a/drivers/net/wan/hdlc_ppp.c
+++ b/drivers/net/wan/hdlc_ppp.c
@@ -558,9 +558,9 @@ out:
558 return NET_RX_DROP; 558 return NET_RX_DROP;
559} 559}
560 560
561static void ppp_timer(unsigned long arg) 561static void ppp_timer(struct timer_list *t)
562{ 562{
563 struct proto *proto = (struct proto *)arg; 563 struct proto *proto = from_timer(proto, t, timer);
564 struct ppp *ppp = get_ppp(proto->dev); 564 struct ppp *ppp = get_ppp(proto->dev);
565 unsigned long flags; 565 unsigned long flags;
566 566
@@ -610,7 +610,7 @@ static void ppp_start(struct net_device *dev)
610 for (i = 0; i < IDX_COUNT; i++) { 610 for (i = 0; i < IDX_COUNT; i++) {
611 struct proto *proto = &ppp->protos[i]; 611 struct proto *proto = &ppp->protos[i];
612 proto->dev = dev; 612 proto->dev = dev;
613 setup_timer(&proto->timer, ppp_timer, (unsigned long)proto); 613 timer_setup(&proto->timer, ppp_timer, 0);
614 proto->state = CLOSED; 614 proto->state = CLOSED;
615 } 615 }
616 ppp->protos[IDX_LCP].pid = PID_LCP; 616 ppp->protos[IDX_LCP].pid = PID_LCP;
diff --git a/drivers/net/wireless/atmel/at76c50x-usb.c b/drivers/net/wireless/atmel/at76c50x-usb.c
index ede89d4ffc88..e99e766a3028 100644
--- a/drivers/net/wireless/atmel/at76c50x-usb.c
+++ b/drivers/net/wireless/atmel/at76c50x-usb.c
@@ -518,11 +518,11 @@ exit:
518 518
519/* LED trigger */ 519/* LED trigger */
520static int tx_activity; 520static int tx_activity;
521static void at76_ledtrig_tx_timerfunc(unsigned long data); 521static void at76_ledtrig_tx_timerfunc(struct timer_list *unused);
522static DEFINE_TIMER(ledtrig_tx_timer, at76_ledtrig_tx_timerfunc); 522static DEFINE_TIMER(ledtrig_tx_timer, at76_ledtrig_tx_timerfunc);
523DEFINE_LED_TRIGGER(ledtrig_tx); 523DEFINE_LED_TRIGGER(ledtrig_tx);
524 524
525static void at76_ledtrig_tx_timerfunc(unsigned long data) 525static void at76_ledtrig_tx_timerfunc(struct timer_list *unused)
526{ 526{
527 static int tx_lastactivity; 527 static int tx_lastactivity;
528 528
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c
index 3559fb5b8fb0..03aae6bc1838 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c
@@ -280,9 +280,9 @@ static void brcmf_btcoex_restore_part1(struct brcmf_btcoex_info *btci)
280/** 280/**
281 * brcmf_btcoex_timerfunc() - BT coex timer callback 281 * brcmf_btcoex_timerfunc() - BT coex timer callback
282 */ 282 */
283static void brcmf_btcoex_timerfunc(ulong data) 283static void brcmf_btcoex_timerfunc(struct timer_list *t)
284{ 284{
285 struct brcmf_btcoex_info *bt_local = (struct brcmf_btcoex_info *)data; 285 struct brcmf_btcoex_info *bt_local = from_timer(bt_local, t, timer);
286 brcmf_dbg(TRACE, "enter\n"); 286 brcmf_dbg(TRACE, "enter\n");
287 287
288 bt_local->timer_on = false; 288 bt_local->timer_on = false;
@@ -380,7 +380,7 @@ int brcmf_btcoex_attach(struct brcmf_cfg80211_info *cfg)
380 /* Set up timer for BT */ 380 /* Set up timer for BT */
381 btci->timer_on = false; 381 btci->timer_on = false;
382 btci->timeout = BRCMF_BTCOEX_OPPR_WIN_TIME; 382 btci->timeout = BRCMF_BTCOEX_OPPR_WIN_TIME;
383 setup_timer(&btci->timer, brcmf_btcoex_timerfunc, (ulong)btci); 383 timer_setup(&btci->timer, brcmf_btcoex_timerfunc, 0);
384 btci->cfg = cfg; 384 btci->cfg = cfg;
385 btci->saved_regs_part1 = false; 385 btci->saved_regs_part1 = false;
386 btci->saved_regs_part2 = false; 386 btci->saved_regs_part2 = false;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 6e70df978159..15fa00d79fc6 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2983,10 +2983,10 @@ static void brcmf_cfg80211_escan_timeout_worker(struct work_struct *work)
2983 brcmf_notify_escan_complete(cfg, cfg->escan_info.ifp, true, true); 2983 brcmf_notify_escan_complete(cfg, cfg->escan_info.ifp, true, true);
2984} 2984}
2985 2985
2986static void brcmf_escan_timeout(unsigned long data) 2986static void brcmf_escan_timeout(struct timer_list *t)
2987{ 2987{
2988 struct brcmf_cfg80211_info *cfg = 2988 struct brcmf_cfg80211_info *cfg =
2989 (struct brcmf_cfg80211_info *)data; 2989 from_timer(cfg, t, escan_timeout);
2990 2990
2991 if (cfg->int_escan_map || cfg->scan_request) { 2991 if (cfg->int_escan_map || cfg->scan_request) {
2992 brcmf_err("timer expired\n"); 2992 brcmf_err("timer expired\n");
@@ -3150,8 +3150,7 @@ static void brcmf_init_escan(struct brcmf_cfg80211_info *cfg)
3150 brcmf_cfg80211_escan_handler); 3150 brcmf_cfg80211_escan_handler);
3151 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; 3151 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE;
3152 /* Init scan_timeout timer */ 3152 /* Init scan_timeout timer */
3153 setup_timer(&cfg->escan_timeout, brcmf_escan_timeout, 3153 timer_setup(&cfg->escan_timeout, brcmf_escan_timeout, 0);
3154 (unsigned long)cfg);
3155 INIT_WORK(&cfg->escan_timeout_work, 3154 INIT_WORK(&cfg->escan_timeout_work,
3156 brcmf_cfg80211_escan_timeout_worker); 3155 brcmf_cfg80211_escan_timeout_worker);
3157} 3156}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index e3495ea95553..310c4e2746aa 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3972,9 +3972,9 @@ brcmf_sdio_watchdog_thread(void *data)
3972} 3972}
3973 3973
3974static void 3974static void
3975brcmf_sdio_watchdog(unsigned long data) 3975brcmf_sdio_watchdog(struct timer_list *t)
3976{ 3976{
3977 struct brcmf_sdio *bus = (struct brcmf_sdio *)data; 3977 struct brcmf_sdio *bus = from_timer(bus, t, timer);
3978 3978
3979 if (bus->watchdog_tsk) { 3979 if (bus->watchdog_tsk) {
3980 complete(&bus->watchdog_wait); 3980 complete(&bus->watchdog_wait);
@@ -4169,8 +4169,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
4169 init_waitqueue_head(&bus->dcmd_resp_wait); 4169 init_waitqueue_head(&bus->dcmd_resp_wait);
4170 4170
4171 /* Set up the watchdog timer */ 4171 /* Set up the watchdog timer */
4172 setup_timer(&bus->timer, brcmf_sdio_watchdog, 4172 timer_setup(&bus->timer, brcmf_sdio_watchdog, 0);
4173 (unsigned long)bus);
4174 /* Initialize watchdog thread */ 4173 /* Initialize watchdog thread */
4175 init_completion(&bus->watchdog_wait); 4174 init_completion(&bus->watchdog_wait);
4176 bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread, 4175 bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread,
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/main.c b/drivers/net/wireless/intel/iwlwifi/dvm/main.c
index 2acd94da9efe..d11d72615de2 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/main.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/main.c
@@ -399,9 +399,9 @@ int iwl_send_statistics_request(struct iwl_priv *priv, u8 flags, bool clear)
399 * was received. We need to ensure we receive the statistics in order 399 * was received. We need to ensure we receive the statistics in order
400 * to update the temperature used for calibrating the TXPOWER. 400 * to update the temperature used for calibrating the TXPOWER.
401 */ 401 */
402static void iwl_bg_statistics_periodic(unsigned long data) 402static void iwl_bg_statistics_periodic(struct timer_list *t)
403{ 403{
404 struct iwl_priv *priv = (struct iwl_priv *)data; 404 struct iwl_priv *priv = from_timer(priv, t, statistics_periodic);
405 405
406 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) 406 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
407 return; 407 return;
@@ -556,9 +556,9 @@ static void iwl_continuous_event_trace(struct iwl_priv *priv)
556 * this function is to perform continuous uCode event logging operation 556 * this function is to perform continuous uCode event logging operation
557 * if enabled 557 * if enabled
558 */ 558 */
559static void iwl_bg_ucode_trace(unsigned long data) 559static void iwl_bg_ucode_trace(struct timer_list *t)
560{ 560{
561 struct iwl_priv *priv = (struct iwl_priv *)data; 561 struct iwl_priv *priv = from_timer(priv, t, ucode_trace);
562 562
563 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) 563 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
564 return; 564 return;
@@ -1085,11 +1085,9 @@ static void iwl_setup_deferred_work(struct iwl_priv *priv)
1085 if (priv->lib->bt_params) 1085 if (priv->lib->bt_params)
1086 iwlagn_bt_setup_deferred_work(priv); 1086 iwlagn_bt_setup_deferred_work(priv);
1087 1087
1088 setup_timer(&priv->statistics_periodic, iwl_bg_statistics_periodic, 1088 timer_setup(&priv->statistics_periodic, iwl_bg_statistics_periodic, 0);
1089 (unsigned long)priv);
1090 1089
1091 setup_timer(&priv->ucode_trace, iwl_bg_ucode_trace, 1090 timer_setup(&priv->ucode_trace, iwl_bg_ucode_trace, 0);
1092 (unsigned long)priv);
1093} 1091}
1094 1092
1095void iwl_cancel_deferred_work(struct iwl_priv *priv) 1093void iwl_cancel_deferred_work(struct iwl_priv *priv)
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/tt.c b/drivers/net/wireless/intel/iwlwifi/dvm/tt.c
index 5b73492e7ff7..6524533d723c 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/tt.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/tt.c
@@ -164,9 +164,10 @@ enum iwl_antenna_ok iwl_rx_ant_restriction(struct iwl_priv *priv)
164 * without doing anything, driver should continue the 5 seconds timer 164 * without doing anything, driver should continue the 5 seconds timer
165 * to wake up uCode for temperature check until temperature drop below CT 165 * to wake up uCode for temperature check until temperature drop below CT
166 */ 166 */
167static void iwl_tt_check_exit_ct_kill(unsigned long data) 167static void iwl_tt_check_exit_ct_kill(struct timer_list *t)
168{ 168{
169 struct iwl_priv *priv = (struct iwl_priv *)data; 169 struct iwl_priv *priv = from_timer(priv, t,
170 thermal_throttle.ct_kill_exit_tm);
170 struct iwl_tt_mgmt *tt = &priv->thermal_throttle; 171 struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
171 unsigned long flags; 172 unsigned long flags;
172 173
@@ -214,9 +215,10 @@ static void iwl_perform_ct_kill_task(struct iwl_priv *priv,
214 } 215 }
215} 216}
216 217
217static void iwl_tt_ready_for_ct_kill(unsigned long data) 218static void iwl_tt_ready_for_ct_kill(struct timer_list *t)
218{ 219{
219 struct iwl_priv *priv = (struct iwl_priv *)data; 220 struct iwl_priv *priv = from_timer(priv, t,
221 thermal_throttle.ct_kill_waiting_tm);
220 struct iwl_tt_mgmt *tt = &priv->thermal_throttle; 222 struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
221 223
222 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) 224 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
@@ -612,10 +614,10 @@ void iwl_tt_initialize(struct iwl_priv *priv)
612 memset(tt, 0, sizeof(struct iwl_tt_mgmt)); 614 memset(tt, 0, sizeof(struct iwl_tt_mgmt));
613 615
614 tt->state = IWL_TI_0; 616 tt->state = IWL_TI_0;
615 setup_timer(&priv->thermal_throttle.ct_kill_exit_tm, 617 timer_setup(&priv->thermal_throttle.ct_kill_exit_tm,
616 iwl_tt_check_exit_ct_kill, (unsigned long)priv); 618 iwl_tt_check_exit_ct_kill, 0);
617 setup_timer(&priv->thermal_throttle.ct_kill_waiting_tm, 619 timer_setup(&priv->thermal_throttle.ct_kill_waiting_tm,
618 iwl_tt_ready_for_ct_kill, (unsigned long)priv); 620 iwl_tt_ready_for_ct_kill, 0);
619 /* setup deferred ct kill work */ 621 /* setup deferred ct kill work */
620 INIT_WORK(&priv->tt_work, iwl_bg_tt_work); 622 INIT_WORK(&priv->tt_work, iwl_bg_tt_work);
621 INIT_WORK(&priv->ct_enter, iwl_bg_ct_enter); 623 INIT_WORK(&priv->ct_enter, iwl_bg_ct_enter);
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
index b5c459cd70ce..fed6d842a5e1 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -147,9 +147,9 @@ void iwl_pcie_free_dma_ptr(struct iwl_trans *trans, struct iwl_dma_ptr *ptr)
147 memset(ptr, 0, sizeof(*ptr)); 147 memset(ptr, 0, sizeof(*ptr));
148} 148}
149 149
150static void iwl_pcie_txq_stuck_timer(unsigned long data) 150static void iwl_pcie_txq_stuck_timer(struct timer_list *t)
151{ 151{
152 struct iwl_txq *txq = (void *)data; 152 struct iwl_txq *txq = from_timer(txq, t, stuck_timer);
153 struct iwl_trans_pcie *trans_pcie = txq->trans_pcie; 153 struct iwl_trans_pcie *trans_pcie = txq->trans_pcie;
154 struct iwl_trans *trans = iwl_trans_pcie_get_trans(trans_pcie); 154 struct iwl_trans *trans = iwl_trans_pcie_get_trans(trans_pcie);
155 155
@@ -495,8 +495,7 @@ int iwl_pcie_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq,
495 if (WARN_ON(txq->entries || txq->tfds)) 495 if (WARN_ON(txq->entries || txq->tfds))
496 return -EINVAL; 496 return -EINVAL;
497 497
498 setup_timer(&txq->stuck_timer, iwl_pcie_txq_stuck_timer, 498 timer_setup(&txq->stuck_timer, iwl_pcie_txq_stuck_timer, 0);
499 (unsigned long)txq);
500 txq->trans_pcie = trans_pcie; 499 txq->trans_pcie = trans_pcie;
501 500
502 txq->n_window = slots_num; 501 txq->n_window = slots_num;
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/net/wireless/intersil/hostap/hostap_ap.c
index 1a8d8db80b05..b4dfe1893d18 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ap.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ap.c
@@ -185,9 +185,9 @@ static void hostap_event_expired_sta(struct net_device *dev,
185 185
186#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT 186#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT
187 187
188static void ap_handle_timer(unsigned long data) 188static void ap_handle_timer(struct timer_list *t)
189{ 189{
190 struct sta_info *sta = (struct sta_info *) data; 190 struct sta_info *sta = from_timer(sta, t, timer);
191 local_info_t *local; 191 local_info_t *local;
192 struct ap_data *ap; 192 struct ap_data *ap;
193 unsigned long next_time = 0; 193 unsigned long next_time = 0;
@@ -1189,10 +1189,8 @@ static struct sta_info * ap_add_sta(struct ap_data *ap, u8 *addr)
1189 } 1189 }
1190 1190
1191#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT 1191#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT
1192 init_timer(&sta->timer); 1192 timer_setup(&sta->timer, ap_handle_timer, 0);
1193 sta->timer.expires = jiffies + ap->max_inactivity; 1193 sta->timer.expires = jiffies + ap->max_inactivity;
1194 sta->timer.data = (unsigned long) sta;
1195 sta->timer.function = ap_handle_timer;
1196 if (!ap->local->hostapd) 1194 if (!ap->local->hostapd)
1197 add_timer(&sta->timer); 1195 add_timer(&sta->timer);
1198#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ 1196#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
diff --git a/drivers/net/wireless/intersil/hostap/hostap_hw.c b/drivers/net/wireless/intersil/hostap/hostap_hw.c
index 72b46eaf3de2..5c4a17a18968 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_hw.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_hw.c
@@ -2794,9 +2794,9 @@ static void prism2_check_sta_fw_version(local_info_t *local)
2794} 2794}
2795 2795
2796 2796
2797static void hostap_passive_scan(unsigned long data) 2797static void hostap_passive_scan(struct timer_list *t)
2798{ 2798{
2799 local_info_t *local = (local_info_t *) data; 2799 local_info_t *local = from_timer(local, t, passive_scan_timer);
2800 struct net_device *dev = local->dev; 2800 struct net_device *dev = local->dev;
2801 u16 chan; 2801 u16 chan;
2802 2802
@@ -2869,10 +2869,10 @@ static void handle_comms_qual_update(struct work_struct *work)
2869 * used to monitor that local->last_tick_timer is being updated. If not, 2869 * used to monitor that local->last_tick_timer is being updated. If not,
2870 * interrupt busy-loop is assumed and driver tries to recover by masking out 2870 * interrupt busy-loop is assumed and driver tries to recover by masking out
2871 * some events. */ 2871 * some events. */
2872static void hostap_tick_timer(unsigned long data) 2872static void hostap_tick_timer(struct timer_list *t)
2873{ 2873{
2874 static unsigned long last_inquire = 0; 2874 static unsigned long last_inquire = 0;
2875 local_info_t *local = (local_info_t *) data; 2875 local_info_t *local = from_timer(local, t, tick_timer);
2876 local->last_tick_timer = jiffies; 2876 local->last_tick_timer = jiffies;
2877 2877
2878 /* Inquire CommTallies every 10 seconds to keep the statistics updated 2878 /* Inquire CommTallies every 10 seconds to keep the statistics updated
@@ -3225,13 +3225,8 @@ while (0)
3225 3225
3226 lib80211_crypt_info_init(&local->crypt_info, dev->name, &local->lock); 3226 lib80211_crypt_info_init(&local->crypt_info, dev->name, &local->lock);
3227 3227
3228 init_timer(&local->passive_scan_timer); 3228 timer_setup(&local->passive_scan_timer, hostap_passive_scan, 0);
3229 local->passive_scan_timer.data = (unsigned long) local; 3229 timer_setup(&local->tick_timer, hostap_tick_timer, 0);
3230 local->passive_scan_timer.function = hostap_passive_scan;
3231
3232 init_timer(&local->tick_timer);
3233 local->tick_timer.data = (unsigned long) local;
3234 local->tick_timer.function = hostap_tick_timer;
3235 local->tick_timer.expires = jiffies + 2 * HZ; 3230 local->tick_timer.expires = jiffies + 2 * HZ;
3236 add_timer(&local->tick_timer); 3231 add_timer(&local->tick_timer);
3237 3232
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c b/drivers/net/wireless/intersil/orinoco/orinoco_usb.c
index 501180584b4b..94ad6fe29e69 100644
--- a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c
+++ b/drivers/net/wireless/intersil/orinoco/orinoco_usb.c
@@ -319,9 +319,9 @@ static inline void ezusb_mod_timer(struct ezusb_priv *upriv,
319 mod_timer(timer, expire); 319 mod_timer(timer, expire);
320} 320}
321 321
322static void ezusb_request_timerfn(u_long _ctx) 322static void ezusb_request_timerfn(struct timer_list *t)
323{ 323{
324 struct request_context *ctx = (void *) _ctx; 324 struct request_context *ctx = from_timer(ctx, t, timer);
325 325
326 ctx->outurb->transfer_flags |= URB_ASYNC_UNLINK; 326 ctx->outurb->transfer_flags |= URB_ASYNC_UNLINK;
327 if (usb_unlink_urb(ctx->outurb) == -EINPROGRESS) { 327 if (usb_unlink_urb(ctx->outurb) == -EINPROGRESS) {
@@ -365,7 +365,7 @@ static struct request_context *ezusb_alloc_ctx(struct ezusb_priv *upriv,
365 refcount_set(&ctx->refcount, 1); 365 refcount_set(&ctx->refcount, 1);
366 init_completion(&ctx->done); 366 init_completion(&ctx->done);
367 367
368 setup_timer(&ctx->timer, ezusb_request_timerfn, (u_long)ctx); 368 timer_setup(&ctx->timer, ezusb_request_timerfn, 0);
369 return ctx; 369 return ctx;
370} 370}
371 371
diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 7d6dc76c930a..6711e7fb6926 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -554,7 +554,7 @@ qtnf_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
554 return -EFAULT; 554 return -EFAULT;
555 } 555 }
556 556
557 mac->scan_timeout.function = (TIMER_FUNC_TYPE)qtnf_scan_timeout; 557 mac->scan_timeout.function = qtnf_scan_timeout;
558 mod_timer(&mac->scan_timeout, 558 mod_timer(&mac->scan_timeout,
559 jiffies + QTNF_SCAN_TIMEOUT_SEC * HZ); 559 jiffies + QTNF_SCAN_TIMEOUT_SEC * HZ);
560 560
diff --git a/drivers/net/wireless/quantenna/qtnfmac/core.c b/drivers/net/wireless/quantenna/qtnfmac/core.c
index 2d2c1ea65cb2..3423dc51198b 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/core.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/core.c
@@ -288,7 +288,7 @@ static struct qtnf_wmac *qtnf_core_mac_alloc(struct qtnf_bus *bus,
288 mac->iflist[i].vifid = i; 288 mac->iflist[i].vifid = i;
289 qtnf_sta_list_init(&mac->iflist[i].sta_list); 289 qtnf_sta_list_init(&mac->iflist[i].sta_list);
290 mutex_init(&mac->mac_lock); 290 mutex_init(&mac->mac_lock);
291 setup_timer(&mac->scan_timeout, NULL, 0); 291 timer_setup(&mac->scan_timeout, NULL, 0);
292 } 292 }
293 293
294 qtnf_mac_init_primary_intf(mac); 294 qtnf_mac_init_primary_intf(mac);
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index d8afcdfca1ed..0133fcd4601b 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -569,7 +569,7 @@ static int dl_startup_params(struct net_device *dev)
569 local->card_status = CARD_DL_PARAM; 569 local->card_status = CARD_DL_PARAM;
570 /* Start kernel timer to wait for dl startup to complete. */ 570 /* Start kernel timer to wait for dl startup to complete. */
571 local->timer.expires = jiffies + HZ / 2; 571 local->timer.expires = jiffies + HZ / 2;
572 local->timer.function = (TIMER_FUNC_TYPE)verify_dl_startup; 572 local->timer.function = verify_dl_startup;
573 add_timer(&local->timer); 573 add_timer(&local->timer);
574 dev_dbg(&link->dev, 574 dev_dbg(&link->dev,
575 "ray_cs dl_startup_params started timer for verify_dl_startup\n"); 575 "ray_cs dl_startup_params started timer for verify_dl_startup\n");
@@ -1947,12 +1947,12 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)
1947 dev_dbg(&link->dev, 1947 dev_dbg(&link->dev,
1948 "ray_cs interrupt network \"%s\" start failed\n", 1948 "ray_cs interrupt network \"%s\" start failed\n",
1949 memtmp); 1949 memtmp);
1950 local->timer.function = (TIMER_FUNC_TYPE)start_net; 1950 local->timer.function = start_net;
1951 } else { 1951 } else {
1952 dev_dbg(&link->dev, 1952 dev_dbg(&link->dev,
1953 "ray_cs interrupt network \"%s\" join failed\n", 1953 "ray_cs interrupt network \"%s\" join failed\n",
1954 memtmp); 1954 memtmp);
1955 local->timer.function = (TIMER_FUNC_TYPE)join_net; 1955 local->timer.function = join_net;
1956 } 1956 }
1957 add_timer(&local->timer); 1957 add_timer(&local->timer);
1958 } 1958 }
@@ -2417,9 +2417,9 @@ static void authenticate(ray_dev_t *local)
2417 2417
2418 del_timer(&local->timer); 2418 del_timer(&local->timer);
2419 if (build_auth_frame(local, local->bss_id, OPEN_AUTH_REQUEST)) { 2419 if (build_auth_frame(local, local->bss_id, OPEN_AUTH_REQUEST)) {
2420 local->timer.function = (TIMER_FUNC_TYPE)join_net; 2420 local->timer.function = join_net;
2421 } else { 2421 } else {
2422 local->timer.function = (TIMER_FUNC_TYPE)authenticate_timeout; 2422 local->timer.function = authenticate_timeout;
2423 } 2423 }
2424 local->timer.expires = jiffies + HZ * 2; 2424 local->timer.expires = jiffies + HZ * 2;
2425 add_timer(&local->timer); 2425 add_timer(&local->timer);
@@ -2502,7 +2502,7 @@ static void associate(ray_dev_t *local)
2502 2502
2503 del_timer(&local->timer); 2503 del_timer(&local->timer);
2504 local->timer.expires = jiffies + HZ * 2; 2504 local->timer.expires = jiffies + HZ * 2;
2505 local->timer.function = (TIMER_FUNC_TYPE)join_net; 2505 local->timer.function = join_net;
2506 add_timer(&local->timer); 2506 add_timer(&local->timer);
2507 local->card_status = CARD_ASSOC_FAILED; 2507 local->card_status = CARD_ASSOC_FAILED;
2508 return; 2508 return;
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index c346c021b999..d47921a84509 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -196,9 +196,9 @@ out:
196 mutex_unlock(&wl->mutex); 196 mutex_unlock(&wl->mutex);
197} 197}
198 198
199static void wl1271_rx_streaming_timer(unsigned long data) 199static void wl1271_rx_streaming_timer(struct timer_list *t)
200{ 200{
201 struct wl12xx_vif *wlvif = (struct wl12xx_vif *)data; 201 struct wl12xx_vif *wlvif = from_timer(wlvif, t, rx_streaming_timer);
202 struct wl1271 *wl = wlvif->wl; 202 struct wl1271 *wl = wlvif->wl;
203 ieee80211_queue_work(wl->hw, &wlvif->rx_streaming_disable_work); 203 ieee80211_queue_work(wl->hw, &wlvif->rx_streaming_disable_work);
204} 204}
@@ -2279,8 +2279,7 @@ static int wl12xx_init_vif_data(struct wl1271 *wl, struct ieee80211_vif *vif)
2279 wlcore_pending_auth_complete_work); 2279 wlcore_pending_auth_complete_work);
2280 INIT_LIST_HEAD(&wlvif->list); 2280 INIT_LIST_HEAD(&wlvif->list);
2281 2281
2282 setup_timer(&wlvif->rx_streaming_timer, wl1271_rx_streaming_timer, 2282 timer_setup(&wlvif->rx_streaming_timer, wl1271_rx_streaming_timer, 0);
2283 (unsigned long) wlvif);
2284 return 0; 2283 return 0;
2285} 2284}
2286 2285
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 8b8689c6d887..18c85e55e76a 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -228,9 +228,9 @@ static bool xennet_can_sg(struct net_device *dev)
228} 228}
229 229
230 230
231static void rx_refill_timeout(unsigned long data) 231static void rx_refill_timeout(struct timer_list *t)
232{ 232{
233 struct netfront_queue *queue = (struct netfront_queue *)data; 233 struct netfront_queue *queue = from_timer(queue, t, rx_refill_timer);
234 napi_schedule(&queue->napi); 234 napi_schedule(&queue->napi);
235} 235}
236 236
@@ -1605,8 +1605,7 @@ static int xennet_init_queue(struct netfront_queue *queue)
1605 spin_lock_init(&queue->tx_lock); 1605 spin_lock_init(&queue->tx_lock);
1606 spin_lock_init(&queue->rx_lock); 1606 spin_lock_init(&queue->rx_lock);
1607 1607
1608 setup_timer(&queue->rx_refill_timer, rx_refill_timeout, 1608 timer_setup(&queue->rx_refill_timer, rx_refill_timeout, 0);
1609 (unsigned long)queue);
1610 1609
1611 snprintf(queue->name, sizeof(queue->name), "%s-q%u", 1610 snprintf(queue->name, sizeof(queue->name), "%s-q%u",
1612 queue->info->netdev->name, queue->id); 1611 queue->info->netdev->name, queue->id);
diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c
index 7f8960a46aab..52c8ae504e32 100644
--- a/drivers/nfc/nfcmrvl/fw_dnld.c
+++ b/drivers/nfc/nfcmrvl/fw_dnld.c
@@ -130,9 +130,9 @@ static void fw_dnld_over(struct nfcmrvl_private *priv, u32 error)
130 nfc_fw_download_done(priv->ndev->nfc_dev, priv->fw_dnld.name, error); 130 nfc_fw_download_done(priv->ndev->nfc_dev, priv->fw_dnld.name, error);
131} 131}
132 132
133static void fw_dnld_timeout(unsigned long arg) 133static void fw_dnld_timeout(struct timer_list *t)
134{ 134{
135 struct nfcmrvl_private *priv = (struct nfcmrvl_private *) arg; 135 struct nfcmrvl_private *priv = from_timer(priv, t, fw_dnld.timer);
136 136
137 nfc_err(priv->dev, "FW loading timeout"); 137 nfc_err(priv->dev, "FW loading timeout");
138 priv->fw_dnld.state = STATE_RESET; 138 priv->fw_dnld.state = STATE_RESET;
@@ -538,8 +538,7 @@ int nfcmrvl_fw_dnld_start(struct nci_dev *ndev, const char *firmware_name)
538 } 538 }
539 539
540 /* Configure a timer for timeout */ 540 /* Configure a timer for timeout */
541 setup_timer(&priv->fw_dnld.timer, fw_dnld_timeout, 541 timer_setup(&priv->fw_dnld.timer, fw_dnld_timeout, 0);
542 (unsigned long) priv);
543 mod_timer(&priv->fw_dnld.timer, 542 mod_timer(&priv->fw_dnld.timer,
544 jiffies + msecs_to_jiffies(FW_DNLD_TIMEOUT)); 543 jiffies + msecs_to_jiffies(FW_DNLD_TIMEOUT));
545 544
diff --git a/drivers/nfc/pn533/pn533.c b/drivers/nfc/pn533/pn533.c
index c05cb637ba92..a0cc1cc45292 100644
--- a/drivers/nfc/pn533/pn533.c
+++ b/drivers/nfc/pn533/pn533.c
@@ -1232,9 +1232,9 @@ static int pn533_init_target_complete(struct pn533 *dev, struct sk_buff *resp)
1232 return 0; 1232 return 0;
1233} 1233}
1234 1234
1235static void pn533_listen_mode_timer(unsigned long data) 1235static void pn533_listen_mode_timer(struct timer_list *t)
1236{ 1236{
1237 struct pn533 *dev = (struct pn533 *)data; 1237 struct pn533 *dev = from_timer(dev, t, listen_timer);
1238 1238
1239 dev_dbg(dev->dev, "Listen mode timeout\n"); 1239 dev_dbg(dev->dev, "Listen mode timeout\n");
1240 1240
@@ -2632,9 +2632,7 @@ struct pn533 *pn533_register_device(u32 device_type,
2632 if (priv->wq == NULL) 2632 if (priv->wq == NULL)
2633 goto error; 2633 goto error;
2634 2634
2635 init_timer(&priv->listen_timer); 2635 timer_setup(&priv->listen_timer, pn533_listen_mode_timer, 0);
2636 priv->listen_timer.data = (unsigned long) priv;
2637 priv->listen_timer.function = pn533_listen_mode_timer;
2638 2636
2639 skb_queue_head_init(&priv->resp_q); 2637 skb_queue_head_init(&priv->resp_q);
2640 skb_queue_head_init(&priv->fragment_skb); 2638 skb_queue_head_init(&priv->fragment_skb);
diff --git a/drivers/nfc/st-nci/ndlc.c b/drivers/nfc/st-nci/ndlc.c
index 9477994cf975..f26d938d240f 100644
--- a/drivers/nfc/st-nci/ndlc.c
+++ b/drivers/nfc/st-nci/ndlc.c
@@ -246,18 +246,18 @@ void ndlc_recv(struct llt_ndlc *ndlc, struct sk_buff *skb)
246} 246}
247EXPORT_SYMBOL(ndlc_recv); 247EXPORT_SYMBOL(ndlc_recv);
248 248
249static void ndlc_t1_timeout(unsigned long data) 249static void ndlc_t1_timeout(struct timer_list *t)
250{ 250{
251 struct llt_ndlc *ndlc = (struct llt_ndlc *)data; 251 struct llt_ndlc *ndlc = from_timer(ndlc, t, t1_timer);
252 252
253 pr_debug("\n"); 253 pr_debug("\n");
254 254
255 schedule_work(&ndlc->sm_work); 255 schedule_work(&ndlc->sm_work);
256} 256}
257 257
258static void ndlc_t2_timeout(unsigned long data) 258static void ndlc_t2_timeout(struct timer_list *t)
259{ 259{
260 struct llt_ndlc *ndlc = (struct llt_ndlc *)data; 260 struct llt_ndlc *ndlc = from_timer(ndlc, t, t2_timer);
261 261
262 pr_debug("\n"); 262 pr_debug("\n");
263 263
@@ -282,13 +282,8 @@ int ndlc_probe(void *phy_id, struct nfc_phy_ops *phy_ops, struct device *dev,
282 *ndlc_id = ndlc; 282 *ndlc_id = ndlc;
283 283
284 /* initialize timers */ 284 /* initialize timers */
285 init_timer(&ndlc->t1_timer); 285 timer_setup(&ndlc->t1_timer, ndlc_t1_timeout, 0);
286 ndlc->t1_timer.data = (unsigned long)ndlc; 286 timer_setup(&ndlc->t2_timer, ndlc_t2_timeout, 0);
287 ndlc->t1_timer.function = ndlc_t1_timeout;
288
289 init_timer(&ndlc->t2_timer);
290 ndlc->t2_timer.data = (unsigned long)ndlc;
291 ndlc->t2_timer.function = ndlc_t2_timeout;
292 287
293 skb_queue_head_init(&ndlc->rcv_q); 288 skb_queue_head_init(&ndlc->rcv_q);
294 skb_queue_head_init(&ndlc->send_q); 289 skb_queue_head_init(&ndlc->send_q);
diff --git a/drivers/nfc/st-nci/se.c b/drivers/nfc/st-nci/se.c
index 56f2112e0cd8..f55d082ace71 100644
--- a/drivers/nfc/st-nci/se.c
+++ b/drivers/nfc/st-nci/se.c
@@ -677,7 +677,7 @@ int st_nci_se_io(struct nci_dev *ndev, u32 se_idx,
677} 677}
678EXPORT_SYMBOL(st_nci_se_io); 678EXPORT_SYMBOL(st_nci_se_io);
679 679
680static void st_nci_se_wt_timeout(unsigned long data) 680static void st_nci_se_wt_timeout(struct timer_list *t)
681{ 681{
682 /* 682 /*
683 * No answer from the secure element 683 * No answer from the secure element
@@ -690,7 +690,7 @@ static void st_nci_se_wt_timeout(unsigned long data)
690 */ 690 */
691 /* hardware reset managed through VCC_UICC_OUT power supply */ 691 /* hardware reset managed through VCC_UICC_OUT power supply */
692 u8 param = 0x01; 692 u8 param = 0x01;
693 struct st_nci_info *info = (struct st_nci_info *) data; 693 struct st_nci_info *info = from_timer(info, t, se_info.bwi_timer);
694 694
695 pr_debug("\n"); 695 pr_debug("\n");
696 696
@@ -708,9 +708,10 @@ static void st_nci_se_wt_timeout(unsigned long data)
708 info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME); 708 info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME);
709} 709}
710 710
711static void st_nci_se_activation_timeout(unsigned long data) 711static void st_nci_se_activation_timeout(struct timer_list *t)
712{ 712{
713 struct st_nci_info *info = (struct st_nci_info *) data; 713 struct st_nci_info *info = from_timer(info, t,
714 se_info.se_active_timer);
714 715
715 pr_debug("\n"); 716 pr_debug("\n");
716 717
@@ -725,15 +726,11 @@ int st_nci_se_init(struct nci_dev *ndev, struct st_nci_se_status *se_status)
725 726
726 init_completion(&info->se_info.req_completion); 727 init_completion(&info->se_info.req_completion);
727 /* initialize timers */ 728 /* initialize timers */
728 init_timer(&info->se_info.bwi_timer); 729 timer_setup(&info->se_info.bwi_timer, st_nci_se_wt_timeout, 0);
729 info->se_info.bwi_timer.data = (unsigned long)info;
730 info->se_info.bwi_timer.function = st_nci_se_wt_timeout;
731 info->se_info.bwi_active = false; 730 info->se_info.bwi_active = false;
732 731
733 init_timer(&info->se_info.se_active_timer); 732 timer_setup(&info->se_info.se_active_timer,
734 info->se_info.se_active_timer.data = (unsigned long)info; 733 st_nci_se_activation_timeout, 0);
735 info->se_info.se_active_timer.function =
736 st_nci_se_activation_timeout;
737 info->se_info.se_active = false; 734 info->se_info.se_active = false;
738 735
739 info->se_info.xch_error = false; 736 info->se_info.xch_error = false;
diff --git a/drivers/nfc/st21nfca/se.c b/drivers/nfc/st21nfca/se.c
index 3a98563d4a12..4bed9e842db3 100644
--- a/drivers/nfc/st21nfca/se.c
+++ b/drivers/nfc/st21nfca/se.c
@@ -252,7 +252,7 @@ int st21nfca_hci_se_io(struct nfc_hci_dev *hdev, u32 se_idx,
252} 252}
253EXPORT_SYMBOL(st21nfca_hci_se_io); 253EXPORT_SYMBOL(st21nfca_hci_se_io);
254 254
255static void st21nfca_se_wt_timeout(unsigned long data) 255static void st21nfca_se_wt_timeout(struct timer_list *t)
256{ 256{
257 /* 257 /*
258 * No answer from the secure element 258 * No answer from the secure element
@@ -265,7 +265,8 @@ static void st21nfca_se_wt_timeout(unsigned long data)
265 */ 265 */
266 /* hardware reset managed through VCC_UICC_OUT power supply */ 266 /* hardware reset managed through VCC_UICC_OUT power supply */
267 u8 param = 0x01; 267 u8 param = 0x01;
268 struct st21nfca_hci_info *info = (struct st21nfca_hci_info *) data; 268 struct st21nfca_hci_info *info = from_timer(info, t,
269 se_info.bwi_timer);
269 270
270 pr_debug("\n"); 271 pr_debug("\n");
271 272
@@ -283,9 +284,10 @@ static void st21nfca_se_wt_timeout(unsigned long data)
283 info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME); 284 info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME);
284} 285}
285 286
286static void st21nfca_se_activation_timeout(unsigned long data) 287static void st21nfca_se_activation_timeout(struct timer_list *t)
287{ 288{
288 struct st21nfca_hci_info *info = (struct st21nfca_hci_info *) data; 289 struct st21nfca_hci_info *info = from_timer(info, t,
290 se_info.se_active_timer);
289 291
290 pr_debug("\n"); 292 pr_debug("\n");
291 293
@@ -392,14 +394,11 @@ void st21nfca_se_init(struct nfc_hci_dev *hdev)
392 394
393 init_completion(&info->se_info.req_completion); 395 init_completion(&info->se_info.req_completion);
394 /* initialize timers */ 396 /* initialize timers */
395 init_timer(&info->se_info.bwi_timer); 397 timer_setup(&info->se_info.bwi_timer, st21nfca_se_wt_timeout, 0);
396 info->se_info.bwi_timer.data = (unsigned long)info;
397 info->se_info.bwi_timer.function = st21nfca_se_wt_timeout;
398 info->se_info.bwi_active = false; 398 info->se_info.bwi_active = false;
399 399
400 init_timer(&info->se_info.se_active_timer); 400 timer_setup(&info->se_info.se_active_timer,
401 info->se_info.se_active_timer.data = (unsigned long)info; 401 st21nfca_se_activation_timeout, 0);
402 info->se_info.se_active_timer.function = st21nfca_se_activation_timeout;
403 info->se_info.se_active = false; 402 info->se_info.se_active = false;
404 403
405 info->se_info.count_pipes = 0; 404 info->se_info.count_pipes = 0;
diff --git a/drivers/ntb/test/ntb_pingpong.c b/drivers/ntb/test/ntb_pingpong.c
index 938a18bcfc3f..3f5a92bae6f8 100644
--- a/drivers/ntb/test/ntb_pingpong.c
+++ b/drivers/ntb/test/ntb_pingpong.c
@@ -107,9 +107,9 @@ struct pp_ctx {
107 107
108static struct dentry *pp_debugfs_dir; 108static struct dentry *pp_debugfs_dir;
109 109
110static void pp_ping(unsigned long ctx) 110static void pp_ping(struct timer_list *t)
111{ 111{
112 struct pp_ctx *pp = (void *)ctx; 112 struct pp_ctx *pp = from_timer(pp, t, db_timer);
113 unsigned long irqflags; 113 unsigned long irqflags;
114 u64 db_bits, db_mask; 114 u64 db_bits, db_mask;
115 u32 spad_rd, spad_wr; 115 u32 spad_rd, spad_wr;
@@ -153,7 +153,7 @@ static void pp_link_event(void *ctx)
153 153
154 if (ntb_link_is_up(pp->ntb, NULL, NULL) == 1) { 154 if (ntb_link_is_up(pp->ntb, NULL, NULL) == 1) {
155 dev_dbg(&pp->ntb->dev, "link is up\n"); 155 dev_dbg(&pp->ntb->dev, "link is up\n");
156 pp_ping((unsigned long)pp); 156 pp_ping(&pp->db_timer);
157 } else { 157 } else {
158 dev_dbg(&pp->ntb->dev, "link is down\n"); 158 dev_dbg(&pp->ntb->dev, "link is down\n");
159 del_timer(&pp->db_timer); 159 del_timer(&pp->db_timer);
@@ -252,7 +252,7 @@ static int pp_probe(struct ntb_client *client,
252 pp->db_bits = 0; 252 pp->db_bits = 0;
253 atomic_set(&pp->count, 0); 253 atomic_set(&pp->count, 0);
254 spin_lock_init(&pp->db_lock); 254 spin_lock_init(&pp->db_lock);
255 setup_timer(&pp->db_timer, pp_ping, (unsigned long)pp); 255 timer_setup(&pp->db_timer, pp_ping, 0);
256 pp->db_delay = msecs_to_jiffies(delay_ms); 256 pp->db_delay = msecs_to_jiffies(delay_ms);
257 257
258 rc = ntb_set_ctx(ntb, pp, &pp_ops); 258 rc = ntb_set_ctx(ntb, pp, &pp_ops);
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index 62aa2c37b8d2..935121814c97 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -363,7 +363,7 @@ static int sony_laptop_input_keycode_map[] = {
363}; 363};
364 364
365/* release buttons after a short delay if pressed */ 365/* release buttons after a short delay if pressed */
366static void do_sony_laptop_release_key(unsigned long unused) 366static void do_sony_laptop_release_key(struct timer_list *unused)
367{ 367{
368 struct sony_laptop_keypress kp; 368 struct sony_laptop_keypress kp;
369 unsigned long flags; 369 unsigned long flags;
@@ -470,7 +470,7 @@ static int sony_laptop_setup_input(struct acpi_device *acpi_device)
470 goto err_dec_users; 470 goto err_dec_users;
471 } 471 }
472 472
473 setup_timer(&sony_laptop_input.release_key_timer, 473 timer_setup(&sony_laptop_input.release_key_timer,
474 do_sony_laptop_release_key, 0); 474 do_sony_laptop_release_key, 0);
475 475
476 /* input keys */ 476 /* input keys */
diff --git a/drivers/pps/clients/pps-ktimer.c b/drivers/pps/clients/pps-ktimer.c
index 436b4e4e71a1..04735649052a 100644
--- a/drivers/pps/clients/pps-ktimer.c
+++ b/drivers/pps/clients/pps-ktimer.c
@@ -39,7 +39,7 @@ static struct timer_list ktimer;
39 * The kernel timer 39 * The kernel timer
40 */ 40 */
41 41
42static void pps_ktimer_event(unsigned long ptr) 42static void pps_ktimer_event(struct timer_list *unused)
43{ 43{
44 struct pps_event_time ts; 44 struct pps_event_time ts;
45 45
@@ -85,7 +85,7 @@ static int __init pps_ktimer_init(void)
85 return -ENOMEM; 85 return -ENOMEM;
86 } 86 }
87 87
88 setup_timer(&ktimer, pps_ktimer_event, 0); 88 timer_setup(&ktimer, pps_ktimer_event, 0);
89 mod_timer(&ktimer, jiffies + HZ); 89 mod_timer(&ktimer, jiffies + HZ);
90 90
91 dev_info(pps->dev, "ktimer PPS source registered\n"); 91 dev_info(pps->dev, "ktimer PPS source registered\n");
diff --git a/drivers/rtc/rtc-dev.c b/drivers/rtc/rtc-dev.c
index 00efe24a6063..215eac68ae2d 100644
--- a/drivers/rtc/rtc-dev.c
+++ b/drivers/rtc/rtc-dev.c
@@ -71,9 +71,9 @@ static void rtc_uie_task(struct work_struct *work)
71 if (num) 71 if (num)
72 rtc_handle_legacy_irq(rtc, num, RTC_UF); 72 rtc_handle_legacy_irq(rtc, num, RTC_UF);
73} 73}
74static void rtc_uie_timer(unsigned long data) 74static void rtc_uie_timer(struct timer_list *t)
75{ 75{
76 struct rtc_device *rtc = (struct rtc_device *)data; 76 struct rtc_device *rtc = from_timer(rtc, t, uie_timer);
77 unsigned long flags; 77 unsigned long flags;
78 78
79 spin_lock_irqsave(&rtc->irq_lock, flags); 79 spin_lock_irqsave(&rtc->irq_lock, flags);
@@ -460,7 +460,7 @@ void rtc_dev_prepare(struct rtc_device *rtc)
460 460
461#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL 461#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
462 INIT_WORK(&rtc->uie_task, rtc_uie_task); 462 INIT_WORK(&rtc->uie_task, rtc_uie_task);
463 setup_timer(&rtc->uie_timer, rtc_uie_timer, (unsigned long)rtc); 463 timer_setup(&rtc->uie_timer, rtc_uie_timer, 0);
464#endif 464#endif
465 465
466 cdev_init(&rtc->char_dev, &rtc_dev_fops); 466 cdev_init(&rtc->char_dev, &rtc_dev_fops);
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 29f35e29d480..0f1ff0813493 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -70,8 +70,8 @@ static void do_restore_device(struct work_struct *);
70static void do_reload_device(struct work_struct *); 70static void do_reload_device(struct work_struct *);
71static void do_requeue_requests(struct work_struct *); 71static void do_requeue_requests(struct work_struct *);
72static void dasd_return_cqr_cb(struct dasd_ccw_req *, void *); 72static void dasd_return_cqr_cb(struct dasd_ccw_req *, void *);
73static void dasd_device_timeout(unsigned long); 73static void dasd_device_timeout(struct timer_list *);
74static void dasd_block_timeout(unsigned long); 74static void dasd_block_timeout(struct timer_list *);
75static void __dasd_process_erp(struct dasd_device *, struct dasd_ccw_req *); 75static void __dasd_process_erp(struct dasd_device *, struct dasd_ccw_req *);
76static void dasd_profile_init(struct dasd_profile *, struct dentry *); 76static void dasd_profile_init(struct dasd_profile *, struct dentry *);
77static void dasd_profile_exit(struct dasd_profile *); 77static void dasd_profile_exit(struct dasd_profile *);
@@ -119,9 +119,7 @@ struct dasd_device *dasd_alloc_device(void)
119 (void (*)(unsigned long)) dasd_device_tasklet, 119 (void (*)(unsigned long)) dasd_device_tasklet,
120 (unsigned long) device); 120 (unsigned long) device);
121 INIT_LIST_HEAD(&device->ccw_queue); 121 INIT_LIST_HEAD(&device->ccw_queue);
122 init_timer(&device->timer); 122 timer_setup(&device->timer, dasd_device_timeout, 0);
123 device->timer.function = dasd_device_timeout;
124 device->timer.data = (unsigned long) device;
125 INIT_WORK(&device->kick_work, do_kick_device); 123 INIT_WORK(&device->kick_work, do_kick_device);
126 INIT_WORK(&device->restore_device, do_restore_device); 124 INIT_WORK(&device->restore_device, do_restore_device);
127 INIT_WORK(&device->reload_device, do_reload_device); 125 INIT_WORK(&device->reload_device, do_reload_device);
@@ -163,9 +161,7 @@ struct dasd_block *dasd_alloc_block(void)
163 (unsigned long) block); 161 (unsigned long) block);
164 INIT_LIST_HEAD(&block->ccw_queue); 162 INIT_LIST_HEAD(&block->ccw_queue);
165 spin_lock_init(&block->queue_lock); 163 spin_lock_init(&block->queue_lock);
166 init_timer(&block->timer); 164 timer_setup(&block->timer, dasd_block_timeout, 0);
167 block->timer.function = dasd_block_timeout;
168 block->timer.data = (unsigned long) block;
169 spin_lock_init(&block->profile.lock); 165 spin_lock_init(&block->profile.lock);
170 166
171 return block; 167 return block;
@@ -1560,12 +1556,12 @@ EXPORT_SYMBOL(dasd_start_IO);
1560 * The head of the ccw queue will have status DASD_CQR_IN_IO for 1), 1556 * The head of the ccw queue will have status DASD_CQR_IN_IO for 1),
1561 * DASD_CQR_QUEUED for 2) and 3). 1557 * DASD_CQR_QUEUED for 2) and 3).
1562 */ 1558 */
1563static void dasd_device_timeout(unsigned long ptr) 1559static void dasd_device_timeout(struct timer_list *t)
1564{ 1560{
1565 unsigned long flags; 1561 unsigned long flags;
1566 struct dasd_device *device; 1562 struct dasd_device *device;
1567 1563
1568 device = (struct dasd_device *) ptr; 1564 device = from_timer(device, t, timer);
1569 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); 1565 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
1570 /* re-activate request queue */ 1566 /* re-activate request queue */
1571 dasd_device_remove_stop_bits(device, DASD_STOPPED_PENDING); 1567 dasd_device_remove_stop_bits(device, DASD_STOPPED_PENDING);
@@ -2628,12 +2624,12 @@ EXPORT_SYMBOL(dasd_cancel_req);
2628 * is waiting for something that may not come reliably, (e.g. a state 2624 * is waiting for something that may not come reliably, (e.g. a state
2629 * change interrupt) 2625 * change interrupt)
2630 */ 2626 */
2631static void dasd_block_timeout(unsigned long ptr) 2627static void dasd_block_timeout(struct timer_list *t)
2632{ 2628{
2633 unsigned long flags; 2629 unsigned long flags;
2634 struct dasd_block *block; 2630 struct dasd_block *block;
2635 2631
2636 block = (struct dasd_block *) ptr; 2632 block = from_timer(block, t, timer);
2637 spin_lock_irqsave(get_ccwdev_lock(block->base->cdev), flags); 2633 spin_lock_irqsave(get_ccwdev_lock(block->base->cdev), flags);
2638 /* re-activate request queue */ 2634 /* re-activate request queue */
2639 dasd_device_remove_stop_bits(block->base, DASD_STOPPED_PENDING); 2635 dasd_device_remove_stop_bits(block->base, DASD_STOPPED_PENDING);
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index 9b4c61c1e309..e4e2df7a478e 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -158,7 +158,7 @@ static inline void
158__sclp_set_request_timer(unsigned long time, void (*cb)(struct timer_list *)) 158__sclp_set_request_timer(unsigned long time, void (*cb)(struct timer_list *))
159{ 159{
160 del_timer(&sclp_request_timer); 160 del_timer(&sclp_request_timer);
161 sclp_request_timer.function = (TIMER_FUNC_TYPE)cb; 161 sclp_request_timer.function = cb;
162 sclp_request_timer.expires = jiffies + time; 162 sclp_request_timer.expires = jiffies + time;
163 add_timer(&sclp_request_timer); 163 add_timer(&sclp_request_timer);
164} 164}
@@ -566,7 +566,7 @@ sclp_sync_wait(void)
566 if (timer_pending(&sclp_request_timer) && 566 if (timer_pending(&sclp_request_timer) &&
567 get_tod_clock_fast() > timeout && 567 get_tod_clock_fast() > timeout &&
568 del_timer(&sclp_request_timer)) 568 del_timer(&sclp_request_timer))
569 sclp_request_timer.function((TIMER_DATA_TYPE)&sclp_request_timer); 569 sclp_request_timer.function(&sclp_request_timer);
570 cpu_relax(); 570 cpu_relax();
571 } 571 }
572 local_irq_disable(); 572 local_irq_disable();
diff --git a/drivers/s390/net/fsm.c b/drivers/s390/net/fsm.c
index 8c14c6c3ad3d..c81adf8042d7 100644
--- a/drivers/s390/net/fsm.c
+++ b/drivers/s390/net/fsm.c
@@ -129,8 +129,9 @@ fsm_getstate_str(fsm_instance *fi)
129} 129}
130 130
131static void 131static void
132fsm_expire_timer(fsm_timer *this) 132fsm_expire_timer(struct timer_list *t)
133{ 133{
134 fsm_timer *this = from_timer(this, t, tl);
134#if FSM_TIMER_DEBUG 135#if FSM_TIMER_DEBUG
135 printk(KERN_DEBUG "fsm(%s): Timer %p expired\n", 136 printk(KERN_DEBUG "fsm(%s): Timer %p expired\n",
136 this->fi->name, this); 137 this->fi->name, this);
@@ -142,13 +143,11 @@ void
142fsm_settimer(fsm_instance *fi, fsm_timer *this) 143fsm_settimer(fsm_instance *fi, fsm_timer *this)
143{ 144{
144 this->fi = fi; 145 this->fi = fi;
145 this->tl.function = (void *)fsm_expire_timer;
146 this->tl.data = (long)this;
147#if FSM_TIMER_DEBUG 146#if FSM_TIMER_DEBUG
148 printk(KERN_DEBUG "fsm(%s): Create timer %p\n", fi->name, 147 printk(KERN_DEBUG "fsm(%s): Create timer %p\n", fi->name,
149 this); 148 this);
150#endif 149#endif
151 init_timer(&this->tl); 150 timer_setup(&this->tl, fsm_expire_timer, 0);
152} 151}
153 152
154void 153void
@@ -170,7 +169,7 @@ fsm_addtimer(fsm_timer *this, int millisec, int event, void *arg)
170 this->fi->name, this, millisec); 169 this->fi->name, this, millisec);
171#endif 170#endif
172 171
173 setup_timer(&this->tl, (void *)fsm_expire_timer, (long)this); 172 timer_setup(&this->tl, fsm_expire_timer, 0);
174 this->expire_event = event; 173 this->expire_event = event;
175 this->event_arg = arg; 174 this->event_arg = arg;
176 this->tl.expires = jiffies + (millisec * HZ) / 1000; 175 this->tl.expires = jiffies + (millisec * HZ) / 1000;
@@ -189,7 +188,7 @@ fsm_modtimer(fsm_timer *this, int millisec, int event, void *arg)
189#endif 188#endif
190 189
191 del_timer(&this->tl); 190 del_timer(&this->tl);
192 setup_timer(&this->tl, (void *)fsm_expire_timer, (long)this); 191 timer_setup(&this->tl, fsm_expire_timer, 0);
193 this->expire_event = event; 192 this->expire_event = event;
194 this->event_arg = arg; 193 this->event_arg = arg;
195 this->tl.expires = jiffies + (millisec * HZ) / 1000; 194 this->tl.expires = jiffies + (millisec * HZ) / 1000;
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 51b81c0a0652..b12cb81ad8a2 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -34,7 +34,7 @@ static void zfcp_fsf_request_timeout_handler(struct timer_list *t)
34static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, 34static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req,
35 unsigned long timeout) 35 unsigned long timeout)
36{ 36{
37 fsf_req->timer.function = (TIMER_FUNC_TYPE)zfcp_fsf_request_timeout_handler; 37 fsf_req->timer.function = zfcp_fsf_request_timeout_handler;
38 fsf_req->timer.expires = jiffies + timeout; 38 fsf_req->timer.expires = jiffies + timeout;
39 add_timer(&fsf_req->timer); 39 add_timer(&fsf_req->timer);
40} 40}
@@ -42,7 +42,7 @@ static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req,
42static void zfcp_fsf_start_erp_timer(struct zfcp_fsf_req *fsf_req) 42static void zfcp_fsf_start_erp_timer(struct zfcp_fsf_req *fsf_req)
43{ 43{
44 BUG_ON(!fsf_req->erp_action); 44 BUG_ON(!fsf_req->erp_action);
45 fsf_req->timer.function = (TIMER_FUNC_TYPE)zfcp_erp_timeout_handler; 45 fsf_req->timer.function = zfcp_erp_timeout_handler;
46 fsf_req->timer.expires = jiffies + 30 * HZ; 46 fsf_req->timer.expires = jiffies + 30 * HZ;
47 add_timer(&fsf_req->timer); 47 add_timer(&fsf_req->timer);
48} 48}
diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index 5402b85b0bdc..2dbc8330d7d3 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -1175,7 +1175,7 @@ static void asd_start_scb_timers(struct list_head *list)
1175 struct asd_ascb *ascb; 1175 struct asd_ascb *ascb;
1176 list_for_each_entry(ascb, list, list) { 1176 list_for_each_entry(ascb, list, list) {
1177 if (!ascb->uldd_timer) { 1177 if (!ascb->uldd_timer) {
1178 ascb->timer.function = (TIMER_FUNC_TYPE)asd_ascb_timedout; 1178 ascb->timer.function = asd_ascb_timedout;
1179 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT; 1179 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
1180 add_timer(&ascb->timer); 1180 add_timer(&ascb->timer);
1181 } 1181 }
diff --git a/drivers/scsi/aic94xx/aic94xx_tmf.c b/drivers/scsi/aic94xx/aic94xx_tmf.c
index 4637119c09d8..2a01702d5ba7 100644
--- a/drivers/scsi/aic94xx/aic94xx_tmf.c
+++ b/drivers/scsi/aic94xx/aic94xx_tmf.c
@@ -42,7 +42,7 @@ static int asd_enqueue_internal(struct asd_ascb *ascb,
42 ascb->tasklet_complete = tasklet_complete; 42 ascb->tasklet_complete = tasklet_complete;
43 ascb->uldd_timer = 1; 43 ascb->uldd_timer = 1;
44 44
45 ascb->timer.function = (TIMER_FUNC_TYPE)timed_out; 45 ascb->timer.function = timed_out;
46 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT; 46 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
47 47
48 add_timer(&ascb->timer); 48 add_timer(&ascb->timer);
diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
index af032c46ec0e..21f6421536a0 100644
--- a/drivers/scsi/arcmsr/arcmsr_hba.c
+++ b/drivers/scsi/arcmsr/arcmsr_hba.c
@@ -101,7 +101,7 @@ static void arcmsr_enable_outbound_ints(struct AdapterControlBlock *acb,
101static void arcmsr_stop_adapter_bgrb(struct AdapterControlBlock *acb); 101static void arcmsr_stop_adapter_bgrb(struct AdapterControlBlock *acb);
102static void arcmsr_hbaA_flush_cache(struct AdapterControlBlock *acb); 102static void arcmsr_hbaA_flush_cache(struct AdapterControlBlock *acb);
103static void arcmsr_hbaB_flush_cache(struct AdapterControlBlock *acb); 103static void arcmsr_hbaB_flush_cache(struct AdapterControlBlock *acb);
104static void arcmsr_request_device_map(unsigned long pacb); 104static void arcmsr_request_device_map(struct timer_list *t);
105static void arcmsr_hbaA_request_device_map(struct AdapterControlBlock *acb); 105static void arcmsr_hbaA_request_device_map(struct AdapterControlBlock *acb);
106static void arcmsr_hbaB_request_device_map(struct AdapterControlBlock *acb); 106static void arcmsr_hbaB_request_device_map(struct AdapterControlBlock *acb);
107static void arcmsr_hbaC_request_device_map(struct AdapterControlBlock *acb); 107static void arcmsr_hbaC_request_device_map(struct AdapterControlBlock *acb);
@@ -837,10 +837,8 @@ static int arcmsr_probe(struct pci_dev *pdev, const struct pci_device_id *id)
837 atomic_set(&acb->rq_map_token, 16); 837 atomic_set(&acb->rq_map_token, 16);
838 atomic_set(&acb->ante_token_value, 16); 838 atomic_set(&acb->ante_token_value, 16);
839 acb->fw_flag = FW_NORMAL; 839 acb->fw_flag = FW_NORMAL;
840 init_timer(&acb->eternal_timer); 840 timer_setup(&acb->eternal_timer, arcmsr_request_device_map, 0);
841 acb->eternal_timer.expires = jiffies + msecs_to_jiffies(6 * HZ); 841 acb->eternal_timer.expires = jiffies + msecs_to_jiffies(6 * HZ);
842 acb->eternal_timer.data = (unsigned long) acb;
843 acb->eternal_timer.function = &arcmsr_request_device_map;
844 add_timer(&acb->eternal_timer); 842 add_timer(&acb->eternal_timer);
845 if(arcmsr_alloc_sysfs_attr(acb)) 843 if(arcmsr_alloc_sysfs_attr(acb))
846 goto out_free_sysfs; 844 goto out_free_sysfs;
@@ -930,10 +928,8 @@ static int arcmsr_resume(struct pci_dev *pdev)
930 atomic_set(&acb->rq_map_token, 16); 928 atomic_set(&acb->rq_map_token, 16);
931 atomic_set(&acb->ante_token_value, 16); 929 atomic_set(&acb->ante_token_value, 16);
932 acb->fw_flag = FW_NORMAL; 930 acb->fw_flag = FW_NORMAL;
933 init_timer(&acb->eternal_timer); 931 timer_setup(&acb->eternal_timer, arcmsr_request_device_map, 0);
934 acb->eternal_timer.expires = jiffies + msecs_to_jiffies(6 * HZ); 932 acb->eternal_timer.expires = jiffies + msecs_to_jiffies(6 * HZ);
935 acb->eternal_timer.data = (unsigned long) acb;
936 acb->eternal_timer.function = &arcmsr_request_device_map;
937 add_timer(&acb->eternal_timer); 933 add_timer(&acb->eternal_timer);
938 return 0; 934 return 0;
939controller_stop: 935controller_stop:
@@ -3459,9 +3455,9 @@ static void arcmsr_hbaD_request_device_map(struct AdapterControlBlock *acb)
3459 } 3455 }
3460} 3456}
3461 3457
3462static void arcmsr_request_device_map(unsigned long pacb) 3458static void arcmsr_request_device_map(struct timer_list *t)
3463{ 3459{
3464 struct AdapterControlBlock *acb = (struct AdapterControlBlock *)pacb; 3460 struct AdapterControlBlock *acb = from_timer(acb, t, eternal_timer);
3465 switch (acb->adapter_type) { 3461 switch (acb->adapter_type) {
3466 case ACB_ADAPTER_TYPE_A: { 3462 case ACB_ADAPTER_TYPE_A: {
3467 arcmsr_hbaA_request_device_map(acb); 3463 arcmsr_hbaA_request_device_map(acb);
diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c
index 24388795ee9a..f4775ca70bab 100644
--- a/drivers/scsi/arm/fas216.c
+++ b/drivers/scsi/arm/fas216.c
@@ -2318,9 +2318,9 @@ DEF_SCSI_QCMD(fas216_noqueue_command)
2318 * Error handler timeout function. Indicate that we timed out, 2318 * Error handler timeout function. Indicate that we timed out,
2319 * and wake up any error handler process so it can continue. 2319 * and wake up any error handler process so it can continue.
2320 */ 2320 */
2321static void fas216_eh_timer(unsigned long data) 2321static void fas216_eh_timer(struct timer_list *t)
2322{ 2322{
2323 FAS216_Info *info = (FAS216_Info *)data; 2323 FAS216_Info *info = from_timer(info, t, eh_timer);
2324 2324
2325 fas216_log(info, LOG_ERROR, "error handling timed out\n"); 2325 fas216_log(info, LOG_ERROR, "error handling timed out\n");
2326 2326
@@ -2849,9 +2849,7 @@ int fas216_init(struct Scsi_Host *host)
2849 info->rst_dev_status = -1; 2849 info->rst_dev_status = -1;
2850 info->rst_bus_status = -1; 2850 info->rst_bus_status = -1;
2851 init_waitqueue_head(&info->eh_wait); 2851 init_waitqueue_head(&info->eh_wait);
2852 init_timer(&info->eh_timer); 2852 timer_setup(&info->eh_timer, fas216_eh_timer, 0);
2853 info->eh_timer.data = (unsigned long)info;
2854 info->eh_timer.function = fas216_eh_timer;
2855 2853
2856 spin_lock_init(&info->host_lock); 2854 spin_lock_init(&info->host_lock);
2857 2855
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index be96aa1e5077..b3cfdd5f4d1c 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5279,7 +5279,7 @@ static void beiscsi_hw_health_check(struct timer_list *t)
5279 if (!test_bit(BEISCSI_HBA_UER_SUPP, &phba->state)) 5279 if (!test_bit(BEISCSI_HBA_UER_SUPP, &phba->state))
5280 return; 5280 return;
5281 /* modify this timer to check TPE */ 5281 /* modify this timer to check TPE */
5282 phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_tpe_check; 5282 phba->hw_check.function = beiscsi_hw_tpe_check;
5283 } 5283 }
5284 5284
5285 mod_timer(&phba->hw_check, 5285 mod_timer(&phba->hw_check,
@@ -5367,7 +5367,7 @@ static int beiscsi_enable_port(struct beiscsi_hba *phba)
5367 * Timer function gets modified for TPE detection. 5367 * Timer function gets modified for TPE detection.
5368 * Always reinit to do health check first. 5368 * Always reinit to do health check first.
5369 */ 5369 */
5370 phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_health_check; 5370 phba->hw_check.function = beiscsi_hw_health_check;
5371 mod_timer(&phba->hw_check, 5371 mod_timer(&phba->hw_check,
5372 jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL)); 5372 jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL));
5373 return 0; 5373 return 0;
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index 5caf5f3ff642..cf0466686804 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -692,9 +692,9 @@ ext:
692} 692}
693 693
694void 694void
695bfad_bfa_tmo(unsigned long data) 695bfad_bfa_tmo(struct timer_list *t)
696{ 696{
697 struct bfad_s *bfad = (struct bfad_s *) data; 697 struct bfad_s *bfad = from_timer(bfad, t, hal_tmo);
698 unsigned long flags; 698 unsigned long flags;
699 struct list_head doneq; 699 struct list_head doneq;
700 700
@@ -719,9 +719,7 @@ bfad_bfa_tmo(unsigned long data)
719void 719void
720bfad_init_timer(struct bfad_s *bfad) 720bfad_init_timer(struct bfad_s *bfad)
721{ 721{
722 init_timer(&bfad->hal_tmo); 722 timer_setup(&bfad->hal_tmo, bfad_bfa_tmo, 0);
723 bfad->hal_tmo.function = bfad_bfa_tmo;
724 bfad->hal_tmo.data = (unsigned long)bfad;
725 723
726 mod_timer(&bfad->hal_tmo, 724 mod_timer(&bfad->hal_tmo,
727 jiffies + msecs_to_jiffies(BFA_TIMER_FREQ)); 725 jiffies + msecs_to_jiffies(BFA_TIMER_FREQ));
diff --git a/drivers/scsi/bfa/bfad_drv.h b/drivers/scsi/bfa/bfad_drv.h
index cfcfff48e8e1..4fe980a6441f 100644
--- a/drivers/scsi/bfa/bfad_drv.h
+++ b/drivers/scsi/bfa/bfad_drv.h
@@ -314,7 +314,7 @@ int bfad_setup_intr(struct bfad_s *bfad);
314void bfad_remove_intr(struct bfad_s *bfad); 314void bfad_remove_intr(struct bfad_s *bfad);
315void bfad_update_hal_cfg(struct bfa_iocfc_cfg_s *bfa_cfg); 315void bfad_update_hal_cfg(struct bfa_iocfc_cfg_s *bfa_cfg);
316bfa_status_t bfad_hal_mem_alloc(struct bfad_s *bfad); 316bfa_status_t bfad_hal_mem_alloc(struct bfad_s *bfad);
317void bfad_bfa_tmo(unsigned long data); 317void bfad_bfa_tmo(struct timer_list *t);
318void bfad_init_timer(struct bfad_s *bfad); 318void bfad_init_timer(struct bfad_s *bfad);
319int bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad); 319int bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad);
320void bfad_pci_uninit(struct pci_dev *pdev, struct bfad_s *bfad); 320void bfad_pci_uninit(struct pci_dev *pdev, struct bfad_s *bfad);
diff --git a/drivers/scsi/bnx2fc/bnx2fc_tgt.c b/drivers/scsi/bnx2fc/bnx2fc_tgt.c
index 59a2dfbcbc69..a8ae1a019eea 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_tgt.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_tgt.c
@@ -14,8 +14,8 @@
14 */ 14 */
15 15
16#include "bnx2fc.h" 16#include "bnx2fc.h"
17static void bnx2fc_upld_timer(unsigned long data); 17static void bnx2fc_upld_timer(struct timer_list *t);
18static void bnx2fc_ofld_timer(unsigned long data); 18static void bnx2fc_ofld_timer(struct timer_list *t);
19static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt, 19static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt,
20 struct fcoe_port *port, 20 struct fcoe_port *port,
21 struct fc_rport_priv *rdata); 21 struct fc_rport_priv *rdata);
@@ -27,10 +27,10 @@ static void bnx2fc_free_session_resc(struct bnx2fc_hba *hba,
27 struct bnx2fc_rport *tgt); 27 struct bnx2fc_rport *tgt);
28static void bnx2fc_free_conn_id(struct bnx2fc_hba *hba, u32 conn_id); 28static void bnx2fc_free_conn_id(struct bnx2fc_hba *hba, u32 conn_id);
29 29
30static void bnx2fc_upld_timer(unsigned long data) 30static void bnx2fc_upld_timer(struct timer_list *t)
31{ 31{
32 32
33 struct bnx2fc_rport *tgt = (struct bnx2fc_rport *)data; 33 struct bnx2fc_rport *tgt = from_timer(tgt, t, upld_timer);
34 34
35 BNX2FC_TGT_DBG(tgt, "upld_timer - Upload compl not received!!\n"); 35 BNX2FC_TGT_DBG(tgt, "upld_timer - Upload compl not received!!\n");
36 /* fake upload completion */ 36 /* fake upload completion */
@@ -40,10 +40,10 @@ static void bnx2fc_upld_timer(unsigned long data)
40 wake_up_interruptible(&tgt->upld_wait); 40 wake_up_interruptible(&tgt->upld_wait);
41} 41}
42 42
43static void bnx2fc_ofld_timer(unsigned long data) 43static void bnx2fc_ofld_timer(struct timer_list *t)
44{ 44{
45 45
46 struct bnx2fc_rport *tgt = (struct bnx2fc_rport *)data; 46 struct bnx2fc_rport *tgt = from_timer(tgt, t, ofld_timer);
47 47
48 BNX2FC_TGT_DBG(tgt, "entered bnx2fc_ofld_timer\n"); 48 BNX2FC_TGT_DBG(tgt, "entered bnx2fc_ofld_timer\n");
49 /* NOTE: This function should never be called, as 49 /* NOTE: This function should never be called, as
@@ -65,7 +65,7 @@ static void bnx2fc_ofld_timer(unsigned long data)
65 65
66static void bnx2fc_ofld_wait(struct bnx2fc_rport *tgt) 66static void bnx2fc_ofld_wait(struct bnx2fc_rport *tgt)
67{ 67{
68 setup_timer(&tgt->ofld_timer, bnx2fc_ofld_timer, (unsigned long)tgt); 68 timer_setup(&tgt->ofld_timer, bnx2fc_ofld_timer, 0);
69 mod_timer(&tgt->ofld_timer, jiffies + BNX2FC_FW_TIMEOUT); 69 mod_timer(&tgt->ofld_timer, jiffies + BNX2FC_FW_TIMEOUT);
70 70
71 wait_event_interruptible(tgt->ofld_wait, 71 wait_event_interruptible(tgt->ofld_wait,
@@ -277,7 +277,7 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
277 277
278static void bnx2fc_upld_wait(struct bnx2fc_rport *tgt) 278static void bnx2fc_upld_wait(struct bnx2fc_rport *tgt)
279{ 279{
280 setup_timer(&tgt->upld_timer, bnx2fc_upld_timer, (unsigned long)tgt); 280 timer_setup(&tgt->upld_timer, bnx2fc_upld_timer, 0);
281 mod_timer(&tgt->upld_timer, jiffies + BNX2FC_FW_TIMEOUT); 281 mod_timer(&tgt->upld_timer, jiffies + BNX2FC_FW_TIMEOUT);
282 wait_event_interruptible(tgt->upld_wait, 282 wait_event_interruptible(tgt->upld_wait,
283 (test_bit( 283 (test_bit(
diff --git a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
index babd79361a46..bf07735275a4 100644
--- a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
+++ b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
@@ -586,8 +586,8 @@ static int do_act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
586 cxgbi_sock_get(csk); 586 cxgbi_sock_get(csk);
587 spin_lock_bh(&csk->lock); 587 spin_lock_bh(&csk->lock);
588 if (rpl->status == CPL_ERR_CONN_EXIST && 588 if (rpl->status == CPL_ERR_CONN_EXIST &&
589 csk->retry_timer.function != (TIMER_FUNC_TYPE)act_open_retry_timer) { 589 csk->retry_timer.function != act_open_retry_timer) {
590 csk->retry_timer.function = (TIMER_FUNC_TYPE)act_open_retry_timer; 590 csk->retry_timer.function = act_open_retry_timer;
591 mod_timer(&csk->retry_timer, jiffies + HZ / 2); 591 mod_timer(&csk->retry_timer, jiffies + HZ / 2);
592 } else 592 } else
593 cxgbi_sock_fail_act_open(csk, 593 cxgbi_sock_fail_act_open(csk,
diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
index 266eddf17a99..406e94312d4e 100644
--- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
+++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
@@ -963,8 +963,8 @@ static void do_act_open_rpl(struct cxgbi_device *cdev, struct sk_buff *skb)
963 spin_lock_bh(&csk->lock); 963 spin_lock_bh(&csk->lock);
964 964
965 if (status == CPL_ERR_CONN_EXIST && 965 if (status == CPL_ERR_CONN_EXIST &&
966 csk->retry_timer.function != (TIMER_FUNC_TYPE)csk_act_open_retry_timer) { 966 csk->retry_timer.function != csk_act_open_retry_timer) {
967 csk->retry_timer.function = (TIMER_FUNC_TYPE)csk_act_open_retry_timer; 967 csk->retry_timer.function = csk_act_open_retry_timer;
968 mod_timer(&csk->retry_timer, jiffies + HZ / 2); 968 mod_timer(&csk->retry_timer, jiffies + HZ / 2);
969 } else 969 } else
970 cxgbi_sock_fail_act_open(csk, 970 cxgbi_sock_fail_act_open(csk,
diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c
index 81f226be3e3b..4eb14301a497 100644
--- a/drivers/scsi/esas2r/esas2r_main.c
+++ b/drivers/scsi/esas2r/esas2r_main.c
@@ -1631,23 +1631,21 @@ void esas2r_adapter_tasklet(unsigned long context)
1631 } 1631 }
1632} 1632}
1633 1633
1634static void esas2r_timer_callback(unsigned long context); 1634static void esas2r_timer_callback(struct timer_list *t);
1635 1635
1636void esas2r_kickoff_timer(struct esas2r_adapter *a) 1636void esas2r_kickoff_timer(struct esas2r_adapter *a)
1637{ 1637{
1638 init_timer(&a->timer); 1638 timer_setup(&a->timer, esas2r_timer_callback, 0);
1639 1639
1640 a->timer.function = esas2r_timer_callback;
1641 a->timer.data = (unsigned long)a;
1642 a->timer.expires = jiffies + 1640 a->timer.expires = jiffies +
1643 msecs_to_jiffies(100); 1641 msecs_to_jiffies(100);
1644 1642
1645 add_timer(&a->timer); 1643 add_timer(&a->timer);
1646} 1644}
1647 1645
1648static void esas2r_timer_callback(unsigned long context) 1646static void esas2r_timer_callback(struct timer_list *t)
1649{ 1647{
1650 struct esas2r_adapter *a = (struct esas2r_adapter *)context; 1648 struct esas2r_adapter *a = from_timer(a, t, timer);
1651 1649
1652 set_bit(AF2_TIMER_TICK, &a->flags2); 1650 set_bit(AF2_TIMER_TICK, &a->flags2);
1653 1651
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
index fff6f1851dc1..097f37de6ce9 100644
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
@@ -49,7 +49,7 @@
49#define FCOE_CTLR_MIN_FKA 500 /* min keep alive (mS) */ 49#define FCOE_CTLR_MIN_FKA 500 /* min keep alive (mS) */
50#define FCOE_CTLR_DEF_FKA FIP_DEF_FKA /* default keep alive (mS) */ 50#define FCOE_CTLR_DEF_FKA FIP_DEF_FKA /* default keep alive (mS) */
51 51
52static void fcoe_ctlr_timeout(unsigned long); 52static void fcoe_ctlr_timeout(struct timer_list *);
53static void fcoe_ctlr_timer_work(struct work_struct *); 53static void fcoe_ctlr_timer_work(struct work_struct *);
54static void fcoe_ctlr_recv_work(struct work_struct *); 54static void fcoe_ctlr_recv_work(struct work_struct *);
55static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *); 55static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *);
@@ -156,7 +156,7 @@ void fcoe_ctlr_init(struct fcoe_ctlr *fip, enum fip_state mode)
156 mutex_init(&fip->ctlr_mutex); 156 mutex_init(&fip->ctlr_mutex);
157 spin_lock_init(&fip->ctlr_lock); 157 spin_lock_init(&fip->ctlr_lock);
158 fip->flogi_oxid = FC_XID_UNKNOWN; 158 fip->flogi_oxid = FC_XID_UNKNOWN;
159 setup_timer(&fip->timer, fcoe_ctlr_timeout, (unsigned long)fip); 159 timer_setup(&fip->timer, fcoe_ctlr_timeout, 0);
160 INIT_WORK(&fip->timer_work, fcoe_ctlr_timer_work); 160 INIT_WORK(&fip->timer_work, fcoe_ctlr_timer_work);
161 INIT_WORK(&fip->recv_work, fcoe_ctlr_recv_work); 161 INIT_WORK(&fip->recv_work, fcoe_ctlr_recv_work);
162 skb_queue_head_init(&fip->fip_recv_list); 162 skb_queue_head_init(&fip->fip_recv_list);
@@ -1786,9 +1786,9 @@ unlock:
1786 * fcoe_ctlr_timeout() - FIP timeout handler 1786 * fcoe_ctlr_timeout() - FIP timeout handler
1787 * @arg: The FCoE controller that timed out 1787 * @arg: The FCoE controller that timed out
1788 */ 1788 */
1789static void fcoe_ctlr_timeout(unsigned long arg) 1789static void fcoe_ctlr_timeout(struct timer_list *t)
1790{ 1790{
1791 struct fcoe_ctlr *fip = (struct fcoe_ctlr *)arg; 1791 struct fcoe_ctlr *fip = from_timer(fip, t, timer);
1792 1792
1793 schedule_work(&fip->timer_work); 1793 schedule_work(&fip->timer_work);
1794} 1794}
diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c
index aacadbf20b69..e52599f44170 100644
--- a/drivers/scsi/fnic/fnic_main.c
+++ b/drivers/scsi/fnic/fnic_main.c
@@ -407,18 +407,18 @@ static int fnic_notify_set(struct fnic *fnic)
407 return err; 407 return err;
408} 408}
409 409
410static void fnic_notify_timer(unsigned long data) 410static void fnic_notify_timer(struct timer_list *t)
411{ 411{
412 struct fnic *fnic = (struct fnic *)data; 412 struct fnic *fnic = from_timer(fnic, t, notify_timer);
413 413
414 fnic_handle_link_event(fnic); 414 fnic_handle_link_event(fnic);
415 mod_timer(&fnic->notify_timer, 415 mod_timer(&fnic->notify_timer,
416 round_jiffies(jiffies + FNIC_NOTIFY_TIMER_PERIOD)); 416 round_jiffies(jiffies + FNIC_NOTIFY_TIMER_PERIOD));
417} 417}
418 418
419static void fnic_fip_notify_timer(unsigned long data) 419static void fnic_fip_notify_timer(struct timer_list *t)
420{ 420{
421 struct fnic *fnic = (struct fnic *)data; 421 struct fnic *fnic = from_timer(fnic, t, fip_timer);
422 422
423 fnic_handle_fip_timer(fnic); 423 fnic_handle_fip_timer(fnic);
424} 424}
@@ -777,8 +777,7 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
777 vnic_dev_add_addr(fnic->vdev, fnic->ctlr.ctl_src_addr); 777 vnic_dev_add_addr(fnic->vdev, fnic->ctlr.ctl_src_addr);
778 fnic->set_vlan = fnic_set_vlan; 778 fnic->set_vlan = fnic_set_vlan;
779 fcoe_ctlr_init(&fnic->ctlr, FIP_MODE_AUTO); 779 fcoe_ctlr_init(&fnic->ctlr, FIP_MODE_AUTO);
780 setup_timer(&fnic->fip_timer, fnic_fip_notify_timer, 780 timer_setup(&fnic->fip_timer, fnic_fip_notify_timer, 0);
781 (unsigned long)fnic);
782 spin_lock_init(&fnic->vlans_lock); 781 spin_lock_init(&fnic->vlans_lock);
783 INIT_WORK(&fnic->fip_frame_work, fnic_handle_fip_frame); 782 INIT_WORK(&fnic->fip_frame_work, fnic_handle_fip_frame);
784 INIT_WORK(&fnic->event_work, fnic_handle_event); 783 INIT_WORK(&fnic->event_work, fnic_handle_event);
@@ -809,8 +808,7 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
809 808
810 /* Setup notify timer when using MSI interrupts */ 809 /* Setup notify timer when using MSI interrupts */
811 if (vnic_dev_get_intr_mode(fnic->vdev) == VNIC_DEV_INTR_MODE_MSI) 810 if (vnic_dev_get_intr_mode(fnic->vdev) == VNIC_DEV_INTR_MODE_MSI)
812 setup_timer(&fnic->notify_timer, 811 timer_setup(&fnic->notify_timer, fnic_notify_timer, 0);
813 fnic_notify_timer, (unsigned long)fnic);
814 812
815 /* allocate RQ buffers and post them to RQ*/ 813 /* allocate RQ buffers and post them to RQ*/
816 for (i = 0; i < fnic->rq_count; i++) { 814 for (i = 0; i < fnic->rq_count; i++) {
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 61a85ff8e459..5f503cb09508 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -839,7 +839,7 @@ static int hisi_sas_exec_internal_tmf_task(struct domain_device *device,
839 } 839 }
840 task->task_done = hisi_sas_task_done; 840 task->task_done = hisi_sas_task_done;
841 841
842 task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout; 842 task->slow_task->timer.function = hisi_sas_tmf_timedout;
843 task->slow_task->timer.expires = jiffies + TASK_TIMEOUT*HZ; 843 task->slow_task->timer.expires = jiffies + TASK_TIMEOUT*HZ;
844 add_timer(&task->slow_task->timer); 844 add_timer(&task->slow_task->timer);
845 845
@@ -1451,7 +1451,7 @@ hisi_sas_internal_task_abort(struct hisi_hba *hisi_hba,
1451 task->dev = device; 1451 task->dev = device;
1452 task->task_proto = device->tproto; 1452 task->task_proto = device->tproto;
1453 task->task_done = hisi_sas_task_done; 1453 task->task_done = hisi_sas_task_done;
1454 task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout; 1454 task->slow_task->timer.function = hisi_sas_tmf_timedout;
1455 task->slow_task->timer.expires = jiffies + msecs_to_jiffies(110); 1455 task->slow_task->timer.expires = jiffies + msecs_to_jiffies(110);
1456 add_timer(&task->slow_task->timer); 1456 add_timer(&task->slow_task->timer);
1457 1457
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index d02c2a791981..5d3467fd728d 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -1268,7 +1268,7 @@ static void link_timeout_enable_link(struct timer_list *t)
1268 } 1268 }
1269 } 1269 }
1270 1270
1271 hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link; 1271 hisi_hba->timer.function = link_timeout_disable_link;
1272 mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(900)); 1272 mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(900));
1273} 1273}
1274 1274
@@ -1289,13 +1289,13 @@ static void link_timeout_disable_link(struct timer_list *t)
1289 } 1289 }
1290 } 1290 }
1291 1291
1292 hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_enable_link; 1292 hisi_hba->timer.function = link_timeout_enable_link;
1293 mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(100)); 1293 mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(100));
1294} 1294}
1295 1295
1296static void set_link_timer_quirk(struct hisi_hba *hisi_hba) 1296static void set_link_timer_quirk(struct hisi_hba *hisi_hba)
1297{ 1297{
1298 hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link; 1298 hisi_hba->timer.function = link_timeout_disable_link;
1299 hisi_hba->timer.expires = jiffies + msecs_to_jiffies(1000); 1299 hisi_hba->timer.expires = jiffies + msecs_to_jiffies(1000);
1300 add_timer(&hisi_hba->timer); 1300 add_timer(&hisi_hba->timer);
1301} 1301}
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index d53429371127..cc0187965eee 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -997,7 +997,7 @@ static void ipr_do_req(struct ipr_cmnd *ipr_cmd,
997 ipr_cmd->done = done; 997 ipr_cmd->done = done;
998 998
999 ipr_cmd->timer.expires = jiffies + timeout; 999 ipr_cmd->timer.expires = jiffies + timeout;
1000 ipr_cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func; 1000 ipr_cmd->timer.function = timeout_func;
1001 1001
1002 add_timer(&ipr_cmd->timer); 1002 add_timer(&ipr_cmd->timer);
1003 1003
@@ -8312,7 +8312,7 @@ static void ipr_reset_start_timer(struct ipr_cmnd *ipr_cmd,
8312 ipr_cmd->done = ipr_reset_ioa_job; 8312 ipr_cmd->done = ipr_reset_ioa_job;
8313 8313
8314 ipr_cmd->timer.expires = jiffies + timeout; 8314 ipr_cmd->timer.expires = jiffies + timeout;
8315 ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_reset_timer_done; 8315 ipr_cmd->timer.function = ipr_reset_timer_done;
8316 add_timer(&ipr_cmd->timer); 8316 add_timer(&ipr_cmd->timer);
8317} 8317}
8318 8318
@@ -8397,7 +8397,7 @@ static int ipr_reset_next_stage(struct ipr_cmnd *ipr_cmd)
8397 } 8397 }
8398 8398
8399 ipr_cmd->timer.expires = jiffies + stage_time * HZ; 8399 ipr_cmd->timer.expires = jiffies + stage_time * HZ;
8400 ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout; 8400 ipr_cmd->timer.function = ipr_oper_timeout;
8401 ipr_cmd->done = ipr_reset_ioa_job; 8401 ipr_cmd->done = ipr_reset_ioa_job;
8402 add_timer(&ipr_cmd->timer); 8402 add_timer(&ipr_cmd->timer);
8403 8403
@@ -8468,7 +8468,7 @@ static int ipr_reset_enable_ioa(struct ipr_cmnd *ipr_cmd)
8468 } 8468 }
8469 8469
8470 ipr_cmd->timer.expires = jiffies + (ioa_cfg->transop_timeout * HZ); 8470 ipr_cmd->timer.expires = jiffies + (ioa_cfg->transop_timeout * HZ);
8471 ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout; 8471 ipr_cmd->timer.function = ipr_oper_timeout;
8472 ipr_cmd->done = ipr_reset_ioa_job; 8472 ipr_cmd->done = ipr_reset_ioa_job;
8473 add_timer(&ipr_cmd->timer); 8473 add_timer(&ipr_cmd->timer);
8474 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q); 8474 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q);
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 1a4e701a8449..4fae253d4f3d 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -1214,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
1214 fsp->seq_ptr = seq; 1214 fsp->seq_ptr = seq;
1215 fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */ 1215 fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */
1216 1216
1217 fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout; 1217 fsp->timer.function = fc_fcp_timeout;
1218 if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED) 1218 if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED)
1219 fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); 1219 fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
1220 1220
@@ -1307,7 +1307,7 @@ static void fc_lun_reset_send(struct timer_list *t)
1307 return; 1307 return;
1308 if (fc_fcp_lock_pkt(fsp)) 1308 if (fc_fcp_lock_pkt(fsp))
1309 return; 1309 return;
1310 fsp->timer.function = (TIMER_FUNC_TYPE)fc_lun_reset_send; 1310 fsp->timer.function = fc_lun_reset_send;
1311 fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); 1311 fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
1312 fc_fcp_unlock_pkt(fsp); 1312 fc_fcp_unlock_pkt(fsp);
1313 } 1313 }
@@ -1445,7 +1445,7 @@ static void fc_fcp_timeout(struct timer_list *t)
1445 if (fsp->lp->qfull) { 1445 if (fsp->lp->qfull) {
1446 FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n", 1446 FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n",
1447 fsp->timer_delay); 1447 fsp->timer_delay);
1448 fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout; 1448 fsp->timer.function = fc_fcp_timeout;
1449 fc_fcp_timer_set(fsp, fsp->timer_delay); 1449 fc_fcp_timer_set(fsp, fsp->timer_delay);
1450 goto unlock; 1450 goto unlock;
1451 } 1451 }
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index 174e5eff6155..ca1566237ae7 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -92,7 +92,7 @@ static int smp_execute_task_sg(struct domain_device *dev,
92 92
93 task->task_done = smp_task_done; 93 task->task_done = smp_task_done;
94 94
95 task->slow_task->timer.function = (TIMER_FUNC_TYPE)smp_task_timedout; 95 task->slow_task->timer.function = smp_task_timedout;
96 task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ; 96 task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
97 add_timer(&task->slow_task->timer); 97 add_timer(&task->slow_task->timer);
98 98
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index 91795eb56206..58476b728c57 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -919,7 +919,7 @@ void sas_task_abort(struct sas_task *task)
919 return; 919 return;
920 if (!del_timer(&slow->timer)) 920 if (!del_timer(&slow->timer))
921 return; 921 return;
922 slow->timer.function((TIMER_DATA_TYPE)&slow->timer); 922 slow->timer.function(&slow->timer);
923 return; 923 return;
924 } 924 }
925 925
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index cff1c37b8d2e..cff43bd9f675 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -1310,7 +1310,7 @@ static int mvs_exec_internal_tmf_task(struct domain_device *dev,
1310 memcpy(&task->ssp_task, parameter, para_len); 1310 memcpy(&task->ssp_task, parameter, para_len);
1311 task->task_done = mvs_task_done; 1311 task->task_done = mvs_task_done;
1312 1312
1313 task->slow_task->timer.function = (TIMER_FUNC_TYPE)mvs_tmf_timedout; 1313 task->slow_task->timer.function = mvs_tmf_timedout;
1314 task->slow_task->timer.expires = jiffies + MVS_TASK_TIMEOUT*HZ; 1314 task->slow_task->timer.expires = jiffies + MVS_TASK_TIMEOUT*HZ;
1315 add_timer(&task->slow_task->timer); 1315 add_timer(&task->slow_task->timer);
1316 1316
@@ -2020,7 +2020,7 @@ void mvs_int_port(struct mvs_info *mvi, int phy_no, u32 events)
2020 MVS_CHIP_DISP->write_port_irq_mask(mvi, phy_no, 2020 MVS_CHIP_DISP->write_port_irq_mask(mvi, phy_no,
2021 tmp | PHYEV_SIG_FIS); 2021 tmp | PHYEV_SIG_FIS);
2022 if (phy->timer.function == NULL) { 2022 if (phy->timer.function == NULL) {
2023 phy->timer.function = (TIMER_FUNC_TYPE)mvs_sig_time_out; 2023 phy->timer.function = mvs_sig_time_out;
2024 phy->timer.expires = jiffies + 5*HZ; 2024 phy->timer.expires = jiffies + 5*HZ;
2025 add_timer(&phy->timer); 2025 add_timer(&phy->timer);
2026 } 2026 }
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 5b93ed810f6e..dc4e801b2cef 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -8093,9 +8093,9 @@ irqreturn_t ncr53c8xx_intr(int irq, void *dev_id)
8093 return IRQ_HANDLED; 8093 return IRQ_HANDLED;
8094} 8094}
8095 8095
8096static void ncr53c8xx_timeout(unsigned long npref) 8096static void ncr53c8xx_timeout(struct timer_list *t)
8097{ 8097{
8098 struct ncb *np = (struct ncb *) npref; 8098 struct ncb *np = from_timer(np, t, timer);
8099 unsigned long flags; 8099 unsigned long flags;
8100 struct scsi_cmnd *done_list; 8100 struct scsi_cmnd *done_list;
8101 8101
@@ -8357,9 +8357,7 @@ struct Scsi_Host * __init ncr_attach(struct scsi_host_template *tpnt,
8357 if (!np->scripth0) 8357 if (!np->scripth0)
8358 goto attach_error; 8358 goto attach_error;
8359 8359
8360 init_timer(&np->timer); 8360 timer_setup(&np->timer, ncr53c8xx_timeout, 0);
8361 np->timer.data = (unsigned long) np;
8362 np->timer.function = ncr53c8xx_timeout;
8363 8361
8364 /* Try to map the controller chip to virtual and physical memory. */ 8362 /* Try to map the controller chip to virtual and physical memory. */
8365 8363
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index 0e294e80c169..947d6017d004 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -695,7 +695,7 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev,
695 task->task_proto = dev->tproto; 695 task->task_proto = dev->tproto;
696 memcpy(&task->ssp_task, parameter, para_len); 696 memcpy(&task->ssp_task, parameter, para_len);
697 task->task_done = pm8001_task_done; 697 task->task_done = pm8001_task_done;
698 task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout; 698 task->slow_task->timer.function = pm8001_tmf_timedout;
699 task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT*HZ; 699 task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT*HZ;
700 add_timer(&task->slow_task->timer); 700 add_timer(&task->slow_task->timer);
701 701
@@ -781,7 +781,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
781 task->dev = dev; 781 task->dev = dev;
782 task->task_proto = dev->tproto; 782 task->task_proto = dev->tproto;
783 task->task_done = pm8001_task_done; 783 task->task_done = pm8001_task_done;
784 task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout; 784 task->slow_task->timer.function = pm8001_tmf_timedout;
785 task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ; 785 task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ;
786 add_timer(&task->slow_task->timer); 786 add_timer(&task->slow_task->timer);
787 787
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index 4f9f115fb6a0..e58be98430b0 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -604,7 +604,7 @@ static void pmcraid_start_bist(struct pmcraid_cmd *cmd)
604 604
605 cmd->time_left = msecs_to_jiffies(PMCRAID_BIST_TIMEOUT); 605 cmd->time_left = msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
606 cmd->timer.expires = jiffies + msecs_to_jiffies(PMCRAID_BIST_TIMEOUT); 606 cmd->timer.expires = jiffies + msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
607 cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_bist_done; 607 cmd->timer.function = pmcraid_bist_done;
608 add_timer(&cmd->timer); 608 add_timer(&cmd->timer);
609} 609}
610 610
@@ -636,7 +636,7 @@ static void pmcraid_reset_alert_done(struct timer_list *t)
636 /* restart timer if some more time is available to wait */ 636 /* restart timer if some more time is available to wait */
637 cmd->time_left -= PMCRAID_CHECK_FOR_RESET_TIMEOUT; 637 cmd->time_left -= PMCRAID_CHECK_FOR_RESET_TIMEOUT;
638 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT; 638 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
639 cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done; 639 cmd->timer.function = pmcraid_reset_alert_done;
640 add_timer(&cmd->timer); 640 add_timer(&cmd->timer);
641 } 641 }
642} 642}
@@ -673,7 +673,7 @@ static void pmcraid_reset_alert(struct pmcraid_cmd *cmd)
673 */ 673 */
674 cmd->time_left = PMCRAID_RESET_TIMEOUT; 674 cmd->time_left = PMCRAID_RESET_TIMEOUT;
675 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT; 675 cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
676 cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done; 676 cmd->timer.function = pmcraid_reset_alert_done;
677 add_timer(&cmd->timer); 677 add_timer(&cmd->timer);
678 678
679 iowrite32(DOORBELL_IOA_RESET_ALERT, 679 iowrite32(DOORBELL_IOA_RESET_ALERT,
@@ -923,7 +923,7 @@ static void pmcraid_send_cmd(
923 if (timeout_func) { 923 if (timeout_func) {
924 /* setup timeout handler */ 924 /* setup timeout handler */
925 cmd->timer.expires = jiffies + timeout; 925 cmd->timer.expires = jiffies + timeout;
926 cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func; 926 cmd->timer.function = timeout_func;
927 add_timer(&cmd->timer); 927 add_timer(&cmd->timer);
928 } 928 }
929 929
@@ -1951,7 +1951,7 @@ static void pmcraid_soft_reset(struct pmcraid_cmd *cmd)
1951 cmd->cmd_done = pmcraid_ioa_reset; 1951 cmd->cmd_done = pmcraid_ioa_reset;
1952 cmd->timer.expires = jiffies + 1952 cmd->timer.expires = jiffies +
1953 msecs_to_jiffies(PMCRAID_TRANSOP_TIMEOUT); 1953 msecs_to_jiffies(PMCRAID_TRANSOP_TIMEOUT);
1954 cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_timeout_handler; 1954 cmd->timer.function = pmcraid_timeout_handler;
1955 1955
1956 if (!timer_pending(&cmd->timer)) 1956 if (!timer_pending(&cmd->timer))
1957 add_timer(&cmd->timer); 1957 add_timer(&cmd->timer);
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
index d32e3ba8863e..791a2182de53 100644
--- a/drivers/scsi/sym53c8xx_2/sym_glue.c
+++ b/drivers/scsi/sym53c8xx_2/sym_glue.c
@@ -565,9 +565,9 @@ static irqreturn_t sym53c8xx_intr(int irq, void *dev_id)
565/* 565/*
566 * Linux entry point of the timer handler 566 * Linux entry point of the timer handler
567 */ 567 */
568static void sym53c8xx_timer(unsigned long npref) 568static void sym53c8xx_timer(struct timer_list *t)
569{ 569{
570 struct sym_hcb *np = (struct sym_hcb *)npref; 570 struct sym_hcb *np = from_timer(np, t, s.timer);
571 unsigned long flags; 571 unsigned long flags;
572 572
573 spin_lock_irqsave(np->s.host->host_lock, flags); 573 spin_lock_irqsave(np->s.host->host_lock, flags);
@@ -1351,9 +1351,7 @@ static struct Scsi_Host *sym_attach(struct scsi_host_template *tpnt, int unit,
1351 /* 1351 /*
1352 * Start the timer daemon 1352 * Start the timer daemon
1353 */ 1353 */
1354 init_timer(&np->s.timer); 1354 timer_setup(&np->s.timer, sym53c8xx_timer, 0);
1355 np->s.timer.data = (unsigned long) np;
1356 np->s.timer.function = sym53c8xx_timer;
1357 np->s.lasttime=0; 1355 np->s.lasttime=0;
1358 sym_timer (np); 1356 sym_timer (np);
1359 1357
diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index 609332b3e15b..c462b1c046cd 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -293,9 +293,9 @@ static void gb_operation_work(struct work_struct *work)
293 gb_operation_put(operation); 293 gb_operation_put(operation);
294} 294}
295 295
296static void gb_operation_timeout(unsigned long arg) 296static void gb_operation_timeout(struct timer_list *t)
297{ 297{
298 struct gb_operation *operation = (void *)arg; 298 struct gb_operation *operation = from_timer(operation, t, timer);
299 299
300 if (gb_operation_result_set(operation, -ETIMEDOUT)) { 300 if (gb_operation_result_set(operation, -ETIMEDOUT)) {
301 /* 301 /*
@@ -540,8 +540,7 @@ gb_operation_create_common(struct gb_connection *connection, u8 type,
540 goto err_request; 540 goto err_request;
541 } 541 }
542 542
543 setup_timer(&operation->timer, gb_operation_timeout, 543 timer_setup(&operation->timer, gb_operation_timeout, 0);
544 (unsigned long)operation);
545 } 544 }
546 545
547 operation->flags = op_flags; 546 operation->flags = op_flags;
diff --git a/drivers/staging/irda/include/net/irda/timer.h b/drivers/staging/irda/include/net/irda/timer.h
index a6635f0afae9..6dab15f5dae1 100644
--- a/drivers/staging/irda/include/net/irda/timer.h
+++ b/drivers/staging/irda/include/net/irda/timer.h
@@ -75,7 +75,7 @@ struct lap_cb;
75static inline void irda_start_timer(struct timer_list *ptimer, int timeout, 75static inline void irda_start_timer(struct timer_list *ptimer, int timeout,
76 void (*callback)(struct timer_list *)) 76 void (*callback)(struct timer_list *))
77{ 77{
78 ptimer->function = (TIMER_FUNC_TYPE) callback; 78 ptimer->function = callback;
79 79
80 /* Set new value for timer (update or add timer). 80 /* Set new value for timer (update or add timer).
81 * We use mod_timer() because it's more efficient and also 81 * We use mod_timer() because it's more efficient and also
diff --git a/drivers/staging/lustre/lnet/lnet/net_fault.c b/drivers/staging/lustre/lnet/lnet/net_fault.c
index 3c83aa31e2c2..5a5d1811ffbe 100644
--- a/drivers/staging/lustre/lnet/lnet/net_fault.c
+++ b/drivers/staging/lustre/lnet/lnet/net_fault.c
@@ -700,9 +700,9 @@ lnet_delay_rule_daemon(void *arg)
700} 700}
701 701
702static void 702static void
703delay_timer_cb(unsigned long arg) 703delay_timer_cb(struct timer_list *t)
704{ 704{
705 struct lnet_delay_rule *rule = (struct lnet_delay_rule *)arg; 705 struct lnet_delay_rule *rule = from_timer(rule, t, dl_timer);
706 706
707 spin_lock_bh(&delay_dd.dd_lock); 707 spin_lock_bh(&delay_dd.dd_lock);
708 if (list_empty(&rule->dl_sched_link) && delay_dd.dd_running) { 708 if (list_empty(&rule->dl_sched_link) && delay_dd.dd_running) {
@@ -762,7 +762,7 @@ lnet_delay_rule_add(struct lnet_fault_attr *attr)
762 wait_event(delay_dd.dd_ctl_waitq, delay_dd.dd_running); 762 wait_event(delay_dd.dd_ctl_waitq, delay_dd.dd_running);
763 } 763 }
764 764
765 setup_timer(&rule->dl_timer, delay_timer_cb, (unsigned long)rule); 765 timer_setup(&rule->dl_timer, delay_timer_cb, 0);
766 766
767 spin_lock_init(&rule->dl_lock); 767 spin_lock_init(&rule->dl_lock);
768 INIT_LIST_HEAD(&rule->dl_msg_list); 768 INIT_LIST_HEAD(&rule->dl_msg_list);
diff --git a/drivers/staging/lustre/lustre/ptlrpc/service.c b/drivers/staging/lustre/lustre/ptlrpc/service.c
index 23cdb7c4476c..63be6e7273f3 100644
--- a/drivers/staging/lustre/lustre/ptlrpc/service.c
+++ b/drivers/staging/lustre/lustre/ptlrpc/service.c
@@ -329,11 +329,11 @@ ptlrpc_server_post_idle_rqbds(struct ptlrpc_service_part *svcpt)
329 return -1; 329 return -1;
330} 330}
331 331
332static void ptlrpc_at_timer(unsigned long castmeharder) 332static void ptlrpc_at_timer(struct timer_list *t)
333{ 333{
334 struct ptlrpc_service_part *svcpt; 334 struct ptlrpc_service_part *svcpt;
335 335
336 svcpt = (struct ptlrpc_service_part *)castmeharder; 336 svcpt = from_timer(svcpt, t, scp_at_timer);
337 337
338 svcpt->scp_at_check = 1; 338 svcpt->scp_at_check = 1;
339 svcpt->scp_at_checktime = cfs_time_current(); 339 svcpt->scp_at_checktime = cfs_time_current();
@@ -506,8 +506,7 @@ ptlrpc_service_part_init(struct ptlrpc_service *svc,
506 if (!array->paa_reqs_count) 506 if (!array->paa_reqs_count)
507 goto free_reqs_array; 507 goto free_reqs_array;
508 508
509 setup_timer(&svcpt->scp_at_timer, ptlrpc_at_timer, 509 timer_setup(&svcpt->scp_at_timer, ptlrpc_at_timer, 0);
510 (unsigned long)svcpt);
511 510
512 /* At SOW, service time should be quick; 10s seems generous. If client 511 /* At SOW, service time should be quick; 10s seems generous. If client
513 * timeout is less than this, we'll be sending an early reply. 512 * timeout is less than this, we'll be sending an early reply.
@@ -926,7 +925,7 @@ static void ptlrpc_at_set_timer(struct ptlrpc_service_part *svcpt)
926 next = (__s32)(array->paa_deadline - ktime_get_real_seconds() - 925 next = (__s32)(array->paa_deadline - ktime_get_real_seconds() -
927 at_early_margin); 926 at_early_margin);
928 if (next <= 0) { 927 if (next <= 0) {
929 ptlrpc_at_timer((unsigned long)svcpt); 928 ptlrpc_at_timer(&svcpt->scp_at_timer);
930 } else { 929 } else {
931 mod_timer(&svcpt->scp_at_timer, cfs_time_shift(next)); 930 mod_timer(&svcpt->scp_at_timer, cfs_time_shift(next));
932 CDEBUG(D_INFO, "armed %s at %+ds\n", 931 CDEBUG(D_INFO, "armed %s at %+ds\n",
diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
index 0790b3d9e255..143038c6c403 100644
--- a/drivers/staging/media/imx/imx-ic-prpencvf.c
+++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
@@ -293,9 +293,9 @@ static irqreturn_t prp_nfb4eof_interrupt(int irq, void *dev_id)
293 * EOF timeout timer function. This is an unrecoverable condition 293 * EOF timeout timer function. This is an unrecoverable condition
294 * without a stream restart. 294 * without a stream restart.
295 */ 295 */
296static void prp_eof_timeout(unsigned long data) 296static void prp_eof_timeout(struct timer_list *t)
297{ 297{
298 struct prp_priv *priv = (struct prp_priv *)data; 298 struct prp_priv *priv = from_timer(priv, t, eof_timeout_timer);
299 struct imx_media_video_dev *vdev = priv->vdev; 299 struct imx_media_video_dev *vdev = priv->vdev;
300 struct imx_ic_priv *ic_priv = priv->ic_priv; 300 struct imx_ic_priv *ic_priv = priv->ic_priv;
301 301
@@ -1292,8 +1292,7 @@ static int prp_init(struct imx_ic_priv *ic_priv)
1292 priv->ic_priv = ic_priv; 1292 priv->ic_priv = ic_priv;
1293 1293
1294 spin_lock_init(&priv->irqlock); 1294 spin_lock_init(&priv->irqlock);
1295 setup_timer(&priv->eof_timeout_timer, prp_eof_timeout, 1295 timer_setup(&priv->eof_timeout_timer, prp_eof_timeout, 0);
1296 (unsigned long)priv);
1297 1296
1298 priv->vdev = imx_media_capture_device_init(&ic_priv->sd, 1297 priv->vdev = imx_media_capture_device_init(&ic_priv->sd,
1299 PRPENCVF_SRC_PAD); 1298 PRPENCVF_SRC_PAD);
diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index 6d856118c223..bb1d6dafca83 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -254,9 +254,9 @@ static irqreturn_t csi_idmac_nfb4eof_interrupt(int irq, void *dev_id)
254 * EOF timeout timer function. This is an unrecoverable condition 254 * EOF timeout timer function. This is an unrecoverable condition
255 * without a stream restart. 255 * without a stream restart.
256 */ 256 */
257static void csi_idmac_eof_timeout(unsigned long data) 257static void csi_idmac_eof_timeout(struct timer_list *t)
258{ 258{
259 struct csi_priv *priv = (struct csi_priv *)data; 259 struct csi_priv *priv = from_timer(priv, t, eof_timeout_timer);
260 struct imx_media_video_dev *vdev = priv->vdev; 260 struct imx_media_video_dev *vdev = priv->vdev;
261 261
262 v4l2_err(&priv->sd, "EOF timeout\n"); 262 v4l2_err(&priv->sd, "EOF timeout\n");
@@ -1739,8 +1739,7 @@ static int imx_csi_probe(struct platform_device *pdev)
1739 priv->csi_id = pdata->csi; 1739 priv->csi_id = pdata->csi;
1740 priv->smfc_id = (priv->csi_id == 0) ? 0 : 2; 1740 priv->smfc_id = (priv->csi_id == 0) ? 0 : 2;
1741 1741
1742 setup_timer(&priv->eof_timeout_timer, csi_idmac_eof_timeout, 1742 timer_setup(&priv->eof_timeout_timer, csi_idmac_eof_timeout, 0);
1743 (unsigned long)priv);
1744 spin_lock_init(&priv->irqlock); 1743 spin_lock_init(&priv->irqlock);
1745 1744
1746 v4l2_subdev_init(&priv->sd, &csi_subdev_ops); 1745 v4l2_subdev_init(&priv->sd, &csi_subdev_ops);
diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c b/drivers/staging/most/hdm-usb/hdm_usb.c
index 85775da293fb..667dacac81f0 100644
--- a/drivers/staging/most/hdm-usb/hdm_usb.c
+++ b/drivers/staging/most/hdm-usb/hdm_usb.c
@@ -744,9 +744,9 @@ static void hdm_request_netinfo(struct most_interface *iface, int channel,
744 * The handler runs in interrupt context. That's why we need to defer the 744 * The handler runs in interrupt context. That's why we need to defer the
745 * tasks to a work queue. 745 * tasks to a work queue.
746 */ 746 */
747static void link_stat_timer_handler(unsigned long data) 747static void link_stat_timer_handler(struct timer_list *t)
748{ 748{
749 struct most_dev *mdev = (struct most_dev *)data; 749 struct most_dev *mdev = from_timer(mdev, t, link_stat_timer);
750 750
751 schedule_work(&mdev->poll_work_obj); 751 schedule_work(&mdev->poll_work_obj);
752 mdev->link_stat_timer.expires = jiffies + (2 * HZ); 752 mdev->link_stat_timer.expires = jiffies + (2 * HZ);
@@ -1138,8 +1138,7 @@ hdm_probe(struct usb_interface *interface, const struct usb_device_id *id)
1138 num_endpoints = usb_iface_desc->desc.bNumEndpoints; 1138 num_endpoints = usb_iface_desc->desc.bNumEndpoints;
1139 mutex_init(&mdev->io_mutex); 1139 mutex_init(&mdev->io_mutex);
1140 INIT_WORK(&mdev->poll_work_obj, wq_netinfo); 1140 INIT_WORK(&mdev->poll_work_obj, wq_netinfo);
1141 setup_timer(&mdev->link_stat_timer, link_stat_timer_handler, 1141 timer_setup(&mdev->link_stat_timer, link_stat_timer_handler, 0);
1142 (unsigned long)mdev);
1143 1142
1144 mdev->usb_device = usb_dev; 1143 mdev->usb_device = usb_dev;
1145 mdev->link_stat_timer.expires = jiffies + (2 * HZ); 1144 mdev->link_stat_timer.expires = jiffies + (2 * HZ);
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
index 4e7908322d77..f56fdc7a4b61 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
@@ -391,10 +391,10 @@ static void ieee80211_send_beacon(struct ieee80211_device *ieee)
391} 391}
392 392
393 393
394static void ieee80211_send_beacon_cb(unsigned long _ieee) 394static void ieee80211_send_beacon_cb(struct timer_list *t)
395{ 395{
396 struct ieee80211_device *ieee = 396 struct ieee80211_device *ieee =
397 (struct ieee80211_device *) _ieee; 397 from_timer(ieee, t, beacon_timer);
398 unsigned long flags; 398 unsigned long flags;
399 399
400 spin_lock_irqsave(&ieee->beacon_lock, flags); 400 spin_lock_irqsave(&ieee->beacon_lock, flags);
@@ -1251,9 +1251,11 @@ void ieee80211_associate_abort(struct ieee80211_device *ieee)
1251 spin_unlock_irqrestore(&ieee->lock, flags); 1251 spin_unlock_irqrestore(&ieee->lock, flags);
1252} 1252}
1253 1253
1254static void ieee80211_associate_abort_cb(unsigned long dev) 1254static void ieee80211_associate_abort_cb(struct timer_list *t)
1255{ 1255{
1256 ieee80211_associate_abort((struct ieee80211_device *) dev); 1256 struct ieee80211_device *dev = from_timer(dev, t, associate_timer);
1257
1258 ieee80211_associate_abort(dev);
1257} 1259}
1258 1260
1259 1261
@@ -2718,11 +2720,9 @@ void ieee80211_softmac_init(struct ieee80211_device *ieee)
2718 ieee->enable_rx_imm_BA = true; 2720 ieee->enable_rx_imm_BA = true;
2719 ieee->tx_pending.txb = NULL; 2721 ieee->tx_pending.txb = NULL;
2720 2722
2721 setup_timer(&ieee->associate_timer, ieee80211_associate_abort_cb, 2723 timer_setup(&ieee->associate_timer, ieee80211_associate_abort_cb, 0);
2722 (unsigned long)ieee);
2723 2724
2724 setup_timer(&ieee->beacon_timer, ieee80211_send_beacon_cb, 2725 timer_setup(&ieee->beacon_timer, ieee80211_send_beacon_cb, 0);
2725 (unsigned long)ieee);
2726 2726
2727 2727
2728 INIT_DELAYED_WORK(&ieee->start_ibss_wq, ieee80211_start_ibss_wq); 2728 INIT_DELAYED_WORK(&ieee->start_ibss_wq, ieee80211_start_ibss_wq);
diff --git a/drivers/staging/rtl8712/recv_linux.c b/drivers/staging/rtl8712/recv_linux.c
index 576c15d25a0f..986a55bb9877 100644
--- a/drivers/staging/rtl8712/recv_linux.c
+++ b/drivers/staging/rtl8712/recv_linux.c
@@ -138,17 +138,16 @@ _recv_indicatepkt_drop:
138 precvpriv->rx_drop++; 138 precvpriv->rx_drop++;
139} 139}
140 140
141static void _r8712_reordering_ctrl_timeout_handler (unsigned long data) 141static void _r8712_reordering_ctrl_timeout_handler (struct timer_list *t)
142{ 142{
143 struct recv_reorder_ctrl *preorder_ctrl = 143 struct recv_reorder_ctrl *preorder_ctrl =
144 (struct recv_reorder_ctrl *)data; 144 from_timer(preorder_ctrl, t, reordering_ctrl_timer);
145 145
146 r8712_reordering_ctrl_timeout_handler(preorder_ctrl); 146 r8712_reordering_ctrl_timeout_handler(preorder_ctrl);
147} 147}
148 148
149void r8712_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) 149void r8712_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl)
150{ 150{
151 setup_timer(&preorder_ctrl->reordering_ctrl_timer, 151 timer_setup(&preorder_ctrl->reordering_ctrl_timer,
152 _r8712_reordering_ctrl_timeout_handler, 152 _r8712_reordering_ctrl_timeout_handler, 0);
153 (unsigned long)preorder_ctrl);
154} 153}
diff --git a/drivers/staging/rtl8712/rtl8712_led.c b/drivers/staging/rtl8712/rtl8712_led.c
index da1d4a641dcd..455fba721135 100644
--- a/drivers/staging/rtl8712/rtl8712_led.c
+++ b/drivers/staging/rtl8712/rtl8712_led.c
@@ -74,7 +74,7 @@ enum _LED_STATE_871x {
74 * Prototype of protected function. 74 * Prototype of protected function.
75 *=========================================================================== 75 *===========================================================================
76 */ 76 */
77static void BlinkTimerCallback(unsigned long data); 77static void BlinkTimerCallback(struct timer_list *t);
78 78
79static void BlinkWorkItemCallback(struct work_struct *work); 79static void BlinkWorkItemCallback(struct work_struct *work);
80/*=========================================================================== 80/*===========================================================================
@@ -99,8 +99,7 @@ static void InitLed871x(struct _adapter *padapter, struct LED_871x *pLed,
99 pLed->bLedBlinkInProgress = false; 99 pLed->bLedBlinkInProgress = false;
100 pLed->BlinkTimes = 0; 100 pLed->BlinkTimes = 0;
101 pLed->BlinkingLedState = LED_UNKNOWN; 101 pLed->BlinkingLedState = LED_UNKNOWN;
102 setup_timer(&pLed->BlinkTimer, BlinkTimerCallback, 102 timer_setup(&pLed->BlinkTimer, BlinkTimerCallback, 0);
103 (unsigned long)pLed);
104 INIT_WORK(&pLed->BlinkWorkItem, BlinkWorkItemCallback); 103 INIT_WORK(&pLed->BlinkWorkItem, BlinkWorkItemCallback);
105} 104}
106 105
@@ -825,9 +824,9 @@ static void SwLedBlink6(struct LED_871x *pLed)
825 * Callback function of LED BlinkTimer, 824 * Callback function of LED BlinkTimer,
826 * it just schedules to corresponding BlinkWorkItem. 825 * it just schedules to corresponding BlinkWorkItem.
827 */ 826 */
828static void BlinkTimerCallback(unsigned long data) 827static void BlinkTimerCallback(struct timer_list *t)
829{ 828{
830 struct LED_871x *pLed = (struct LED_871x *)data; 829 struct LED_871x *pLed = from_timer(pLed, t, BlinkTimer);
831 830
832 /* This fixed the crash problem on Fedora 12 when trying to do the 831 /* This fixed the crash problem on Fedora 12 when trying to do the
833 * insmod;ifconfig up;rmmod commands. 832 * insmod;ifconfig up;rmmod commands.
diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c
index 16497202473f..aae868509e13 100644
--- a/drivers/staging/speakup/main.c
+++ b/drivers/staging/speakup/main.c
@@ -1164,7 +1164,7 @@ static void spkup_write(const u16 *in_buf, int count)
1164static const int NUM_CTL_LABELS = (MSG_CTL_END - MSG_CTL_START + 1); 1164static const int NUM_CTL_LABELS = (MSG_CTL_END - MSG_CTL_START + 1);
1165 1165
1166static void read_all_doc(struct vc_data *vc); 1166static void read_all_doc(struct vc_data *vc);
1167static void cursor_done(u_long data); 1167static void cursor_done(struct timer_list *unused);
1168static DEFINE_TIMER(cursor_timer, cursor_done); 1168static DEFINE_TIMER(cursor_timer, cursor_done);
1169 1169
1170static void do_handle_shift(struct vc_data *vc, u_char value, char up_flag) 1170static void do_handle_shift(struct vc_data *vc, u_char value, char up_flag)
@@ -1682,7 +1682,7 @@ static int speak_highlight(struct vc_data *vc)
1682 return 0; 1682 return 0;
1683} 1683}
1684 1684
1685static void cursor_done(u_long data) 1685static void cursor_done(struct timer_list *unused)
1686{ 1686{
1687 struct vc_data *vc = vc_cons[cursor_con].d; 1687 struct vc_data *vc = vc_cons[cursor_con].d;
1688 unsigned long flags; 1688 unsigned long flags;
diff --git a/drivers/staging/speakup/synth.c b/drivers/staging/speakup/synth.c
index 6ddd3fc3f08d..aac29c816d09 100644
--- a/drivers/staging/speakup/synth.c
+++ b/drivers/staging/speakup/synth.c
@@ -153,7 +153,7 @@ int spk_synth_is_alive_restart(struct spk_synth *synth)
153} 153}
154EXPORT_SYMBOL_GPL(spk_synth_is_alive_restart); 154EXPORT_SYMBOL_GPL(spk_synth_is_alive_restart);
155 155
156static void thread_wake_up(u_long data) 156static void thread_wake_up(struct timer_list *unused)
157{ 157{
158 wake_up_interruptible_all(&speakup_event); 158 wake_up_interruptible_all(&speakup_event);
159} 159}
diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c b/drivers/staging/unisys/visorbus/visorbus_main.c
index b604d0cccef1..6cb6eb0673c6 100644
--- a/drivers/staging/unisys/visorbus/visorbus_main.c
+++ b/drivers/staging/unisys/visorbus/visorbus_main.c
@@ -493,9 +493,9 @@ static const struct file_operations bus_info_debugfs_fops = {
493 .release = single_release, 493 .release = single_release,
494}; 494};
495 495
496static void dev_periodic_work(unsigned long __opaque) 496static void dev_periodic_work(struct timer_list *t)
497{ 497{
498 struct visor_device *dev = (struct visor_device *)__opaque; 498 struct visor_device *dev = from_timer(dev, t, timer);
499 struct visor_driver *drv = to_visor_driver(dev->device.driver); 499 struct visor_driver *drv = to_visor_driver(dev->device.driver);
500 500
501 drv->channel_interrupt(dev); 501 drv->channel_interrupt(dev);
@@ -667,7 +667,7 @@ int create_visor_device(struct visor_device *dev)
667 dev->device.release = visorbus_release_device; 667 dev->device.release = visorbus_release_device;
668 /* keep a reference just for us (now 2) */ 668 /* keep a reference just for us (now 2) */
669 get_device(&dev->device); 669 get_device(&dev->device);
670 setup_timer(&dev->timer, dev_periodic_work, (unsigned long)dev); 670 timer_setup(&dev->timer, dev_periodic_work, 0);
671 /* 671 /*
672 * bus_id must be a unique name with respect to this bus TYPE (NOT bus 672 * bus_id must be a unique name with respect to this bus TYPE (NOT bus
673 * instance). That's why we need to include the bus number within the 673 * instance). That's why we need to include the bus number within the
diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c
index 735d7e5fa86b..6d8239163ba5 100644
--- a/drivers/staging/unisys/visornic/visornic_main.c
+++ b/drivers/staging/unisys/visornic/visornic_main.c
@@ -1766,9 +1766,10 @@ static int visornic_poll(struct napi_struct *napi, int budget)
1766 * Main function of the vnic_incoming thread. Periodically check the response 1766 * Main function of the vnic_incoming thread. Periodically check the response
1767 * queue and drain it if needed. 1767 * queue and drain it if needed.
1768 */ 1768 */
1769static void poll_for_irq(unsigned long v) 1769static void poll_for_irq(struct timer_list *t)
1770{ 1770{
1771 struct visornic_devdata *devdata = (struct visornic_devdata *)v; 1771 struct visornic_devdata *devdata = from_timer(devdata, t,
1772 irq_poll_timer);
1772 1773
1773 if (!visorchannel_signalempty( 1774 if (!visorchannel_signalempty(
1774 devdata->dev->visorchannel, 1775 devdata->dev->visorchannel,
@@ -1899,8 +1900,7 @@ static int visornic_probe(struct visor_device *dev)
1899 /* Let's start our threads to get responses */ 1900 /* Let's start our threads to get responses */
1900 netif_napi_add(netdev, &devdata->napi, visornic_poll, NAPI_WEIGHT); 1901 netif_napi_add(netdev, &devdata->napi, visornic_poll, NAPI_WEIGHT);
1901 1902
1902 setup_timer(&devdata->irq_poll_timer, poll_for_irq, 1903 timer_setup(&devdata->irq_poll_timer, poll_for_irq, 0);
1903 (unsigned long)devdata);
1904 /* Note: This time has to start running before the while 1904 /* Note: This time has to start running before the while
1905 * loop below because the napi routine is responsible for 1905 * loop below because the napi routine is responsible for
1906 * setting enab_dis_acked 1906 * setting enab_dis_acked
diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
index 8a275996d4e6..028da1dc1b81 100644
--- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
+++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
@@ -267,7 +267,7 @@ static void update_scan_time(void)
267 last_scanned_shadow[i].time_scan = jiffies; 267 last_scanned_shadow[i].time_scan = jiffies;
268} 268}
269 269
270static void remove_network_from_shadow(unsigned long unused) 270static void remove_network_from_shadow(struct timer_list *unused)
271{ 271{
272 unsigned long now = jiffies; 272 unsigned long now = jiffies;
273 int i, j; 273 int i, j;
@@ -292,7 +292,7 @@ static void remove_network_from_shadow(unsigned long unused)
292 } 292 }
293} 293}
294 294
295static void clear_duringIP(unsigned long arg) 295static void clear_duringIP(struct timer_list *unused)
296{ 296{
297 wilc_optaining_ip = false; 297 wilc_optaining_ip = false;
298} 298}
@@ -2278,8 +2278,8 @@ int wilc_init_host_int(struct net_device *net)
2278 2278
2279 priv = wdev_priv(net->ieee80211_ptr); 2279 priv = wdev_priv(net->ieee80211_ptr);
2280 if (op_ifcs == 0) { 2280 if (op_ifcs == 0) {
2281 setup_timer(&hAgingTimer, remove_network_from_shadow, 0); 2281 timer_setup(&hAgingTimer, remove_network_from_shadow, 0);
2282 setup_timer(&wilc_during_ip_timer, clear_duringIP, 0); 2282 timer_setup(&wilc_during_ip_timer, clear_duringIP, 0);
2283 } 2283 }
2284 op_ifcs++; 2284 op_ifcs++;
2285 2285
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index cc2468a299d3..a415d87f22d2 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -1055,9 +1055,9 @@ static int tcmu_check_expired_cmd(int id, void *p, void *data)
1055 return 0; 1055 return 0;
1056} 1056}
1057 1057
1058static void tcmu_device_timedout(unsigned long data) 1058static void tcmu_device_timedout(struct timer_list *t)
1059{ 1059{
1060 struct tcmu_dev *udev = (struct tcmu_dev *)data; 1060 struct tcmu_dev *udev = from_timer(udev, t, timeout);
1061 unsigned long flags; 1061 unsigned long flags;
1062 1062
1063 spin_lock_irqsave(&udev->commands_lock, flags); 1063 spin_lock_irqsave(&udev->commands_lock, flags);
@@ -1117,8 +1117,7 @@ static struct se_device *tcmu_alloc_device(struct se_hba *hba, const char *name)
1117 idr_init(&udev->commands); 1117 idr_init(&udev->commands);
1118 spin_lock_init(&udev->commands_lock); 1118 spin_lock_init(&udev->commands_lock);
1119 1119
1120 setup_timer(&udev->timeout, tcmu_device_timedout, 1120 timer_setup(&udev->timeout, tcmu_device_timedout, 0);
1121 (unsigned long)udev);
1122 1121
1123 init_waitqueue_head(&udev->nl_cmd_wq); 1122 init_waitqueue_head(&udev->nl_cmd_wq);
1124 spin_lock_init(&udev->nl_cmd_lock); 1123 spin_lock_init(&udev->nl_cmd_lock);
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 5d442469c95e..cf0bde3bb927 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -279,7 +279,7 @@ static unsigned detect_isa_irq(void __iomem *);
279#endif /* CONFIG_ISA */ 279#endif /* CONFIG_ISA */
280 280
281#ifndef CONFIG_CYZ_INTR 281#ifndef CONFIG_CYZ_INTR
282static void cyz_poll(unsigned long); 282static void cyz_poll(struct timer_list *);
283 283
284/* The Cyclades-Z polling cycle is defined by this variable */ 284/* The Cyclades-Z polling cycle is defined by this variable */
285static long cyz_polling_cycle = CZ_DEF_POLL; 285static long cyz_polling_cycle = CZ_DEF_POLL;
@@ -1214,7 +1214,7 @@ static void cyz_rx_restart(struct timer_list *t)
1214 1214
1215#else /* CONFIG_CYZ_INTR */ 1215#else /* CONFIG_CYZ_INTR */
1216 1216
1217static void cyz_poll(unsigned long arg) 1217static void cyz_poll(struct timer_list *unused)
1218{ 1218{
1219 struct cyclades_card *cinfo; 1219 struct cyclades_card *cinfo;
1220 struct cyclades_port *info; 1220 struct cyclades_port *info;
diff --git a/drivers/tty/ipwireless/hardware.c b/drivers/tty/ipwireless/hardware.c
index a6b8240af6cd..b0baa4ce10f9 100644
--- a/drivers/tty/ipwireless/hardware.c
+++ b/drivers/tty/ipwireless/hardware.c
@@ -33,7 +33,7 @@ static void handle_received_SETUP_packet(struct ipw_hardware *ipw,
33 unsigned int address, 33 unsigned int address,
34 const unsigned char *data, int len, 34 const unsigned char *data, int len,
35 int is_last); 35 int is_last);
36static void ipwireless_setup_timer(unsigned long data); 36static void ipwireless_setup_timer(struct timer_list *t);
37static void handle_received_CTRL_packet(struct ipw_hardware *hw, 37static void handle_received_CTRL_packet(struct ipw_hardware *hw,
38 unsigned int channel_idx, const unsigned char *data, int len); 38 unsigned int channel_idx, const unsigned char *data, int len);
39 39
@@ -1635,8 +1635,7 @@ struct ipw_hardware *ipwireless_hardware_create(void)
1635 spin_lock_init(&hw->lock); 1635 spin_lock_init(&hw->lock);
1636 tasklet_init(&hw->tasklet, ipwireless_do_tasklet, (unsigned long) hw); 1636 tasklet_init(&hw->tasklet, ipwireless_do_tasklet, (unsigned long) hw);
1637 INIT_WORK(&hw->work_rx, ipw_receive_data_work); 1637 INIT_WORK(&hw->work_rx, ipw_receive_data_work);
1638 setup_timer(&hw->setup_timer, ipwireless_setup_timer, 1638 timer_setup(&hw->setup_timer, ipwireless_setup_timer, 0);
1639 (unsigned long) hw);
1640 1639
1641 return hw; 1640 return hw;
1642} 1641}
@@ -1670,12 +1669,12 @@ void ipwireless_init_hardware_v2_v3(struct ipw_hardware *hw)
1670 hw->init_loops = 0; 1669 hw->init_loops = 0;
1671 printk(KERN_INFO IPWIRELESS_PCCARD_NAME 1670 printk(KERN_INFO IPWIRELESS_PCCARD_NAME
1672 ": waiting for card to start up...\n"); 1671 ": waiting for card to start up...\n");
1673 ipwireless_setup_timer((unsigned long) hw); 1672 ipwireless_setup_timer(&hw->setup_timer);
1674} 1673}
1675 1674
1676static void ipwireless_setup_timer(unsigned long data) 1675static void ipwireless_setup_timer(struct timer_list *t)
1677{ 1676{
1678 struct ipw_hardware *hw = (struct ipw_hardware *) data; 1677 struct ipw_hardware *hw = from_timer(hw, t, setup_timer);
1679 1678
1680 hw->init_loops++; 1679 hw->init_loops++;
1681 1680
diff --git a/drivers/tty/isicom.c b/drivers/tty/isicom.c
index ee7958ab269f..015686ff4825 100644
--- a/drivers/tty/isicom.c
+++ b/drivers/tty/isicom.c
@@ -170,7 +170,7 @@ static struct pci_driver isicom_driver = {
170static int prev_card = 3; /* start servicing isi_card[0] */ 170static int prev_card = 3; /* start servicing isi_card[0] */
171static struct tty_driver *isicom_normal; 171static struct tty_driver *isicom_normal;
172 172
173static void isicom_tx(unsigned long _data); 173static void isicom_tx(struct timer_list *unused);
174static void isicom_start(struct tty_struct *tty); 174static void isicom_start(struct tty_struct *tty);
175 175
176static DEFINE_TIMER(tx, isicom_tx); 176static DEFINE_TIMER(tx, isicom_tx);
@@ -394,7 +394,7 @@ static inline int __isicom_paranoia_check(struct isi_port const *port,
394 * will do the rest of the work for us. 394 * will do the rest of the work for us.
395 */ 395 */
396 396
397static void isicom_tx(unsigned long _data) 397static void isicom_tx(struct timer_list *unused)
398{ 398{
399 unsigned long flags, base; 399 unsigned long flags, base;
400 unsigned int retries; 400 unsigned int retries;
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index 65a70f3c7cde..68cbc03aab4b 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -198,7 +198,7 @@ static void moxa_hangup(struct tty_struct *);
198static int moxa_tiocmget(struct tty_struct *tty); 198static int moxa_tiocmget(struct tty_struct *tty);
199static int moxa_tiocmset(struct tty_struct *tty, 199static int moxa_tiocmset(struct tty_struct *tty,
200 unsigned int set, unsigned int clear); 200 unsigned int set, unsigned int clear);
201static void moxa_poll(unsigned long); 201static void moxa_poll(struct timer_list *);
202static void moxa_set_tty_param(struct tty_struct *, struct ktermios *); 202static void moxa_set_tty_param(struct tty_struct *, struct ktermios *);
203static void moxa_shutdown(struct tty_port *); 203static void moxa_shutdown(struct tty_port *);
204static int moxa_carrier_raised(struct tty_port *); 204static int moxa_carrier_raised(struct tty_port *);
@@ -1429,7 +1429,7 @@ put:
1429 return 0; 1429 return 0;
1430} 1430}
1431 1431
1432static void moxa_poll(unsigned long ignored) 1432static void moxa_poll(struct timer_list *unused)
1433{ 1433{
1434 struct moxa_board_conf *brd; 1434 struct moxa_board_conf *brd;
1435 u16 __iomem *ip; 1435 u16 __iomem *ip;
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 3a39eb685c69..5131bdc9e765 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -1310,9 +1310,9 @@ static void gsm_control_transmit(struct gsm_mux *gsm, struct gsm_control *ctrl)
1310 * gsm->pending_cmd will be NULL and we just let the timer expire. 1310 * gsm->pending_cmd will be NULL and we just let the timer expire.
1311 */ 1311 */
1312 1312
1313static void gsm_control_retransmit(unsigned long data) 1313static void gsm_control_retransmit(struct timer_list *t)
1314{ 1314{
1315 struct gsm_mux *gsm = (struct gsm_mux *)data; 1315 struct gsm_mux *gsm = from_timer(gsm, t, t2_timer);
1316 struct gsm_control *ctrl; 1316 struct gsm_control *ctrl;
1317 unsigned long flags; 1317 unsigned long flags;
1318 spin_lock_irqsave(&gsm->control_lock, flags); 1318 spin_lock_irqsave(&gsm->control_lock, flags);
@@ -1453,9 +1453,9 @@ static void gsm_dlci_open(struct gsm_dlci *dlci)
1453 * end will get a DM response) 1453 * end will get a DM response)
1454 */ 1454 */
1455 1455
1456static void gsm_dlci_t1(unsigned long data) 1456static void gsm_dlci_t1(struct timer_list *t)
1457{ 1457{
1458 struct gsm_dlci *dlci = (struct gsm_dlci *)data; 1458 struct gsm_dlci *dlci = from_timer(dlci, t, t1);
1459 struct gsm_mux *gsm = dlci->gsm; 1459 struct gsm_mux *gsm = dlci->gsm;
1460 1460
1461 switch (dlci->state) { 1461 switch (dlci->state) {
@@ -1634,7 +1634,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
1634 } 1634 }
1635 1635
1636 skb_queue_head_init(&dlci->skb_list); 1636 skb_queue_head_init(&dlci->skb_list);
1637 setup_timer(&dlci->t1, gsm_dlci_t1, (unsigned long)dlci); 1637 timer_setup(&dlci->t1, gsm_dlci_t1, 0);
1638 tty_port_init(&dlci->port); 1638 tty_port_init(&dlci->port);
1639 dlci->port.ops = &gsm_port_ops; 1639 dlci->port.ops = &gsm_port_ops;
1640 dlci->gsm = gsm; 1640 dlci->gsm = gsm;
@@ -2088,7 +2088,7 @@ static int gsm_activate_mux(struct gsm_mux *gsm)
2088 struct gsm_dlci *dlci; 2088 struct gsm_dlci *dlci;
2089 int i = 0; 2089 int i = 0;
2090 2090
2091 setup_timer(&gsm->t2_timer, gsm_control_retransmit, (unsigned long)gsm); 2091 timer_setup(&gsm->t2_timer, gsm_control_retransmit, 0);
2092 init_waitqueue_head(&gsm->event); 2092 init_waitqueue_head(&gsm->event);
2093 spin_lock_init(&gsm->control_lock); 2093 spin_lock_init(&gsm->control_lock);
2094 spin_lock_init(&gsm->tx_lock); 2094 spin_lock_init(&gsm->tx_lock);
diff --git a/drivers/tty/n_r3964.c b/drivers/tty/n_r3964.c
index 9f246d4db3ca..30bb0900cd2f 100644
--- a/drivers/tty/n_r3964.c
+++ b/drivers/tty/n_r3964.c
@@ -115,7 +115,7 @@ static void retry_transmit(struct r3964_info *pInfo);
115static void transmit_block(struct r3964_info *pInfo); 115static void transmit_block(struct r3964_info *pInfo);
116static void receive_char(struct r3964_info *pInfo, const unsigned char c); 116static void receive_char(struct r3964_info *pInfo, const unsigned char c);
117static void receive_error(struct r3964_info *pInfo, const char flag); 117static void receive_error(struct r3964_info *pInfo, const char flag);
118static void on_timeout(unsigned long priv); 118static void on_timeout(struct timer_list *t);
119static int enable_signals(struct r3964_info *pInfo, struct pid *pid, int arg); 119static int enable_signals(struct r3964_info *pInfo, struct pid *pid, int arg);
120static int read_telegram(struct r3964_info *pInfo, struct pid *pid, 120static int read_telegram(struct r3964_info *pInfo, struct pid *pid,
121 unsigned char __user * buf); 121 unsigned char __user * buf);
@@ -688,9 +688,9 @@ static void receive_error(struct r3964_info *pInfo, const char flag)
688 } 688 }
689} 689}
690 690
691static void on_timeout(unsigned long priv) 691static void on_timeout(struct timer_list *t)
692{ 692{
693 struct r3964_info *pInfo = (void *)priv; 693 struct r3964_info *pInfo = from_timer(pInfo, t, tmr);
694 694
695 switch (pInfo->state) { 695 switch (pInfo->state) {
696 case R3964_TX_REQUEST: 696 case R3964_TX_REQUEST:
@@ -993,7 +993,7 @@ static int r3964_open(struct tty_struct *tty)
993 tty->disc_data = pInfo; 993 tty->disc_data = pInfo;
994 tty->receive_room = 65536; 994 tty->receive_room = 65536;
995 995
996 setup_timer(&pInfo->tmr, on_timeout, (unsigned long)pInfo); 996 timer_setup(&pInfo->tmr, on_timeout, 0);
997 997
998 return 0; 998 return 0;
999} 999}
diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
index f7dc9b1ea806..bdd17d2aaafd 100644
--- a/drivers/tty/rocket.c
+++ b/drivers/tty/rocket.c
@@ -86,7 +86,7 @@
86 86
87/****** RocketPort Local Variables ******/ 87/****** RocketPort Local Variables ******/
88 88
89static void rp_do_poll(unsigned long dummy); 89static void rp_do_poll(struct timer_list *unused);
90 90
91static struct tty_driver *rocket_driver; 91static struct tty_driver *rocket_driver;
92 92
@@ -525,7 +525,7 @@ static void rp_handle_port(struct r_port *info)
525/* 525/*
526 * The top level polling routine. Repeats every 1/100 HZ (10ms). 526 * The top level polling routine. Repeats every 1/100 HZ (10ms).
527 */ 527 */
528static void rp_do_poll(unsigned long dummy) 528static void rp_do_poll(struct timer_list *unused)
529{ 529{
530 CONTROLLER_t *ctlp; 530 CONTROLLER_t *ctlp;
531 int ctrl, aiop, ch, line; 531 int ctrl, aiop, ch, line;
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index d64afdd93872..9342fc2ee7df 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -325,7 +325,7 @@ static int univ8250_setup_irq(struct uart_8250_port *up)
325 if (up->bugs & UART_BUG_THRE) { 325 if (up->bugs & UART_BUG_THRE) {
326 pr_debug("ttyS%d - using backup timer\n", serial_index(port)); 326 pr_debug("ttyS%d - using backup timer\n", serial_index(port));
327 327
328 up->timer.function = (TIMER_FUNC_TYPE)serial8250_backup_timeout; 328 up->timer.function = serial8250_backup_timeout;
329 mod_timer(&up->timer, jiffies + 329 mod_timer(&up->timer, jiffies +
330 uart_poll_timeout(port) + HZ / 5); 330 uart_poll_timeout(port) + HZ / 5);
331 } 331 }
@@ -348,7 +348,7 @@ static void univ8250_release_irq(struct uart_8250_port *up)
348 struct uart_port *port = &up->port; 348 struct uart_port *port = &up->port;
349 349
350 del_timer_sync(&up->timer); 350 del_timer_sync(&up->timer);
351 up->timer.function = (TIMER_FUNC_TYPE)serial8250_timeout; 351 up->timer.function = serial8250_timeout;
352 if (port->irq) 352 if (port->irq)
353 serial_unlink_irq_chain(up); 353 serial_unlink_irq_chain(up);
354} 354}
diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
index 1421804975e0..c9458a033e3c 100644
--- a/drivers/tty/serial/crisv10.c
+++ b/drivers/tty/serial/crisv10.c
@@ -2059,7 +2059,7 @@ static void flush_timeout_function(unsigned long data)
2059static struct timer_list flush_timer; 2059static struct timer_list flush_timer;
2060 2060
2061static void 2061static void
2062timed_flush_handler(unsigned long ptr) 2062timed_flush_handler(struct timer_list *unused)
2063{ 2063{
2064 struct e100_serial *info; 2064 struct e100_serial *info;
2065 int i; 2065 int i;
@@ -4137,7 +4137,7 @@ static int __init rs_init(void)
4137 /* Setup the timed flush handler system */ 4137 /* Setup the timed flush handler system */
4138 4138
4139#if !defined(CONFIG_ETRAX_SERIAL_FAST_TIMER) 4139#if !defined(CONFIG_ETRAX_SERIAL_FAST_TIMER)
4140 setup_timer(&flush_timer, timed_flush_handler, 0); 4140 timer_setup(&flush_timer, timed_flush_handler, 0);
4141 mod_timer(&flush_timer, jiffies + 5); 4141 mod_timer(&flush_timer, jiffies + 5);
4142#endif 4142#endif
4143 4143
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index c84e6f0db54e..1c4d3f387138 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -966,9 +966,9 @@ static void lpuart_dma_rx_complete(void *arg)
966 lpuart_copy_rx_to_tty(sport); 966 lpuart_copy_rx_to_tty(sport);
967} 967}
968 968
969static void lpuart_timer_func(unsigned long data) 969static void lpuart_timer_func(struct timer_list *t)
970{ 970{
971 struct lpuart_port *sport = (struct lpuart_port *)data; 971 struct lpuart_port *sport = from_timer(sport, t, lpuart_timer);
972 972
973 lpuart_copy_rx_to_tty(sport); 973 lpuart_copy_rx_to_tty(sport);
974} 974}
@@ -1263,8 +1263,7 @@ static void lpuart32_setup_watermark(struct lpuart_port *sport)
1263 1263
1264static void rx_dma_timer_init(struct lpuart_port *sport) 1264static void rx_dma_timer_init(struct lpuart_port *sport)
1265{ 1265{
1266 setup_timer(&sport->lpuart_timer, lpuart_timer_func, 1266 timer_setup(&sport->lpuart_timer, lpuart_timer_func, 0);
1267 (unsigned long)sport);
1268 sport->lpuart_timer.expires = jiffies + sport->dma_rx_timeout; 1267 sport->lpuart_timer.expires = jiffies + sport->dma_rx_timeout;
1269 add_timer(&sport->lpuart_timer); 1268 add_timer(&sport->lpuart_timer);
1270} 1269}
diff --git a/drivers/tty/serial/ifx6x60.c b/drivers/tty/serial/ifx6x60.c
index 473f4f81d690..ffefd218761e 100644
--- a/drivers/tty/serial/ifx6x60.c
+++ b/drivers/tty/serial/ifx6x60.c
@@ -263,9 +263,9 @@ static void mrdy_assert(struct ifx_spi_device *ifx_dev)
263 * The SPI has timed out: hang up the tty. Users will then see a hangup 263 * The SPI has timed out: hang up the tty. Users will then see a hangup
264 * and error events. 264 * and error events.
265 */ 265 */
266static void ifx_spi_timeout(unsigned long arg) 266static void ifx_spi_timeout(struct timer_list *t)
267{ 267{
268 struct ifx_spi_device *ifx_dev = (struct ifx_spi_device *)arg; 268 struct ifx_spi_device *ifx_dev = from_timer(ifx_dev, t, spi_timer);
269 269
270 dev_warn(&ifx_dev->spi_dev->dev, "*** SPI Timeout ***"); 270 dev_warn(&ifx_dev->spi_dev->dev, "*** SPI Timeout ***");
271 tty_port_tty_hangup(&ifx_dev->tty_port, false); 271 tty_port_tty_hangup(&ifx_dev->tty_port, false);
@@ -1016,8 +1016,7 @@ static int ifx_spi_spi_probe(struct spi_device *spi)
1016 spin_lock_init(&ifx_dev->write_lock); 1016 spin_lock_init(&ifx_dev->write_lock);
1017 spin_lock_init(&ifx_dev->power_lock); 1017 spin_lock_init(&ifx_dev->power_lock);
1018 ifx_dev->power_status = 0; 1018 ifx_dev->power_status = 0;
1019 setup_timer(&ifx_dev->spi_timer, ifx_spi_timeout, 1019 timer_setup(&ifx_dev->spi_timer, ifx_spi_timeout, 0);
1020 (unsigned long)ifx_dev);
1021 ifx_dev->modem = pl_data->modem_type; 1020 ifx_dev->modem = pl_data->modem_type;
1022 ifx_dev->use_dma = pl_data->use_dma; 1021 ifx_dev->use_dma = pl_data->use_dma;
1023 ifx_dev->max_hz = pl_data->max_hz; 1022 ifx_dev->max_hz = pl_data->max_hz;
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index a67a606c38eb..e4b3d9123a03 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -906,9 +906,9 @@ static void imx_break_ctl(struct uart_port *port, int break_state)
906 * This is our per-port timeout handler, for checking the 906 * This is our per-port timeout handler, for checking the
907 * modem status signals. 907 * modem status signals.
908 */ 908 */
909static void imx_timeout(unsigned long data) 909static void imx_timeout(struct timer_list *t)
910{ 910{
911 struct imx_port *sport = (struct imx_port *)data; 911 struct imx_port *sport = from_timer(sport, t, timer);
912 unsigned long flags; 912 unsigned long flags;
913 913
914 if (sport->port.state) { 914 if (sport->port.state) {
@@ -2082,7 +2082,7 @@ static int serial_imx_probe(struct platform_device *pdev)
2082 sport->port.rs485_config = imx_rs485_config; 2082 sport->port.rs485_config = imx_rs485_config;
2083 sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND; 2083 sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND;
2084 sport->port.flags = UPF_BOOT_AUTOCONF; 2084 sport->port.flags = UPF_BOOT_AUTOCONF;
2085 setup_timer(&sport->timer, imx_timeout, (unsigned long)sport); 2085 timer_setup(&sport->timer, imx_timeout, 0);
2086 2086
2087 sport->gpios = mctrl_gpio_init(&sport->port, 0); 2087 sport->gpios = mctrl_gpio_init(&sport->port, 0);
2088 if (IS_ERR(sport->gpios)) 2088 if (IS_ERR(sport->gpios))
diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c
index ed2b03058627..4029272891f9 100644
--- a/drivers/tty/serial/kgdb_nmi.c
+++ b/drivers/tty/serial/kgdb_nmi.c
@@ -188,9 +188,9 @@ bool kgdb_nmi_poll_knock(void)
188 * The tasklet is cheap, it does not cause wakeups when reschedules itself, 188 * The tasklet is cheap, it does not cause wakeups when reschedules itself,
189 * instead it waits for the next tick. 189 * instead it waits for the next tick.
190 */ 190 */
191static void kgdb_nmi_tty_receiver(unsigned long data) 191static void kgdb_nmi_tty_receiver(struct timer_list *t)
192{ 192{
193 struct kgdb_nmi_tty_priv *priv = (void *)data; 193 struct kgdb_nmi_tty_priv *priv = from_timer(priv, t, timer);
194 char ch; 194 char ch;
195 195
196 priv->timer.expires = jiffies + (HZ/100); 196 priv->timer.expires = jiffies + (HZ/100);
@@ -241,7 +241,7 @@ static int kgdb_nmi_tty_install(struct tty_driver *drv, struct tty_struct *tty)
241 return -ENOMEM; 241 return -ENOMEM;
242 242
243 INIT_KFIFO(priv->fifo); 243 INIT_KFIFO(priv->fifo);
244 setup_timer(&priv->timer, kgdb_nmi_tty_receiver, (unsigned long)priv); 244 timer_setup(&priv->timer, kgdb_nmi_tty_receiver, 0);
245 tty_port_init(&priv->port); 245 tty_port_init(&priv->port);
246 priv->port.ops = &kgdb_nmi_tty_port_ops; 246 priv->port.ops = &kgdb_nmi_tty_port_ops;
247 tty->driver_data = priv; 247 tty->driver_data = priv;
diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c
index 27d6049eb6a9..371569a0fd00 100644
--- a/drivers/tty/serial/max3100.c
+++ b/drivers/tty/serial/max3100.c
@@ -178,9 +178,9 @@ static void max3100_dowork(struct max3100_port *s)
178 queue_work(s->workqueue, &s->work); 178 queue_work(s->workqueue, &s->work);
179} 179}
180 180
181static void max3100_timeout(unsigned long data) 181static void max3100_timeout(struct timer_list *t)
182{ 182{
183 struct max3100_port *s = (struct max3100_port *)data; 183 struct max3100_port *s = from_timer(s, t, timer);
184 184
185 if (s->port.state) { 185 if (s->port.state) {
186 max3100_dowork(s); 186 max3100_dowork(s);
@@ -780,8 +780,7 @@ static int max3100_probe(struct spi_device *spi)
780 max3100s[i]->poll_time = 1; 780 max3100s[i]->poll_time = 1;
781 max3100s[i]->max3100_hw_suspend = pdata->max3100_hw_suspend; 781 max3100s[i]->max3100_hw_suspend = pdata->max3100_hw_suspend;
782 max3100s[i]->minor = i; 782 max3100s[i]->minor = i;
783 setup_timer(&max3100s[i]->timer, max3100_timeout, 783 timer_setup(&max3100s[i]->timer, max3100_timeout, 0);
784 (unsigned long)max3100s[i]);
785 784
786 dev_dbg(&spi->dev, "%s: adding port %d\n", __func__, i); 785 dev_dbg(&spi->dev, "%s: adding port %d\n", __func__, i);
787 max3100s[i]->port.irq = max3100s[i]->irq; 786 max3100s[i]->port.irq = max3100s[i]->irq;
diff --git a/drivers/tty/serial/mux.c b/drivers/tty/serial/mux.c
index 3b74369c262f..00ce31e8d19a 100644
--- a/drivers/tty/serial/mux.c
+++ b/drivers/tty/serial/mux.c
@@ -371,7 +371,7 @@ static int mux_verify_port(struct uart_port *port, struct serial_struct *ser)
371 * 371 *
372 * This function periodically polls the Serial MUX to check for new data. 372 * This function periodically polls the Serial MUX to check for new data.
373 */ 373 */
374static void mux_poll(unsigned long unused) 374static void mux_poll(struct timer_list *unused)
375{ 375{
376 int i; 376 int i;
377 377
@@ -572,7 +572,7 @@ static int __init mux_init(void)
572 572
573 if(port_cnt > 0) { 573 if(port_cnt > 0) {
574 /* Start the Mux timer */ 574 /* Start the Mux timer */
575 setup_timer(&mux_timer, mux_poll, 0UL); 575 timer_setup(&mux_timer, mux_poll, 0);
576 mod_timer(&mux_timer, jiffies + MUX_POLL_DELAY); 576 mod_timer(&mux_timer, jiffies + MUX_POLL_DELAY);
577 577
578#ifdef CONFIG_SERIAL_MUX_CONSOLE 578#ifdef CONFIG_SERIAL_MUX_CONSOLE
diff --git a/drivers/tty/serial/pnx8xxx_uart.c b/drivers/tty/serial/pnx8xxx_uart.c
index f8812389b8a8..223a9499104e 100644
--- a/drivers/tty/serial/pnx8xxx_uart.c
+++ b/drivers/tty/serial/pnx8xxx_uart.c
@@ -103,9 +103,9 @@ static void pnx8xxx_mctrl_check(struct pnx8xxx_port *sport)
103 * This is our per-port timeout handler, for checking the 103 * This is our per-port timeout handler, for checking the
104 * modem status signals. 104 * modem status signals.
105 */ 105 */
106static void pnx8xxx_timeout(unsigned long data) 106static void pnx8xxx_timeout(struct timer_list *t)
107{ 107{
108 struct pnx8xxx_port *sport = (struct pnx8xxx_port *)data; 108 struct pnx8xxx_port *sport = from_timer(sport, t, timer);
109 unsigned long flags; 109 unsigned long flags;
110 110
111 if (sport->port.state) { 111 if (sport->port.state) {
@@ -662,8 +662,7 @@ static void __init pnx8xxx_init_ports(void)
662 first = 0; 662 first = 0;
663 663
664 for (i = 0; i < NR_PORTS; i++) { 664 for (i = 0; i < NR_PORTS; i++) {
665 setup_timer(&pnx8xxx_ports[i].timer, pnx8xxx_timeout, 665 timer_setup(&pnx8xxx_ports[i].timer, pnx8xxx_timeout, 0);
666 (unsigned long)&pnx8xxx_ports[i]);
667 pnx8xxx_ports[i].port.ops = &pnx8xxx_pops; 666 pnx8xxx_ports[i].port.ops = &pnx8xxx_pops;
668 } 667 }
669} 668}
diff --git a/drivers/tty/serial/sa1100.c b/drivers/tty/serial/sa1100.c
index 4e3f169b30cf..a399772be3fc 100644
--- a/drivers/tty/serial/sa1100.c
+++ b/drivers/tty/serial/sa1100.c
@@ -110,9 +110,9 @@ static void sa1100_mctrl_check(struct sa1100_port *sport)
110 * This is our per-port timeout handler, for checking the 110 * This is our per-port timeout handler, for checking the
111 * modem status signals. 111 * modem status signals.
112 */ 112 */
113static void sa1100_timeout(unsigned long data) 113static void sa1100_timeout(struct timer_list *t)
114{ 114{
115 struct sa1100_port *sport = (struct sa1100_port *)data; 115 struct sa1100_port *sport = from_timer(sport, t, timer);
116 unsigned long flags; 116 unsigned long flags;
117 117
118 if (sport->port.state) { 118 if (sport->port.state) {
@@ -627,8 +627,7 @@ static void __init sa1100_init_ports(void)
627 sa1100_ports[i].port.fifosize = 8; 627 sa1100_ports[i].port.fifosize = 8;
628 sa1100_ports[i].port.line = i; 628 sa1100_ports[i].port.line = i;
629 sa1100_ports[i].port.iotype = UPIO_MEM; 629 sa1100_ports[i].port.iotype = UPIO_MEM;
630 setup_timer(&sa1100_ports[i].timer, sa1100_timeout, 630 timer_setup(&sa1100_ports[i].timer, sa1100_timeout, 0);
631 (unsigned long)&sa1100_ports[i]);
632 } 631 }
633 632
634 /* 633 /*
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 31fcc7072a90..d9f399c4e90c 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -1058,9 +1058,9 @@ static int scif_rtrg_enabled(struct uart_port *port)
1058 (SCFCR_RTRG0 | SCFCR_RTRG1)) != 0; 1058 (SCFCR_RTRG0 | SCFCR_RTRG1)) != 0;
1059} 1059}
1060 1060
1061static void rx_fifo_timer_fn(unsigned long arg) 1061static void rx_fifo_timer_fn(struct timer_list *t)
1062{ 1062{
1063 struct sci_port *s = (struct sci_port *)arg; 1063 struct sci_port *s = from_timer(s, t, rx_fifo_timer);
1064 struct uart_port *port = &s->port; 1064 struct uart_port *port = &s->port;
1065 1065
1066 dev_dbg(port->dev, "Rx timed out\n"); 1066 dev_dbg(port->dev, "Rx timed out\n");
@@ -1138,8 +1138,7 @@ static ssize_t rx_fifo_timeout_store(struct device *dev,
1138 sci->rx_fifo_timeout = r; 1138 sci->rx_fifo_timeout = r;
1139 scif_set_rtrg(port, 1); 1139 scif_set_rtrg(port, 1);
1140 if (r > 0) 1140 if (r > 0)
1141 setup_timer(&sci->rx_fifo_timer, rx_fifo_timer_fn, 1141 timer_setup(&sci->rx_fifo_timer, rx_fifo_timer_fn, 0);
1142 (unsigned long)sci);
1143 } 1142 }
1144 1143
1145 return count; 1144 return count;
@@ -1392,9 +1391,9 @@ static void work_fn_tx(struct work_struct *work)
1392 dma_async_issue_pending(chan); 1391 dma_async_issue_pending(chan);
1393} 1392}
1394 1393
1395static void rx_timer_fn(unsigned long arg) 1394static void rx_timer_fn(struct timer_list *t)
1396{ 1395{
1397 struct sci_port *s = (struct sci_port *)arg; 1396 struct sci_port *s = from_timer(s, t, rx_timer);
1398 struct dma_chan *chan = s->chan_rx; 1397 struct dma_chan *chan = s->chan_rx;
1399 struct uart_port *port = &s->port; 1398 struct uart_port *port = &s->port;
1400 struct dma_tx_state state; 1399 struct dma_tx_state state;
@@ -1572,7 +1571,7 @@ static void sci_request_dma(struct uart_port *port)
1572 dma += s->buf_len_rx; 1571 dma += s->buf_len_rx;
1573 } 1572 }
1574 1573
1575 setup_timer(&s->rx_timer, rx_timer_fn, (unsigned long)s); 1574 timer_setup(&s->rx_timer, rx_timer_fn, 0);
1576 1575
1577 if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) 1576 if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
1578 sci_submit_rx(s); 1577 sci_submit_rx(s);
@@ -2238,8 +2237,7 @@ static void sci_reset(struct uart_port *port)
2238 if (s->rx_trigger > 1) { 2237 if (s->rx_trigger > 1) {
2239 if (s->rx_fifo_timeout) { 2238 if (s->rx_fifo_timeout) {
2240 scif_set_rtrg(port, 1); 2239 scif_set_rtrg(port, 1);
2241 setup_timer(&s->rx_fifo_timer, rx_fifo_timer_fn, 2240 timer_setup(&s->rx_fifo_timer, rx_fifo_timer_fn, 0);
2242 (unsigned long)s);
2243 } else { 2241 } else {
2244 if (port->type == PORT_SCIFA || 2242 if (port->type == PORT_SCIFA ||
2245 port->type == PORT_SCIFB) 2243 port->type == PORT_SCIFB)
diff --git a/drivers/tty/serial/sn_console.c b/drivers/tty/serial/sn_console.c
index ed78542c4c37..42b9aded4eb1 100644
--- a/drivers/tty/serial/sn_console.c
+++ b/drivers/tty/serial/sn_console.c
@@ -612,9 +612,9 @@ static irqreturn_t sn_sal_interrupt(int irq, void *dev_id)
612 * Obviously not used in interrupt mode 612 * Obviously not used in interrupt mode
613 * 613 *
614 */ 614 */
615static void sn_sal_timer_poll(unsigned long data) 615static void sn_sal_timer_poll(struct timer_list *t)
616{ 616{
617 struct sn_cons_port *port = (struct sn_cons_port *)data; 617 struct sn_cons_port *port = from_timer(port, t, sc_timer);
618 unsigned long flags; 618 unsigned long flags;
619 619
620 if (!port) 620 if (!port)
@@ -668,7 +668,7 @@ static void __init sn_sal_switch_to_asynch(struct sn_cons_port *port)
668 * timer to poll for input and push data from the console 668 * timer to poll for input and push data from the console
669 * buffer. 669 * buffer.
670 */ 670 */
671 setup_timer(&port->sc_timer, sn_sal_timer_poll, (unsigned long)port); 671 timer_setup(&port->sc_timer, sn_sal_timer_poll, 0);
672 672
673 if (IS_RUNNING_ON_SIMULATOR()) 673 if (IS_RUNNING_ON_SIMULATOR())
674 port->sc_interrupt_timeout = 6; 674 port->sc_interrupt_timeout = 6;
diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
index f2c34d656144..3c4ad71f261d 100644
--- a/drivers/tty/synclink.c
+++ b/drivers/tty/synclink.c
@@ -700,7 +700,7 @@ static void usc_enable_async_clock( struct mgsl_struct *info, u32 DataRate );
700 700
701static void usc_loopback_frame( struct mgsl_struct *info ); 701static void usc_loopback_frame( struct mgsl_struct *info );
702 702
703static void mgsl_tx_timeout(unsigned long context); 703static void mgsl_tx_timeout(struct timer_list *t);
704 704
705 705
706static void usc_loopmode_cancel_transmit( struct mgsl_struct * info ); 706static void usc_loopmode_cancel_transmit( struct mgsl_struct * info );
@@ -1768,7 +1768,7 @@ static int startup(struct mgsl_struct * info)
1768 1768
1769 memset(&info->icount, 0, sizeof(info->icount)); 1769 memset(&info->icount, 0, sizeof(info->icount));
1770 1770
1771 setup_timer(&info->tx_timer, mgsl_tx_timeout, (unsigned long)info); 1771 timer_setup(&info->tx_timer, mgsl_tx_timeout, 0);
1772 1772
1773 /* Allocate and claim adapter resources */ 1773 /* Allocate and claim adapter resources */
1774 retval = mgsl_claim_resources(info); 1774 retval = mgsl_claim_resources(info);
@@ -7517,9 +7517,9 @@ static void mgsl_trace_block(struct mgsl_struct *info,const char* data, int coun
7517 * Arguments: context pointer to device instance data 7517 * Arguments: context pointer to device instance data
7518 * Return Value: None 7518 * Return Value: None
7519 */ 7519 */
7520static void mgsl_tx_timeout(unsigned long context) 7520static void mgsl_tx_timeout(struct timer_list *t)
7521{ 7521{
7522 struct mgsl_struct *info = (struct mgsl_struct*)context; 7522 struct mgsl_struct *info = from_timer(info, t, tx_timer);
7523 unsigned long flags; 7523 unsigned long flags;
7524 7524
7525 if ( debug_level >= DEBUG_LEVEL_INFO ) 7525 if ( debug_level >= DEBUG_LEVEL_INFO )
diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
index 06a03731bba7..255c49687877 100644
--- a/drivers/tty/synclink_gt.c
+++ b/drivers/tty/synclink_gt.c
@@ -493,8 +493,8 @@ static void free_bufs(struct slgt_info *info, struct slgt_desc *bufs, int count)
493static int alloc_tmp_rbuf(struct slgt_info *info); 493static int alloc_tmp_rbuf(struct slgt_info *info);
494static void free_tmp_rbuf(struct slgt_info *info); 494static void free_tmp_rbuf(struct slgt_info *info);
495 495
496static void tx_timeout(unsigned long context); 496static void tx_timeout(struct timer_list *t);
497static void rx_timeout(unsigned long context); 497static void rx_timeout(struct timer_list *t);
498 498
499/* 499/*
500 * ioctl handlers 500 * ioctl handlers
@@ -3597,8 +3597,8 @@ static struct slgt_info *alloc_dev(int adapter_num, int port_num, struct pci_dev
3597 info->adapter_num = adapter_num; 3597 info->adapter_num = adapter_num;
3598 info->port_num = port_num; 3598 info->port_num = port_num;
3599 3599
3600 setup_timer(&info->tx_timer, tx_timeout, (unsigned long)info); 3600 timer_setup(&info->tx_timer, tx_timeout, 0);
3601 setup_timer(&info->rx_timer, rx_timeout, (unsigned long)info); 3601 timer_setup(&info->rx_timer, rx_timeout, 0);
3602 3602
3603 /* Copy configuration info to device instance data */ 3603 /* Copy configuration info to device instance data */
3604 info->pdev = pdev; 3604 info->pdev = pdev;
@@ -5112,9 +5112,9 @@ static int adapter_test(struct slgt_info *info)
5112/* 5112/*
5113 * transmit timeout handler 5113 * transmit timeout handler
5114 */ 5114 */
5115static void tx_timeout(unsigned long context) 5115static void tx_timeout(struct timer_list *t)
5116{ 5116{
5117 struct slgt_info *info = (struct slgt_info*)context; 5117 struct slgt_info *info = from_timer(info, t, tx_timer);
5118 unsigned long flags; 5118 unsigned long flags;
5119 5119
5120 DBGINFO(("%s tx_timeout\n", info->device_name)); 5120 DBGINFO(("%s tx_timeout\n", info->device_name));
@@ -5136,9 +5136,9 @@ static void tx_timeout(unsigned long context)
5136/* 5136/*
5137 * receive buffer polling timer 5137 * receive buffer polling timer
5138 */ 5138 */
5139static void rx_timeout(unsigned long context) 5139static void rx_timeout(struct timer_list *t)
5140{ 5140{
5141 struct slgt_info *info = (struct slgt_info*)context; 5141 struct slgt_info *info = from_timer(info, t, rx_timer);
5142 unsigned long flags; 5142 unsigned long flags;
5143 5143
5144 DBGINFO(("%s rx_timeout\n", info->device_name)); 5144 DBGINFO(("%s rx_timeout\n", info->device_name));
diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
index d45f234e1914..75f11ce1f0a1 100644
--- a/drivers/tty/synclinkmp.c
+++ b/drivers/tty/synclinkmp.c
@@ -615,8 +615,8 @@ static void free_tmp_rx_buf(SLMP_INFO *info);
615 615
616static void load_pci_memory(SLMP_INFO *info, char* dest, const char* src, unsigned short count); 616static void load_pci_memory(SLMP_INFO *info, char* dest, const char* src, unsigned short count);
617static void trace_block(SLMP_INFO *info, const char* data, int count, int xmit); 617static void trace_block(SLMP_INFO *info, const char* data, int count, int xmit);
618static void tx_timeout(unsigned long context); 618static void tx_timeout(struct timer_list *t);
619static void status_timeout(unsigned long context); 619static void status_timeout(struct timer_list *t);
620 620
621static unsigned char read_reg(SLMP_INFO *info, unsigned char addr); 621static unsigned char read_reg(SLMP_INFO *info, unsigned char addr);
622static void write_reg(SLMP_INFO *info, unsigned char addr, unsigned char val); 622static void write_reg(SLMP_INFO *info, unsigned char addr, unsigned char val);
@@ -3782,9 +3782,8 @@ static SLMP_INFO *alloc_dev(int adapter_num, int port_num, struct pci_dev *pdev)
3782 info->bus_type = MGSL_BUS_TYPE_PCI; 3782 info->bus_type = MGSL_BUS_TYPE_PCI;
3783 info->irq_flags = IRQF_SHARED; 3783 info->irq_flags = IRQF_SHARED;
3784 3784
3785 setup_timer(&info->tx_timer, tx_timeout, (unsigned long)info); 3785 timer_setup(&info->tx_timer, tx_timeout, 0);
3786 setup_timer(&info->status_timer, status_timeout, 3786 timer_setup(&info->status_timer, status_timeout, 0);
3787 (unsigned long)info);
3788 3787
3789 /* Store the PCI9050 misc control register value because a flaw 3788 /* Store the PCI9050 misc control register value because a flaw
3790 * in the PCI9050 prevents LCR registers from being read if 3789 * in the PCI9050 prevents LCR registers from being read if
@@ -5468,9 +5467,9 @@ static void trace_block(SLMP_INFO *info,const char* data, int count, int xmit)
5468/* called when HDLC frame times out 5467/* called when HDLC frame times out
5469 * update stats and do tx completion processing 5468 * update stats and do tx completion processing
5470 */ 5469 */
5471static void tx_timeout(unsigned long context) 5470static void tx_timeout(struct timer_list *t)
5472{ 5471{
5473 SLMP_INFO *info = (SLMP_INFO*)context; 5472 SLMP_INFO *info = from_timer(info, t, tx_timer);
5474 unsigned long flags; 5473 unsigned long flags;
5475 5474
5476 if ( debug_level >= DEBUG_LEVEL_INFO ) 5475 if ( debug_level >= DEBUG_LEVEL_INFO )
@@ -5495,10 +5494,10 @@ static void tx_timeout(unsigned long context)
5495 5494
5496/* called to periodically check the DSR/RI modem signal input status 5495/* called to periodically check the DSR/RI modem signal input status
5497 */ 5496 */
5498static void status_timeout(unsigned long context) 5497static void status_timeout(struct timer_list *t)
5499{ 5498{
5500 u16 status = 0; 5499 u16 status = 0;
5501 SLMP_INFO *info = (SLMP_INFO*)context; 5500 SLMP_INFO *info = from_timer(info, t, status_timer);
5502 unsigned long flags; 5501 unsigned long flags;
5503 unsigned char delta; 5502 unsigned char delta;
5504 5503
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index c8d90d7e7e37..5d412df8e943 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -244,7 +244,7 @@ static int kd_sound_helper(struct input_handle *handle, void *data)
244 return 0; 244 return 0;
245} 245}
246 246
247static void kd_nosound(unsigned long ignored) 247static void kd_nosound(struct timer_list *unused)
248{ 248{
249 static unsigned int zero; 249 static unsigned int zero;
250 250
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index bce4c71cb338..88b902c525d7 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -158,7 +158,7 @@ static void set_cursor(struct vc_data *vc);
158static void hide_cursor(struct vc_data *vc); 158static void hide_cursor(struct vc_data *vc);
159static void console_callback(struct work_struct *ignored); 159static void console_callback(struct work_struct *ignored);
160static void con_driver_unregister_callback(struct work_struct *ignored); 160static void con_driver_unregister_callback(struct work_struct *ignored);
161static void blank_screen_t(unsigned long dummy); 161static void blank_screen_t(struct timer_list *unused);
162static void set_palette(struct vc_data *vc); 162static void set_palette(struct vc_data *vc);
163 163
164#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1) 164#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1)
@@ -3929,7 +3929,7 @@ void unblank_screen(void)
3929 * (console operations can still happen at irq time, but only from printk which 3929 * (console operations can still happen at irq time, but only from printk which
3930 * has the console mutex. Not perfect yet, but better than no locking 3930 * has the console mutex. Not perfect yet, but better than no locking
3931 */ 3931 */
3932static void blank_screen_t(unsigned long dummy) 3932static void blank_screen_t(struct timer_list *unused)
3933{ 3933{
3934 blank_timer_expired = 1; 3934 blank_timer_expired = 1;
3935 schedule_work(&console_work); 3935 schedule_work(&console_work);
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
index 6470d259b7d8..8af797252af2 100644
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
@@ -547,21 +547,30 @@ static void cxacru_blocking_completion(struct urb *urb)
547 complete(urb->context); 547 complete(urb->context);
548} 548}
549 549
550static void cxacru_timeout_kill(unsigned long data) 550struct cxacru_timer {
551 struct timer_list timer;
552 struct urb *urb;
553};
554
555static void cxacru_timeout_kill(struct timer_list *t)
551{ 556{
552 usb_unlink_urb((struct urb *) data); 557 struct cxacru_timer *timer = from_timer(timer, t, timer);
558
559 usb_unlink_urb(timer->urb);
553} 560}
554 561
555static int cxacru_start_wait_urb(struct urb *urb, struct completion *done, 562static int cxacru_start_wait_urb(struct urb *urb, struct completion *done,
556 int *actual_length) 563 int *actual_length)
557{ 564{
558 struct timer_list timer; 565 struct cxacru_timer timer = {
566 .urb = urb,
567 };
559 568
560 setup_timer(&timer, cxacru_timeout_kill, (unsigned long)urb); 569 timer_setup_on_stack(&timer.timer, cxacru_timeout_kill, 0);
561 timer.expires = jiffies + msecs_to_jiffies(CMD_TIMEOUT); 570 mod_timer(&timer.timer, jiffies + msecs_to_jiffies(CMD_TIMEOUT));
562 add_timer(&timer);
563 wait_for_completion(done); 571 wait_for_completion(done);
564 del_timer_sync(&timer); 572 del_timer_sync(&timer.timer);
573 destroy_timer_on_stack(&timer.timer);
565 574
566 if (actual_length) 575 if (actual_length)
567 *actual_length = urb->actual_length; 576 *actual_length = urb->actual_length;
diff --git a/drivers/usb/atm/speedtch.c b/drivers/usb/atm/speedtch.c
index 5a5e8c0aaa39..973548b5c15c 100644
--- a/drivers/usb/atm/speedtch.c
+++ b/drivers/usb/atm/speedtch.c
@@ -557,9 +557,10 @@ static void speedtch_check_status(struct work_struct *work)
557 } 557 }
558} 558}
559 559
560static void speedtch_status_poll(unsigned long data) 560static void speedtch_status_poll(struct timer_list *t)
561{ 561{
562 struct speedtch_instance_data *instance = (void *)data; 562 struct speedtch_instance_data *instance = from_timer(instance, t,
563 status_check_timer);
563 564
564 schedule_work(&instance->status_check_work); 565 schedule_work(&instance->status_check_work);
565 566
@@ -570,9 +571,10 @@ static void speedtch_status_poll(unsigned long data)
570 atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n"); 571 atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n");
571} 572}
572 573
573static void speedtch_resubmit_int(unsigned long data) 574static void speedtch_resubmit_int(struct timer_list *t)
574{ 575{
575 struct speedtch_instance_data *instance = (void *)data; 576 struct speedtch_instance_data *instance = from_timer(instance, t,
577 resubmit_timer);
576 struct urb *int_urb = instance->int_urb; 578 struct urb *int_urb = instance->int_urb;
577 int ret; 579 int ret;
578 580
@@ -860,13 +862,11 @@ static int speedtch_bind(struct usbatm_data *usbatm,
860 usbatm->flags |= (use_isoc ? UDSL_USE_ISOC : 0); 862 usbatm->flags |= (use_isoc ? UDSL_USE_ISOC : 0);
861 863
862 INIT_WORK(&instance->status_check_work, speedtch_check_status); 864 INIT_WORK(&instance->status_check_work, speedtch_check_status);
863 setup_timer(&instance->status_check_timer, speedtch_status_poll, 865 timer_setup(&instance->status_check_timer, speedtch_status_poll, 0);
864 (unsigned long)instance);
865 instance->last_status = 0xff; 866 instance->last_status = 0xff;
866 instance->poll_delay = MIN_POLL_DELAY; 867 instance->poll_delay = MIN_POLL_DELAY;
867 868
868 setup_timer(&instance->resubmit_timer, speedtch_resubmit_int, 869 timer_setup(&instance->resubmit_timer, speedtch_resubmit_int, 0);
869 (unsigned long)instance);
870 870
871 instance->int_urb = usb_alloc_urb(0, GFP_KERNEL); 871 instance->int_urb = usb_alloc_urb(0, GFP_KERNEL);
872 872
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index 044264aa1f96..dbea28495e1d 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -989,18 +989,18 @@ static int usbatm_heavy_init(struct usbatm_data *instance)
989 return 0; 989 return 0;
990} 990}
991 991
992static void usbatm_tasklet_schedule(unsigned long data) 992static void usbatm_tasklet_schedule(struct timer_list *t)
993{ 993{
994 tasklet_schedule((struct tasklet_struct *) data); 994 struct usbatm_channel *channel = from_timer(channel, t, delay);
995
996 tasklet_schedule(&channel->tasklet);
995} 997}
996 998
997static void usbatm_init_channel(struct usbatm_channel *channel) 999static void usbatm_init_channel(struct usbatm_channel *channel)
998{ 1000{
999 spin_lock_init(&channel->lock); 1001 spin_lock_init(&channel->lock);
1000 INIT_LIST_HEAD(&channel->list); 1002 INIT_LIST_HEAD(&channel->list);
1001 channel->delay.function = usbatm_tasklet_schedule; 1003 timer_setup(&channel->delay, usbatm_tasklet_schedule, 0);
1002 channel->delay.data = (unsigned long) &channel->tasklet;
1003 init_timer(&channel->delay);
1004} 1004}
1005 1005
1006int usbatm_usb_probe(struct usb_interface *intf, const struct usb_device_id *id, 1006int usbatm_usb_probe(struct usb_interface *intf, const struct usb_device_id *id,
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 19b5c4afeef2..fc32391a34d5 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -788,9 +788,11 @@ void usb_hcd_poll_rh_status(struct usb_hcd *hcd)
788EXPORT_SYMBOL_GPL(usb_hcd_poll_rh_status); 788EXPORT_SYMBOL_GPL(usb_hcd_poll_rh_status);
789 789
790/* timer callback */ 790/* timer callback */
791static void rh_timer_func (unsigned long _hcd) 791static void rh_timer_func (struct timer_list *t)
792{ 792{
793 usb_hcd_poll_rh_status((struct usb_hcd *) _hcd); 793 struct usb_hcd *_hcd = from_timer(_hcd, t, rh_timer);
794
795 usb_hcd_poll_rh_status(_hcd);
794} 796}
795 797
796/*-------------------------------------------------------------------------*/ 798/*-------------------------------------------------------------------------*/
@@ -2545,7 +2547,7 @@ struct usb_hcd *__usb_create_hcd(const struct hc_driver *driver,
2545 hcd->self.bus_name = bus_name; 2547 hcd->self.bus_name = bus_name;
2546 hcd->self.uses_dma = (sysdev->dma_mask != NULL); 2548 hcd->self.uses_dma = (sysdev->dma_mask != NULL);
2547 2549
2548 setup_timer(&hcd->rh_timer, rh_timer_func, (unsigned long)hcd); 2550 timer_setup(&hcd->rh_timer, rh_timer_func, 0);
2549#ifdef CONFIG_PM 2551#ifdef CONFIG_PM
2550 INIT_WORK(&hcd->wakeup_work, hcd_resume_work); 2552 INIT_WORK(&hcd->wakeup_work, hcd_resume_work);
2551#endif 2553#endif
diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index 69eb40cd1b47..7b6eb0ad513b 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -3314,9 +3314,9 @@ host:
3314 } 3314 }
3315} 3315}
3316 3316
3317static void dwc2_wakeup_detected(unsigned long data) 3317static void dwc2_wakeup_detected(struct timer_list *t)
3318{ 3318{
3319 struct dwc2_hsotg *hsotg = (struct dwc2_hsotg *)data; 3319 struct dwc2_hsotg *hsotg = from_timer(hsotg, t, wkp_timer);
3320 u32 hprt0; 3320 u32 hprt0;
3321 3321
3322 dev_dbg(hsotg->dev, "%s()\n", __func__); 3322 dev_dbg(hsotg->dev, "%s()\n", __func__);
@@ -5155,8 +5155,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg)
5155 } 5155 }
5156 INIT_WORK(&hsotg->wf_otg, dwc2_conn_id_status_change); 5156 INIT_WORK(&hsotg->wf_otg, dwc2_conn_id_status_change);
5157 5157
5158 setup_timer(&hsotg->wkp_timer, dwc2_wakeup_detected, 5158 timer_setup(&hsotg->wkp_timer, dwc2_wakeup_detected, 0);
5159 (unsigned long)hsotg);
5160 5159
5161 /* Initialize the non-periodic schedule */ 5160 /* Initialize the non-periodic schedule */
5162 INIT_LIST_HEAD(&hsotg->non_periodic_sched_inactive); 5161 INIT_LIST_HEAD(&hsotg->non_periodic_sched_inactive);
diff --git a/drivers/usb/dwc2/hcd_queue.c b/drivers/usb/dwc2/hcd_queue.c
index f472de238ac2..fcd1676c7f0b 100644
--- a/drivers/usb/dwc2/hcd_queue.c
+++ b/drivers/usb/dwc2/hcd_queue.c
@@ -1275,9 +1275,9 @@ static void dwc2_do_unreserve(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
1275 * 1275 *
1276 * @work: Pointer to a qh unreserve_work. 1276 * @work: Pointer to a qh unreserve_work.
1277 */ 1277 */
1278static void dwc2_unreserve_timer_fn(unsigned long data) 1278static void dwc2_unreserve_timer_fn(struct timer_list *t)
1279{ 1279{
1280 struct dwc2_qh *qh = (struct dwc2_qh *)data; 1280 struct dwc2_qh *qh = from_timer(qh, t, unreserve_timer);
1281 struct dwc2_hsotg *hsotg = qh->hsotg; 1281 struct dwc2_hsotg *hsotg = qh->hsotg;
1282 unsigned long flags; 1282 unsigned long flags;
1283 1283
@@ -1467,8 +1467,7 @@ static void dwc2_qh_init(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh,
1467 1467
1468 /* Initialize QH */ 1468 /* Initialize QH */
1469 qh->hsotg = hsotg; 1469 qh->hsotg = hsotg;
1470 setup_timer(&qh->unreserve_timer, dwc2_unreserve_timer_fn, 1470 timer_setup(&qh->unreserve_timer, dwc2_unreserve_timer_fn, 0);
1471 (unsigned long)qh);
1472 qh->ep_type = ep_type; 1471 qh->ep_type = ep_type;
1473 qh->ep_is_in = ep_is_in; 1472 qh->ep_is_in = ep_is_in;
1474 1473
diff --git a/drivers/usb/gadget/udc/at91_udc.c b/drivers/usb/gadget/udc/at91_udc.c
index bfe278294e88..ad743a8493be 100644
--- a/drivers/usb/gadget/udc/at91_udc.c
+++ b/drivers/usb/gadget/udc/at91_udc.c
@@ -1550,9 +1550,9 @@ static void at91_vbus_timer_work(struct work_struct *work)
1550 mod_timer(&udc->vbus_timer, jiffies + VBUS_POLL_TIMEOUT); 1550 mod_timer(&udc->vbus_timer, jiffies + VBUS_POLL_TIMEOUT);
1551} 1551}
1552 1552
1553static void at91_vbus_timer(unsigned long data) 1553static void at91_vbus_timer(struct timer_list *t)
1554{ 1554{
1555 struct at91_udc *udc = (struct at91_udc *)data; 1555 struct at91_udc *udc = from_timer(udc, t, vbus_timer);
1556 1556
1557 /* 1557 /*
1558 * If we are polling vbus it is likely that the gpio is on an 1558 * If we are polling vbus it is likely that the gpio is on an
@@ -1918,8 +1918,7 @@ static int at91udc_probe(struct platform_device *pdev)
1918 1918
1919 if (udc->board.vbus_polled) { 1919 if (udc->board.vbus_polled) {
1920 INIT_WORK(&udc->vbus_timer_work, at91_vbus_timer_work); 1920 INIT_WORK(&udc->vbus_timer_work, at91_vbus_timer_work);
1921 setup_timer(&udc->vbus_timer, at91_vbus_timer, 1921 timer_setup(&udc->vbus_timer, at91_vbus_timer, 0);
1922 (unsigned long)udc);
1923 mod_timer(&udc->vbus_timer, 1922 mod_timer(&udc->vbus_timer,
1924 jiffies + VBUS_POLL_TIMEOUT); 1923 jiffies + VBUS_POLL_TIMEOUT);
1925 } else { 1924 } else {
diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
index 4f1b1809472c..d0128f92ec5a 100644
--- a/drivers/usb/gadget/udc/dummy_hcd.c
+++ b/drivers/usb/gadget/udc/dummy_hcd.c
@@ -1771,9 +1771,9 @@ static int handle_control_request(struct dummy_hcd *dum_hcd, struct urb *urb,
1771/* drive both sides of the transfers; looks like irq handlers to 1771/* drive both sides of the transfers; looks like irq handlers to
1772 * both drivers except the callbacks aren't in_irq(). 1772 * both drivers except the callbacks aren't in_irq().
1773 */ 1773 */
1774static void dummy_timer(unsigned long _dum_hcd) 1774static void dummy_timer(struct timer_list *t)
1775{ 1775{
1776 struct dummy_hcd *dum_hcd = (struct dummy_hcd *) _dum_hcd; 1776 struct dummy_hcd *dum_hcd = from_timer(dum_hcd, t, timer);
1777 struct dummy *dum = dum_hcd->dum; 1777 struct dummy *dum = dum_hcd->dum;
1778 struct urbp *urbp, *tmp; 1778 struct urbp *urbp, *tmp;
1779 unsigned long flags; 1779 unsigned long flags;
@@ -2445,7 +2445,7 @@ static DEVICE_ATTR_RO(urbs);
2445 2445
2446static int dummy_start_ss(struct dummy_hcd *dum_hcd) 2446static int dummy_start_ss(struct dummy_hcd *dum_hcd)
2447{ 2447{
2448 setup_timer(&dum_hcd->timer, dummy_timer, (unsigned long)dum_hcd); 2448 timer_setup(&dum_hcd->timer, dummy_timer, 0);
2449 dum_hcd->rh_state = DUMMY_RH_RUNNING; 2449 dum_hcd->rh_state = DUMMY_RH_RUNNING;
2450 dum_hcd->stream_en_ep = 0; 2450 dum_hcd->stream_en_ep = 0;
2451 INIT_LIST_HEAD(&dum_hcd->urbp_list); 2451 INIT_LIST_HEAD(&dum_hcd->urbp_list);
@@ -2474,7 +2474,7 @@ static int dummy_start(struct usb_hcd *hcd)
2474 return dummy_start_ss(dum_hcd); 2474 return dummy_start_ss(dum_hcd);
2475 2475
2476 spin_lock_init(&dum_hcd->dum->lock); 2476 spin_lock_init(&dum_hcd->dum->lock);
2477 setup_timer(&dum_hcd->timer, dummy_timer, (unsigned long)dum_hcd); 2477 timer_setup(&dum_hcd->timer, dummy_timer, 0);
2478 dum_hcd->rh_state = DUMMY_RH_RUNNING; 2478 dum_hcd->rh_state = DUMMY_RH_RUNNING;
2479 2479
2480 INIT_LIST_HEAD(&dum_hcd->urbp_list); 2480 INIT_LIST_HEAD(&dum_hcd->urbp_list);
diff --git a/drivers/usb/gadget/udc/m66592-udc.c b/drivers/usb/gadget/udc/m66592-udc.c
index f19e6282a688..a8288df6aadf 100644
--- a/drivers/usb/gadget/udc/m66592-udc.c
+++ b/drivers/usb/gadget/udc/m66592-udc.c
@@ -1259,9 +1259,9 @@ static irqreturn_t m66592_irq(int irq, void *_m66592)
1259 return IRQ_HANDLED; 1259 return IRQ_HANDLED;
1260} 1260}
1261 1261
1262static void m66592_timer(unsigned long _m66592) 1262static void m66592_timer(struct timer_list *t)
1263{ 1263{
1264 struct m66592 *m66592 = (struct m66592 *)_m66592; 1264 struct m66592 *m66592 = from_timer(m66592, t, timer);
1265 unsigned long flags; 1265 unsigned long flags;
1266 u16 tmp; 1266 u16 tmp;
1267 1267
@@ -1589,7 +1589,7 @@ static int m66592_probe(struct platform_device *pdev)
1589 m66592->gadget.max_speed = USB_SPEED_HIGH; 1589 m66592->gadget.max_speed = USB_SPEED_HIGH;
1590 m66592->gadget.name = udc_name; 1590 m66592->gadget.name = udc_name;
1591 1591
1592 setup_timer(&m66592->timer, m66592_timer, (unsigned long)m66592); 1592 timer_setup(&m66592->timer, m66592_timer, 0);
1593 m66592->reg = reg; 1593 m66592->reg = reg;
1594 1594
1595 ret = request_irq(ires->start, m66592_irq, IRQF_SHARED, 1595 ret = request_irq(ires->start, m66592_irq, IRQF_SHARED,
diff --git a/drivers/usb/gadget/udc/omap_udc.c b/drivers/usb/gadget/udc/omap_udc.c
index fc7f810baef7..dc35a54bad90 100644
--- a/drivers/usb/gadget/udc/omap_udc.c
+++ b/drivers/usb/gadget/udc/omap_udc.c
@@ -1854,9 +1854,9 @@ static irqreturn_t omap_udc_irq(int irq, void *_udc)
1854#define PIO_OUT_TIMEOUT (jiffies + HZ/3) 1854#define PIO_OUT_TIMEOUT (jiffies + HZ/3)
1855#define HALF_FULL(f) (!((f)&(UDC_NON_ISO_FIFO_FULL|UDC_NON_ISO_FIFO_EMPTY))) 1855#define HALF_FULL(f) (!((f)&(UDC_NON_ISO_FIFO_FULL|UDC_NON_ISO_FIFO_EMPTY)))
1856 1856
1857static void pio_out_timer(unsigned long _ep) 1857static void pio_out_timer(struct timer_list *t)
1858{ 1858{
1859 struct omap_ep *ep = (void *) _ep; 1859 struct omap_ep *ep = from_timer(ep, t, timer);
1860 unsigned long flags; 1860 unsigned long flags;
1861 u16 stat_flg; 1861 u16 stat_flg;
1862 1862
@@ -2542,9 +2542,7 @@ omap_ep_setup(char *name, u8 addr, u8 type,
2542 } 2542 }
2543 if (dbuf && addr) 2543 if (dbuf && addr)
2544 epn_rxtx |= UDC_EPN_RX_DB; 2544 epn_rxtx |= UDC_EPN_RX_DB;
2545 init_timer(&ep->timer); 2545 timer_setup(&ep->timer, pio_out_timer, 0);
2546 ep->timer.function = pio_out_timer;
2547 ep->timer.data = (unsigned long) ep;
2548 } 2546 }
2549 if (addr) 2547 if (addr)
2550 epn_rxtx |= UDC_EPN_RX_VALID; 2548 epn_rxtx |= UDC_EPN_RX_VALID;
diff --git a/drivers/usb/gadget/udc/pxa25x_udc.c b/drivers/usb/gadget/udc/pxa25x_udc.c
index 8f135d9fa245..0e3f5faa000e 100644
--- a/drivers/usb/gadget/udc/pxa25x_udc.c
+++ b/drivers/usb/gadget/udc/pxa25x_udc.c
@@ -1624,9 +1624,9 @@ static inline void clear_ep_state (struct pxa25x_udc *dev)
1624 nuke(&dev->ep[i], -ECONNABORTED); 1624 nuke(&dev->ep[i], -ECONNABORTED);
1625} 1625}
1626 1626
1627static void udc_watchdog(unsigned long _dev) 1627static void udc_watchdog(struct timer_list *t)
1628{ 1628{
1629 struct pxa25x_udc *dev = (void *)_dev; 1629 struct pxa25x_udc *dev = from_timer(dev, t, timer);
1630 1630
1631 local_irq_disable(); 1631 local_irq_disable();
1632 if (dev->ep0state == EP0_STALL 1632 if (dev->ep0state == EP0_STALL
@@ -2413,7 +2413,7 @@ static int pxa25x_udc_probe(struct platform_device *pdev)
2413 gpio_direction_output(dev->mach->gpio_pullup, 0); 2413 gpio_direction_output(dev->mach->gpio_pullup, 0);
2414 } 2414 }
2415 2415
2416 setup_timer(&dev->timer, udc_watchdog, (unsigned long)dev); 2416 timer_setup(&dev->timer, udc_watchdog, 0);
2417 2417
2418 the_controller = dev; 2418 the_controller = dev;
2419 platform_set_drvdata(pdev, dev); 2419 platform_set_drvdata(pdev, dev);
diff --git a/drivers/usb/gadget/udc/r8a66597-udc.c b/drivers/usb/gadget/udc/r8a66597-udc.c
index 143122ed3c66..a3ecce62662b 100644
--- a/drivers/usb/gadget/udc/r8a66597-udc.c
+++ b/drivers/usb/gadget/udc/r8a66597-udc.c
@@ -1514,9 +1514,9 @@ static irqreturn_t r8a66597_irq(int irq, void *_r8a66597)
1514 return IRQ_HANDLED; 1514 return IRQ_HANDLED;
1515} 1515}
1516 1516
1517static void r8a66597_timer(unsigned long _r8a66597) 1517static void r8a66597_timer(struct timer_list *t)
1518{ 1518{
1519 struct r8a66597 *r8a66597 = (struct r8a66597 *)_r8a66597; 1519 struct r8a66597 *r8a66597 = from_timer(r8a66597, t, timer);
1520 unsigned long flags; 1520 unsigned long flags;
1521 u16 tmp; 1521 u16 tmp;
1522 1522
@@ -1874,7 +1874,7 @@ static int r8a66597_probe(struct platform_device *pdev)
1874 r8a66597->gadget.max_speed = USB_SPEED_HIGH; 1874 r8a66597->gadget.max_speed = USB_SPEED_HIGH;
1875 r8a66597->gadget.name = udc_name; 1875 r8a66597->gadget.name = udc_name;
1876 1876
1877 setup_timer(&r8a66597->timer, r8a66597_timer, (unsigned long)r8a66597); 1877 timer_setup(&r8a66597->timer, r8a66597_timer, 0);
1878 r8a66597->reg = reg; 1878 r8a66597->reg = reg;
1879 1879
1880 if (r8a66597->pdata->on_chip) { 1880 if (r8a66597->pdata->on_chip) {
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 10887e09e9bc..ee9676349333 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -80,7 +80,7 @@ static const char hcd_name [] = "ohci_hcd";
80 80
81static void ohci_dump(struct ohci_hcd *ohci); 81static void ohci_dump(struct ohci_hcd *ohci);
82static void ohci_stop(struct usb_hcd *hcd); 82static void ohci_stop(struct usb_hcd *hcd);
83static void io_watchdog_func(unsigned long _ohci); 83static void io_watchdog_func(struct timer_list *t);
84 84
85#include "ohci-hub.c" 85#include "ohci-hub.c"
86#include "ohci-dbg.c" 86#include "ohci-dbg.c"
@@ -500,8 +500,7 @@ static int ohci_init (struct ohci_hcd *ohci)
500 if (ohci->hcca) 500 if (ohci->hcca)
501 return 0; 501 return 0;
502 502
503 setup_timer(&ohci->io_watchdog, io_watchdog_func, 503 timer_setup(&ohci->io_watchdog, io_watchdog_func, 0);
504 (unsigned long) ohci);
505 504
506 ohci->hcca = dma_alloc_coherent (hcd->self.controller, 505 ohci->hcca = dma_alloc_coherent (hcd->self.controller,
507 sizeof(*ohci->hcca), &ohci->hcca_dma, GFP_KERNEL); 506 sizeof(*ohci->hcca), &ohci->hcca_dma, GFP_KERNEL);
@@ -723,9 +722,9 @@ static int ohci_start(struct usb_hcd *hcd)
723 * the unlink list. As a result, URBs could never be dequeued and 722 * the unlink list. As a result, URBs could never be dequeued and
724 * endpoints could never be released. 723 * endpoints could never be released.
725 */ 724 */
726static void io_watchdog_func(unsigned long _ohci) 725static void io_watchdog_func(struct timer_list *t)
727{ 726{
728 struct ohci_hcd *ohci = (struct ohci_hcd *) _ohci; 727 struct ohci_hcd *ohci = from_timer(ohci, t, io_watchdog);
729 bool takeback_all_pending = false; 728 bool takeback_all_pending = false;
730 u32 status; 729 u32 status;
731 u32 head; 730 u32 head;
diff --git a/drivers/usb/host/oxu210hp-hcd.c b/drivers/usb/host/oxu210hp-hcd.c
index 0bf7759aae78..c5e6e8d0b5ef 100644
--- a/drivers/usb/host/oxu210hp-hcd.c
+++ b/drivers/usb/host/oxu210hp-hcd.c
@@ -2539,9 +2539,9 @@ static irqreturn_t oxu_irq(struct usb_hcd *hcd)
2539 return ret; 2539 return ret;
2540} 2540}
2541 2541
2542static void oxu_watchdog(unsigned long param) 2542static void oxu_watchdog(struct timer_list *t)
2543{ 2543{
2544 struct oxu_hcd *oxu = (struct oxu_hcd *) param; 2544 struct oxu_hcd *oxu = from_timer(oxu, t, watchdog);
2545 unsigned long flags; 2545 unsigned long flags;
2546 2546
2547 spin_lock_irqsave(&oxu->lock, flags); 2547 spin_lock_irqsave(&oxu->lock, flags);
@@ -2577,7 +2577,7 @@ static int oxu_hcd_init(struct usb_hcd *hcd)
2577 2577
2578 spin_lock_init(&oxu->lock); 2578 spin_lock_init(&oxu->lock);
2579 2579
2580 setup_timer(&oxu->watchdog, oxu_watchdog, (unsigned long)oxu); 2580 timer_setup(&oxu->watchdog, oxu_watchdog, 0);
2581 2581
2582 /* 2582 /*
2583 * hw default: 1K periodic list heads, one per frame. 2583 * hw default: 1K periodic list heads, one per frame.
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index f3d9ba420a97..984892dd72f5 100644
--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -1798,9 +1798,9 @@ static void r8a66597_td_timer(struct timer_list *t)
1798 spin_unlock_irqrestore(&r8a66597->lock, flags); 1798 spin_unlock_irqrestore(&r8a66597->lock, flags);
1799} 1799}
1800 1800
1801static void r8a66597_timer(unsigned long _r8a66597) 1801static void r8a66597_timer(struct timer_list *t)
1802{ 1802{
1803 struct r8a66597 *r8a66597 = (struct r8a66597 *)_r8a66597; 1803 struct r8a66597 *r8a66597 = from_timer(r8a66597, t, rh_timer);
1804 unsigned long flags; 1804 unsigned long flags;
1805 int port; 1805 int port;
1806 1806
@@ -2472,8 +2472,7 @@ static int r8a66597_probe(struct platform_device *pdev)
2472 r8a66597->max_root_hub = 2; 2472 r8a66597->max_root_hub = 2;
2473 2473
2474 spin_lock_init(&r8a66597->lock); 2474 spin_lock_init(&r8a66597->lock);
2475 setup_timer(&r8a66597->rh_timer, r8a66597_timer, 2475 timer_setup(&r8a66597->rh_timer, r8a66597_timer, 0);
2476 (unsigned long)r8a66597);
2477 r8a66597->reg = reg; 2476 r8a66597->reg = reg;
2478 2477
2479 /* make sure no interrupts are pending */ 2478 /* make sure no interrupts are pending */
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
index 601fb00603cc..fa88a903fa2e 100644
--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -1119,9 +1119,9 @@ sl811h_hub_descriptor (
1119} 1119}
1120 1120
1121static void 1121static void
1122sl811h_timer(unsigned long _sl811) 1122sl811h_timer(struct timer_list *t)
1123{ 1123{
1124 struct sl811 *sl811 = (void *) _sl811; 1124 struct sl811 *sl811 = from_timer(sl811, t, timer);
1125 unsigned long flags; 1125 unsigned long flags;
1126 u8 irqstat; 1126 u8 irqstat;
1127 u8 signaling = sl811->ctrl1 & SL11H_CTL1MASK_FORCE; 1127 u8 signaling = sl811->ctrl1 & SL11H_CTL1MASK_FORCE;
@@ -1692,7 +1692,7 @@ sl811h_probe(struct platform_device *dev)
1692 spin_lock_init(&sl811->lock); 1692 spin_lock_init(&sl811->lock);
1693 INIT_LIST_HEAD(&sl811->async); 1693 INIT_LIST_HEAD(&sl811->async);
1694 sl811->board = dev_get_platdata(&dev->dev); 1694 sl811->board = dev_get_platdata(&dev->dev);
1695 setup_timer(&sl811->timer, sl811h_timer, (unsigned long)sl811); 1695 timer_setup(&sl811->timer, sl811h_timer, 0);
1696 sl811->addr_reg = addr_reg; 1696 sl811->addr_reg = addr_reg;
1697 sl811->data_reg = data_reg; 1697 sl811->data_reg = data_reg;
1698 1698
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index babeefd84ffd..f5c90217777a 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -585,8 +585,7 @@ static int uhci_start(struct usb_hcd *hcd)
585 hcd->self.sg_tablesize = ~0; 585 hcd->self.sg_tablesize = ~0;
586 586
587 spin_lock_init(&uhci->lock); 587 spin_lock_init(&uhci->lock);
588 setup_timer(&uhci->fsbr_timer, uhci_fsbr_timeout, 588 timer_setup(&uhci->fsbr_timer, uhci_fsbr_timeout, 0);
589 (unsigned long) uhci);
590 INIT_LIST_HEAD(&uhci->idle_qh_list); 589 INIT_LIST_HEAD(&uhci->idle_qh_list);
591 init_waitqueue_head(&uhci->waitqh); 590 init_waitqueue_head(&uhci->waitqh);
592 591
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index 49d4edc03cc2..d40438238938 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -90,9 +90,9 @@ static void uhci_urbp_wants_fsbr(struct uhci_hcd *uhci, struct urb_priv *urbp)
90 } 90 }
91} 91}
92 92
93static void uhci_fsbr_timeout(unsigned long _uhci) 93static void uhci_fsbr_timeout(struct timer_list *t)
94{ 94{
95 struct uhci_hcd *uhci = (struct uhci_hcd *) _uhci; 95 struct uhci_hcd *uhci = from_timer(uhci, t, fsbr_timer);
96 unsigned long flags; 96 unsigned long flags;
97 97
98 spin_lock_irqsave(&uhci->lock, flags); 98 spin_lock_irqsave(&uhci->lock, flags);
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 327ba8b8a98b..2424d3020ca3 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -395,14 +395,14 @@ static inline void xhci_msix_sync_irqs(struct xhci_hcd *xhci)
395 395
396#endif 396#endif
397 397
398static void compliance_mode_recovery(unsigned long arg) 398static void compliance_mode_recovery(struct timer_list *t)
399{ 399{
400 struct xhci_hcd *xhci; 400 struct xhci_hcd *xhci;
401 struct usb_hcd *hcd; 401 struct usb_hcd *hcd;
402 u32 temp; 402 u32 temp;
403 int i; 403 int i;
404 404
405 xhci = (struct xhci_hcd *)arg; 405 xhci = from_timer(xhci, t, comp_mode_recovery_timer);
406 406
407 for (i = 0; i < xhci->num_usb3_ports; i++) { 407 for (i = 0; i < xhci->num_usb3_ports; i++) {
408 temp = readl(xhci->usb3_ports[i]); 408 temp = readl(xhci->usb3_ports[i]);
@@ -443,8 +443,8 @@ static void compliance_mode_recovery(unsigned long arg)
443static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci) 443static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci)
444{ 444{
445 xhci->port_status_u0 = 0; 445 xhci->port_status_u0 = 0;
446 setup_timer(&xhci->comp_mode_recovery_timer, 446 timer_setup(&xhci->comp_mode_recovery_timer, compliance_mode_recovery,
447 compliance_mode_recovery, (unsigned long)xhci); 447 0);
448 xhci->comp_mode_recovery_timer.expires = jiffies + 448 xhci->comp_mode_recovery_timer.expires = jiffies +
449 msecs_to_jiffies(COMP_MODE_RCVRY_MSECS); 449 msecs_to_jiffies(COMP_MODE_RCVRY_MSECS);
450 450
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index a859c2d33c29..fdceb46d9fc6 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -555,9 +555,9 @@ static void mos7840_set_led_sync(struct usb_serial_port *port, __u16 reg,
555 val, reg, NULL, 0, MOS_WDR_TIMEOUT); 555 val, reg, NULL, 0, MOS_WDR_TIMEOUT);
556} 556}
557 557
558static void mos7840_led_off(unsigned long arg) 558static void mos7840_led_off(struct timer_list *t)
559{ 559{
560 struct moschip_port *mcs = (struct moschip_port *) arg; 560 struct moschip_port *mcs = from_timer(mcs, t, led_timer1);
561 561
562 /* Turn off LED */ 562 /* Turn off LED */
563 mos7840_set_led_async(mcs, 0x0300, MODEM_CONTROL_REGISTER); 563 mos7840_set_led_async(mcs, 0x0300, MODEM_CONTROL_REGISTER);
@@ -565,9 +565,9 @@ static void mos7840_led_off(unsigned long arg)
565 jiffies + msecs_to_jiffies(LED_OFF_MS)); 565 jiffies + msecs_to_jiffies(LED_OFF_MS));
566} 566}
567 567
568static void mos7840_led_flag_off(unsigned long arg) 568static void mos7840_led_flag_off(struct timer_list *t)
569{ 569{
570 struct moschip_port *mcs = (struct moschip_port *) arg; 570 struct moschip_port *mcs = from_timer(mcs, t, led_timer2);
571 571
572 clear_bit_unlock(MOS7840_FLAG_LED_BUSY, &mcs->flags); 572 clear_bit_unlock(MOS7840_FLAG_LED_BUSY, &mcs->flags);
573} 573}
@@ -2289,12 +2289,11 @@ static int mos7840_port_probe(struct usb_serial_port *port)
2289 goto error; 2289 goto error;
2290 } 2290 }
2291 2291
2292 setup_timer(&mos7840_port->led_timer1, mos7840_led_off, 2292 timer_setup(&mos7840_port->led_timer1, mos7840_led_off, 0);
2293 (unsigned long)mos7840_port);
2294 mos7840_port->led_timer1.expires = 2293 mos7840_port->led_timer1.expires =
2295 jiffies + msecs_to_jiffies(LED_ON_MS); 2294 jiffies + msecs_to_jiffies(LED_ON_MS);
2296 setup_timer(&mos7840_port->led_timer2, mos7840_led_flag_off, 2295 timer_setup(&mos7840_port->led_timer2, mos7840_led_flag_off,
2297 (unsigned long)mos7840_port); 2296 0);
2298 mos7840_port->led_timer2.expires = 2297 mos7840_port->led_timer2.expires =
2299 jiffies + msecs_to_jiffies(LED_OFF_MS); 2298 jiffies + msecs_to_jiffies(LED_OFF_MS);
2300 2299
diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
index 48e2e32c97e8..31b024441938 100644
--- a/drivers/usb/storage/realtek_cr.c
+++ b/drivers/usb/storage/realtek_cr.c
@@ -751,9 +751,9 @@ static void rts51x_modi_suspend_timer(struct rts51x_chip *chip)
751 mod_timer(&chip->rts51x_suspend_timer, chip->timer_expires); 751 mod_timer(&chip->rts51x_suspend_timer, chip->timer_expires);
752} 752}
753 753
754static void rts51x_suspend_timer_fn(unsigned long data) 754static void rts51x_suspend_timer_fn(struct timer_list *t)
755{ 755{
756 struct rts51x_chip *chip = (struct rts51x_chip *)data; 756 struct rts51x_chip *chip = from_timer(chip, t, rts51x_suspend_timer);
757 struct us_data *us = chip->us; 757 struct us_data *us = chip->us;
758 758
759 switch (rts51x_get_stat(chip)) { 759 switch (rts51x_get_stat(chip)) {
@@ -917,8 +917,7 @@ static int realtek_cr_autosuspend_setup(struct us_data *us)
917 us->proto_handler = rts51x_invoke_transport; 917 us->proto_handler = rts51x_invoke_transport;
918 918
919 chip->timer_expires = 0; 919 chip->timer_expires = 0;
920 setup_timer(&chip->rts51x_suspend_timer, rts51x_suspend_timer_fn, 920 timer_setup(&chip->rts51x_suspend_timer, rts51x_suspend_timer_fn, 0);
921 (unsigned long)chip);
922 fw5895_init(us); 921 fw5895_init(us);
923 922
924 /* enable autosuspend function of the usb device */ 923 /* enable autosuspend function of the usb device */
diff --git a/drivers/uwb/drp.c b/drivers/uwb/drp.c
index 38d0504a1bbc..625f706b8160 100644
--- a/drivers/uwb/drp.c
+++ b/drivers/uwb/drp.c
@@ -603,9 +603,9 @@ static void uwb_cnflt_update_work(struct work_struct *work)
603 mutex_unlock(&rc->rsvs_mutex); 603 mutex_unlock(&rc->rsvs_mutex);
604} 604}
605 605
606static void uwb_cnflt_timer(unsigned long arg) 606static void uwb_cnflt_timer(struct timer_list *t)
607{ 607{
608 struct uwb_cnflt_alien *cnflt = (struct uwb_cnflt_alien *)arg; 608 struct uwb_cnflt_alien *cnflt = from_timer(cnflt, t, timer);
609 609
610 queue_work(cnflt->rc->rsv_workq, &cnflt->cnflt_update_work); 610 queue_work(cnflt->rc->rsv_workq, &cnflt->cnflt_update_work);
611} 611}
@@ -642,7 +642,7 @@ static void uwb_drp_handle_alien_drp(struct uwb_rc *rc, struct uwb_ie_drp *drp_i
642 } 642 }
643 643
644 INIT_LIST_HEAD(&cnflt->rc_node); 644 INIT_LIST_HEAD(&cnflt->rc_node);
645 setup_timer(&cnflt->timer, uwb_cnflt_timer, (unsigned long)cnflt); 645 timer_setup(&cnflt->timer, uwb_cnflt_timer, 0);
646 646
647 cnflt->rc = rc; 647 cnflt->rc = rc;
648 INIT_WORK(&cnflt->cnflt_update_work, uwb_cnflt_update_work); 648 INIT_WORK(&cnflt->cnflt_update_work, uwb_cnflt_update_work);
diff --git a/drivers/uwb/neh.c b/drivers/uwb/neh.c
index 36b5cb62c15d..fbdca728bd9f 100644
--- a/drivers/uwb/neh.c
+++ b/drivers/uwb/neh.c
@@ -115,7 +115,7 @@ struct uwb_rc_neh {
115 struct list_head list_node; 115 struct list_head list_node;
116}; 116};
117 117
118static void uwb_rc_neh_timer(unsigned long arg); 118static void uwb_rc_neh_timer(struct timer_list *t);
119 119
120static void uwb_rc_neh_release(struct kref *kref) 120static void uwb_rc_neh_release(struct kref *kref)
121{ 121{
@@ -223,7 +223,7 @@ struct uwb_rc_neh *uwb_rc_neh_add(struct uwb_rc *rc, struct uwb_rccb *cmd,
223 223
224 kref_init(&neh->kref); 224 kref_init(&neh->kref);
225 INIT_LIST_HEAD(&neh->list_node); 225 INIT_LIST_HEAD(&neh->list_node);
226 setup_timer(&neh->timer, uwb_rc_neh_timer, (unsigned long)neh); 226 timer_setup(&neh->timer, uwb_rc_neh_timer, 0);
227 227
228 neh->rc = rc; 228 neh->rc = rc;
229 neh->evt_type = expected_type; 229 neh->evt_type = expected_type;
@@ -565,9 +565,9 @@ void uwb_rc_neh_error(struct uwb_rc *rc, int error)
565EXPORT_SYMBOL_GPL(uwb_rc_neh_error); 565EXPORT_SYMBOL_GPL(uwb_rc_neh_error);
566 566
567 567
568static void uwb_rc_neh_timer(unsigned long arg) 568static void uwb_rc_neh_timer(struct timer_list *t)
569{ 569{
570 struct uwb_rc_neh *neh = (struct uwb_rc_neh *)arg; 570 struct uwb_rc_neh *neh = from_timer(neh, t, timer);
571 struct uwb_rc *rc = neh->rc; 571 struct uwb_rc *rc = neh->rc;
572 unsigned long flags; 572 unsigned long flags;
573 573
diff --git a/drivers/uwb/rsv.c b/drivers/uwb/rsv.c
index f5e27247a38f..fe25a8cc6fa1 100644
--- a/drivers/uwb/rsv.c
+++ b/drivers/uwb/rsv.c
@@ -23,7 +23,7 @@
23 23
24#include "uwb-internal.h" 24#include "uwb-internal.h"
25 25
26static void uwb_rsv_timer(unsigned long arg); 26static void uwb_rsv_timer(struct timer_list *t);
27 27
28static const char *rsv_states[] = { 28static const char *rsv_states[] = {
29 [UWB_RSV_STATE_NONE] = "none ", 29 [UWB_RSV_STATE_NONE] = "none ",
@@ -198,9 +198,9 @@ static void uwb_rsv_put_stream(struct uwb_rsv *rsv)
198 dev_dbg(dev, "put stream %d\n", rsv->stream); 198 dev_dbg(dev, "put stream %d\n", rsv->stream);
199} 199}
200 200
201void uwb_rsv_backoff_win_timer(unsigned long arg) 201void uwb_rsv_backoff_win_timer(struct timer_list *t)
202{ 202{
203 struct uwb_drp_backoff_win *bow = (struct uwb_drp_backoff_win *)arg; 203 struct uwb_drp_backoff_win *bow = from_timer(bow, t, timer);
204 struct uwb_rc *rc = container_of(bow, struct uwb_rc, bow); 204 struct uwb_rc *rc = container_of(bow, struct uwb_rc, bow);
205 struct device *dev = &rc->uwb_dev.dev; 205 struct device *dev = &rc->uwb_dev.dev;
206 206
@@ -470,7 +470,7 @@ static struct uwb_rsv *uwb_rsv_alloc(struct uwb_rc *rc)
470 INIT_LIST_HEAD(&rsv->rc_node); 470 INIT_LIST_HEAD(&rsv->rc_node);
471 INIT_LIST_HEAD(&rsv->pal_node); 471 INIT_LIST_HEAD(&rsv->pal_node);
472 kref_init(&rsv->kref); 472 kref_init(&rsv->kref);
473 setup_timer(&rsv->timer, uwb_rsv_timer, (unsigned long)rsv); 473 timer_setup(&rsv->timer, uwb_rsv_timer, 0);
474 474
475 rsv->rc = rc; 475 rsv->rc = rc;
476 INIT_WORK(&rsv->handle_timeout_work, uwb_rsv_handle_timeout_work); 476 INIT_WORK(&rsv->handle_timeout_work, uwb_rsv_handle_timeout_work);
@@ -939,9 +939,9 @@ static void uwb_rsv_alien_bp_work(struct work_struct *work)
939 mutex_unlock(&rc->rsvs_mutex); 939 mutex_unlock(&rc->rsvs_mutex);
940} 940}
941 941
942static void uwb_rsv_timer(unsigned long arg) 942static void uwb_rsv_timer(struct timer_list *t)
943{ 943{
944 struct uwb_rsv *rsv = (struct uwb_rsv *)arg; 944 struct uwb_rsv *rsv = from_timer(rsv, t, timer);
945 945
946 queue_work(rsv->rc->rsv_workq, &rsv->handle_timeout_work); 946 queue_work(rsv->rc->rsv_workq, &rsv->handle_timeout_work);
947} 947}
@@ -987,8 +987,7 @@ void uwb_rsv_init(struct uwb_rc *rc)
987 rc->bow.can_reserve_extra_mases = true; 987 rc->bow.can_reserve_extra_mases = true;
988 rc->bow.total_expired = 0; 988 rc->bow.total_expired = 0;
989 rc->bow.window = UWB_DRP_BACKOFF_WIN_MIN >> 1; 989 rc->bow.window = UWB_DRP_BACKOFF_WIN_MIN >> 1;
990 setup_timer(&rc->bow.timer, uwb_rsv_backoff_win_timer, 990 timer_setup(&rc->bow.timer, uwb_rsv_backoff_win_timer, 0);
991 (unsigned long)&rc->bow);
992 991
993 bitmap_complement(rc->uwb_dev.streams, rc->uwb_dev.streams, UWB_NUM_STREAMS); 992 bitmap_complement(rc->uwb_dev.streams, rc->uwb_dev.streams, UWB_NUM_STREAMS);
994} 993}
diff --git a/drivers/uwb/uwb-internal.h b/drivers/uwb/uwb-internal.h
index 353c0555a1f5..91326ce093a7 100644
--- a/drivers/uwb/uwb-internal.h
+++ b/drivers/uwb/uwb-internal.h
@@ -329,7 +329,7 @@ void uwb_rsv_put(struct uwb_rsv *rsv);
329bool uwb_rsv_has_two_drp_ies(struct uwb_rsv *rsv); 329bool uwb_rsv_has_two_drp_ies(struct uwb_rsv *rsv);
330void uwb_rsv_dump(char *text, struct uwb_rsv *rsv); 330void uwb_rsv_dump(char *text, struct uwb_rsv *rsv);
331int uwb_rsv_try_move(struct uwb_rsv *rsv, struct uwb_mas_bm *available); 331int uwb_rsv_try_move(struct uwb_rsv *rsv, struct uwb_mas_bm *available);
332void uwb_rsv_backoff_win_timer(unsigned long arg); 332void uwb_rsv_backoff_win_timer(struct timer_list *t);
333void uwb_rsv_backoff_win_increment(struct uwb_rc *rc); 333void uwb_rsv_backoff_win_increment(struct uwb_rc *rc);
334int uwb_rsv_status(struct uwb_rsv *rsv); 334int uwb_rsv_status(struct uwb_rsv *rsv);
335int uwb_rsv_companion_status(struct uwb_rsv *rsv); 335int uwb_rsv_companion_status(struct uwb_rsv *rsv);
diff --git a/drivers/watchdog/alim7101_wdt.c b/drivers/watchdog/alim7101_wdt.c
index 18e896eeca62..12f7ea62dddd 100644
--- a/drivers/watchdog/alim7101_wdt.c
+++ b/drivers/watchdog/alim7101_wdt.c
@@ -70,7 +70,7 @@ module_param(use_gpio, int, 0);
70MODULE_PARM_DESC(use_gpio, 70MODULE_PARM_DESC(use_gpio,
71 "Use the gpio watchdog (required by old cobalt boards)."); 71 "Use the gpio watchdog (required by old cobalt boards).");
72 72
73static void wdt_timer_ping(unsigned long); 73static void wdt_timer_ping(struct timer_list *);
74static DEFINE_TIMER(timer, wdt_timer_ping); 74static DEFINE_TIMER(timer, wdt_timer_ping);
75static unsigned long next_heartbeat; 75static unsigned long next_heartbeat;
76static unsigned long wdt_is_open; 76static unsigned long wdt_is_open;
@@ -87,7 +87,7 @@ MODULE_PARM_DESC(nowayout,
87 * Whack the dog 87 * Whack the dog
88 */ 88 */
89 89
90static void wdt_timer_ping(unsigned long unused) 90static void wdt_timer_ping(struct timer_list *unused)
91{ 91{
92 /* If we got a heartbeat pulse within the WDT_US_INTERVAL 92 /* If we got a heartbeat pulse within the WDT_US_INTERVAL
93 * we agree to ping the WDT 93 * we agree to ping the WDT
diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c
index 7e6acaf3ece4..88c05d0448b2 100644
--- a/drivers/watchdog/at91sam9_wdt.c
+++ b/drivers/watchdog/at91sam9_wdt.c
@@ -120,9 +120,9 @@ static inline void at91_wdt_reset(struct at91wdt *wdt)
120/* 120/*
121 * Timer tick 121 * Timer tick
122 */ 122 */
123static void at91_ping(unsigned long data) 123static void at91_ping(struct timer_list *t)
124{ 124{
125 struct at91wdt *wdt = (struct at91wdt *)data; 125 struct at91wdt *wdt = from_timer(wdt, t, timer);
126 if (time_before(jiffies, wdt->next_heartbeat) || 126 if (time_before(jiffies, wdt->next_heartbeat) ||
127 !watchdog_active(&wdt->wdd)) { 127 !watchdog_active(&wdt->wdd)) {
128 at91_wdt_reset(wdt); 128 at91_wdt_reset(wdt);
@@ -222,7 +222,7 @@ static int at91_wdt_init(struct platform_device *pdev, struct at91wdt *wdt)
222 "watchdog already configured differently (mr = %x expecting %x)\n", 222 "watchdog already configured differently (mr = %x expecting %x)\n",
223 tmp & wdt->mr_mask, wdt->mr & wdt->mr_mask); 223 tmp & wdt->mr_mask, wdt->mr & wdt->mr_mask);
224 224
225 setup_timer(&wdt->timer, at91_ping, (unsigned long)wdt); 225 timer_setup(&wdt->timer, at91_ping, 0);
226 226
227 /* 227 /*
228 * Use min_heartbeat the first time to avoid spurious watchdog reset: 228 * Use min_heartbeat the first time to avoid spurious watchdog reset:
diff --git a/drivers/watchdog/bcm47xx_wdt.c b/drivers/watchdog/bcm47xx_wdt.c
index 236582809336..f41b756d6dd5 100644
--- a/drivers/watchdog/bcm47xx_wdt.c
+++ b/drivers/watchdog/bcm47xx_wdt.c
@@ -106,9 +106,9 @@ static const struct watchdog_ops bcm47xx_wdt_hard_ops = {
106 .restart = bcm47xx_wdt_restart, 106 .restart = bcm47xx_wdt_restart,
107}; 107};
108 108
109static void bcm47xx_wdt_soft_timer_tick(unsigned long data) 109static void bcm47xx_wdt_soft_timer_tick(struct timer_list *t)
110{ 110{
111 struct bcm47xx_wdt *wdt = (struct bcm47xx_wdt *)data; 111 struct bcm47xx_wdt *wdt = from_timer(wdt, t, soft_timer);
112 u32 next_tick = min(wdt->wdd.timeout * 1000, wdt->max_timer_ms); 112 u32 next_tick = min(wdt->wdd.timeout * 1000, wdt->max_timer_ms);
113 113
114 if (!atomic_dec_and_test(&wdt->soft_ticks)) { 114 if (!atomic_dec_and_test(&wdt->soft_ticks)) {
@@ -133,7 +133,7 @@ static int bcm47xx_wdt_soft_start(struct watchdog_device *wdd)
133 struct bcm47xx_wdt *wdt = bcm47xx_wdt_get(wdd); 133 struct bcm47xx_wdt *wdt = bcm47xx_wdt_get(wdd);
134 134
135 bcm47xx_wdt_soft_keepalive(wdd); 135 bcm47xx_wdt_soft_keepalive(wdd);
136 bcm47xx_wdt_soft_timer_tick((unsigned long)wdt); 136 bcm47xx_wdt_soft_timer_tick(&wdt->soft_timer);
137 137
138 return 0; 138 return 0;
139} 139}
@@ -190,8 +190,7 @@ static int bcm47xx_wdt_probe(struct platform_device *pdev)
190 190
191 if (soft) { 191 if (soft) {
192 wdt->wdd.ops = &bcm47xx_wdt_soft_ops; 192 wdt->wdd.ops = &bcm47xx_wdt_soft_ops;
193 setup_timer(&wdt->soft_timer, bcm47xx_wdt_soft_timer_tick, 193 timer_setup(&wdt->soft_timer, bcm47xx_wdt_soft_timer_tick, 0);
194 (long unsigned int)wdt);
195 } else { 194 } else {
196 wdt->wdd.ops = &bcm47xx_wdt_hard_ops; 195 wdt->wdd.ops = &bcm47xx_wdt_hard_ops;
197 } 196 }
diff --git a/drivers/watchdog/bcm63xx_wdt.c b/drivers/watchdog/bcm63xx_wdt.c
index ab26fd90729e..8555afc70f9b 100644
--- a/drivers/watchdog/bcm63xx_wdt.c
+++ b/drivers/watchdog/bcm63xx_wdt.c
@@ -77,7 +77,7 @@ static void bcm63xx_wdt_isr(void *data)
77 die(PFX " fire", regs); 77 die(PFX " fire", regs);
78} 78}
79 79
80static void bcm63xx_timer_tick(unsigned long unused) 80static void bcm63xx_timer_tick(struct timer_list *unused)
81{ 81{
82 if (!atomic_dec_and_test(&bcm63xx_wdt_device.ticks)) { 82 if (!atomic_dec_and_test(&bcm63xx_wdt_device.ticks)) {
83 bcm63xx_wdt_hw_start(); 83 bcm63xx_wdt_hw_start();
@@ -240,7 +240,7 @@ static int bcm63xx_wdt_probe(struct platform_device *pdev)
240 int ret; 240 int ret;
241 struct resource *r; 241 struct resource *r;
242 242
243 setup_timer(&bcm63xx_wdt_device.timer, bcm63xx_timer_tick, 0L); 243 timer_setup(&bcm63xx_wdt_device.timer, bcm63xx_timer_tick, 0);
244 244
245 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 245 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
246 if (!r) { 246 if (!r) {
diff --git a/drivers/watchdog/cpu5wdt.c b/drivers/watchdog/cpu5wdt.c
index 6c3f78e45c26..6cfb102c397c 100644
--- a/drivers/watchdog/cpu5wdt.c
+++ b/drivers/watchdog/cpu5wdt.c
@@ -69,7 +69,7 @@ static struct {
69 69
70/* generic helper functions */ 70/* generic helper functions */
71 71
72static void cpu5wdt_trigger(unsigned long unused) 72static void cpu5wdt_trigger(struct timer_list *unused)
73{ 73{
74 if (verbose > 2) 74 if (verbose > 2)
75 pr_debug("trigger at %i ticks\n", ticks); 75 pr_debug("trigger at %i ticks\n", ticks);
@@ -224,7 +224,7 @@ static int cpu5wdt_init(void)
224 224
225 init_completion(&cpu5wdt_device.stop); 225 init_completion(&cpu5wdt_device.stop);
226 cpu5wdt_device.queue = 0; 226 cpu5wdt_device.queue = 0;
227 setup_timer(&cpu5wdt_device.timer, cpu5wdt_trigger, 0); 227 timer_setup(&cpu5wdt_device.timer, cpu5wdt_trigger, 0);
228 cpu5wdt_device.default_ticks = ticks; 228 cpu5wdt_device.default_ticks = ticks;
229 229
230 if (!request_region(port, CPU5WDT_EXTENT, PFX)) { 230 if (!request_region(port, CPU5WDT_EXTENT, PFX)) {
diff --git a/drivers/watchdog/machzwd.c b/drivers/watchdog/machzwd.c
index 8a616a57bb90..88d823d87a4b 100644
--- a/drivers/watchdog/machzwd.c
+++ b/drivers/watchdog/machzwd.c
@@ -121,7 +121,7 @@ module_param(action, int, 0);
121MODULE_PARM_DESC(action, "after watchdog resets, generate: " 121MODULE_PARM_DESC(action, "after watchdog resets, generate: "
122 "0 = RESET(*) 1 = SMI 2 = NMI 3 = SCI"); 122 "0 = RESET(*) 1 = SMI 2 = NMI 3 = SCI");
123 123
124static void zf_ping(unsigned long data); 124static void zf_ping(struct timer_list *unused);
125 125
126static int zf_action = GEN_RESET; 126static int zf_action = GEN_RESET;
127static unsigned long zf_is_open; 127static unsigned long zf_is_open;
@@ -237,7 +237,7 @@ static void zf_timer_on(void)
237} 237}
238 238
239 239
240static void zf_ping(unsigned long data) 240static void zf_ping(struct timer_list *unused)
241{ 241{
242 unsigned int ctrl_reg = 0; 242 unsigned int ctrl_reg = 0;
243 unsigned long flags; 243 unsigned long flags;
diff --git a/drivers/watchdog/mixcomwd.c b/drivers/watchdog/mixcomwd.c
index c9e38096ea91..3cc07447c655 100644
--- a/drivers/watchdog/mixcomwd.c
+++ b/drivers/watchdog/mixcomwd.c
@@ -99,7 +99,7 @@ static struct {
99 {0x0000, 0}, 99 {0x0000, 0},
100}; 100};
101 101
102static void mixcomwd_timerfun(unsigned long d); 102static void mixcomwd_timerfun(struct timer_list *unused);
103 103
104static unsigned long mixcomwd_opened; /* long req'd for setbit --RR */ 104static unsigned long mixcomwd_opened; /* long req'd for setbit --RR */
105 105
@@ -120,7 +120,7 @@ static void mixcomwd_ping(void)
120 return; 120 return;
121} 121}
122 122
123static void mixcomwd_timerfun(unsigned long d) 123static void mixcomwd_timerfun(struct timer_list *unused)
124{ 124{
125 mixcomwd_ping(); 125 mixcomwd_ping();
126 mod_timer(&mixcomwd_timer, jiffies + 5 * HZ); 126 mod_timer(&mixcomwd_timer, jiffies + 5 * HZ);
diff --git a/drivers/watchdog/mpc8xxx_wdt.c b/drivers/watchdog/mpc8xxx_wdt.c
index 366e5c7e650b..6610e9217dbc 100644
--- a/drivers/watchdog/mpc8xxx_wdt.c
+++ b/drivers/watchdog/mpc8xxx_wdt.c
@@ -80,9 +80,9 @@ static void mpc8xxx_wdt_keepalive(struct mpc8xxx_wdt_ddata *ddata)
80 spin_unlock(&ddata->lock); 80 spin_unlock(&ddata->lock);
81} 81}
82 82
83static void mpc8xxx_wdt_timer_ping(unsigned long arg) 83static void mpc8xxx_wdt_timer_ping(struct timer_list *t)
84{ 84{
85 struct mpc8xxx_wdt_ddata *ddata = (void *)arg; 85 struct mpc8xxx_wdt_ddata *ddata = from_timer(ddata, t, timer);
86 86
87 mpc8xxx_wdt_keepalive(ddata); 87 mpc8xxx_wdt_keepalive(ddata);
88 /* We're pinging it twice faster than needed, just to be sure. */ 88 /* We're pinging it twice faster than needed, just to be sure. */
@@ -173,8 +173,7 @@ static int mpc8xxx_wdt_probe(struct platform_device *ofdev)
173 } 173 }
174 174
175 spin_lock_init(&ddata->lock); 175 spin_lock_init(&ddata->lock);
176 setup_timer(&ddata->timer, mpc8xxx_wdt_timer_ping, 176 timer_setup(&ddata->timer, mpc8xxx_wdt_timer_ping, 0);
177 (unsigned long)ddata);
178 177
179 ddata->wdd.info = &mpc8xxx_wdt_info, 178 ddata->wdd.info = &mpc8xxx_wdt_info,
180 ddata->wdd.ops = &mpc8xxx_wdt_ops, 179 ddata->wdd.ops = &mpc8xxx_wdt_ops,
diff --git a/drivers/watchdog/mtx-1_wdt.c b/drivers/watchdog/mtx-1_wdt.c
index ff27c4ac96e4..ca360d204548 100644
--- a/drivers/watchdog/mtx-1_wdt.c
+++ b/drivers/watchdog/mtx-1_wdt.c
@@ -68,7 +68,7 @@ static struct {
68 unsigned int gstate; 68 unsigned int gstate;
69} mtx1_wdt_device; 69} mtx1_wdt_device;
70 70
71static void mtx1_wdt_trigger(unsigned long unused) 71static void mtx1_wdt_trigger(struct timer_list *unused)
72{ 72{
73 spin_lock(&mtx1_wdt_device.lock); 73 spin_lock(&mtx1_wdt_device.lock);
74 if (mtx1_wdt_device.running) 74 if (mtx1_wdt_device.running)
@@ -219,7 +219,7 @@ static int mtx1_wdt_probe(struct platform_device *pdev)
219 init_completion(&mtx1_wdt_device.stop); 219 init_completion(&mtx1_wdt_device.stop);
220 mtx1_wdt_device.queue = 0; 220 mtx1_wdt_device.queue = 0;
221 clear_bit(0, &mtx1_wdt_device.inuse); 221 clear_bit(0, &mtx1_wdt_device.inuse);
222 setup_timer(&mtx1_wdt_device.timer, mtx1_wdt_trigger, 0L); 222 timer_setup(&mtx1_wdt_device.timer, mtx1_wdt_trigger, 0);
223 mtx1_wdt_device.default_ticks = ticks; 223 mtx1_wdt_device.default_ticks = ticks;
224 224
225 ret = misc_register(&mtx1_wdt_misc); 225 ret = misc_register(&mtx1_wdt_misc);
diff --git a/drivers/watchdog/nuc900_wdt.c b/drivers/watchdog/nuc900_wdt.c
index d5bed78c4d9f..830bd04ff911 100644
--- a/drivers/watchdog/nuc900_wdt.c
+++ b/drivers/watchdog/nuc900_wdt.c
@@ -216,7 +216,7 @@ static ssize_t nuc900_wdt_write(struct file *file, const char __user *data,
216 return len; 216 return len;
217} 217}
218 218
219static void nuc900_wdt_timer_ping(unsigned long data) 219static void nuc900_wdt_timer_ping(struct timer_list *unused)
220{ 220{
221 if (time_before(jiffies, nuc900_wdt->next_heartbeat)) { 221 if (time_before(jiffies, nuc900_wdt->next_heartbeat)) {
222 nuc900_wdt_keepalive(); 222 nuc900_wdt_keepalive();
@@ -267,7 +267,7 @@ static int nuc900wdt_probe(struct platform_device *pdev)
267 267
268 clk_enable(nuc900_wdt->wdt_clock); 268 clk_enable(nuc900_wdt->wdt_clock);
269 269
270 setup_timer(&nuc900_wdt->timer, nuc900_wdt_timer_ping, 0); 270 timer_setup(&nuc900_wdt->timer, nuc900_wdt_timer_ping, 0);
271 271
272 ret = misc_register(&nuc900wdt_miscdev); 272 ret = misc_register(&nuc900wdt_miscdev);
273 if (ret) { 273 if (ret) {
diff --git a/drivers/watchdog/pcwd.c b/drivers/watchdog/pcwd.c
index 3ad5206d7935..b72ce68eacd3 100644
--- a/drivers/watchdog/pcwd.c
+++ b/drivers/watchdog/pcwd.c
@@ -367,7 +367,7 @@ static void pcwd_show_card_info(void)
367 pr_info("No previous trip detected - Cold boot or reset\n"); 367 pr_info("No previous trip detected - Cold boot or reset\n");
368} 368}
369 369
370static void pcwd_timer_ping(unsigned long data) 370static void pcwd_timer_ping(struct timer_list *unused)
371{ 371{
372 int wdrst_stat; 372 int wdrst_stat;
373 373
@@ -893,7 +893,7 @@ static int pcwd_isa_probe(struct device *dev, unsigned int id)
893 /* clear the "card caused reboot" flag */ 893 /* clear the "card caused reboot" flag */
894 pcwd_clear_status(); 894 pcwd_clear_status();
895 895
896 setup_timer(&pcwd_private.timer, pcwd_timer_ping, 0); 896 timer_setup(&pcwd_private.timer, pcwd_timer_ping, 0);
897 897
898 /* Disable the board */ 898 /* Disable the board */
899 pcwd_stop(); 899 pcwd_stop();
diff --git a/drivers/watchdog/pika_wdt.c b/drivers/watchdog/pika_wdt.c
index e35cf5e87907..e0a6f8c0f03c 100644
--- a/drivers/watchdog/pika_wdt.c
+++ b/drivers/watchdog/pika_wdt.c
@@ -85,7 +85,7 @@ static inline void pikawdt_reset(void)
85/* 85/*
86 * Timer tick 86 * Timer tick
87 */ 87 */
88static void pikawdt_ping(unsigned long data) 88static void pikawdt_ping(struct timer_list *unused)
89{ 89{
90 if (time_before(jiffies, pikawdt_private.next_heartbeat) || 90 if (time_before(jiffies, pikawdt_private.next_heartbeat) ||
91 (!nowayout && !pikawdt_private.open)) { 91 (!nowayout && !pikawdt_private.open)) {
@@ -269,7 +269,7 @@ static int __init pikawdt_init(void)
269 269
270 iounmap(fpga); 270 iounmap(fpga);
271 271
272 setup_timer(&pikawdt_private.timer, pikawdt_ping, 0); 272 timer_setup(&pikawdt_private.timer, pikawdt_ping, 0);
273 273
274 ret = misc_register(&pikawdt_miscdev); 274 ret = misc_register(&pikawdt_miscdev);
275 if (ret) { 275 if (ret) {
diff --git a/drivers/watchdog/rdc321x_wdt.c b/drivers/watchdog/rdc321x_wdt.c
index 47a8f1b1087d..a281aa84bfb1 100644
--- a/drivers/watchdog/rdc321x_wdt.c
+++ b/drivers/watchdog/rdc321x_wdt.c
@@ -67,7 +67,7 @@ static struct {
67 67
68/* generic helper functions */ 68/* generic helper functions */
69 69
70static void rdc321x_wdt_trigger(unsigned long unused) 70static void rdc321x_wdt_trigger(struct timer_list *unused)
71{ 71{
72 unsigned long flags; 72 unsigned long flags;
73 u32 val; 73 u32 val;
@@ -262,7 +262,7 @@ static int rdc321x_wdt_probe(struct platform_device *pdev)
262 262
263 clear_bit(0, &rdc321x_wdt_device.inuse); 263 clear_bit(0, &rdc321x_wdt_device.inuse);
264 264
265 setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0); 265 timer_setup(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
266 266
267 rdc321x_wdt_device.default_ticks = ticks; 267 rdc321x_wdt_device.default_ticks = ticks;
268 268
diff --git a/drivers/watchdog/sbc60xxwdt.c b/drivers/watchdog/sbc60xxwdt.c
index 8d589939bc84..87333a41f753 100644
--- a/drivers/watchdog/sbc60xxwdt.c
+++ b/drivers/watchdog/sbc60xxwdt.c
@@ -112,7 +112,7 @@ MODULE_PARM_DESC(nowayout,
112 "Watchdog cannot be stopped once started (default=" 112 "Watchdog cannot be stopped once started (default="
113 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); 113 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
114 114
115static void wdt_timer_ping(unsigned long); 115static void wdt_timer_ping(struct timer_list *);
116static DEFINE_TIMER(timer, wdt_timer_ping); 116static DEFINE_TIMER(timer, wdt_timer_ping);
117static unsigned long next_heartbeat; 117static unsigned long next_heartbeat;
118static unsigned long wdt_is_open; 118static unsigned long wdt_is_open;
@@ -122,7 +122,7 @@ static char wdt_expect_close;
122 * Whack the dog 122 * Whack the dog
123 */ 123 */
124 124
125static void wdt_timer_ping(unsigned long data) 125static void wdt_timer_ping(struct timer_list *unused)
126{ 126{
127 /* If we got a heartbeat pulse within the WDT_US_INTERVAL 127 /* If we got a heartbeat pulse within the WDT_US_INTERVAL
128 * we agree to ping the WDT 128 * we agree to ping the WDT
diff --git a/drivers/watchdog/sc520_wdt.c b/drivers/watchdog/sc520_wdt.c
index 3e9bbaa37bf4..6aadb56e7faa 100644
--- a/drivers/watchdog/sc520_wdt.c
+++ b/drivers/watchdog/sc520_wdt.c
@@ -123,7 +123,7 @@ MODULE_PARM_DESC(nowayout,
123 123
124static __u16 __iomem *wdtmrctl; 124static __u16 __iomem *wdtmrctl;
125 125
126static void wdt_timer_ping(unsigned long); 126static void wdt_timer_ping(struct timer_list *);
127static DEFINE_TIMER(timer, wdt_timer_ping); 127static DEFINE_TIMER(timer, wdt_timer_ping);
128static unsigned long next_heartbeat; 128static unsigned long next_heartbeat;
129static unsigned long wdt_is_open; 129static unsigned long wdt_is_open;
@@ -134,7 +134,7 @@ static DEFINE_SPINLOCK(wdt_spinlock);
134 * Whack the dog 134 * Whack the dog
135 */ 135 */
136 136
137static void wdt_timer_ping(unsigned long data) 137static void wdt_timer_ping(struct timer_list *unused)
138{ 138{
139 /* If we got a heartbeat pulse within the WDT_US_INTERVAL 139 /* If we got a heartbeat pulse within the WDT_US_INTERVAL
140 * we agree to ping the WDT 140 * we agree to ping the WDT
diff --git a/drivers/watchdog/shwdt.c b/drivers/watchdog/shwdt.c
index 517a733175ef..a7d6425db807 100644
--- a/drivers/watchdog/shwdt.c
+++ b/drivers/watchdog/shwdt.c
@@ -175,9 +175,9 @@ static int sh_wdt_set_heartbeat(struct watchdog_device *wdt_dev, unsigned t)
175 return 0; 175 return 0;
176} 176}
177 177
178static void sh_wdt_ping(unsigned long data) 178static void sh_wdt_ping(struct timer_list *t)
179{ 179{
180 struct sh_wdt *wdt = (struct sh_wdt *)data; 180 struct sh_wdt *wdt = from_timer(wdt, t, timer);
181 unsigned long flags; 181 unsigned long flags;
182 182
183 spin_lock_irqsave(&wdt->lock, flags); 183 spin_lock_irqsave(&wdt->lock, flags);
@@ -275,7 +275,7 @@ static int sh_wdt_probe(struct platform_device *pdev)
275 return rc; 275 return rc;
276 } 276 }
277 277
278 setup_timer(&wdt->timer, sh_wdt_ping, (unsigned long)wdt); 278 timer_setup(&wdt->timer, sh_wdt_ping, 0);
279 wdt->timer.expires = next_ping_period(clock_division_ratio); 279 wdt->timer.expires = next_ping_period(clock_division_ratio);
280 280
281 dev_info(&pdev->dev, "initialized.\n"); 281 dev_info(&pdev->dev, "initialized.\n");
diff --git a/drivers/watchdog/via_wdt.c b/drivers/watchdog/via_wdt.c
index ad3c3be13b40..b085ef1084ec 100644
--- a/drivers/watchdog/via_wdt.c
+++ b/drivers/watchdog/via_wdt.c
@@ -67,7 +67,7 @@ static struct watchdog_device wdt_dev;
67static struct resource wdt_res; 67static struct resource wdt_res;
68static void __iomem *wdt_mem; 68static void __iomem *wdt_mem;
69static unsigned int mmio; 69static unsigned int mmio;
70static void wdt_timer_tick(unsigned long data); 70static void wdt_timer_tick(struct timer_list *unused);
71static DEFINE_TIMER(timer, wdt_timer_tick); 71static DEFINE_TIMER(timer, wdt_timer_tick);
72 /* The timer that pings the watchdog */ 72 /* The timer that pings the watchdog */
73static unsigned long next_heartbeat; /* the next_heartbeat for the timer */ 73static unsigned long next_heartbeat; /* the next_heartbeat for the timer */
@@ -88,7 +88,7 @@ static inline void wdt_reset(void)
88 * then the external/userspace heartbeat). 88 * then the external/userspace heartbeat).
89 * 2) the watchdog timer has been stopped by userspace. 89 * 2) the watchdog timer has been stopped by userspace.
90 */ 90 */
91static void wdt_timer_tick(unsigned long data) 91static void wdt_timer_tick(struct timer_list *unused)
92{ 92{
93 if (time_before(jiffies, next_heartbeat) || 93 if (time_before(jiffies, next_heartbeat) ||
94 (!watchdog_active(&wdt_dev))) { 94 (!watchdog_active(&wdt_dev))) {
diff --git a/drivers/watchdog/w83877f_wdt.c b/drivers/watchdog/w83877f_wdt.c
index ba6b680af100..05658ecc0aa4 100644
--- a/drivers/watchdog/w83877f_wdt.c
+++ b/drivers/watchdog/w83877f_wdt.c
@@ -97,7 +97,7 @@ MODULE_PARM_DESC(nowayout,
97 "Watchdog cannot be stopped once started (default=" 97 "Watchdog cannot be stopped once started (default="
98 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); 98 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
99 99
100static void wdt_timer_ping(unsigned long); 100static void wdt_timer_ping(struct timer_list *);
101static DEFINE_TIMER(timer, wdt_timer_ping); 101static DEFINE_TIMER(timer, wdt_timer_ping);
102static unsigned long next_heartbeat; 102static unsigned long next_heartbeat;
103static unsigned long wdt_is_open; 103static unsigned long wdt_is_open;
@@ -108,7 +108,7 @@ static DEFINE_SPINLOCK(wdt_spinlock);
108 * Whack the dog 108 * Whack the dog
109 */ 109 */
110 110
111static void wdt_timer_ping(unsigned long data) 111static void wdt_timer_ping(struct timer_list *unused)
112{ 112{
113 /* If we got a heartbeat pulse within the WDT_US_INTERVAL 113 /* If we got a heartbeat pulse within the WDT_US_INTERVAL
114 * we agree to ping the WDT 114 * we agree to ping the WDT
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index 139e018a82b0..f45114fd8e1e 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -358,10 +358,10 @@ struct deferred_entry {
358 struct page *page; 358 struct page *page;
359}; 359};
360static LIST_HEAD(deferred_list); 360static LIST_HEAD(deferred_list);
361static void gnttab_handle_deferred(unsigned long); 361static void gnttab_handle_deferred(struct timer_list *);
362static DEFINE_TIMER(deferred_timer, gnttab_handle_deferred); 362static DEFINE_TIMER(deferred_timer, gnttab_handle_deferred);
363 363
364static void gnttab_handle_deferred(unsigned long unused) 364static void gnttab_handle_deferred(struct timer_list *unused)
365{ 365{
366 unsigned int nr = 10; 366 unsigned int nr = 10;
367 struct deferred_entry *first = NULL; 367 struct deferred_entry *first = NULL;
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index 8d779227370a..bebe59feca58 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -140,7 +140,7 @@ static void o2net_rx_until_empty(struct work_struct *work);
140static void o2net_shutdown_sc(struct work_struct *work); 140static void o2net_shutdown_sc(struct work_struct *work);
141static void o2net_listen_data_ready(struct sock *sk); 141static void o2net_listen_data_ready(struct sock *sk);
142static void o2net_sc_send_keep_req(struct work_struct *work); 142static void o2net_sc_send_keep_req(struct work_struct *work);
143static void o2net_idle_timer(unsigned long data); 143static void o2net_idle_timer(struct timer_list *t);
144static void o2net_sc_postpone_idle(struct o2net_sock_container *sc); 144static void o2net_sc_postpone_idle(struct o2net_sock_container *sc);
145static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc); 145static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc);
146 146
@@ -450,8 +450,7 @@ static struct o2net_sock_container *sc_alloc(struct o2nm_node *node)
450 INIT_WORK(&sc->sc_shutdown_work, o2net_shutdown_sc); 450 INIT_WORK(&sc->sc_shutdown_work, o2net_shutdown_sc);
451 INIT_DELAYED_WORK(&sc->sc_keepalive_work, o2net_sc_send_keep_req); 451 INIT_DELAYED_WORK(&sc->sc_keepalive_work, o2net_sc_send_keep_req);
452 452
453 setup_timer(&sc->sc_idle_timeout, o2net_idle_timer, 453 timer_setup(&sc->sc_idle_timeout, o2net_idle_timer, 0);
454 (unsigned long)sc);
455 454
456 sclog(sc, "alloced\n"); 455 sclog(sc, "alloced\n");
457 456
@@ -1517,9 +1516,9 @@ static void o2net_sc_send_keep_req(struct work_struct *work)
1517/* socket shutdown does a del_timer_sync against this as it tears down. 1516/* socket shutdown does a del_timer_sync against this as it tears down.
1518 * we can't start this timer until we've got to the point in sc buildup 1517 * we can't start this timer until we've got to the point in sc buildup
1519 * where shutdown is going to be involved */ 1518 * where shutdown is going to be involved */
1520static void o2net_idle_timer(unsigned long data) 1519static void o2net_idle_timer(struct timer_list *t)
1521{ 1520{
1522 struct o2net_sock_container *sc = (struct o2net_sock_container *)data; 1521 struct o2net_sock_container *sc = from_timer(sc, t, sc_idle_timeout);
1523 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); 1522 struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num);
1524#ifdef CONFIG_DEBUG_FS 1523#ifdef CONFIG_DEBUG_FS
1525 unsigned long msecs = ktime_to_ms(ktime_get()) - 1524 unsigned long msecs = ktime_to_ms(ktime_get()) -
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index 423159abd501..691032107f8c 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -61,7 +61,7 @@ MODULE_PARM_DESC(update_ms, "milliseconds before pstore updates its content "
61 61
62static int pstore_new_entry; 62static int pstore_new_entry;
63 63
64static void pstore_timefunc(unsigned long); 64static void pstore_timefunc(struct timer_list *);
65static DEFINE_TIMER(pstore_timer, pstore_timefunc); 65static DEFINE_TIMER(pstore_timer, pstore_timefunc);
66 66
67static void pstore_dowork(struct work_struct *); 67static void pstore_dowork(struct work_struct *);
@@ -890,7 +890,7 @@ static void pstore_dowork(struct work_struct *work)
890 pstore_get_records(1); 890 pstore_get_records(1);
891} 891}
892 892
893static void pstore_timefunc(unsigned long dummy) 893static void pstore_timefunc(struct timer_list *unused)
894{ 894{
895 if (pstore_new_entry) { 895 if (pstore_new_entry) {
896 pstore_new_entry = 0; 896 pstore_new_entry = 0;
diff --git a/include/linux/kthread.h b/include/linux/kthread.h
index 3203e36b2ee8..c1961761311d 100644
--- a/include/linux/kthread.h
+++ b/include/linux/kthread.h
@@ -118,8 +118,7 @@ struct kthread_delayed_work {
118 118
119#define KTHREAD_DELAYED_WORK_INIT(dwork, fn) { \ 119#define KTHREAD_DELAYED_WORK_INIT(dwork, fn) { \
120 .work = KTHREAD_WORK_INIT((dwork).work, (fn)), \ 120 .work = KTHREAD_WORK_INIT((dwork).work, (fn)), \
121 .timer = __TIMER_INITIALIZER((TIMER_FUNC_TYPE)kthread_delayed_work_timer_fn,\ 121 .timer = __TIMER_INITIALIZER(kthread_delayed_work_timer_fn,\
122 (TIMER_DATA_TYPE)&(dwork.timer), \
123 TIMER_IRQSAFE), \ 122 TIMER_IRQSAFE), \
124 } 123 }
125 124
@@ -165,10 +164,9 @@ extern void __kthread_init_worker(struct kthread_worker *worker,
165#define kthread_init_delayed_work(dwork, fn) \ 164#define kthread_init_delayed_work(dwork, fn) \
166 do { \ 165 do { \
167 kthread_init_work(&(dwork)->work, (fn)); \ 166 kthread_init_work(&(dwork)->work, (fn)); \
168 __setup_timer(&(dwork)->timer, \ 167 __init_timer(&(dwork)->timer, \
169 (TIMER_FUNC_TYPE)kthread_delayed_work_timer_fn,\ 168 kthread_delayed_work_timer_fn, \
170 (TIMER_DATA_TYPE)&(dwork)->timer, \ 169 TIMER_IRQSAFE); \
171 TIMER_IRQSAFE); \
172 } while (0) 170 } while (0)
173 171
174int kthread_worker_fn(void *worker_ptr); 172int kthread_worker_fn(void *worker_ptr);
diff --git a/include/linux/timekeeper_internal.h b/include/linux/timekeeper_internal.h
index 7e9011101cb0..d315c3d6725c 100644
--- a/include/linux/timekeeper_internal.h
+++ b/include/linux/timekeeper_internal.h
@@ -136,13 +136,6 @@ struct timekeeper {
136extern void update_vsyscall(struct timekeeper *tk); 136extern void update_vsyscall(struct timekeeper *tk);
137extern void update_vsyscall_tz(void); 137extern void update_vsyscall_tz(void);
138 138
139#elif defined(CONFIG_GENERIC_TIME_VSYSCALL_OLD)
140
141extern void update_vsyscall_old(struct timespec *ts, struct timespec *wtm,
142 struct clocksource *c, u32 mult,
143 u64 cycle_last);
144extern void update_vsyscall_tz(void);
145
146#else 139#else
147 140
148static inline void update_vsyscall(struct timekeeper *tk) 141static inline void update_vsyscall(struct timekeeper *tk)
diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h
index c198ab40c04f..b17bcce58bc4 100644
--- a/include/linux/timekeeping.h
+++ b/include/linux/timekeeping.h
@@ -143,12 +143,6 @@ extern bool timekeeping_rtc_skipresume(void);
143extern void timekeeping_inject_sleeptime64(struct timespec64 *delta); 143extern void timekeeping_inject_sleeptime64(struct timespec64 *delta);
144 144
145/* 145/*
146 * PPS accessor
147 */
148extern void ktime_get_raw_and_real_ts64(struct timespec64 *ts_raw,
149 struct timespec64 *ts_real);
150
151/*
152 * struct system_time_snapshot - simultaneous raw/real time capture with 146 * struct system_time_snapshot - simultaneous raw/real time capture with
153 * counter value 147 * counter value
154 * @cycles: Clocksource counter value to produce the system times 148 * @cycles: Clocksource counter value to produce the system times
diff --git a/include/linux/timer.h b/include/linux/timer.h
index bf781acfc6d8..04af640ea95b 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -17,8 +17,7 @@ struct timer_list {
17 */ 17 */
18 struct hlist_node entry; 18 struct hlist_node entry;
19 unsigned long expires; 19 unsigned long expires;
20 void (*function)(unsigned long); 20 void (*function)(struct timer_list *);
21 unsigned long data;
22 u32 flags; 21 u32 flags;
23 22
24#ifdef CONFIG_LOCKDEP 23#ifdef CONFIG_LOCKDEP
@@ -64,13 +63,9 @@ struct timer_list {
64 63
65#define TIMER_TRACE_FLAGMASK (TIMER_MIGRATING | TIMER_DEFERRABLE | TIMER_PINNED | TIMER_IRQSAFE) 64#define TIMER_TRACE_FLAGMASK (TIMER_MIGRATING | TIMER_DEFERRABLE | TIMER_PINNED | TIMER_IRQSAFE)
66 65
67#define TIMER_DATA_TYPE unsigned long 66#define __TIMER_INITIALIZER(_function, _flags) { \
68#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
69
70#define __TIMER_INITIALIZER(_function, _data, _flags) { \
71 .entry = { .next = TIMER_ENTRY_STATIC }, \ 67 .entry = { .next = TIMER_ENTRY_STATIC }, \
72 .function = (_function), \ 68 .function = (_function), \
73 .data = (_data), \
74 .flags = (_flags), \ 69 .flags = (_flags), \
75 __TIMER_LOCKDEP_MAP_INITIALIZER( \ 70 __TIMER_LOCKDEP_MAP_INITIALIZER( \
76 __FILE__ ":" __stringify(__LINE__)) \ 71 __FILE__ ":" __stringify(__LINE__)) \
@@ -78,108 +73,71 @@ struct timer_list {
78 73
79#define DEFINE_TIMER(_name, _function) \ 74#define DEFINE_TIMER(_name, _function) \
80 struct timer_list _name = \ 75 struct timer_list _name = \
81 __TIMER_INITIALIZER((TIMER_FUNC_TYPE)_function, 0, 0) 76 __TIMER_INITIALIZER(_function, 0)
82 77
83void init_timer_key(struct timer_list *timer, unsigned int flags, 78/*
79 * LOCKDEP and DEBUG timer interfaces.
80 */
81void init_timer_key(struct timer_list *timer,
82 void (*func)(struct timer_list *), unsigned int flags,
84 const char *name, struct lock_class_key *key); 83 const char *name, struct lock_class_key *key);
85 84
86#ifdef CONFIG_DEBUG_OBJECTS_TIMERS 85#ifdef CONFIG_DEBUG_OBJECTS_TIMERS
87extern void init_timer_on_stack_key(struct timer_list *timer, 86extern void init_timer_on_stack_key(struct timer_list *timer,
87 void (*func)(struct timer_list *),
88 unsigned int flags, const char *name, 88 unsigned int flags, const char *name,
89 struct lock_class_key *key); 89 struct lock_class_key *key);
90extern void destroy_timer_on_stack(struct timer_list *timer);
91#else 90#else
92static inline void destroy_timer_on_stack(struct timer_list *timer) { }
93static inline void init_timer_on_stack_key(struct timer_list *timer, 91static inline void init_timer_on_stack_key(struct timer_list *timer,
94 unsigned int flags, const char *name, 92 void (*func)(struct timer_list *),
93 unsigned int flags,
94 const char *name,
95 struct lock_class_key *key) 95 struct lock_class_key *key)
96{ 96{
97 init_timer_key(timer, flags, name, key); 97 init_timer_key(timer, func, flags, name, key);
98} 98}
99#endif 99#endif
100 100
101#ifdef CONFIG_LOCKDEP 101#ifdef CONFIG_LOCKDEP
102#define __init_timer(_timer, _flags) \ 102#define __init_timer(_timer, _fn, _flags) \
103 do { \ 103 do { \
104 static struct lock_class_key __key; \ 104 static struct lock_class_key __key; \
105 init_timer_key((_timer), (_flags), #_timer, &__key); \ 105 init_timer_key((_timer), (_fn), (_flags), #_timer, &__key);\
106 } while (0) 106 } while (0)
107 107
108#define __init_timer_on_stack(_timer, _flags) \ 108#define __init_timer_on_stack(_timer, _fn, _flags) \
109 do { \ 109 do { \
110 static struct lock_class_key __key; \ 110 static struct lock_class_key __key; \
111 init_timer_on_stack_key((_timer), (_flags), #_timer, &__key); \ 111 init_timer_on_stack_key((_timer), (_fn), (_flags), \
112 #_timer, &__key); \
112 } while (0) 113 } while (0)
113#else 114#else
114#define __init_timer(_timer, _flags) \ 115#define __init_timer(_timer, _fn, _flags) \
115 init_timer_key((_timer), (_flags), NULL, NULL) 116 init_timer_key((_timer), (_fn), (_flags), NULL, NULL)
116#define __init_timer_on_stack(_timer, _flags) \ 117#define __init_timer_on_stack(_timer, _fn, _flags) \
117 init_timer_on_stack_key((_timer), (_flags), NULL, NULL) 118 init_timer_on_stack_key((_timer), (_fn), (_flags), NULL, NULL)
118#endif 119#endif
119 120
120#define init_timer(timer) \ 121/**
121 __init_timer((timer), 0) 122 * timer_setup - prepare a timer for first use
122 123 * @timer: the timer in question
123#define __setup_timer(_timer, _fn, _data, _flags) \ 124 * @callback: the function to call when timer expires
124 do { \ 125 * @flags: any TIMER_* flags
125 __init_timer((_timer), (_flags)); \ 126 *
126 (_timer)->function = (_fn); \ 127 * Regular timer initialization should use either DEFINE_TIMER() above,
127 (_timer)->data = (_data); \ 128 * or timer_setup(). For timers on the stack, timer_setup_on_stack() must
128 } while (0) 129 * be used and must be balanced with a call to destroy_timer_on_stack().
129 130 */
130#define __setup_timer_on_stack(_timer, _fn, _data, _flags) \ 131#define timer_setup(timer, callback, flags) \
131 do { \ 132 __init_timer((timer), (callback), (flags))
132 __init_timer_on_stack((_timer), (_flags)); \
133 (_timer)->function = (_fn); \
134 (_timer)->data = (_data); \
135 } while (0)
136
137#define setup_timer(timer, fn, data) \
138 __setup_timer((timer), (fn), (data), 0)
139#define setup_pinned_timer(timer, fn, data) \
140 __setup_timer((timer), (fn), (data), TIMER_PINNED)
141#define setup_deferrable_timer(timer, fn, data) \
142 __setup_timer((timer), (fn), (data), TIMER_DEFERRABLE)
143#define setup_pinned_deferrable_timer(timer, fn, data) \
144 __setup_timer((timer), (fn), (data), TIMER_DEFERRABLE | TIMER_PINNED)
145#define setup_timer_on_stack(timer, fn, data) \
146 __setup_timer_on_stack((timer), (fn), (data), 0)
147#define setup_pinned_timer_on_stack(timer, fn, data) \
148 __setup_timer_on_stack((timer), (fn), (data), TIMER_PINNED)
149#define setup_deferrable_timer_on_stack(timer, fn, data) \
150 __setup_timer_on_stack((timer), (fn), (data), TIMER_DEFERRABLE)
151#define setup_pinned_deferrable_timer_on_stack(timer, fn, data) \
152 __setup_timer_on_stack((timer), (fn), (data), TIMER_DEFERRABLE | TIMER_PINNED)
153 133
154#ifndef CONFIG_LOCKDEP 134#define timer_setup_on_stack(timer, callback, flags) \
155static inline void timer_setup(struct timer_list *timer, 135 __init_timer_on_stack((timer), (callback), (flags))
156 void (*callback)(struct timer_list *),
157 unsigned int flags)
158{
159 __setup_timer(timer, (TIMER_FUNC_TYPE)callback,
160 (TIMER_DATA_TYPE)timer, flags);
161}
162 136
163static inline void timer_setup_on_stack(struct timer_list *timer, 137#ifdef CONFIG_DEBUG_OBJECTS_TIMERS
164 void (*callback)(struct timer_list *), 138extern void destroy_timer_on_stack(struct timer_list *timer);
165 unsigned int flags)
166{
167 __setup_timer_on_stack(timer, (TIMER_FUNC_TYPE)callback,
168 (TIMER_DATA_TYPE)timer, flags);
169}
170#else 139#else
171/* 140static inline void destroy_timer_on_stack(struct timer_list *timer) { }
172 * Under LOCKDEP, the timer lock_class_key (set up in __init_timer) needs
173 * to be tied to the caller's context, so an inline (above) won't work. We
174 * do want to keep the inline for argument type checking, though.
175 */
176# define timer_setup(timer, callback, flags) \
177 __setup_timer((timer), (TIMER_FUNC_TYPE)(callback), \
178 (TIMER_DATA_TYPE)(timer), (flags))
179# define timer_setup_on_stack(timer, callback, flags) \
180 __setup_timer_on_stack((timer), \
181 (TIMER_FUNC_TYPE)(callback), \
182 (TIMER_DATA_TYPE)(timer), (flags))
183#endif 141#endif
184 142
185#define from_timer(var, callback_timer, timer_fieldname) \ 143#define from_timer(var, callback_timer, timer_fieldname) \
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index 01a050fc6650..4a54ef96aff5 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -176,8 +176,7 @@ struct execute_work {
176 176
177#define __DELAYED_WORK_INITIALIZER(n, f, tflags) { \ 177#define __DELAYED_WORK_INITIALIZER(n, f, tflags) { \
178 .work = __WORK_INITIALIZER((n).work, (f)), \ 178 .work = __WORK_INITIALIZER((n).work, (f)), \
179 .timer = __TIMER_INITIALIZER((TIMER_FUNC_TYPE)delayed_work_timer_fn,\ 179 .timer = __TIMER_INITIALIZER(delayed_work_timer_fn,\
180 (TIMER_DATA_TYPE)&(n.timer), \
181 (tflags) | TIMER_IRQSAFE), \ 180 (tflags) | TIMER_IRQSAFE), \
182 } 181 }
183 182
@@ -242,19 +241,17 @@ static inline unsigned int work_static(struct work_struct *work) { return 0; }
242#define __INIT_DELAYED_WORK(_work, _func, _tflags) \ 241#define __INIT_DELAYED_WORK(_work, _func, _tflags) \
243 do { \ 242 do { \
244 INIT_WORK(&(_work)->work, (_func)); \ 243 INIT_WORK(&(_work)->work, (_func)); \
245 __setup_timer(&(_work)->timer, \ 244 __init_timer(&(_work)->timer, \
246 (TIMER_FUNC_TYPE)delayed_work_timer_fn, \ 245 delayed_work_timer_fn, \
247 (TIMER_DATA_TYPE)&(_work)->timer, \ 246 (_tflags) | TIMER_IRQSAFE); \
248 (_tflags) | TIMER_IRQSAFE); \
249 } while (0) 247 } while (0)
250 248
251#define __INIT_DELAYED_WORK_ONSTACK(_work, _func, _tflags) \ 249#define __INIT_DELAYED_WORK_ONSTACK(_work, _func, _tflags) \
252 do { \ 250 do { \
253 INIT_WORK_ONSTACK(&(_work)->work, (_func)); \ 251 INIT_WORK_ONSTACK(&(_work)->work, (_func)); \
254 __setup_timer_on_stack(&(_work)->timer, \ 252 __init_timer_on_stack(&(_work)->timer, \
255 (TIMER_FUNC_TYPE)delayed_work_timer_fn,\ 253 delayed_work_timer_fn, \
256 (TIMER_DATA_TYPE)&(_work)->timer,\ 254 (_tflags) | TIMER_IRQSAFE); \
257 (_tflags) | TIMER_IRQSAFE); \
258 } while (0) 255 } while (0)
259 256
260#define INIT_DELAYED_WORK(_work, _func) \ 257#define INIT_DELAYED_WORK(_work, _func) \
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index f42d85631d17..fdfd04e348f6 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -308,7 +308,7 @@ static inline void cgroup_writeback_umount(void)
308void laptop_io_completion(struct backing_dev_info *info); 308void laptop_io_completion(struct backing_dev_info *info);
309void laptop_sync_completion(void); 309void laptop_sync_completion(void);
310void laptop_mode_sync(struct work_struct *work); 310void laptop_mode_sync(struct work_struct *work);
311void laptop_mode_timer_fn(unsigned long data); 311void laptop_mode_timer_fn(struct timer_list *t);
312#else 312#else
313static inline void laptop_sync_completion(void) { } 313static inline void laptop_sync_completion(void) { }
314#endif 314#endif
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
index 1215229d1c12..ef2a47e0eab6 100644
--- a/kernel/irq/spurious.c
+++ b/kernel/irq/spurious.c
@@ -20,7 +20,7 @@
20static int irqfixup __read_mostly; 20static int irqfixup __read_mostly;
21 21
22#define POLL_SPURIOUS_IRQ_INTERVAL (HZ/10) 22#define POLL_SPURIOUS_IRQ_INTERVAL (HZ/10)
23static void poll_spurious_irqs(unsigned long dummy); 23static void poll_spurious_irqs(struct timer_list *unused);
24static DEFINE_TIMER(poll_spurious_irq_timer, poll_spurious_irqs); 24static DEFINE_TIMER(poll_spurious_irq_timer, poll_spurious_irqs);
25static int irq_poll_cpu; 25static int irq_poll_cpu;
26static atomic_t irq_poll_active; 26static atomic_t irq_poll_active;
@@ -143,7 +143,7 @@ out:
143 return ok; 143 return ok;
144} 144}
145 145
146static void poll_spurious_irqs(unsigned long dummy) 146static void poll_spurious_irqs(struct timer_list *unused)
147{ 147{
148 struct irq_desc *desc; 148 struct irq_desc *desc;
149 int i; 149 int i;
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 8af313081b0d..cd50e99202b0 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -843,7 +843,7 @@ void __kthread_queue_delayed_work(struct kthread_worker *worker,
843 struct timer_list *timer = &dwork->timer; 843 struct timer_list *timer = &dwork->timer;
844 struct kthread_work *work = &dwork->work; 844 struct kthread_work *work = &dwork->work;
845 845
846 WARN_ON_ONCE(timer->function != (TIMER_FUNC_TYPE)kthread_delayed_work_timer_fn); 846 WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn);
847 847
848 /* 848 /*
849 * If @delay is 0, queue @dwork->work immediately. This is for 849 * If @delay is 0, queue @dwork->work immediately. This is for
diff --git a/kernel/padata.c b/kernel/padata.c
index f262c9a4e70a..57c0074d50cc 100644
--- a/kernel/padata.c
+++ b/kernel/padata.c
@@ -288,9 +288,9 @@ static void invoke_padata_reorder(struct work_struct *work)
288 local_bh_enable(); 288 local_bh_enable();
289} 289}
290 290
291static void padata_reorder_timer(unsigned long arg) 291static void padata_reorder_timer(struct timer_list *t)
292{ 292{
293 struct parallel_data *pd = (struct parallel_data *)arg; 293 struct parallel_data *pd = from_timer(pd, t, timer);
294 unsigned int weight; 294 unsigned int weight;
295 int target_cpu, cpu; 295 int target_cpu, cpu;
296 296
@@ -485,7 +485,7 @@ static struct parallel_data *padata_alloc_pd(struct padata_instance *pinst,
485 485
486 padata_init_pqueues(pd); 486 padata_init_pqueues(pd);
487 padata_init_squeues(pd); 487 padata_init_squeues(pd);
488 setup_timer(&pd->timer, padata_reorder_timer, (unsigned long)pd); 488 timer_setup(&pd->timer, padata_reorder_timer, 0);
489 atomic_set(&pd->seq_nr, -1); 489 atomic_set(&pd->seq_nr, -1);
490 atomic_set(&pd->reorder_objects, 0); 490 atomic_set(&pd->reorder_objects, 0);
491 atomic_set(&pd->refcnt, 0); 491 atomic_set(&pd->refcnt, 0);
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index d689a9557e17..e776fc8cc1df 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -21,10 +21,6 @@ config CLOCKSOURCE_VALIDATE_LAST_CYCLE
21config GENERIC_TIME_VSYSCALL 21config GENERIC_TIME_VSYSCALL
22 bool 22 bool
23 23
24# Timekeeping vsyscall support
25config GENERIC_TIME_VSYSCALL_OLD
26 bool
27
28# Old style timekeeping 24# Old style timekeeping
29config ARCH_USES_GETTIMEOFFSET 25config ARCH_USES_GETTIMEOFFSET
30 bool 26 bool
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index 03918a19cf2d..65f9e3f24dde 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -171,7 +171,7 @@ void clocksource_mark_unstable(struct clocksource *cs)
171 spin_unlock_irqrestore(&watchdog_lock, flags); 171 spin_unlock_irqrestore(&watchdog_lock, flags);
172} 172}
173 173
174static void clocksource_watchdog(unsigned long data) 174static void clocksource_watchdog(struct timer_list *unused)
175{ 175{
176 struct clocksource *cs; 176 struct clocksource *cs;
177 u64 csnow, wdnow, cslast, wdlast, delta; 177 u64 csnow, wdnow, cslast, wdlast, delta;
@@ -290,8 +290,7 @@ static inline void clocksource_start_watchdog(void)
290{ 290{
291 if (watchdog_running || !watchdog || list_empty(&watchdog_list)) 291 if (watchdog_running || !watchdog || list_empty(&watchdog_list))
292 return; 292 return;
293 init_timer(&watchdog_timer); 293 timer_setup(&watchdog_timer, clocksource_watchdog, 0);
294 watchdog_timer.function = clocksource_watchdog;
295 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; 294 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL;
296 add_timer_on(&watchdog_timer, cpumask_first(cpu_online_mask)); 295 add_timer_on(&watchdog_timer, cpumask_first(cpu_online_mask));
297 watchdog_running = 1; 296 watchdog_running = 1;
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 198afa78bf69..cd03317e7b57 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -557,45 +557,6 @@ static void halt_fast_timekeeper(struct timekeeper *tk)
557 update_fast_timekeeper(&tkr_dummy, &tk_fast_raw); 557 update_fast_timekeeper(&tkr_dummy, &tk_fast_raw);
558} 558}
559 559
560#ifdef CONFIG_GENERIC_TIME_VSYSCALL_OLD
561#warning Please contact your maintainers, as GENERIC_TIME_VSYSCALL_OLD compatibity will disappear soon.
562
563static inline void update_vsyscall(struct timekeeper *tk)
564{
565 struct timespec xt, wm;
566
567 xt = timespec64_to_timespec(tk_xtime(tk));
568 wm = timespec64_to_timespec(tk->wall_to_monotonic);
569 update_vsyscall_old(&xt, &wm, tk->tkr_mono.clock, tk->tkr_mono.mult,
570 tk->tkr_mono.cycle_last);
571}
572
573static inline void old_vsyscall_fixup(struct timekeeper *tk)
574{
575 s64 remainder;
576
577 /*
578 * Store only full nanoseconds into xtime_nsec after rounding
579 * it up and add the remainder to the error difference.
580 * XXX - This is necessary to avoid small 1ns inconsistnecies caused
581 * by truncating the remainder in vsyscalls. However, it causes
582 * additional work to be done in timekeeping_adjust(). Once
583 * the vsyscall implementations are converted to use xtime_nsec
584 * (shifted nanoseconds), and CONFIG_GENERIC_TIME_VSYSCALL_OLD
585 * users are removed, this can be killed.
586 */
587 remainder = tk->tkr_mono.xtime_nsec & ((1ULL << tk->tkr_mono.shift) - 1);
588 if (remainder != 0) {
589 tk->tkr_mono.xtime_nsec -= remainder;
590 tk->tkr_mono.xtime_nsec += 1ULL << tk->tkr_mono.shift;
591 tk->ntp_error += remainder << tk->ntp_error_shift;
592 tk->ntp_error -= (1ULL << tk->tkr_mono.shift) << tk->ntp_error_shift;
593 }
594}
595#else
596#define old_vsyscall_fixup(tk)
597#endif
598
599static RAW_NOTIFIER_HEAD(pvclock_gtod_chain); 560static RAW_NOTIFIER_HEAD(pvclock_gtod_chain);
600 561
601static void update_pvclock_gtod(struct timekeeper *tk, bool was_set) 562static void update_pvclock_gtod(struct timekeeper *tk, bool was_set)
@@ -2164,12 +2125,6 @@ void update_wall_time(void)
2164 timekeeping_adjust(tk, offset); 2125 timekeeping_adjust(tk, offset);
2165 2126
2166 /* 2127 /*
2167 * XXX This can be killed once everyone converts
2168 * to the new update_vsyscall.
2169 */
2170 old_vsyscall_fixup(tk);
2171
2172 /*
2173 * Finally, make sure that after the rounding 2128 * Finally, make sure that after the rounding
2174 * xtime_nsec isn't larger than NSEC_PER_SEC 2129 * xtime_nsec isn't larger than NSEC_PER_SEC
2175 */ 2130 */
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index af0b8bae4502..ffebcf878fba 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -707,14 +707,18 @@ static inline void debug_timer_assert_init(struct timer_list *timer)
707 debug_object_assert_init(timer, &timer_debug_descr); 707 debug_object_assert_init(timer, &timer_debug_descr);
708} 708}
709 709
710static void do_init_timer(struct timer_list *timer, unsigned int flags, 710static void do_init_timer(struct timer_list *timer,
711 void (*func)(struct timer_list *),
712 unsigned int flags,
711 const char *name, struct lock_class_key *key); 713 const char *name, struct lock_class_key *key);
712 714
713void init_timer_on_stack_key(struct timer_list *timer, unsigned int flags, 715void init_timer_on_stack_key(struct timer_list *timer,
716 void (*func)(struct timer_list *),
717 unsigned int flags,
714 const char *name, struct lock_class_key *key) 718 const char *name, struct lock_class_key *key)
715{ 719{
716 debug_object_init_on_stack(timer, &timer_debug_descr); 720 debug_object_init_on_stack(timer, &timer_debug_descr);
717 do_init_timer(timer, flags, name, key); 721 do_init_timer(timer, func, flags, name, key);
718} 722}
719EXPORT_SYMBOL_GPL(init_timer_on_stack_key); 723EXPORT_SYMBOL_GPL(init_timer_on_stack_key);
720 724
@@ -755,10 +759,13 @@ static inline void debug_assert_init(struct timer_list *timer)
755 debug_timer_assert_init(timer); 759 debug_timer_assert_init(timer);
756} 760}
757 761
758static void do_init_timer(struct timer_list *timer, unsigned int flags, 762static void do_init_timer(struct timer_list *timer,
763 void (*func)(struct timer_list *),
764 unsigned int flags,
759 const char *name, struct lock_class_key *key) 765 const char *name, struct lock_class_key *key)
760{ 766{
761 timer->entry.pprev = NULL; 767 timer->entry.pprev = NULL;
768 timer->function = func;
762 timer->flags = flags | raw_smp_processor_id(); 769 timer->flags = flags | raw_smp_processor_id();
763 lockdep_init_map(&timer->lockdep_map, name, key, 0); 770 lockdep_init_map(&timer->lockdep_map, name, key, 0);
764} 771}
@@ -766,6 +773,7 @@ static void do_init_timer(struct timer_list *timer, unsigned int flags,
766/** 773/**
767 * init_timer_key - initialize a timer 774 * init_timer_key - initialize a timer
768 * @timer: the timer to be initialized 775 * @timer: the timer to be initialized
776 * @func: timer callback function
769 * @flags: timer flags 777 * @flags: timer flags
770 * @name: name of the timer 778 * @name: name of the timer
771 * @key: lockdep class key of the fake lock used for tracking timer 779 * @key: lockdep class key of the fake lock used for tracking timer
@@ -774,11 +782,12 @@ static void do_init_timer(struct timer_list *timer, unsigned int flags,
774 * init_timer_key() must be done to a timer prior calling *any* of the 782 * init_timer_key() must be done to a timer prior calling *any* of the
775 * other timer functions. 783 * other timer functions.
776 */ 784 */
777void init_timer_key(struct timer_list *timer, unsigned int flags, 785void init_timer_key(struct timer_list *timer,
786 void (*func)(struct timer_list *), unsigned int flags,
778 const char *name, struct lock_class_key *key) 787 const char *name, struct lock_class_key *key)
779{ 788{
780 debug_init(timer); 789 debug_init(timer);
781 do_init_timer(timer, flags, name, key); 790 do_init_timer(timer, func, flags, name, key);
782} 791}
783EXPORT_SYMBOL(init_timer_key); 792EXPORT_SYMBOL(init_timer_key);
784 793
@@ -1107,12 +1116,12 @@ EXPORT_SYMBOL(timer_reduce);
1107 * add_timer - start a timer 1116 * add_timer - start a timer
1108 * @timer: the timer to be added 1117 * @timer: the timer to be added
1109 * 1118 *
1110 * The kernel will do a ->function(->data) callback from the 1119 * The kernel will do a ->function(@timer) callback from the
1111 * timer interrupt at the ->expires point in the future. The 1120 * timer interrupt at the ->expires point in the future. The
1112 * current time is 'jiffies'. 1121 * current time is 'jiffies'.
1113 * 1122 *
1114 * The timer's ->expires, ->function (and if the handler uses it, ->data) 1123 * The timer's ->expires, ->function fields must be set prior calling this
1115 * fields must be set prior calling this function. 1124 * function.
1116 * 1125 *
1117 * Timers with an ->expires field in the past will be executed in the next 1126 * Timers with an ->expires field in the past will be executed in the next
1118 * timer tick. 1127 * timer tick.
@@ -1284,8 +1293,7 @@ int del_timer_sync(struct timer_list *timer)
1284EXPORT_SYMBOL(del_timer_sync); 1293EXPORT_SYMBOL(del_timer_sync);
1285#endif 1294#endif
1286 1295
1287static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long), 1296static void call_timer_fn(struct timer_list *timer, void (*fn)(struct timer_list *))
1288 unsigned long data)
1289{ 1297{
1290 int count = preempt_count(); 1298 int count = preempt_count();
1291 1299
@@ -1309,7 +1317,7 @@ static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long),
1309 lock_map_acquire(&lockdep_map); 1317 lock_map_acquire(&lockdep_map);
1310 1318
1311 trace_timer_expire_entry(timer); 1319 trace_timer_expire_entry(timer);
1312 fn(data); 1320 fn(timer);
1313 trace_timer_expire_exit(timer); 1321 trace_timer_expire_exit(timer);
1314 1322
1315 lock_map_release(&lockdep_map); 1323 lock_map_release(&lockdep_map);
@@ -1331,8 +1339,7 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head)
1331{ 1339{
1332 while (!hlist_empty(head)) { 1340 while (!hlist_empty(head)) {
1333 struct timer_list *timer; 1341 struct timer_list *timer;
1334 void (*fn)(unsigned long); 1342 void (*fn)(struct timer_list *);
1335 unsigned long data;
1336 1343
1337 timer = hlist_entry(head->first, struct timer_list, entry); 1344 timer = hlist_entry(head->first, struct timer_list, entry);
1338 1345
@@ -1340,15 +1347,14 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head)
1340 detach_timer(timer, true); 1347 detach_timer(timer, true);
1341 1348
1342 fn = timer->function; 1349 fn = timer->function;
1343 data = timer->data;
1344 1350
1345 if (timer->flags & TIMER_IRQSAFE) { 1351 if (timer->flags & TIMER_IRQSAFE) {
1346 raw_spin_unlock(&base->lock); 1352 raw_spin_unlock(&base->lock);
1347 call_timer_fn(timer, fn, data); 1353 call_timer_fn(timer, fn);
1348 raw_spin_lock(&base->lock); 1354 raw_spin_lock(&base->lock);
1349 } else { 1355 } else {
1350 raw_spin_unlock_irq(&base->lock); 1356 raw_spin_unlock_irq(&base->lock);
1351 call_timer_fn(timer, fn, data); 1357 call_timer_fn(timer, fn);
1352 raw_spin_lock_irq(&base->lock); 1358 raw_spin_lock_irq(&base->lock);
1353 } 1359 }
1354 } 1360 }
diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index 0e7f5428a148..0ed768b56c60 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -389,7 +389,7 @@ static int __init init_timer_list_procfs(void)
389{ 389{
390 struct proc_dir_entry *pe; 390 struct proc_dir_entry *pe;
391 391
392 pe = proc_create("timer_list", 0444, NULL, &timer_list_fops); 392 pe = proc_create("timer_list", 0400, NULL, &timer_list_fops);
393 if (!pe) 393 if (!pe)
394 return -ENOMEM; 394 return -ENOMEM;
395 return 0; 395 return 0;
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index dde6298f6b22..8fdb710bfdd7 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -1509,7 +1509,7 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
1509 struct work_struct *work = &dwork->work; 1509 struct work_struct *work = &dwork->work;
1510 1510
1511 WARN_ON_ONCE(!wq); 1511 WARN_ON_ONCE(!wq);
1512 WARN_ON_ONCE(timer->function != (TIMER_FUNC_TYPE)delayed_work_timer_fn); 1512 WARN_ON_ONCE(timer->function != delayed_work_timer_fn);
1513 WARN_ON_ONCE(timer_pending(timer)); 1513 WARN_ON_ONCE(timer_pending(timer));
1514 WARN_ON_ONCE(!list_empty(&work->entry)); 1514 WARN_ON_ONCE(!list_empty(&work->entry));
1515 1515
diff --git a/lib/random32.c b/lib/random32.c
index 65cc018fef40..4aaa76404d56 100644
--- a/lib/random32.c
+++ b/lib/random32.c
@@ -213,11 +213,11 @@ static int __init prandom_init(void)
213} 213}
214core_initcall(prandom_init); 214core_initcall(prandom_init);
215 215
216static void __prandom_timer(unsigned long dontcare); 216static void __prandom_timer(struct timer_list *unused);
217 217
218static DEFINE_TIMER(seed_timer, __prandom_timer); 218static DEFINE_TIMER(seed_timer, __prandom_timer);
219 219
220static void __prandom_timer(unsigned long dontcare) 220static void __prandom_timer(struct timer_list *unused)
221{ 221{
222 u32 entropy; 222 u32 entropy;
223 unsigned long expires; 223 unsigned long expires;
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 8a1551154285..e7095030aa1f 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1993,11 +1993,12 @@ int dirty_writeback_centisecs_handler(struct ctl_table *table, int write,
1993} 1993}
1994 1994
1995#ifdef CONFIG_BLOCK 1995#ifdef CONFIG_BLOCK
1996void laptop_mode_timer_fn(unsigned long data) 1996void laptop_mode_timer_fn(struct timer_list *t)
1997{ 1997{
1998 struct request_queue *q = (struct request_queue *)data; 1998 struct backing_dev_info *backing_dev_info =
1999 from_timer(backing_dev_info, t, laptop_mode_wb_timer);
1999 2000
2000 wakeup_flusher_threads_bdi(q->backing_dev_info, WB_REASON_LAPTOP_TIMER); 2001 wakeup_flusher_threads_bdi(backing_dev_info, WB_REASON_LAPTOP_TIMER);
2001} 2002}
2002 2003
2003/* 2004/*
diff --git a/net/802/garp.c b/net/802/garp.c
index 2dac647ff420..7f50d47470bd 100644
--- a/net/802/garp.c
+++ b/net/802/garp.c
@@ -401,9 +401,9 @@ static void garp_join_timer_arm(struct garp_applicant *app)
401 mod_timer(&app->join_timer, jiffies + delay); 401 mod_timer(&app->join_timer, jiffies + delay);
402} 402}
403 403
404static void garp_join_timer(unsigned long data) 404static void garp_join_timer(struct timer_list *t)
405{ 405{
406 struct garp_applicant *app = (struct garp_applicant *)data; 406 struct garp_applicant *app = from_timer(app, t, join_timer);
407 407
408 spin_lock(&app->lock); 408 spin_lock(&app->lock);
409 garp_gid_event(app, GARP_EVENT_TRANSMIT_PDU); 409 garp_gid_event(app, GARP_EVENT_TRANSMIT_PDU);
@@ -584,7 +584,7 @@ int garp_init_applicant(struct net_device *dev, struct garp_application *appl)
584 spin_lock_init(&app->lock); 584 spin_lock_init(&app->lock);
585 skb_queue_head_init(&app->queue); 585 skb_queue_head_init(&app->queue);
586 rcu_assign_pointer(dev->garp_port->applicants[appl->type], app); 586 rcu_assign_pointer(dev->garp_port->applicants[appl->type], app);
587 setup_timer(&app->join_timer, garp_join_timer, (unsigned long)app); 587 timer_setup(&app->join_timer, garp_join_timer, 0);
588 garp_join_timer_arm(app); 588 garp_join_timer_arm(app);
589 return 0; 589 return 0;
590 590
diff --git a/net/802/mrp.c b/net/802/mrp.c
index be4dd3165347..a808dd5bbb27 100644
--- a/net/802/mrp.c
+++ b/net/802/mrp.c
@@ -586,9 +586,9 @@ static void mrp_join_timer_arm(struct mrp_applicant *app)
586 mod_timer(&app->join_timer, jiffies + delay); 586 mod_timer(&app->join_timer, jiffies + delay);
587} 587}
588 588
589static void mrp_join_timer(unsigned long data) 589static void mrp_join_timer(struct timer_list *t)
590{ 590{
591 struct mrp_applicant *app = (struct mrp_applicant *)data; 591 struct mrp_applicant *app = from_timer(app, t, join_timer);
592 592
593 spin_lock(&app->lock); 593 spin_lock(&app->lock);
594 mrp_mad_event(app, MRP_EVENT_TX); 594 mrp_mad_event(app, MRP_EVENT_TX);
@@ -605,9 +605,9 @@ static void mrp_periodic_timer_arm(struct mrp_applicant *app)
605 jiffies + msecs_to_jiffies(mrp_periodic_time)); 605 jiffies + msecs_to_jiffies(mrp_periodic_time));
606} 606}
607 607
608static void mrp_periodic_timer(unsigned long data) 608static void mrp_periodic_timer(struct timer_list *t)
609{ 609{
610 struct mrp_applicant *app = (struct mrp_applicant *)data; 610 struct mrp_applicant *app = from_timer(app, t, periodic_timer);
611 611
612 spin_lock(&app->lock); 612 spin_lock(&app->lock);
613 mrp_mad_event(app, MRP_EVENT_PERIODIC); 613 mrp_mad_event(app, MRP_EVENT_PERIODIC);
@@ -865,10 +865,9 @@ int mrp_init_applicant(struct net_device *dev, struct mrp_application *appl)
865 spin_lock_init(&app->lock); 865 spin_lock_init(&app->lock);
866 skb_queue_head_init(&app->queue); 866 skb_queue_head_init(&app->queue);
867 rcu_assign_pointer(dev->mrp_port->applicants[appl->type], app); 867 rcu_assign_pointer(dev->mrp_port->applicants[appl->type], app);
868 setup_timer(&app->join_timer, mrp_join_timer, (unsigned long)app); 868 timer_setup(&app->join_timer, mrp_join_timer, 0);
869 mrp_join_timer_arm(app); 869 mrp_join_timer_arm(app);
870 setup_timer(&app->periodic_timer, mrp_periodic_timer, 870 timer_setup(&app->periodic_timer, mrp_periodic_timer, 0);
871 (unsigned long)app);
872 mrp_periodic_timer_arm(app); 871 mrp_periodic_timer_arm(app);
873 return 0; 872 return 0;
874 873
diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
index 8ad3ec2610b6..309d7dbb36e8 100644
--- a/net/appletalk/aarp.c
+++ b/net/appletalk/aarp.c
@@ -310,7 +310,7 @@ static void __aarp_expire_device(struct aarp_entry **n, struct net_device *dev)
310} 310}
311 311
312/* Handle the timer event */ 312/* Handle the timer event */
313static void aarp_expire_timeout(unsigned long unused) 313static void aarp_expire_timeout(struct timer_list *unused)
314{ 314{
315 int ct; 315 int ct;
316 316
@@ -884,7 +884,7 @@ void __init aarp_proto_init(void)
884 aarp_dl = register_snap_client(aarp_snap_id, aarp_rcv); 884 aarp_dl = register_snap_client(aarp_snap_id, aarp_rcv);
885 if (!aarp_dl) 885 if (!aarp_dl)
886 printk(KERN_CRIT "Unable to register AARP with SNAP.\n"); 886 printk(KERN_CRIT "Unable to register AARP with SNAP.\n");
887 setup_timer(&aarp_timer, aarp_expire_timeout, 0); 887 timer_setup(&aarp_timer, aarp_expire_timeout, 0);
888 aarp_timer.expires = jiffies + sysctl_aarp_expiry_time; 888 aarp_timer.expires = jiffies + sysctl_aarp_expiry_time;
889 add_timer(&aarp_timer); 889 add_timer(&aarp_timer);
890 register_netdevice_notifier(&aarp_notifier); 890 register_netdevice_notifier(&aarp_notifier);
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
index 5d035c1f1156..03a9fc0771c0 100644
--- a/net/appletalk/ddp.c
+++ b/net/appletalk/ddp.c
@@ -158,9 +158,9 @@ found:
158 return s; 158 return s;
159} 159}
160 160
161static void atalk_destroy_timer(unsigned long data) 161static void atalk_destroy_timer(struct timer_list *t)
162{ 162{
163 struct sock *sk = (struct sock *)data; 163 struct sock *sk = from_timer(sk, t, sk_timer);
164 164
165 if (sk_has_allocations(sk)) { 165 if (sk_has_allocations(sk)) {
166 sk->sk_timer.expires = jiffies + SOCK_DESTROY_TIME; 166 sk->sk_timer.expires = jiffies + SOCK_DESTROY_TIME;
@@ -175,8 +175,7 @@ static inline void atalk_destroy_socket(struct sock *sk)
175 skb_queue_purge(&sk->sk_receive_queue); 175 skb_queue_purge(&sk->sk_receive_queue);
176 176
177 if (sk_has_allocations(sk)) { 177 if (sk_has_allocations(sk)) {
178 setup_timer(&sk->sk_timer, atalk_destroy_timer, 178 timer_setup(&sk->sk_timer, atalk_destroy_timer, 0);
179 (unsigned long)sk);
180 sk->sk_timer.expires = jiffies + SOCK_DESTROY_TIME; 179 sk->sk_timer.expires = jiffies + SOCK_DESTROY_TIME;
181 add_timer(&sk->sk_timer); 180 add_timer(&sk->sk_timer);
182 } else 181 } else
diff --git a/net/atm/lec.c b/net/atm/lec.c
index c976196da3ea..6676e3433261 100644
--- a/net/atm/lec.c
+++ b/net/atm/lec.c
@@ -1798,7 +1798,7 @@ static struct atm_vcc *lec_arp_resolve(struct lec_priv *priv,
1798 else 1798 else
1799 send_to_lecd(priv, l_arp_xmt, mac_to_find, NULL, NULL); 1799 send_to_lecd(priv, l_arp_xmt, mac_to_find, NULL, NULL);
1800 entry->timer.expires = jiffies + (1 * HZ); 1800 entry->timer.expires = jiffies + (1 * HZ);
1801 entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_arp; 1801 entry->timer.function = lec_arp_expire_arp;
1802 add_timer(&entry->timer); 1802 add_timer(&entry->timer);
1803 found = priv->mcast_vcc; 1803 found = priv->mcast_vcc;
1804 } 1804 }
@@ -1998,7 +1998,7 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
1998 entry->old_recv_push = old_push; 1998 entry->old_recv_push = old_push;
1999 entry->status = ESI_UNKNOWN; 1999 entry->status = ESI_UNKNOWN;
2000 entry->timer.expires = jiffies + priv->vcc_timeout_period; 2000 entry->timer.expires = jiffies + priv->vcc_timeout_period;
2001 entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_vcc; 2001 entry->timer.function = lec_arp_expire_vcc;
2002 hlist_add_head(&entry->next, &priv->lec_no_forward); 2002 hlist_add_head(&entry->next, &priv->lec_no_forward);
2003 add_timer(&entry->timer); 2003 add_timer(&entry->timer);
2004 dump_arp_table(priv); 2004 dump_arp_table(priv);
@@ -2082,7 +2082,7 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
2082 entry->status = ESI_UNKNOWN; 2082 entry->status = ESI_UNKNOWN;
2083 hlist_add_head(&entry->next, &priv->lec_arp_empty_ones); 2083 hlist_add_head(&entry->next, &priv->lec_arp_empty_ones);
2084 entry->timer.expires = jiffies + priv->vcc_timeout_period; 2084 entry->timer.expires = jiffies + priv->vcc_timeout_period;
2085 entry->timer.function = (TIMER_FUNC_TYPE)lec_arp_expire_vcc; 2085 entry->timer.function = lec_arp_expire_vcc;
2086 add_timer(&entry->timer); 2086 add_timer(&entry->timer);
2087 pr_debug("After vcc was added\n"); 2087 pr_debug("After vcc was added\n");
2088 dump_arp_table(priv); 2088 dump_arp_table(priv);
diff --git a/net/atm/mpc.c b/net/atm/mpc.c
index e882d8b5db05..7c6a1cc760a2 100644
--- a/net/atm/mpc.c
+++ b/net/atm/mpc.c
@@ -121,7 +121,7 @@ static struct notifier_block mpoa_notifier = {
121 121
122struct mpoa_client *mpcs = NULL; /* FIXME */ 122struct mpoa_client *mpcs = NULL; /* FIXME */
123static struct atm_mpoa_qos *qos_head = NULL; 123static struct atm_mpoa_qos *qos_head = NULL;
124static DEFINE_TIMER(mpc_timer, NULL); 124static DEFINE_TIMER(mpc_timer, mpc_cache_check);
125 125
126 126
127static struct mpoa_client *find_mpc_by_itfnum(int itf) 127static struct mpoa_client *find_mpc_by_itfnum(int itf)
@@ -1413,7 +1413,6 @@ static void mpc_timer_refresh(void)
1413{ 1413{
1414 mpc_timer.expires = jiffies + (MPC_P2 * HZ); 1414 mpc_timer.expires = jiffies + (MPC_P2 * HZ);
1415 checking_time = mpc_timer.expires; 1415 checking_time = mpc_timer.expires;
1416 mpc_timer.function = (TIMER_FUNC_TYPE)mpc_cache_check;
1417 add_timer(&mpc_timer); 1416 add_timer(&mpc_timer);
1418} 1417}
1419 1418
diff --git a/net/batman-adv/tp_meter.c b/net/batman-adv/tp_meter.c
index 4b90033f35a8..15cd2139381e 100644
--- a/net/batman-adv/tp_meter.c
+++ b/net/batman-adv/tp_meter.c
@@ -488,9 +488,9 @@ static void batadv_tp_reset_sender_timer(struct batadv_tp_vars *tp_vars)
488 * Switch to Slow Start, set the ss_threshold to half of the current cwnd and 488 * Switch to Slow Start, set the ss_threshold to half of the current cwnd and
489 * reset the cwnd to 3*MSS 489 * reset the cwnd to 3*MSS
490 */ 490 */
491static void batadv_tp_sender_timeout(unsigned long arg) 491static void batadv_tp_sender_timeout(struct timer_list *t)
492{ 492{
493 struct batadv_tp_vars *tp_vars = (struct batadv_tp_vars *)arg; 493 struct batadv_tp_vars *tp_vars = from_timer(tp_vars, t, timer);
494 struct batadv_priv *bat_priv = tp_vars->bat_priv; 494 struct batadv_priv *bat_priv = tp_vars->bat_priv;
495 495
496 if (atomic_read(&tp_vars->sending) == 0) 496 if (atomic_read(&tp_vars->sending) == 0)
@@ -1020,8 +1020,7 @@ void batadv_tp_start(struct batadv_priv *bat_priv, const u8 *dst,
1020 atomic64_set(&tp_vars->tot_sent, 0); 1020 atomic64_set(&tp_vars->tot_sent, 0);
1021 1021
1022 kref_get(&tp_vars->refcount); 1022 kref_get(&tp_vars->refcount);
1023 setup_timer(&tp_vars->timer, batadv_tp_sender_timeout, 1023 timer_setup(&tp_vars->timer, batadv_tp_sender_timeout, 0);
1024 (unsigned long)tp_vars);
1025 1024
1026 tp_vars->bat_priv = bat_priv; 1025 tp_vars->bat_priv = bat_priv;
1027 tp_vars->start_time = jiffies; 1026 tp_vars->start_time = jiffies;
@@ -1109,9 +1108,9 @@ static void batadv_tp_reset_receiver_timer(struct batadv_tp_vars *tp_vars)
1109 * reached without received ack 1108 * reached without received ack
1110 * @arg: address of the related tp_vars 1109 * @arg: address of the related tp_vars
1111 */ 1110 */
1112static void batadv_tp_receiver_shutdown(unsigned long arg) 1111static void batadv_tp_receiver_shutdown(struct timer_list *t)
1113{ 1112{
1114 struct batadv_tp_vars *tp_vars = (struct batadv_tp_vars *)arg; 1113 struct batadv_tp_vars *tp_vars = from_timer(tp_vars, t, timer);
1115 struct batadv_tp_unacked *un, *safe; 1114 struct batadv_tp_unacked *un, *safe;
1116 struct batadv_priv *bat_priv; 1115 struct batadv_priv *bat_priv;
1117 1116
@@ -1373,8 +1372,7 @@ batadv_tp_init_recv(struct batadv_priv *bat_priv,
1373 hlist_add_head_rcu(&tp_vars->list, &bat_priv->tp_list); 1372 hlist_add_head_rcu(&tp_vars->list, &bat_priv->tp_list);
1374 1373
1375 kref_get(&tp_vars->refcount); 1374 kref_get(&tp_vars->refcount);
1376 setup_timer(&tp_vars->timer, batadv_tp_receiver_shutdown, 1375 timer_setup(&tp_vars->timer, batadv_tp_receiver_shutdown, 0);
1377 (unsigned long)tp_vars);
1378 1376
1379 batadv_tp_reset_receiver_timer(tp_vars); 1377 batadv_tp_reset_receiver_timer(tp_vars);
1380 1378
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 8112893037bd..f2cec70d520c 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -398,9 +398,9 @@ static int hidp_raw_request(struct hid_device *hid, unsigned char reportnum,
398 } 398 }
399} 399}
400 400
401static void hidp_idle_timeout(unsigned long arg) 401static void hidp_idle_timeout(struct timer_list *t)
402{ 402{
403 struct hidp_session *session = (struct hidp_session *) arg; 403 struct hidp_session *session = from_timer(session, t, timer);
404 404
405 /* The HIDP user-space API only contains calls to add and remove 405 /* The HIDP user-space API only contains calls to add and remove
406 * devices. There is no way to forward events of any kind. Therefore, 406 * devices. There is no way to forward events of any kind. Therefore,
@@ -944,8 +944,7 @@ static int hidp_session_new(struct hidp_session **out, const bdaddr_t *bdaddr,
944 944
945 /* device management */ 945 /* device management */
946 INIT_WORK(&session->dev_init, hidp_session_dev_work); 946 INIT_WORK(&session->dev_init, hidp_session_dev_work);
947 setup_timer(&session->timer, hidp_idle_timeout, 947 timer_setup(&session->timer, hidp_idle_timeout, 0);
948 (unsigned long)session);
949 948
950 /* session data */ 949 /* session data */
951 mutex_init(&session->report_mutex); 950 mutex_init(&session->report_mutex);
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 4a0b41d75c84..b98225d65e87 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -233,9 +233,9 @@ static int rfcomm_check_security(struct rfcomm_dlc *d)
233 d->out); 233 d->out);
234} 234}
235 235
236static void rfcomm_session_timeout(unsigned long arg) 236static void rfcomm_session_timeout(struct timer_list *t)
237{ 237{
238 struct rfcomm_session *s = (void *) arg; 238 struct rfcomm_session *s = from_timer(s, t, timer);
239 239
240 BT_DBG("session %p state %ld", s, s->state); 240 BT_DBG("session %p state %ld", s, s->state);
241 241
@@ -258,9 +258,9 @@ static void rfcomm_session_clear_timer(struct rfcomm_session *s)
258} 258}
259 259
260/* ---- RFCOMM DLCs ---- */ 260/* ---- RFCOMM DLCs ---- */
261static void rfcomm_dlc_timeout(unsigned long arg) 261static void rfcomm_dlc_timeout(struct timer_list *t)
262{ 262{
263 struct rfcomm_dlc *d = (void *) arg; 263 struct rfcomm_dlc *d = from_timer(d, t, timer);
264 264
265 BT_DBG("dlc %p state %ld", d, d->state); 265 BT_DBG("dlc %p state %ld", d, d->state);
266 266
@@ -307,7 +307,7 @@ struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio)
307 if (!d) 307 if (!d)
308 return NULL; 308 return NULL;
309 309
310 setup_timer(&d->timer, rfcomm_dlc_timeout, (unsigned long)d); 310 timer_setup(&d->timer, rfcomm_dlc_timeout, 0);
311 311
312 skb_queue_head_init(&d->tx_queue); 312 skb_queue_head_init(&d->tx_queue);
313 mutex_init(&d->lock); 313 mutex_init(&d->lock);
@@ -650,7 +650,7 @@ static struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state)
650 650
651 BT_DBG("session %p sock %p", s, sock); 651 BT_DBG("session %p sock %p", s, sock);
652 652
653 setup_timer(&s->timer, rfcomm_session_timeout, (unsigned long) s); 653 timer_setup(&s->timer, rfcomm_session_timeout, 0);
654 654
655 INIT_LIST_HEAD(&s->dlcs); 655 INIT_LIST_HEAD(&s->dlcs);
656 s->state = state; 656 s->state = state;
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 795e920a3281..08df57665e1f 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -73,9 +73,9 @@ struct sco_pinfo {
73#define SCO_CONN_TIMEOUT (HZ * 40) 73#define SCO_CONN_TIMEOUT (HZ * 40)
74#define SCO_DISCONN_TIMEOUT (HZ * 2) 74#define SCO_DISCONN_TIMEOUT (HZ * 2)
75 75
76static void sco_sock_timeout(unsigned long arg) 76static void sco_sock_timeout(struct timer_list *t)
77{ 77{
78 struct sock *sk = (struct sock *)arg; 78 struct sock *sk = from_timer(sk, t, sk_timer);
79 79
80 BT_DBG("sock %p state %d", sk, sk->sk_state); 80 BT_DBG("sock %p state %d", sk, sk->sk_state);
81 81
@@ -487,7 +487,7 @@ static struct sock *sco_sock_alloc(struct net *net, struct socket *sock,
487 487
488 sco_pi(sk)->setting = BT_VOICE_CVSD_16BIT; 488 sco_pi(sk)->setting = BT_VOICE_CVSD_16BIT;
489 489
490 setup_timer(&sk->sk_timer, sco_sock_timeout, (unsigned long)sk); 490 timer_setup(&sk->sk_timer, sco_sock_timeout, 0);
491 491
492 bt_sock_link(&sco_sk_list, sk); 492 bt_sock_link(&sco_sk_list, sk);
493 return sk; 493 return sk;
diff --git a/net/can/proc.c b/net/can/proc.c
index d979b3dc49a6..0c59f876fe6f 100644
--- a/net/can/proc.c
+++ b/net/can/proc.c
@@ -221,7 +221,7 @@ static int can_stats_proc_show(struct seq_file *m, void *v)
221 221
222 seq_putc(m, '\n'); 222 seq_putc(m, '\n');
223 223
224 if (net->can.can_stattimer.function == (TIMER_FUNC_TYPE)can_stat_update) { 224 if (net->can.can_stattimer.function == can_stat_update) {
225 seq_printf(m, " %8ld %% total match ratio (RXMR)\n", 225 seq_printf(m, " %8ld %% total match ratio (RXMR)\n",
226 can_stats->total_rx_match_ratio); 226 can_stats->total_rx_match_ratio);
227 227
@@ -291,7 +291,7 @@ static int can_reset_stats_proc_show(struct seq_file *m, void *v)
291 291
292 user_reset = 1; 292 user_reset = 1;
293 293
294 if (net->can.can_stattimer.function == (TIMER_FUNC_TYPE)can_stat_update) { 294 if (net->can.can_stattimer.function == can_stat_update) {
295 seq_printf(m, "Scheduled statistic reset #%ld.\n", 295 seq_printf(m, "Scheduled statistic reset #%ld.\n",
296 can_pstats->stats_reset + 1); 296 can_pstats->stats_reset + 1);
297 } else { 297 } else {
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
index 70ccda233bd1..c7785efeea57 100644
--- a/net/core/drop_monitor.c
+++ b/net/core/drop_monitor.c
@@ -144,9 +144,9 @@ static void send_dm_alert(struct work_struct *work)
144 * in the event that more drops will arrive during the 144 * in the event that more drops will arrive during the
145 * hysteresis period. 145 * hysteresis period.
146 */ 146 */
147static void sched_send_work(unsigned long _data) 147static void sched_send_work(struct timer_list *t)
148{ 148{
149 struct per_cpu_dm_data *data = (struct per_cpu_dm_data *)_data; 149 struct per_cpu_dm_data *data = from_timer(data, t, send_timer);
150 150
151 schedule_work(&data->dm_alert_work); 151 schedule_work(&data->dm_alert_work);
152} 152}
@@ -412,8 +412,7 @@ static int __init init_net_drop_monitor(void)
412 for_each_possible_cpu(cpu) { 412 for_each_possible_cpu(cpu) {
413 data = &per_cpu(dm_cpu_data, cpu); 413 data = &per_cpu(dm_cpu_data, cpu);
414 INIT_WORK(&data->dm_alert_work, send_dm_alert); 414 INIT_WORK(&data->dm_alert_work, send_dm_alert);
415 setup_timer(&data->send_timer, sched_send_work, 415 timer_setup(&data->send_timer, sched_send_work, 0);
416 (unsigned long)data);
417 spin_lock_init(&data->lock); 416 spin_lock_init(&data->lock);
418 reset_per_cpu_data(data); 417 reset_per_cpu_data(data);
419 } 418 }
diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c
index 7c1ffd6f9501..9834cfa21b21 100644
--- a/net/core/gen_estimator.c
+++ b/net/core/gen_estimator.c
@@ -76,9 +76,9 @@ static void est_fetch_counters(struct net_rate_estimator *e,
76 76
77} 77}
78 78
79static void est_timer(unsigned long arg) 79static void est_timer(struct timer_list *t)
80{ 80{
81 struct net_rate_estimator *est = (struct net_rate_estimator *)arg; 81 struct net_rate_estimator *est = from_timer(est, t, timer);
82 struct gnet_stats_basic_packed b; 82 struct gnet_stats_basic_packed b;
83 u64 rate, brate; 83 u64 rate, brate;
84 84
@@ -170,7 +170,7 @@ int gen_new_estimator(struct gnet_stats_basic_packed *bstats,
170 } 170 }
171 171
172 est->next_jiffies = jiffies + ((HZ/4) << intvl_log); 172 est->next_jiffies = jiffies + ((HZ/4) << intvl_log);
173 setup_timer(&est->timer, est_timer, (unsigned long)est); 173 timer_setup(&est->timer, est_timer, 0);
174 mod_timer(&est->timer, est->next_jiffies); 174 mod_timer(&est->timer, est->next_jiffies);
175 175
176 rcu_assign_pointer(*rate_est, est); 176 rcu_assign_pointer(*rate_est, est);
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 6ea3a1a7f36a..d1f5fe986edd 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -51,7 +51,7 @@ do { \
51 51
52#define PNEIGH_HASHMASK 0xF 52#define PNEIGH_HASHMASK 0xF
53 53
54static void neigh_timer_handler(unsigned long arg); 54static void neigh_timer_handler(struct timer_list *t);
55static void __neigh_notify(struct neighbour *n, int type, int flags, 55static void __neigh_notify(struct neighbour *n, int type, int flags,
56 u32 pid); 56 u32 pid);
57static void neigh_update_notify(struct neighbour *neigh, u32 nlmsg_pid); 57static void neigh_update_notify(struct neighbour *neigh, u32 nlmsg_pid);
@@ -331,7 +331,7 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl, struct net_device
331 n->output = neigh_blackhole; 331 n->output = neigh_blackhole;
332 seqlock_init(&n->hh.hh_lock); 332 seqlock_init(&n->hh.hh_lock);
333 n->parms = neigh_parms_clone(&tbl->parms); 333 n->parms = neigh_parms_clone(&tbl->parms);
334 setup_timer(&n->timer, neigh_timer_handler, (unsigned long)n); 334 timer_setup(&n->timer, neigh_timer_handler, 0);
335 335
336 NEIGH_CACHE_STAT_INC(tbl, allocs); 336 NEIGH_CACHE_STAT_INC(tbl, allocs);
337 n->tbl = tbl; 337 n->tbl = tbl;
@@ -903,10 +903,10 @@ static void neigh_probe(struct neighbour *neigh)
903 903
904/* Called when a timer expires for a neighbour entry. */ 904/* Called when a timer expires for a neighbour entry. */
905 905
906static void neigh_timer_handler(unsigned long arg) 906static void neigh_timer_handler(struct timer_list *t)
907{ 907{
908 unsigned long now, next; 908 unsigned long now, next;
909 struct neighbour *neigh = (struct neighbour *)arg; 909 struct neighbour *neigh = from_timer(neigh, t, timer);
910 unsigned int state; 910 unsigned int state;
911 int notify = 0; 911 int notify = 0;
912 912
@@ -1391,9 +1391,9 @@ int neigh_direct_output(struct neighbour *neigh, struct sk_buff *skb)
1391} 1391}
1392EXPORT_SYMBOL(neigh_direct_output); 1392EXPORT_SYMBOL(neigh_direct_output);
1393 1393
1394static void neigh_proxy_process(unsigned long arg) 1394static void neigh_proxy_process(struct timer_list *t)
1395{ 1395{
1396 struct neigh_table *tbl = (struct neigh_table *)arg; 1396 struct neigh_table *tbl = from_timer(tbl, t, proxy_timer);
1397 long sched_next = 0; 1397 long sched_next = 0;
1398 unsigned long now = jiffies; 1398 unsigned long now = jiffies;
1399 struct sk_buff *skb, *n; 1399 struct sk_buff *skb, *n;
@@ -1573,7 +1573,7 @@ void neigh_table_init(int index, struct neigh_table *tbl)
1573 INIT_DEFERRABLE_WORK(&tbl->gc_work, neigh_periodic_work); 1573 INIT_DEFERRABLE_WORK(&tbl->gc_work, neigh_periodic_work);
1574 queue_delayed_work(system_power_efficient_wq, &tbl->gc_work, 1574 queue_delayed_work(system_power_efficient_wq, &tbl->gc_work,
1575 tbl->parms.reachable_time); 1575 tbl->parms.reachable_time);
1576 setup_timer(&tbl->proxy_timer, neigh_proxy_process, (unsigned long)tbl); 1576 timer_setup(&tbl->proxy_timer, neigh_proxy_process, 0);
1577 skb_queue_head_init_class(&tbl->proxy_queue, 1577 skb_queue_head_init_class(&tbl->proxy_queue,
1578 &neigh_table_proxy_queue_class); 1578 &neigh_table_proxy_queue_class);
1579 1579
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c
index b36dceab0dc1..324cb9f2f551 100644
--- a/net/decnet/dn_route.c
+++ b/net/decnet/dn_route.c
@@ -125,7 +125,7 @@ static struct neighbour *dn_dst_neigh_lookup(const struct dst_entry *dst,
125 struct sk_buff *skb, 125 struct sk_buff *skb,
126 const void *daddr); 126 const void *daddr);
127static int dn_route_input(struct sk_buff *); 127static int dn_route_input(struct sk_buff *);
128static void dn_run_flush(unsigned long dummy); 128static void dn_run_flush(struct timer_list *unused);
129 129
130static struct dn_rt_hash_bucket *dn_rt_hash_table; 130static struct dn_rt_hash_bucket *dn_rt_hash_table;
131static unsigned int dn_rt_hash_mask; 131static unsigned int dn_rt_hash_mask;
@@ -183,7 +183,7 @@ static __inline__ unsigned int dn_hash(__le16 src, __le16 dst)
183 return dn_rt_hash_mask & (unsigned int)tmp; 183 return dn_rt_hash_mask & (unsigned int)tmp;
184} 184}
185 185
186static void dn_dst_check_expire(unsigned long dummy) 186static void dn_dst_check_expire(struct timer_list *unused)
187{ 187{
188 int i; 188 int i;
189 struct dn_route *rt; 189 struct dn_route *rt;
@@ -357,7 +357,7 @@ static int dn_insert_route(struct dn_route *rt, unsigned int hash, struct dn_rou
357 return 0; 357 return 0;
358} 358}
359 359
360static void dn_run_flush(unsigned long dummy) 360static void dn_run_flush(struct timer_list *unused)
361{ 361{
362 int i; 362 int i;
363 struct dn_route *rt, *next; 363 struct dn_route *rt, *next;
@@ -1875,7 +1875,7 @@ void __init dn_route_init(void)
1875 kmem_cache_create("dn_dst_cache", sizeof(struct dn_route), 0, 1875 kmem_cache_create("dn_dst_cache", sizeof(struct dn_route), 0,
1876 SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); 1876 SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
1877 dst_entries_init(&dn_dst_ops); 1877 dst_entries_init(&dn_dst_ops);
1878 setup_timer(&dn_route_timer, dn_dst_check_expire, 0); 1878 timer_setup(&dn_route_timer, dn_dst_check_expire, 0);
1879 dn_route_timer.expires = jiffies + decnet_dst_gc_interval * HZ; 1879 dn_route_timer.expires = jiffies + decnet_dst_gc_interval * HZ;
1880 add_timer(&dn_route_timer); 1880 add_timer(&dn_route_timer);
1881 1881
diff --git a/net/decnet/dn_timer.c b/net/decnet/dn_timer.c
index f430daed24a0..aa4155875ca8 100644
--- a/net/decnet/dn_timer.c
+++ b/net/decnet/dn_timer.c
@@ -34,11 +34,11 @@
34 34
35#define SLOW_INTERVAL (HZ/2) 35#define SLOW_INTERVAL (HZ/2)
36 36
37static void dn_slow_timer(unsigned long arg); 37static void dn_slow_timer(struct timer_list *t);
38 38
39void dn_start_slow_timer(struct sock *sk) 39void dn_start_slow_timer(struct sock *sk)
40{ 40{
41 setup_timer(&sk->sk_timer, dn_slow_timer, (unsigned long)sk); 41 timer_setup(&sk->sk_timer, dn_slow_timer, 0);
42 sk_reset_timer(sk, &sk->sk_timer, jiffies + SLOW_INTERVAL); 42 sk_reset_timer(sk, &sk->sk_timer, jiffies + SLOW_INTERVAL);
43} 43}
44 44
@@ -47,9 +47,9 @@ void dn_stop_slow_timer(struct sock *sk)
47 sk_stop_timer(sk, &sk->sk_timer); 47 sk_stop_timer(sk, &sk->sk_timer);
48} 48}
49 49
50static void dn_slow_timer(unsigned long arg) 50static void dn_slow_timer(struct timer_list *t)
51{ 51{
52 struct sock *sk = (struct sock *)arg; 52 struct sock *sk = from_timer(sk, t, sk_timer);
53 struct dn_scp *scp = DN_SK(sk); 53 struct dn_scp *scp = DN_SK(sk);
54 54
55 bh_lock_sock(sk); 55 bh_lock_sock(sk);
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index ab183af0b5b6..d1f8f302dbf3 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -752,18 +752,18 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc,
752 return ip_local_out(net, skb->sk, skb); 752 return ip_local_out(net, skb->sk, skb);
753} 753}
754 754
755static void igmp_gq_timer_expire(unsigned long data) 755static void igmp_gq_timer_expire(struct timer_list *t)
756{ 756{
757 struct in_device *in_dev = (struct in_device *)data; 757 struct in_device *in_dev = from_timer(in_dev, t, mr_gq_timer);
758 758
759 in_dev->mr_gq_running = 0; 759 in_dev->mr_gq_running = 0;
760 igmpv3_send_report(in_dev, NULL); 760 igmpv3_send_report(in_dev, NULL);
761 in_dev_put(in_dev); 761 in_dev_put(in_dev);
762} 762}
763 763
764static void igmp_ifc_timer_expire(unsigned long data) 764static void igmp_ifc_timer_expire(struct timer_list *t)
765{ 765{
766 struct in_device *in_dev = (struct in_device *)data; 766 struct in_device *in_dev = from_timer(in_dev, t, mr_ifc_timer);
767 767
768 igmpv3_send_cr(in_dev); 768 igmpv3_send_cr(in_dev);
769 if (in_dev->mr_ifc_count) { 769 if (in_dev->mr_ifc_count) {
@@ -784,9 +784,9 @@ static void igmp_ifc_event(struct in_device *in_dev)
784} 784}
785 785
786 786
787static void igmp_timer_expire(unsigned long data) 787static void igmp_timer_expire(struct timer_list *t)
788{ 788{
789 struct ip_mc_list *im = (struct ip_mc_list *)data; 789 struct ip_mc_list *im = from_timer(im, t, timer);
790 struct in_device *in_dev = im->interface; 790 struct in_device *in_dev = im->interface;
791 791
792 spin_lock(&im->lock); 792 spin_lock(&im->lock);
@@ -1385,7 +1385,7 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
1385 refcount_set(&im->refcnt, 1); 1385 refcount_set(&im->refcnt, 1);
1386 spin_lock_init(&im->lock); 1386 spin_lock_init(&im->lock);
1387#ifdef CONFIG_IP_MULTICAST 1387#ifdef CONFIG_IP_MULTICAST
1388 setup_timer(&im->timer, igmp_timer_expire, (unsigned long)im); 1388 timer_setup(&im->timer, igmp_timer_expire, 0);
1389 im->unsolicit_count = net->ipv4.sysctl_igmp_qrv; 1389 im->unsolicit_count = net->ipv4.sysctl_igmp_qrv;
1390#endif 1390#endif
1391 1391
@@ -1695,10 +1695,8 @@ void ip_mc_init_dev(struct in_device *in_dev)
1695 ASSERT_RTNL(); 1695 ASSERT_RTNL();
1696 1696
1697#ifdef CONFIG_IP_MULTICAST 1697#ifdef CONFIG_IP_MULTICAST
1698 setup_timer(&in_dev->mr_gq_timer, igmp_gq_timer_expire, 1698 timer_setup(&in_dev->mr_gq_timer, igmp_gq_timer_expire, 0);
1699 (unsigned long)in_dev); 1699 timer_setup(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire, 0);
1700 setup_timer(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire,
1701 (unsigned long)in_dev);
1702 in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv; 1700 in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
1703#endif 1701#endif
1704 1702
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 40a43ad294cb..fd5f19c988e4 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -112,7 +112,7 @@ static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc,
112 int cmd); 112 int cmd);
113static void igmpmsg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt); 113static void igmpmsg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt);
114static void mroute_clean_tables(struct mr_table *mrt, bool all); 114static void mroute_clean_tables(struct mr_table *mrt, bool all);
115static void ipmr_expire_process(unsigned long arg); 115static void ipmr_expire_process(struct timer_list *t);
116 116
117#ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES 117#ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES
118#define ipmr_for_each_table(mrt, net) \ 118#define ipmr_for_each_table(mrt, net) \
@@ -375,8 +375,7 @@ static struct mr_table *ipmr_new_table(struct net *net, u32 id)
375 INIT_LIST_HEAD(&mrt->mfc_cache_list); 375 INIT_LIST_HEAD(&mrt->mfc_cache_list);
376 INIT_LIST_HEAD(&mrt->mfc_unres_queue); 376 INIT_LIST_HEAD(&mrt->mfc_unres_queue);
377 377
378 setup_timer(&mrt->ipmr_expire_timer, ipmr_expire_process, 378 timer_setup(&mrt->ipmr_expire_timer, ipmr_expire_process, 0);
379 (unsigned long)mrt);
380 379
381 mrt->mroute_reg_vif_num = -1; 380 mrt->mroute_reg_vif_num = -1;
382#ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES 381#ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES
@@ -804,9 +803,9 @@ static void ipmr_destroy_unres(struct mr_table *mrt, struct mfc_cache *c)
804} 803}
805 804
806/* Timer process for the unresolved queue. */ 805/* Timer process for the unresolved queue. */
807static void ipmr_expire_process(unsigned long arg) 806static void ipmr_expire_process(struct timer_list *t)
808{ 807{
809 struct mr_table *mrt = (struct mr_table *)arg; 808 struct mr_table *mrt = from_timer(mrt, t, ipmr_expire_timer);
810 unsigned long now; 809 unsigned long now;
811 unsigned long expires; 810 unsigned long expires;
812 struct mfc_cache *c, *next; 811 struct mfc_cache *c, *next;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index a0ae1c9d37df..f49bd7897e95 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -188,7 +188,7 @@ static void addrconf_dad_start(struct inet6_ifaddr *ifp);
188static void addrconf_dad_work(struct work_struct *w); 188static void addrconf_dad_work(struct work_struct *w);
189static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id); 189static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id);
190static void addrconf_dad_run(struct inet6_dev *idev); 190static void addrconf_dad_run(struct inet6_dev *idev);
191static void addrconf_rs_timer(unsigned long data); 191static void addrconf_rs_timer(struct timer_list *t);
192static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa); 192static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa);
193static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa); 193static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa);
194 194
@@ -388,8 +388,7 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev)
388 rwlock_init(&ndev->lock); 388 rwlock_init(&ndev->lock);
389 ndev->dev = dev; 389 ndev->dev = dev;
390 INIT_LIST_HEAD(&ndev->addr_list); 390 INIT_LIST_HEAD(&ndev->addr_list);
391 setup_timer(&ndev->rs_timer, addrconf_rs_timer, 391 timer_setup(&ndev->rs_timer, addrconf_rs_timer, 0);
392 (unsigned long)ndev);
393 memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); 392 memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf));
394 393
395 if (ndev->cnf.stable_secret.initialized) 394 if (ndev->cnf.stable_secret.initialized)
@@ -3741,9 +3740,9 @@ restart:
3741 return 0; 3740 return 0;
3742} 3741}
3743 3742
3744static void addrconf_rs_timer(unsigned long data) 3743static void addrconf_rs_timer(struct timer_list *t)
3745{ 3744{
3746 struct inet6_dev *idev = (struct inet6_dev *)data; 3745 struct inet6_dev *idev = from_timer(idev, t, rs_timer);
3747 struct net_device *dev = idev->dev; 3746 struct net_device *dev = idev->dev;
3748 struct in6_addr lladdr; 3747 struct in6_addr lladdr;
3749 3748
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 2e2804f5823e..f5285f4e1d08 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -70,7 +70,7 @@ static int fib6_walk_continue(struct fib6_walker *w);
70 * result of redirects, path MTU changes, etc. 70 * result of redirects, path MTU changes, etc.
71 */ 71 */
72 72
73static void fib6_gc_timer_cb(unsigned long arg); 73static void fib6_gc_timer_cb(struct timer_list *t);
74 74
75#define FOR_WALKERS(net, w) \ 75#define FOR_WALKERS(net, w) \
76 list_for_each_entry(w, &(net)->ipv6.fib6_walkers, lh) 76 list_for_each_entry(w, &(net)->ipv6.fib6_walkers, lh)
@@ -2026,9 +2026,11 @@ void fib6_run_gc(unsigned long expires, struct net *net, bool force)
2026 spin_unlock_bh(&net->ipv6.fib6_gc_lock); 2026 spin_unlock_bh(&net->ipv6.fib6_gc_lock);
2027} 2027}
2028 2028
2029static void fib6_gc_timer_cb(unsigned long arg) 2029static void fib6_gc_timer_cb(struct timer_list *t)
2030{ 2030{
2031 fib6_run_gc(0, (struct net *)arg, true); 2031 struct net *arg = from_timer(arg, t, ipv6.ip6_fib_timer);
2032
2033 fib6_run_gc(0, arg, true);
2032} 2034}
2033 2035
2034static int __net_init fib6_net_init(struct net *net) 2036static int __net_init fib6_net_init(struct net *net)
@@ -2043,7 +2045,7 @@ static int __net_init fib6_net_init(struct net *net)
2043 spin_lock_init(&net->ipv6.fib6_gc_lock); 2045 spin_lock_init(&net->ipv6.fib6_gc_lock);
2044 rwlock_init(&net->ipv6.fib6_walker_lock); 2046 rwlock_init(&net->ipv6.fib6_walker_lock);
2045 INIT_LIST_HEAD(&net->ipv6.fib6_walkers); 2047 INIT_LIST_HEAD(&net->ipv6.fib6_walkers);
2046 setup_timer(&net->ipv6.ip6_fib_timer, fib6_gc_timer_cb, (unsigned long)net); 2048 timer_setup(&net->ipv6.ip6_fib_timer, fib6_gc_timer_cb, 0);
2047 2049
2048 net->ipv6.rt6_stats = kzalloc(sizeof(*net->ipv6.rt6_stats), GFP_KERNEL); 2050 net->ipv6.rt6_stats = kzalloc(sizeof(*net->ipv6.rt6_stats), GFP_KERNEL);
2049 if (!net->ipv6.rt6_stats) 2051 if (!net->ipv6.rt6_stats)
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index 9f2e73c71768..7f59c8fabeeb 100644
--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -46,7 +46,7 @@
46static atomic_t fl_size = ATOMIC_INIT(0); 46static atomic_t fl_size = ATOMIC_INIT(0);
47static struct ip6_flowlabel __rcu *fl_ht[FL_HASH_MASK+1]; 47static struct ip6_flowlabel __rcu *fl_ht[FL_HASH_MASK+1];
48 48
49static void ip6_fl_gc(unsigned long dummy); 49static void ip6_fl_gc(struct timer_list *unused);
50static DEFINE_TIMER(ip6_fl_gc_timer, ip6_fl_gc); 50static DEFINE_TIMER(ip6_fl_gc_timer, ip6_fl_gc);
51 51
52/* FL hash table lock: it protects only of GC */ 52/* FL hash table lock: it protects only of GC */
@@ -127,7 +127,7 @@ static void fl_release(struct ip6_flowlabel *fl)
127 spin_unlock_bh(&ip6_fl_lock); 127 spin_unlock_bh(&ip6_fl_lock);
128} 128}
129 129
130static void ip6_fl_gc(unsigned long dummy) 130static void ip6_fl_gc(struct timer_list *unused)
131{ 131{
132 int i; 132 int i;
133 unsigned long now = jiffies; 133 unsigned long now = jiffies;
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 9c24b85949c1..a2e1a864eb46 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -120,7 +120,7 @@ static void mrt6msg_netlink_event(struct mr6_table *mrt, struct sk_buff *pkt);
120static int ip6mr_rtm_dumproute(struct sk_buff *skb, 120static int ip6mr_rtm_dumproute(struct sk_buff *skb,
121 struct netlink_callback *cb); 121 struct netlink_callback *cb);
122static void mroute_clean_tables(struct mr6_table *mrt, bool all); 122static void mroute_clean_tables(struct mr6_table *mrt, bool all);
123static void ipmr_expire_process(unsigned long arg); 123static void ipmr_expire_process(struct timer_list *t);
124 124
125#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES 125#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
126#define ip6mr_for_each_table(mrt, net) \ 126#define ip6mr_for_each_table(mrt, net) \
@@ -320,8 +320,7 @@ static struct mr6_table *ip6mr_new_table(struct net *net, u32 id)
320 320
321 INIT_LIST_HEAD(&mrt->mfc6_unres_queue); 321 INIT_LIST_HEAD(&mrt->mfc6_unres_queue);
322 322
323 setup_timer(&mrt->ipmr_expire_timer, ipmr_expire_process, 323 timer_setup(&mrt->ipmr_expire_timer, ipmr_expire_process, 0);
324 (unsigned long)mrt);
325 324
326#ifdef CONFIG_IPV6_PIMSM_V2 325#ifdef CONFIG_IPV6_PIMSM_V2
327 mrt->mroute_reg_vif_num = -1; 326 mrt->mroute_reg_vif_num = -1;
@@ -888,9 +887,9 @@ static void ipmr_do_expire_process(struct mr6_table *mrt)
888 mod_timer(&mrt->ipmr_expire_timer, jiffies + expires); 887 mod_timer(&mrt->ipmr_expire_timer, jiffies + expires);
889} 888}
890 889
891static void ipmr_expire_process(unsigned long arg) 890static void ipmr_expire_process(struct timer_list *t)
892{ 891{
893 struct mr6_table *mrt = (struct mr6_table *)arg; 892 struct mr6_table *mrt = from_timer(mrt, t, ipmr_expire_timer);
894 893
895 if (!spin_trylock(&mfc_unres_lock)) { 894 if (!spin_trylock(&mfc_unres_lock)) {
896 mod_timer(&mrt->ipmr_expire_timer, jiffies + 1); 895 mod_timer(&mrt->ipmr_expire_timer, jiffies + 1);
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 12b7c27ce5ce..fc6d7d143f2c 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -75,10 +75,10 @@ static struct in6_addr mld2_all_mcr = MLD2_ALL_MCR_INIT;
75 75
76static void igmp6_join_group(struct ifmcaddr6 *ma); 76static void igmp6_join_group(struct ifmcaddr6 *ma);
77static void igmp6_leave_group(struct ifmcaddr6 *ma); 77static void igmp6_leave_group(struct ifmcaddr6 *ma);
78static void igmp6_timer_handler(unsigned long data); 78static void igmp6_timer_handler(struct timer_list *t);
79 79
80static void mld_gq_timer_expire(unsigned long data); 80static void mld_gq_timer_expire(struct timer_list *t);
81static void mld_ifc_timer_expire(unsigned long data); 81static void mld_ifc_timer_expire(struct timer_list *t);
82static void mld_ifc_event(struct inet6_dev *idev); 82static void mld_ifc_event(struct inet6_dev *idev);
83static void mld_add_delrec(struct inet6_dev *idev, struct ifmcaddr6 *pmc); 83static void mld_add_delrec(struct inet6_dev *idev, struct ifmcaddr6 *pmc);
84static void mld_del_delrec(struct inet6_dev *idev, struct ifmcaddr6 *pmc); 84static void mld_del_delrec(struct inet6_dev *idev, struct ifmcaddr6 *pmc);
@@ -839,7 +839,7 @@ static struct ifmcaddr6 *mca_alloc(struct inet6_dev *idev,
839 if (!mc) 839 if (!mc)
840 return NULL; 840 return NULL;
841 841
842 setup_timer(&mc->mca_timer, igmp6_timer_handler, (unsigned long)mc); 842 timer_setup(&mc->mca_timer, igmp6_timer_handler, 0);
843 843
844 mc->mca_addr = *addr; 844 mc->mca_addr = *addr;
845 mc->idev = idev; /* reference taken by caller */ 845 mc->idev = idev; /* reference taken by caller */
@@ -2083,9 +2083,9 @@ void ipv6_mc_dad_complete(struct inet6_dev *idev)
2083 } 2083 }
2084} 2084}
2085 2085
2086static void mld_dad_timer_expire(unsigned long data) 2086static void mld_dad_timer_expire(struct timer_list *t)
2087{ 2087{
2088 struct inet6_dev *idev = (struct inet6_dev *)data; 2088 struct inet6_dev *idev = from_timer(idev, t, mc_dad_timer);
2089 2089
2090 mld_send_initial_cr(idev); 2090 mld_send_initial_cr(idev);
2091 if (idev->mc_dad_count) { 2091 if (idev->mc_dad_count) {
@@ -2432,18 +2432,18 @@ static void igmp6_leave_group(struct ifmcaddr6 *ma)
2432 } 2432 }
2433} 2433}
2434 2434
2435static void mld_gq_timer_expire(unsigned long data) 2435static void mld_gq_timer_expire(struct timer_list *t)
2436{ 2436{
2437 struct inet6_dev *idev = (struct inet6_dev *)data; 2437 struct inet6_dev *idev = from_timer(idev, t, mc_gq_timer);
2438 2438
2439 idev->mc_gq_running = 0; 2439 idev->mc_gq_running = 0;
2440 mld_send_report(idev, NULL); 2440 mld_send_report(idev, NULL);
2441 in6_dev_put(idev); 2441 in6_dev_put(idev);
2442} 2442}
2443 2443
2444static void mld_ifc_timer_expire(unsigned long data) 2444static void mld_ifc_timer_expire(struct timer_list *t)
2445{ 2445{
2446 struct inet6_dev *idev = (struct inet6_dev *)data; 2446 struct inet6_dev *idev = from_timer(idev, t, mc_ifc_timer);
2447 2447
2448 mld_send_cr(idev); 2448 mld_send_cr(idev);
2449 if (idev->mc_ifc_count) { 2449 if (idev->mc_ifc_count) {
@@ -2462,9 +2462,9 @@ static void mld_ifc_event(struct inet6_dev *idev)
2462 mld_ifc_start_timer(idev, 1); 2462 mld_ifc_start_timer(idev, 1);
2463} 2463}
2464 2464
2465static void igmp6_timer_handler(unsigned long data) 2465static void igmp6_timer_handler(struct timer_list *t)
2466{ 2466{
2467 struct ifmcaddr6 *ma = (struct ifmcaddr6 *) data; 2467 struct ifmcaddr6 *ma = from_timer(ma, t, mca_timer);
2468 2468
2469 if (mld_in_v1_mode(ma->idev)) 2469 if (mld_in_v1_mode(ma->idev))
2470 igmp6_send(&ma->mca_addr, ma->idev->dev, ICMPV6_MGM_REPORT); 2470 igmp6_send(&ma->mca_addr, ma->idev->dev, ICMPV6_MGM_REPORT);
@@ -2552,14 +2552,11 @@ void ipv6_mc_init_dev(struct inet6_dev *idev)
2552 write_lock_bh(&idev->lock); 2552 write_lock_bh(&idev->lock);
2553 spin_lock_init(&idev->mc_lock); 2553 spin_lock_init(&idev->mc_lock);
2554 idev->mc_gq_running = 0; 2554 idev->mc_gq_running = 0;
2555 setup_timer(&idev->mc_gq_timer, mld_gq_timer_expire, 2555 timer_setup(&idev->mc_gq_timer, mld_gq_timer_expire, 0);
2556 (unsigned long)idev);
2557 idev->mc_tomb = NULL; 2556 idev->mc_tomb = NULL;
2558 idev->mc_ifc_count = 0; 2557 idev->mc_ifc_count = 0;
2559 setup_timer(&idev->mc_ifc_timer, mld_ifc_timer_expire, 2558 timer_setup(&idev->mc_ifc_timer, mld_ifc_timer_expire, 0);
2560 (unsigned long)idev); 2559 timer_setup(&idev->mc_dad_timer, mld_dad_timer_expire, 0);
2561 setup_timer(&idev->mc_dad_timer, mld_dad_timer_expire,
2562 (unsigned long)idev);
2563 ipv6_mc_reset(idev); 2560 ipv6_mc_reset(idev);
2564 write_unlock_bh(&idev->lock); 2561 write_unlock_bh(&idev->lock);
2565} 2562}
diff --git a/net/lapb/lapb_timer.c b/net/lapb/lapb_timer.c
index 8bb469cb3abe..5d4ae01951b5 100644
--- a/net/lapb/lapb_timer.c
+++ b/net/lapb/lapb_timer.c
@@ -42,7 +42,7 @@ void lapb_start_t1timer(struct lapb_cb *lapb)
42{ 42{
43 del_timer(&lapb->t1timer); 43 del_timer(&lapb->t1timer);
44 44
45 lapb->t1timer.function = (TIMER_FUNC_TYPE)lapb_t1timer_expiry; 45 lapb->t1timer.function = lapb_t1timer_expiry;
46 lapb->t1timer.expires = jiffies + lapb->t1; 46 lapb->t1timer.expires = jiffies + lapb->t1;
47 47
48 add_timer(&lapb->t1timer); 48 add_timer(&lapb->t1timer);
@@ -52,7 +52,7 @@ void lapb_start_t2timer(struct lapb_cb *lapb)
52{ 52{
53 del_timer(&lapb->t2timer); 53 del_timer(&lapb->t2timer);
54 54
55 lapb->t2timer.function = (TIMER_FUNC_TYPE)lapb_t2timer_expiry; 55 lapb->t2timer.function = lapb_t2timer_expiry;
56 lapb->t2timer.expires = jiffies + lapb->t2; 56 lapb->t2timer.expires = jiffies + lapb->t2;
57 57
58 add_timer(&lapb->t2timer); 58 add_timer(&lapb->t2timer);
diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c
index a2b904a718c6..c989211bbabc 100644
--- a/net/ncsi/ncsi-manage.c
+++ b/net/ncsi/ncsi-manage.c
@@ -184,9 +184,9 @@ report:
184 nd->handler(nd); 184 nd->handler(nd);
185} 185}
186 186
187static void ncsi_channel_monitor(unsigned long data) 187static void ncsi_channel_monitor(struct timer_list *t)
188{ 188{
189 struct ncsi_channel *nc = (struct ncsi_channel *)data; 189 struct ncsi_channel *nc = from_timer(nc, t, monitor.timer);
190 struct ncsi_package *np = nc->package; 190 struct ncsi_package *np = nc->package;
191 struct ncsi_dev_priv *ndp = np->ndp; 191 struct ncsi_dev_priv *ndp = np->ndp;
192 struct ncsi_channel_mode *ncm; 192 struct ncsi_channel_mode *ncm;
@@ -313,8 +313,7 @@ struct ncsi_channel *ncsi_add_channel(struct ncsi_package *np, unsigned char id)
313 nc->package = np; 313 nc->package = np;
314 nc->state = NCSI_CHANNEL_INACTIVE; 314 nc->state = NCSI_CHANNEL_INACTIVE;
315 nc->monitor.enabled = false; 315 nc->monitor.enabled = false;
316 setup_timer(&nc->monitor.timer, 316 timer_setup(&nc->monitor.timer, ncsi_channel_monitor, 0);
317 ncsi_channel_monitor, (unsigned long)nc);
318 spin_lock_init(&nc->lock); 317 spin_lock_init(&nc->lock);
319 INIT_LIST_HEAD(&nc->link); 318 INIT_LIST_HEAD(&nc->link);
320 for (index = 0; index < NCSI_CAP_MAX; index++) 319 for (index = 0; index < NCSI_CAP_MAX; index++)
@@ -529,9 +528,9 @@ struct ncsi_dev *ncsi_find_dev(struct net_device *dev)
529 return NULL; 528 return NULL;
530} 529}
531 530
532static void ncsi_request_timeout(unsigned long data) 531static void ncsi_request_timeout(struct timer_list *t)
533{ 532{
534 struct ncsi_request *nr = (struct ncsi_request *)data; 533 struct ncsi_request *nr = from_timer(nr, t, timer);
535 struct ncsi_dev_priv *ndp = nr->ndp; 534 struct ncsi_dev_priv *ndp = nr->ndp;
536 unsigned long flags; 535 unsigned long flags;
537 536
@@ -1577,9 +1576,7 @@ struct ncsi_dev *ncsi_register_dev(struct net_device *dev,
1577 for (i = 0; i < ARRAY_SIZE(ndp->requests); i++) { 1576 for (i = 0; i < ARRAY_SIZE(ndp->requests); i++) {
1578 ndp->requests[i].id = i; 1577 ndp->requests[i].id = i;
1579 ndp->requests[i].ndp = ndp; 1578 ndp->requests[i].ndp = ndp;
1580 setup_timer(&ndp->requests[i].timer, 1579 timer_setup(&ndp->requests[i].timer, ncsi_request_timeout, 0);
1581 ncsi_request_timeout,
1582 (unsigned long)&ndp->requests[i]);
1583 } 1580 }
1584 1581
1585 spin_lock_irqsave(&ncsi_dev_lock, flags); 1582 spin_lock_irqsave(&ncsi_dev_lock, flags);
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index 64778f9a8548..d6748a8a79c5 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -67,9 +67,9 @@ void nf_ct_unlink_expect_report(struct nf_conntrack_expect *exp,
67} 67}
68EXPORT_SYMBOL_GPL(nf_ct_unlink_expect_report); 68EXPORT_SYMBOL_GPL(nf_ct_unlink_expect_report);
69 69
70static void nf_ct_expectation_timed_out(unsigned long ul_expect) 70static void nf_ct_expectation_timed_out(struct timer_list *t)
71{ 71{
72 struct nf_conntrack_expect *exp = (void *)ul_expect; 72 struct nf_conntrack_expect *exp = from_timer(exp, t, timeout);
73 73
74 spin_lock_bh(&nf_conntrack_expect_lock); 74 spin_lock_bh(&nf_conntrack_expect_lock);
75 nf_ct_unlink_expect(exp); 75 nf_ct_unlink_expect(exp);
@@ -368,8 +368,7 @@ static void nf_ct_expect_insert(struct nf_conntrack_expect *exp)
368 /* two references : one for hash insert, one for the timer */ 368 /* two references : one for hash insert, one for the timer */
369 refcount_add(2, &exp->use); 369 refcount_add(2, &exp->use);
370 370
371 setup_timer(&exp->timeout, nf_ct_expectation_timed_out, 371 timer_setup(&exp->timeout, nf_ct_expectation_timed_out, 0);
372 (unsigned long)exp);
373 helper = rcu_dereference_protected(master_help->helper, 372 helper = rcu_dereference_protected(master_help->helper,
374 lockdep_is_held(&nf_conntrack_expect_lock)); 373 lockdep_is_held(&nf_conntrack_expect_lock));
375 if (helper) { 374 if (helper) {
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
index cad6498f10b0..e5afab86381c 100644
--- a/net/netfilter/nfnetlink_log.c
+++ b/net/netfilter/nfnetlink_log.c
@@ -151,7 +151,7 @@ instance_put(struct nfulnl_instance *inst)
151 call_rcu_bh(&inst->rcu, nfulnl_instance_free_rcu); 151 call_rcu_bh(&inst->rcu, nfulnl_instance_free_rcu);
152} 152}
153 153
154static void nfulnl_timer(unsigned long data); 154static void nfulnl_timer(struct timer_list *t);
155 155
156static struct nfulnl_instance * 156static struct nfulnl_instance *
157instance_create(struct net *net, u_int16_t group_num, 157instance_create(struct net *net, u_int16_t group_num,
@@ -184,7 +184,7 @@ instance_create(struct net *net, u_int16_t group_num,
184 /* needs to be two, since we _put() after creation */ 184 /* needs to be two, since we _put() after creation */
185 refcount_set(&inst->use, 2); 185 refcount_set(&inst->use, 2);
186 186
187 setup_timer(&inst->timer, nfulnl_timer, (unsigned long)inst); 187 timer_setup(&inst->timer, nfulnl_timer, 0);
188 188
189 inst->net = get_net(net); 189 inst->net = get_net(net);
190 inst->peer_user_ns = user_ns; 190 inst->peer_user_ns = user_ns;
@@ -377,9 +377,9 @@ __nfulnl_flush(struct nfulnl_instance *inst)
377} 377}
378 378
379static void 379static void
380nfulnl_timer(unsigned long data) 380nfulnl_timer(struct timer_list *t)
381{ 381{
382 struct nfulnl_instance *inst = (struct nfulnl_instance *)data; 382 struct nfulnl_instance *inst = from_timer(inst, t, timer);
383 383
384 spin_lock_bh(&inst->lock); 384 spin_lock_bh(&inst->lock);
385 if (inst->skb) 385 if (inst->skb)
diff --git a/net/netfilter/xt_IDLETIMER.c b/net/netfilter/xt_IDLETIMER.c
index daf45da448fa..ee3421ad108d 100644
--- a/net/netfilter/xt_IDLETIMER.c
+++ b/net/netfilter/xt_IDLETIMER.c
@@ -107,9 +107,9 @@ static void idletimer_tg_work(struct work_struct *work)
107 sysfs_notify(idletimer_tg_kobj, NULL, timer->attr.attr.name); 107 sysfs_notify(idletimer_tg_kobj, NULL, timer->attr.attr.name);
108} 108}
109 109
110static void idletimer_tg_expired(unsigned long data) 110static void idletimer_tg_expired(struct timer_list *t)
111{ 111{
112 struct idletimer_tg *timer = (struct idletimer_tg *) data; 112 struct idletimer_tg *timer = from_timer(timer, t, timer);
113 113
114 pr_debug("timer %s expired\n", timer->attr.attr.name); 114 pr_debug("timer %s expired\n", timer->attr.attr.name);
115 115
@@ -143,8 +143,7 @@ static int idletimer_tg_create(struct idletimer_tg_info *info)
143 143
144 list_add(&info->timer->entry, &idletimer_tg_list); 144 list_add(&info->timer->entry, &idletimer_tg_list);
145 145
146 setup_timer(&info->timer->timer, idletimer_tg_expired, 146 timer_setup(&info->timer->timer, idletimer_tg_expired, 0);
147 (unsigned long) info->timer);
148 info->timer->refcnt = 1; 147 info->timer->refcnt = 1;
149 148
150 mod_timer(&info->timer->timer, 149 mod_timer(&info->timer->timer,
diff --git a/net/netfilter/xt_LED.c b/net/netfilter/xt_LED.c
index 3ba31c194cce..0971634e5444 100644
--- a/net/netfilter/xt_LED.c
+++ b/net/netfilter/xt_LED.c
@@ -85,9 +85,10 @@ led_tg(struct sk_buff *skb, const struct xt_action_param *par)
85 return XT_CONTINUE; 85 return XT_CONTINUE;
86} 86}
87 87
88static void led_timeout_callback(unsigned long data) 88static void led_timeout_callback(struct timer_list *t)
89{ 89{
90 struct xt_led_info_internal *ledinternal = (struct xt_led_info_internal *)data; 90 struct xt_led_info_internal *ledinternal = from_timer(ledinternal, t,
91 timer);
91 92
92 led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF); 93 led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF);
93} 94}
@@ -143,8 +144,7 @@ static int led_tg_check(const struct xt_tgchk_param *par)
143 144
144 /* See if we need to set up a timer */ 145 /* See if we need to set up a timer */
145 if (ledinfo->delay > 0) 146 if (ledinfo->delay > 0)
146 setup_timer(&ledinternal->timer, led_timeout_callback, 147 timer_setup(&ledinternal->timer, led_timeout_callback, 0);
147 (unsigned long)ledinternal);
148 148
149 list_add_tail(&ledinternal->list, &xt_led_triggers); 149 list_add_tail(&ledinternal->list, &xt_led_triggers);
150 150
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index 2dec3583c97d..7ed9d4422a73 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -284,7 +284,7 @@ void nr_destroy_socket(struct sock *sk)
284 284
285 if (sk_has_allocations(sk)) { 285 if (sk_has_allocations(sk)) {
286 /* Defer: outstanding buffers */ 286 /* Defer: outstanding buffers */
287 sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_destroy_timer; 287 sk->sk_timer.function = nr_destroy_timer;
288 sk->sk_timer.expires = jiffies + 2 * HZ; 288 sk->sk_timer.expires = jiffies + 2 * HZ;
289 add_timer(&sk->sk_timer); 289 add_timer(&sk->sk_timer);
290 } else 290 } else
diff --git a/net/netrom/nr_loopback.c b/net/netrom/nr_loopback.c
index 989ae647825e..215ad22a9647 100644
--- a/net/netrom/nr_loopback.c
+++ b/net/netrom/nr_loopback.c
@@ -15,7 +15,7 @@
15#include <net/netrom.h> 15#include <net/netrom.h>
16#include <linux/init.h> 16#include <linux/init.h>
17 17
18static void nr_loopback_timer(unsigned long); 18static void nr_loopback_timer(struct timer_list *);
19 19
20static struct sk_buff_head loopback_queue; 20static struct sk_buff_head loopback_queue;
21static DEFINE_TIMER(loopback_timer, nr_loopback_timer); 21static DEFINE_TIMER(loopback_timer, nr_loopback_timer);
@@ -48,7 +48,7 @@ int nr_loopback_queue(struct sk_buff *skb)
48 return 1; 48 return 1;
49} 49}
50 50
51static void nr_loopback_timer(unsigned long param) 51static void nr_loopback_timer(struct timer_list *unused)
52{ 52{
53 struct sk_buff *skb; 53 struct sk_buff *skb;
54 ax25_address *nr_dest; 54 ax25_address *nr_dest;
diff --git a/net/netrom/nr_timer.c b/net/netrom/nr_timer.c
index 43569aea0f5e..cbd51ed5a2d7 100644
--- a/net/netrom/nr_timer.c
+++ b/net/netrom/nr_timer.c
@@ -45,7 +45,7 @@ void nr_init_timers(struct sock *sk)
45 timer_setup(&nr->idletimer, nr_idletimer_expiry, 0); 45 timer_setup(&nr->idletimer, nr_idletimer_expiry, 0);
46 46
47 /* initialized by sock_init_data */ 47 /* initialized by sock_init_data */
48 sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_heartbeat_expiry; 48 sk->sk_timer.function = nr_heartbeat_expiry;
49} 49}
50 50
51void nr_start_t1timer(struct sock *sk) 51void nr_start_t1timer(struct sock *sk)
diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
index c25e9b4179c3..074960154993 100644
--- a/net/nfc/nci/core.c
+++ b/net/nfc/nci/core.c
@@ -591,18 +591,18 @@ static int nci_close_device(struct nci_dev *ndev)
591} 591}
592 592
593/* NCI command timer function */ 593/* NCI command timer function */
594static void nci_cmd_timer(unsigned long arg) 594static void nci_cmd_timer(struct timer_list *t)
595{ 595{
596 struct nci_dev *ndev = (void *) arg; 596 struct nci_dev *ndev = from_timer(ndev, t, cmd_timer);
597 597
598 atomic_set(&ndev->cmd_cnt, 1); 598 atomic_set(&ndev->cmd_cnt, 1);
599 queue_work(ndev->cmd_wq, &ndev->cmd_work); 599 queue_work(ndev->cmd_wq, &ndev->cmd_work);
600} 600}
601 601
602/* NCI data exchange timer function */ 602/* NCI data exchange timer function */
603static void nci_data_timer(unsigned long arg) 603static void nci_data_timer(struct timer_list *t)
604{ 604{
605 struct nci_dev *ndev = (void *) arg; 605 struct nci_dev *ndev = from_timer(ndev, t, data_timer);
606 606
607 set_bit(NCI_DATA_EXCHANGE_TO, &ndev->flags); 607 set_bit(NCI_DATA_EXCHANGE_TO, &ndev->flags);
608 queue_work(ndev->rx_wq, &ndev->rx_work); 608 queue_work(ndev->rx_wq, &ndev->rx_work);
@@ -1232,10 +1232,8 @@ int nci_register_device(struct nci_dev *ndev)
1232 skb_queue_head_init(&ndev->rx_q); 1232 skb_queue_head_init(&ndev->rx_q);
1233 skb_queue_head_init(&ndev->tx_q); 1233 skb_queue_head_init(&ndev->tx_q);
1234 1234
1235 setup_timer(&ndev->cmd_timer, nci_cmd_timer, 1235 timer_setup(&ndev->cmd_timer, nci_cmd_timer, 0);
1236 (unsigned long) ndev); 1236 timer_setup(&ndev->data_timer, nci_data_timer, 0);
1237 setup_timer(&ndev->data_timer, nci_data_timer,
1238 (unsigned long) ndev);
1239 1237
1240 mutex_init(&ndev->req_lock); 1238 mutex_init(&ndev->req_lock);
1241 INIT_LIST_HEAD(&ndev->conn_info_list); 1239 INIT_LIST_HEAD(&ndev->conn_info_list);
diff --git a/net/rose/rose_link.c b/net/rose/rose_link.c
index cda4c6678ef1..62055d3069d2 100644
--- a/net/rose/rose_link.c
+++ b/net/rose/rose_link.c
@@ -37,7 +37,7 @@ void rose_start_ftimer(struct rose_neigh *neigh)
37{ 37{
38 del_timer(&neigh->ftimer); 38 del_timer(&neigh->ftimer);
39 39
40 neigh->ftimer.function = (TIMER_FUNC_TYPE)rose_ftimer_expiry; 40 neigh->ftimer.function = rose_ftimer_expiry;
41 neigh->ftimer.expires = 41 neigh->ftimer.expires =
42 jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout); 42 jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout);
43 43
@@ -48,7 +48,7 @@ static void rose_start_t0timer(struct rose_neigh *neigh)
48{ 48{
49 del_timer(&neigh->t0timer); 49 del_timer(&neigh->t0timer);
50 50
51 neigh->t0timer.function = (TIMER_FUNC_TYPE)rose_t0timer_expiry; 51 neigh->t0timer.function = rose_t0timer_expiry;
52 neigh->t0timer.expires = 52 neigh->t0timer.expires =
53 jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout); 53 jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout);
54 54
diff --git a/net/rose/rose_timer.c b/net/rose/rose_timer.c
index ea613b2a9735..74555fb95615 100644
--- a/net/rose/rose_timer.c
+++ b/net/rose/rose_timer.c
@@ -36,7 +36,7 @@ void rose_start_heartbeat(struct sock *sk)
36{ 36{
37 del_timer(&sk->sk_timer); 37 del_timer(&sk->sk_timer);
38 38
39 sk->sk_timer.function = (TIMER_FUNC_TYPE)rose_heartbeat_expiry; 39 sk->sk_timer.function = rose_heartbeat_expiry;
40 sk->sk_timer.expires = jiffies + 5 * HZ; 40 sk->sk_timer.expires = jiffies + 5 * HZ;
41 41
42 add_timer(&sk->sk_timer); 42 add_timer(&sk->sk_timer);
@@ -48,7 +48,7 @@ void rose_start_t1timer(struct sock *sk)
48 48
49 del_timer(&rose->timer); 49 del_timer(&rose->timer);
50 50
51 rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry; 51 rose->timer.function = rose_timer_expiry;
52 rose->timer.expires = jiffies + rose->t1; 52 rose->timer.expires = jiffies + rose->t1;
53 53
54 add_timer(&rose->timer); 54 add_timer(&rose->timer);
@@ -60,7 +60,7 @@ void rose_start_t2timer(struct sock *sk)
60 60
61 del_timer(&rose->timer); 61 del_timer(&rose->timer);
62 62
63 rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry; 63 rose->timer.function = rose_timer_expiry;
64 rose->timer.expires = jiffies + rose->t2; 64 rose->timer.expires = jiffies + rose->t2;
65 65
66 add_timer(&rose->timer); 66 add_timer(&rose->timer);
@@ -72,7 +72,7 @@ void rose_start_t3timer(struct sock *sk)
72 72
73 del_timer(&rose->timer); 73 del_timer(&rose->timer);
74 74
75 rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry; 75 rose->timer.function = rose_timer_expiry;
76 rose->timer.expires = jiffies + rose->t3; 76 rose->timer.expires = jiffies + rose->t3;
77 77
78 add_timer(&rose->timer); 78 add_timer(&rose->timer);
@@ -84,7 +84,7 @@ void rose_start_hbtimer(struct sock *sk)
84 84
85 del_timer(&rose->timer); 85 del_timer(&rose->timer);
86 86
87 rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry; 87 rose->timer.function = rose_timer_expiry;
88 rose->timer.expires = jiffies + rose->hb; 88 rose->timer.expires = jiffies + rose->hb;
89 89
90 add_timer(&rose->timer); 90 add_timer(&rose->timer);
@@ -97,7 +97,7 @@ void rose_start_idletimer(struct sock *sk)
97 del_timer(&rose->idletimer); 97 del_timer(&rose->idletimer);
98 98
99 if (rose->idle > 0) { 99 if (rose->idle > 0) {
100 rose->idletimer.function = (TIMER_FUNC_TYPE)rose_idletimer_expiry; 100 rose->idletimer.function = rose_idletimer_expiry;
101 rose->idletimer.expires = jiffies + rose->idle; 101 rose->idletimer.expires = jiffies + rose->idle;
102 102
103 add_timer(&rose->idletimer); 103 add_timer(&rose->idletimer);
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index 4c7fbc6dcce7..994dc2df57e4 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -45,9 +45,9 @@ const char *const rxrpc_call_completions[NR__RXRPC_CALL_COMPLETIONS] = {
45 45
46struct kmem_cache *rxrpc_call_jar; 46struct kmem_cache *rxrpc_call_jar;
47 47
48static void rxrpc_call_timer_expired(unsigned long _call) 48static void rxrpc_call_timer_expired(struct timer_list *t)
49{ 49{
50 struct rxrpc_call *call = (struct rxrpc_call *)_call; 50 struct rxrpc_call *call = from_timer(call, t, timer);
51 51
52 _enter("%d", call->debug_id); 52 _enter("%d", call->debug_id);
53 53
@@ -114,8 +114,7 @@ struct rxrpc_call *rxrpc_alloc_call(gfp_t gfp)
114 goto nomem_2; 114 goto nomem_2;
115 115
116 mutex_init(&call->user_mutex); 116 mutex_init(&call->user_mutex);
117 setup_timer(&call->timer, rxrpc_call_timer_expired, 117 timer_setup(&call->timer, rxrpc_call_timer_expired, 0);
118 (unsigned long)call);
119 INIT_WORK(&call->processor, &rxrpc_process_call); 118 INIT_WORK(&call->processor, &rxrpc_process_call);
120 INIT_LIST_HEAD(&call->link); 119 INIT_LIST_HEAD(&call->link);
121 INIT_LIST_HEAD(&call->chan_wait_link); 120 INIT_LIST_HEAD(&call->chan_wait_link);
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index e8e0831229cf..f9307bd6644b 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -745,7 +745,7 @@ static void svc_add_new_temp_xprt(struct svc_serv *serv, struct svc_xprt *newxpt
745 serv->sv_tmpcnt++; 745 serv->sv_tmpcnt++;
746 if (serv->sv_temptimer.function == NULL) { 746 if (serv->sv_temptimer.function == NULL) {
747 /* setup timer to age temp transports */ 747 /* setup timer to age temp transports */
748 serv->sv_temptimer.function = (TIMER_FUNC_TYPE)svc_age_temp_xprts; 748 serv->sv_temptimer.function = svc_age_temp_xprts;
749 mod_timer(&serv->sv_temptimer, 749 mod_timer(&serv->sv_temptimer,
750 jiffies + svc_conn_age_period * HZ); 750 jiffies + svc_conn_age_period * HZ);
751 } 751 }
diff --git a/net/wireless/lib80211.c b/net/wireless/lib80211.c
index 459611577d3d..801d4781a73b 100644
--- a/net/wireless/lib80211.c
+++ b/net/wireless/lib80211.c
@@ -44,7 +44,7 @@ static DEFINE_SPINLOCK(lib80211_crypto_lock);
44static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info, 44static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info,
45 int force); 45 int force);
46static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info); 46static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info);
47static void lib80211_crypt_deinit_handler(unsigned long data); 47static void lib80211_crypt_deinit_handler(struct timer_list *t);
48 48
49int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name, 49int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name,
50 spinlock_t *lock) 50 spinlock_t *lock)
@@ -55,8 +55,8 @@ int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name,
55 info->lock = lock; 55 info->lock = lock;
56 56
57 INIT_LIST_HEAD(&info->crypt_deinit_list); 57 INIT_LIST_HEAD(&info->crypt_deinit_list);
58 setup_timer(&info->crypt_deinit_timer, lib80211_crypt_deinit_handler, 58 timer_setup(&info->crypt_deinit_timer, lib80211_crypt_deinit_handler,
59 (unsigned long)info); 59 0);
60 60
61 return 0; 61 return 0;
62} 62}
@@ -116,9 +116,10 @@ static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info)
116 spin_unlock_irqrestore(info->lock, flags); 116 spin_unlock_irqrestore(info->lock, flags);
117} 117}
118 118
119static void lib80211_crypt_deinit_handler(unsigned long data) 119static void lib80211_crypt_deinit_handler(struct timer_list *t)
120{ 120{
121 struct lib80211_crypt_info *info = (struct lib80211_crypt_info *)data; 121 struct lib80211_crypt_info *info = from_timer(info, t,
122 crypt_deinit_timer);
122 unsigned long flags; 123 unsigned long flags;
123 124
124 lib80211_crypt_deinit_entries(info, 0); 125 lib80211_crypt_deinit_entries(info, 0);
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index ea87143314f3..562cc11131f6 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -415,7 +415,7 @@ static void __x25_destroy_socket(struct sock *sk)
415 if (sk_has_allocations(sk)) { 415 if (sk_has_allocations(sk)) {
416 /* Defer: outstanding buffers */ 416 /* Defer: outstanding buffers */
417 sk->sk_timer.expires = jiffies + 10 * HZ; 417 sk->sk_timer.expires = jiffies + 10 * HZ;
418 sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_destroy_timer; 418 sk->sk_timer.function = x25_destroy_timer;
419 add_timer(&sk->sk_timer); 419 add_timer(&sk->sk_timer);
420 } else { 420 } else {
421 /* drop last reference so sock_put will free */ 421 /* drop last reference so sock_put will free */
diff --git a/net/x25/x25_link.c b/net/x25/x25_link.c
index e0cd04d28352..a6a8ab09b914 100644
--- a/net/x25/x25_link.c
+++ b/net/x25/x25_link.c
@@ -36,7 +36,7 @@
36LIST_HEAD(x25_neigh_list); 36LIST_HEAD(x25_neigh_list);
37DEFINE_RWLOCK(x25_neigh_list_lock); 37DEFINE_RWLOCK(x25_neigh_list_lock);
38 38
39static void x25_t20timer_expiry(unsigned long); 39static void x25_t20timer_expiry(struct timer_list *);
40 40
41static void x25_transmit_restart_confirmation(struct x25_neigh *nb); 41static void x25_transmit_restart_confirmation(struct x25_neigh *nb);
42static void x25_transmit_restart_request(struct x25_neigh *nb); 42static void x25_transmit_restart_request(struct x25_neigh *nb);
@@ -49,9 +49,9 @@ static inline void x25_start_t20timer(struct x25_neigh *nb)
49 mod_timer(&nb->t20timer, jiffies + nb->t20); 49 mod_timer(&nb->t20timer, jiffies + nb->t20);
50} 50}
51 51
52static void x25_t20timer_expiry(unsigned long param) 52static void x25_t20timer_expiry(struct timer_list *t)
53{ 53{
54 struct x25_neigh *nb = (struct x25_neigh *)param; 54 struct x25_neigh *nb = from_timer(nb, t, t20timer);
55 55
56 x25_transmit_restart_request(nb); 56 x25_transmit_restart_request(nb);
57 57
@@ -252,7 +252,7 @@ void x25_link_device_up(struct net_device *dev)
252 return; 252 return;
253 253
254 skb_queue_head_init(&nb->queue); 254 skb_queue_head_init(&nb->queue);
255 setup_timer(&nb->t20timer, x25_t20timer_expiry, (unsigned long)nb); 255 timer_setup(&nb->t20timer, x25_t20timer_expiry, 0);
256 256
257 dev_hold(dev); 257 dev_hold(dev);
258 nb->dev = dev; 258 nb->dev = dev;
diff --git a/net/x25/x25_timer.c b/net/x25/x25_timer.c
index 1dfba3c23459..fa3461002b3e 100644
--- a/net/x25/x25_timer.c
+++ b/net/x25/x25_timer.c
@@ -36,7 +36,7 @@ void x25_init_timers(struct sock *sk)
36 timer_setup(&x25->timer, x25_timer_expiry, 0); 36 timer_setup(&x25->timer, x25_timer_expiry, 0);
37 37
38 /* initialized by sock_init_data */ 38 /* initialized by sock_init_data */
39 sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_heartbeat_expiry; 39 sk->sk_timer.function = x25_heartbeat_expiry;
40} 40}
41 41
42void x25_start_heartbeat(struct sock *sk) 42void x25_start_heartbeat(struct sock *sk)
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 1f5cee2269af..065d89606888 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -556,7 +556,7 @@ out:
556 return HRTIMER_NORESTART; 556 return HRTIMER_NORESTART;
557} 557}
558 558
559static void xfrm_replay_timer_handler(unsigned long data); 559static void xfrm_replay_timer_handler(struct timer_list *t);
560 560
561struct xfrm_state *xfrm_state_alloc(struct net *net) 561struct xfrm_state *xfrm_state_alloc(struct net *net)
562{ 562{
@@ -574,8 +574,7 @@ struct xfrm_state *xfrm_state_alloc(struct net *net)
574 INIT_HLIST_NODE(&x->byspi); 574 INIT_HLIST_NODE(&x->byspi);
575 tasklet_hrtimer_init(&x->mtimer, xfrm_timer_handler, 575 tasklet_hrtimer_init(&x->mtimer, xfrm_timer_handler,
576 CLOCK_BOOTTIME, HRTIMER_MODE_ABS); 576 CLOCK_BOOTTIME, HRTIMER_MODE_ABS);
577 setup_timer(&x->rtimer, xfrm_replay_timer_handler, 577 timer_setup(&x->rtimer, xfrm_replay_timer_handler, 0);
578 (unsigned long)x);
579 x->curlft.add_time = get_seconds(); 578 x->curlft.add_time = get_seconds();
580 x->lft.soft_byte_limit = XFRM_INF; 579 x->lft.soft_byte_limit = XFRM_INF;
581 x->lft.soft_packet_limit = XFRM_INF; 580 x->lft.soft_packet_limit = XFRM_INF;
@@ -1879,9 +1878,9 @@ void xfrm_state_walk_done(struct xfrm_state_walk *walk, struct net *net)
1879} 1878}
1880EXPORT_SYMBOL(xfrm_state_walk_done); 1879EXPORT_SYMBOL(xfrm_state_walk_done);
1881 1880
1882static void xfrm_replay_timer_handler(unsigned long data) 1881static void xfrm_replay_timer_handler(struct timer_list *t)
1883{ 1882{
1884 struct xfrm_state *x = (struct xfrm_state *)data; 1883 struct xfrm_state *x = from_timer(x, t, rtimer);
1885 1884
1886 spin_lock(&x->lock); 1885 spin_lock(&x->lock);
1887 1886
diff --git a/scripts/coccinelle/api/setup_timer.cocci b/scripts/coccinelle/api/setup_timer.cocci
deleted file mode 100644
index e4577089dcb9..000000000000
--- a/scripts/coccinelle/api/setup_timer.cocci
+++ /dev/null
@@ -1,277 +0,0 @@
1/// Use setup_timer function instead of initializing timer with the function
2/// and data fields
3// Confidence: High
4// Copyright: (C) 2016 Vaishali Thakkar, Oracle. GPLv2
5// Copyright: (C) 2017 Kees Cook, Google. GPLv2
6// Options: --no-includes --include-headers
7// Keywords: init_timer, setup_timer
8
9virtual patch
10virtual context
11virtual org
12virtual report
13
14// Match the common cases first to avoid Coccinelle parsing loops with
15// "... when" clauses.
16
17@match_immediate_function_data_after_init_timer
18depends on patch && !context && !org && !report@
19expression e, func, da;
20@@
21
22-init_timer
23+setup_timer
24 ( \(&e\|e\)
25+, func, da
26 );
27(
28-\(e.function\|e->function\) = func;
29-\(e.data\|e->data\) = da;
30|
31-\(e.data\|e->data\) = da;
32-\(e.function\|e->function\) = func;
33)
34
35@match_immediate_function_data_before_init_timer
36depends on patch && !context && !org && !report@
37expression e, func, da;
38@@
39
40(
41-\(e.function\|e->function\) = func;
42-\(e.data\|e->data\) = da;
43|
44-\(e.data\|e->data\) = da;
45-\(e.function\|e->function\) = func;
46)
47-init_timer
48+setup_timer
49 ( \(&e\|e\)
50+, func, da
51 );
52
53@match_function_and_data_after_init_timer
54depends on patch && !context && !org && !report@
55expression e, e2, e3, e4, e5, func, da;
56@@
57
58-init_timer
59+setup_timer
60 ( \(&e\|e\)
61+, func, da
62 );
63 ... when != func = e2
64 when != da = e3
65(
66-e.function = func;
67... when != da = e4
68-e.data = da;
69|
70-e->function = func;
71... when != da = e4
72-e->data = da;
73|
74-e.data = da;
75... when != func = e5
76-e.function = func;
77|
78-e->data = da;
79... when != func = e5
80-e->function = func;
81)
82
83@match_function_and_data_before_init_timer
84depends on patch && !context && !org && !report@
85expression e, e2, e3, e4, e5, func, da;
86@@
87(
88-e.function = func;
89... when != da = e4
90-e.data = da;
91|
92-e->function = func;
93... when != da = e4
94-e->data = da;
95|
96-e.data = da;
97... when != func = e5
98-e.function = func;
99|
100-e->data = da;
101... when != func = e5
102-e->function = func;
103)
104... when != func = e2
105 when != da = e3
106-init_timer
107+setup_timer
108 ( \(&e\|e\)
109+, func, da
110 );
111
112@r1 exists@
113expression t;
114identifier f;
115position p;
116@@
117
118f(...) { ... when any
119 init_timer@p(\(&t\|t\))
120 ... when any
121}
122
123@r2 exists@
124expression r1.t;
125identifier g != r1.f;
126expression e8;
127@@
128
129g(...) { ... when any
130 \(t.data\|t->data\) = e8
131 ... when any
132}
133
134// It is dangerous to use setup_timer if data field is initialized
135// in another function.
136
137@script:python depends on r2@
138p << r1.p;
139@@
140
141cocci.include_match(False)
142
143@r3 depends on patch && !context && !org && !report@
144expression r1.t, func, e7;
145position r1.p;
146@@
147
148(
149-init_timer@p(&t);
150+setup_timer(&t, func, 0UL);
151... when != func = e7
152-t.function = func;
153|
154-t.function = func;
155... when != func = e7
156-init_timer@p(&t);
157+setup_timer(&t, func, 0UL);
158|
159-init_timer@p(t);
160+setup_timer(t, func, 0UL);
161... when != func = e7
162-t->function = func;
163|
164-t->function = func;
165... when != func = e7
166-init_timer@p(t);
167+setup_timer(t, func, 0UL);
168)
169
170// ----------------------------------------------------------------------------
171
172@match_immediate_function_data_after_init_timer_context
173depends on !patch && (context || org || report)@
174expression da, e, func;
175position j0, j1, j2;
176@@
177
178* init_timer@j0 (&e);
179(
180* e@j1.function = func;
181* e@j2.data = da;
182|
183* e@j1.data = da;
184* e@j2.function = func;
185)
186
187@match_function_and_data_after_init_timer_context
188depends on !patch && (context || org || report)@
189expression a, b, e1, e2, e3, e4, e5;
190position j0 != match_immediate_function_data_after_init_timer_context.j0,j1,j2;
191@@
192
193* init_timer@j0 (&e1);
194... when != a = e2
195 when != b = e3
196(
197* e1@j1.function = a;
198... when != b = e4
199* e1@j2.data = b;
200|
201* e1@j1.data = b;
202... when != a = e5
203* e1@j2.function = a;
204)
205
206@r3_context depends on !patch && (context || org || report)@
207expression c, e6, e7;
208position r1.p;
209position j0 !=
210 {match_immediate_function_data_after_init_timer_context.j0,
211 match_function_and_data_after_init_timer_context.j0}, j1;
212@@
213
214* init_timer@j0@p (&e6);
215... when != c = e7
216* e6@j1.function = c;
217
218// ----------------------------------------------------------------------------
219
220@script:python match_immediate_function_data_after_init_timer_org
221depends on org@
222j0 << match_immediate_function_data_after_init_timer_context.j0;
223j1 << match_immediate_function_data_after_init_timer_context.j1;
224j2 << match_immediate_function_data_after_init_timer_context.j2;
225@@
226
227msg = "Use setup_timer function."
228coccilib.org.print_todo(j0[0], msg)
229coccilib.org.print_link(j1[0], "")
230coccilib.org.print_link(j2[0], "")
231
232@script:python match_function_and_data_after_init_timer_org depends on org@
233j0 << match_function_and_data_after_init_timer_context.j0;
234j1 << match_function_and_data_after_init_timer_context.j1;
235j2 << match_function_and_data_after_init_timer_context.j2;
236@@
237
238msg = "Use setup_timer function."
239coccilib.org.print_todo(j0[0], msg)
240coccilib.org.print_link(j1[0], "")
241coccilib.org.print_link(j2[0], "")
242
243@script:python r3_org depends on org@
244j0 << r3_context.j0;
245j1 << r3_context.j1;
246@@
247
248msg = "Use setup_timer function."
249coccilib.org.print_todo(j0[0], msg)
250coccilib.org.print_link(j1[0], "")
251
252// ----------------------------------------------------------------------------
253
254@script:python match_immediate_function_data_after_init_timer_report
255depends on report@
256j0 << match_immediate_function_data_after_init_timer_context.j0;
257j1 << match_immediate_function_data_after_init_timer_context.j1;
258@@
259
260msg = "Use setup_timer function for function on line %s." % (j1[0].line)
261coccilib.report.print_report(j0[0], msg)
262
263@script:python match_function_and_data_after_init_timer_report depends on report@
264j0 << match_function_and_data_after_init_timer_context.j0;
265j1 << match_function_and_data_after_init_timer_context.j1;
266@@
267
268msg = "Use setup_timer function for function on line %s." % (j1[0].line)
269coccilib.report.print_report(j0[0], msg)
270
271@script:python r3_report depends on report@
272j0 << r3_context.j0;
273j1 << r3_context.j1;
274@@
275
276msg = "Use setup_timer function for function on line %s." % (j1[0].line)
277coccilib.report.print_report(j0[0], msg)
diff --git a/security/keys/gc.c b/security/keys/gc.c
index 6713fee893fb..7207e6094dc1 100644
--- a/security/keys/gc.c
+++ b/security/keys/gc.c
@@ -29,7 +29,7 @@ DECLARE_WORK(key_gc_work, key_garbage_collector);
29/* 29/*
30 * Reaper for links from keyrings to dead keys. 30 * Reaper for links from keyrings to dead keys.
31 */ 31 */
32static void key_gc_timer_func(unsigned long); 32static void key_gc_timer_func(struct timer_list *);
33static DEFINE_TIMER(key_gc_timer, key_gc_timer_func); 33static DEFINE_TIMER(key_gc_timer, key_gc_timer_func);
34 34
35static time64_t key_gc_next_run = TIME64_MAX; 35static time64_t key_gc_next_run = TIME64_MAX;
@@ -84,7 +84,7 @@ void key_schedule_gc_links(void)
84 * Some key's cleanup time was met after it expired, so we need to get the 84 * Some key's cleanup time was met after it expired, so we need to get the
85 * reaper to go through a cycle finding expired keys. 85 * reaper to go through a cycle finding expired keys.
86 */ 86 */
87static void key_gc_timer_func(unsigned long data) 87static void key_gc_timer_func(struct timer_list *unused)
88{ 88{
89 kenter(""); 89 kenter("");
90 key_gc_next_run = TIME64_MAX; 90 key_gc_next_run = TIME64_MAX;
diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
index 4f9613e5fc9e..c1376bfdc90b 100644
--- a/sound/usb/line6/driver.c
+++ b/sound/usb/line6/driver.c
@@ -201,7 +201,7 @@ static int line6_send_raw_message_async_part(struct message *msg,
201void line6_start_timer(struct timer_list *timer, unsigned long msecs, 201void line6_start_timer(struct timer_list *timer, unsigned long msecs,
202 void (*function)(struct timer_list *t)) 202 void (*function)(struct timer_list *t))
203{ 203{
204 timer->function = (TIMER_FUNC_TYPE)function; 204 timer->function = function;
205 mod_timer(timer, jiffies + msecs_to_jiffies(msecs)); 205 mod_timer(timer, jiffies + msecs_to_jiffies(msecs));
206} 206}
207EXPORT_SYMBOL_GPL(line6_start_timer); 207EXPORT_SYMBOL_GPL(line6_start_timer);