aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-01-08 08:53:33 -0500
committerOlof Johansson <olof@lixom.net>2013-01-08 08:53:53 -0500
commit981302783e891482d767ce90b04ed37159d2ebf8 (patch)
tree02947bcb4641d9db548e36b8491f190ebd9578f6 /arch
parentd1c3ed669a2d452cacfb48c2d171a1f364dae2ed (diff)
parentae278a935f086775e8ae31a8ec9f7224ea25ea3c (diff)
Merge tag 'swarren-for-3.9-arm-timer-rework' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra into next/cleanup
From Stephen Warren: ARM/...: timer and clock events cleanup, and remove struct sys_timer This branch contains a number of cleanups and unifications to various timer- clock-events- and ARM timer code. The main points are: 1) Convert arch_gettimeoffset to a pointer, so that architectures with multiple timer implementations can simply set this standard pointer rather than maintaining their own arch-specific pointers for the same purpose. Various architectures are converted to using this new feature. 2) Conversion of ARM timer implementations to use clock_event_devices's suspend/resume operations, rather than the ARM-specific sys_timer versions. Thus, the ARM code begins to use more common infra-structure rather than arch-specific code. 3) Removal of ARM's struct sys_timer completely, now that everything uses common code. 4) Introduction of drivers/clocksource/clksrc-of.c, which allows ARM clock source implementations to be moved into drivers/clocksource, with the need to add SoC-specific header files for each timer initialization function; instead, all enabled implementations are registered into a table which a single core function iterates over, and calls the relevant initialization functions based on device tree. At least the Tegra and BCM2835 clocksource implementations will use this feature in the 3.9 kernel cycle. * tag 'swarren-for-3.9-arm-timer-rework' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra: clocksource: add common of_clksrc_init() function ARM: delete struct sys_timer ARM: remove struct sys_timer suspend and resume fields ARM: samsung: register syscore_ops for timer resume directly ARM: ux500: convert timer suspend/resume to clock_event_device ARM: sa1100: convert timer suspend/resume to clock_event_device ARM: pxa: convert timer suspend/resume to clock_event_device ARM: at91: convert timer suspend/resume to clock_event_device ARM: set arch_gettimeoffset directly m68k: set arch_gettimeoffset directly time: convert arch_gettimeoffset to a pointer cris: move usec/nsec conversion to do_slow_gettimeoffset Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/include/asm/mach/arch.h3
-rw-r--r--arch/arm/include/asm/mach/time.h30
-rw-r--r--arch/arm/kernel/time.c53
-rw-r--r--arch/arm/mach-at91/at91rm9200_time.c5
-rw-r--r--arch/arm/mach-at91/at91sam926x_time.c53
-rw-r--r--arch/arm/mach-at91/at91x40_time.c13
-rw-r--r--arch/arm/mach-at91/board-1arm.c2
-rw-r--r--arch/arm/mach-at91/board-afeb-9260v1.c2
-rw-r--r--arch/arm/mach-at91/board-cam60.c2
-rw-r--r--arch/arm/mach-at91/board-carmeva.c2
-rw-r--r--arch/arm/mach-at91/board-cpu9krea.c2
-rw-r--r--arch/arm/mach-at91/board-cpuat91.c2
-rw-r--r--arch/arm/mach-at91/board-csb337.c2
-rw-r--r--arch/arm/mach-at91/board-csb637.c2
-rw-r--r--arch/arm/mach-at91/board-dt.c2
-rw-r--r--arch/arm/mach-at91/board-eb01.c2
-rw-r--r--arch/arm/mach-at91/board-eb9200.c2
-rw-r--r--arch/arm/mach-at91/board-ecbat91.c2
-rw-r--r--arch/arm/mach-at91/board-eco920.c2
-rw-r--r--arch/arm/mach-at91/board-flexibity.c2
-rw-r--r--arch/arm/mach-at91/board-foxg20.c2
-rw-r--r--arch/arm/mach-at91/board-gsia18s.c2
-rw-r--r--arch/arm/mach-at91/board-kafa.c2
-rw-r--r--arch/arm/mach-at91/board-kb9202.c2
-rw-r--r--arch/arm/mach-at91/board-neocore926.c2
-rw-r--r--arch/arm/mach-at91/board-pcontrol-g20.c2
-rw-r--r--arch/arm/mach-at91/board-picotux200.c2
-rw-r--r--arch/arm/mach-at91/board-qil-a9260.c2
-rw-r--r--arch/arm/mach-at91/board-rm9200dk.c2
-rw-r--r--arch/arm/mach-at91/board-rm9200ek.c2
-rw-r--r--arch/arm/mach-at91/board-rsi-ews.c2
-rw-r--r--arch/arm/mach-at91/board-sam9-l9260.c2
-rw-r--r--arch/arm/mach-at91/board-sam9260ek.c2
-rw-r--r--arch/arm/mach-at91/board-sam9261ek.c2
-rw-r--r--arch/arm/mach-at91/board-sam9263ek.c2
-rw-r--r--arch/arm/mach-at91/board-sam9g20ek.c4
-rw-r--r--arch/arm/mach-at91/board-sam9m10g45ek.c2
-rw-r--r--arch/arm/mach-at91/board-sam9rlek.c2
-rw-r--r--arch/arm/mach-at91/board-snapper9260.c2
-rw-r--r--arch/arm/mach-at91/board-stamp9g20.c4
-rw-r--r--arch/arm/mach-at91/board-usb-a926x.c6
-rw-r--r--arch/arm/mach-at91/board-yl-9200.c2
-rw-r--r--arch/arm/mach-at91/generic.h7
-rw-r--r--arch/arm/mach-bcm/board_bcm.c6
-rw-r--r--arch/arm/mach-bcm2835/bcm2835.c2
-rw-r--r--arch/arm/mach-clps711x/board-autcpu12.c2
-rw-r--r--arch/arm/mach-clps711x/board-cdb89712.c2
-rw-r--r--arch/arm/mach-clps711x/board-clep7312.c2
-rw-r--r--arch/arm/mach-clps711x/board-edb7211.c2
-rw-r--r--arch/arm/mach-clps711x/board-fortunet.c2
-rw-r--r--arch/arm/mach-clps711x/board-p720t.c2
-rw-r--r--arch/arm/mach-clps711x/common.c6
-rw-r--r--arch/arm/mach-clps711x/common.h4
-rw-r--r--arch/arm/mach-cns3xxx/cns3420vb.c2
-rw-r--r--arch/arm/mach-cns3xxx/core.c6
-rw-r--r--arch/arm/mach-cns3xxx/core.h2
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm355-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm355-leopard.c2
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c4
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c2
-rw-r--r--arch/arm/mach-davinci/board-neuros-osd2.c2
-rw-r--r--arch/arm/mach-davinci/board-omapl138-hawk.c2
-rw-r--r--arch/arm/mach-davinci/board-sffsdr.c2
-rw-r--r--arch/arm/mach-davinci/board-tnetv107x-evm.c2
-rw-r--r--arch/arm/mach-davinci/da8xx-dt.c2
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h4
-rw-r--r--arch/arm/mach-davinci/time.c7
-rw-r--r--arch/arm/mach-dove/cm-a510.c2
-rw-r--r--arch/arm/mach-dove/common.c8
-rw-r--r--arch/arm/mach-dove/common.h2
-rw-r--r--arch/arm/mach-dove/dove-db-setup.c2
-rw-r--r--arch/arm/mach-ebsa110/core.c15
-rw-r--r--arch/arm/mach-ep93xx/adssphere.c2
-rw-r--r--arch/arm/mach-ep93xx/core.c35
-rw-r--r--arch/arm/mach-ep93xx/edb93xx.c16
-rw-r--r--arch/arm/mach-ep93xx/gesbc9312.c2
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h2
-rw-r--r--arch/arm/mach-ep93xx/micro9.c8
-rw-r--r--arch/arm/mach-ep93xx/simone.c2
-rw-r--r--arch/arm/mach-ep93xx/snappercl15.c2
-rw-r--r--arch/arm/mach-ep93xx/ts72xx.c2
-rw-r--r--arch/arm/mach-ep93xx/vision_ep9307.c2
-rw-r--r--arch/arm/mach-exynos/common.h2
-rw-r--r--arch/arm/mach-exynos/mach-armlex4210.c2
-rw-r--r--arch/arm/mach-exynos/mach-exynos4-dt.c2
-rw-r--r--arch/arm/mach-exynos/mach-exynos5-dt.c2
-rw-r--r--arch/arm/mach-exynos/mach-nuri.c2
-rw-r--r--arch/arm/mach-exynos/mach-origen.c2
-rw-r--r--arch/arm/mach-exynos/mach-smdk4x12.c4
-rw-r--r--arch/arm/mach-exynos/mach-smdkv310.c4
-rw-r--r--arch/arm/mach-exynos/mach-universal_c210.c2
-rw-r--r--arch/arm/mach-exynos/mct.c6
-rw-r--r--arch/arm/mach-footbridge/cats-hw.c2
-rw-r--r--arch/arm/mach-footbridge/common.h4
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c6
-rw-r--r--arch/arm/mach-footbridge/ebsa285.c2
-rw-r--r--arch/arm/mach-footbridge/isa-timer.c6
-rw-r--r--arch/arm/mach-footbridge/netwinder-hw.c2
-rw-r--r--arch/arm/mach-footbridge/personal.c2
-rw-r--r--arch/arm/mach-gemini/board-nas4220b.c6
-rw-r--r--arch/arm/mach-gemini/board-rut1xx.c6
-rw-r--r--arch/arm/mach-gemini/board-wbd111.c6
-rw-r--r--arch/arm/mach-gemini/board-wbd222.c6
-rw-r--r--arch/arm/mach-h720x/common.c6
-rw-r--r--arch/arm/mach-h720x/common.h6
-rw-r--r--arch/arm/mach-h720x/cpu-h7201.c9
-rw-r--r--arch/arm/mach-h720x/cpu-h7202.c9
-rw-r--r--arch/arm/mach-h720x/h7201-eval.c2
-rw-r--r--arch/arm/mach-h720x/h7202-eval.c2
-rw-r--r--arch/arm/mach-highbank/highbank.c6
-rw-r--r--arch/arm/mach-imx/imx25-dt.c11
-rw-r--r--arch/arm/mach-imx/imx27-dt.c16
-rw-r--r--arch/arm/mach-imx/imx31-dt.c11
-rw-r--r--arch/arm/mach-imx/imx51-dt.c16
-rw-r--r--arch/arm/mach-imx/mach-apf9328.c6
-rw-r--r--arch/arm/mach-imx/mach-armadillo5x0.c6
-rw-r--r--arch/arm/mach-imx/mach-bug.c6
-rw-r--r--arch/arm/mach-imx/mach-cpuimx27.c6
-rw-r--r--arch/arm/mach-imx/mach-cpuimx35.c6
-rw-r--r--arch/arm/mach-imx/mach-cpuimx51sd.c6
-rw-r--r--arch/arm/mach-imx/mach-eukrea_cpuimx25.c6
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c6
-rw-r--r--arch/arm/mach-imx/mach-imx27ipcam.c6
-rw-r--r--arch/arm/mach-imx/mach-imx27lite.c6
-rw-r--r--arch/arm/mach-imx/mach-imx53.c16
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c6
-rw-r--r--arch/arm/mach-imx/mach-kzm_arm11_01.c6
-rw-r--r--arch/arm/mach-imx/mach-mx1ads.c8
-rw-r--r--arch/arm/mach-imx/mach-mx21ads.c6
-rw-r--r--arch/arm/mach-imx/mach-mx25_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-mx27ads.c6
-rw-r--r--arch/arm/mach-imx/mach-mx31_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-mx31ads.c6
-rw-r--r--arch/arm/mach-imx/mach-mx31lilly.c6
-rw-r--r--arch/arm/mach-imx/mach-mx31lite.c6
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c6
-rw-r--r--arch/arm/mach-imx/mach-mx35_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-mx50_rdp.c6
-rw-r--r--arch/arm/mach-imx/mach-mx51_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-mx51_babbage.c6
-rw-r--r--arch/arm/mach-imx/mach-mxt_td60.c6
-rw-r--r--arch/arm/mach-imx/mach-pca100.c6
-rw-r--r--arch/arm/mach-imx/mach-pcm037.c6
-rw-r--r--arch/arm/mach-imx/mach-pcm038.c6
-rw-r--r--arch/arm/mach-imx/mach-pcm043.c6
-rw-r--r--arch/arm/mach-imx/mach-qong.c6
-rw-r--r--arch/arm/mach-imx/mach-scb9328.c6
-rw-r--r--arch/arm/mach-imx/mach-vpr200.c6
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c16
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c16
-rw-r--r--arch/arm/mach-iop13xx/iq81340mc.c6
-rw-r--r--arch/arm/mach-iop13xx/iq81340sc.c6
-rw-r--r--arch/arm/mach-iop32x/em7210.c6
-rw-r--r--arch/arm/mach-iop32x/glantank.c6
-rw-r--r--arch/arm/mach-iop32x/iq31244.c8
-rw-r--r--arch/arm/mach-iop32x/iq80321.c6
-rw-r--r--arch/arm/mach-iop32x/n2100.c6
-rw-r--r--arch/arm/mach-iop33x/iq80331.c6
-rw-r--r--arch/arm/mach-iop33x/iq80332.c6
-rw-r--r--arch/arm/mach-ixp4xx/avila-setup.c4
-rw-r--r--arch/arm/mach-ixp4xx/common.c4
-rw-r--r--arch/arm/mach-ixp4xx/coyote-setup.c4
-rw-r--r--arch/arm/mach-ixp4xx/dsmg600-setup.c6
-rw-r--r--arch/arm/mach-ixp4xx/fsg-setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/gateway7001-setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/goramo_mlr.c2
-rw-r--r--arch/arm/mach-ixp4xx/gtwx5715-setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/include/mach/platform.h3
-rw-r--r--arch/arm/mach-ixp4xx/ixdp425-setup.c8
-rw-r--r--arch/arm/mach-ixp4xx/nas100d-setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/nslu2-setup.c6
-rw-r--r--arch/arm/mach-ixp4xx/omixp-setup.c6
-rw-r--r--arch/arm/mach-ixp4xx/vulcan-setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/wg302v2-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/board-dt.c2
-rw-r--r--arch/arm/mach-kirkwood/common.c6
-rw-r--r--arch/arm/mach-kirkwood/common.h2
-rw-r--r--arch/arm/mach-kirkwood/d2net_v2-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/db88f6281-bp-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/dockstar-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/guruplug-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/netspace_v2-setup.c6
-rw-r--r--arch/arm/mach-kirkwood/netxbig_v2-setup.c4
-rw-r--r--arch/arm/mach-kirkwood/openrd-setup.c6
-rw-r--r--arch/arm/mach-kirkwood/rd88f6192-nas-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/rd88f6281-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/sheevaplug-setup.c4
-rw-r--r--arch/arm/mach-kirkwood/t5325-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/ts219-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/ts41x-setup.c2
-rw-r--r--arch/arm/mach-ks8695/board-acs5k.c2
-rw-r--r--arch/arm/mach-ks8695/board-dsm320.c2
-rw-r--r--arch/arm/mach-ks8695/board-micrel.c2
-rw-r--r--arch/arm/mach-ks8695/board-og.c10
-rw-r--r--arch/arm/mach-ks8695/board-sg.c6
-rw-r--r--arch/arm/mach-ks8695/generic.h2
-rw-r--r--arch/arm/mach-ks8695/time.c6
-rw-r--r--arch/arm/mach-lpc32xx/common.h2
-rw-r--r--arch/arm/mach-lpc32xx/phy3250.c2
-rw-r--r--arch/arm/mach-lpc32xx/timer.c7
-rw-r--r--arch/arm/mach-mmp/aspenite.c4
-rw-r--r--arch/arm/mach-mmp/avengers_lite.c2
-rw-r--r--arch/arm/mach-mmp/brownstone.c2
-rw-r--r--arch/arm/mach-mmp/common.h2
-rw-r--r--arch/arm/mach-mmp/flint.c2
-rw-r--r--arch/arm/mach-mmp/gplugd.c2
-rw-r--r--arch/arm/mach-mmp/include/mach/mmp2.h4
-rw-r--r--arch/arm/mach-mmp/include/mach/pxa168.h4
-rw-r--r--arch/arm/mach-mmp/include/mach/pxa910.h4
-rw-r--r--arch/arm/mach-mmp/jasper.c2
-rw-r--r--arch/arm/mach-mmp/mmp-dt.c8
-rw-r--r--arch/arm/mach-mmp/mmp2-dt.c6
-rw-r--r--arch/arm/mach-mmp/mmp2.c6
-rw-r--r--arch/arm/mach-mmp/pxa168.c6
-rw-r--r--arch/arm/mach-mmp/pxa910.c6
-rw-r--r--arch/arm/mach-mmp/tavorevb.c2
-rw-r--r--arch/arm/mach-mmp/teton_bga.c2
-rw-r--r--arch/arm/mach-mmp/ttc_dkb.c2
-rw-r--r--arch/arm/mach-msm/board-dt-8660.c2
-rw-r--r--arch/arm/mach-msm/board-dt-8960.c2
-rw-r--r--arch/arm/mach-msm/board-halibut.c2
-rw-r--r--arch/arm/mach-msm/board-mahimahi.c4
-rw-r--r--arch/arm/mach-msm/board-msm7x30.c6
-rw-r--r--arch/arm/mach-msm/board-qsd8x50.c4
-rw-r--r--arch/arm/mach-msm/board-sapphire.c4
-rw-r--r--arch/arm/mach-msm/board-trout.c2
-rw-r--r--arch/arm/mach-msm/common.h8
-rw-r--r--arch/arm/mach-msm/timer.c24
-rw-r--r--arch/arm/mach-mv78xx0/buffalo-wxl-setup.c2
-rw-r--r--arch/arm/mach-mv78xx0/common.c6
-rw-r--r--arch/arm/mach-mv78xx0/common.h2
-rw-r--r--arch/arm/mach-mv78xx0/db78x00-bp-setup.c2
-rw-r--r--arch/arm/mach-mv78xx0/rd78x00-masa-setup.c2
-rw-r--r--arch/arm/mach-mvebu/armada-370-xp.c6
-rw-r--r--arch/arm/mach-mxs/mach-mxs.c12
-rw-r--r--arch/arm/mach-netx/generic.h3
-rw-r--r--arch/arm/mach-netx/nxdb500.c2
-rw-r--r--arch/arm/mach-netx/nxdkn.c2
-rw-r--r--arch/arm/mach-netx/nxeb500hmi.c2
-rw-r--r--arch/arm/mach-netx/time.c6
-rw-r--r--arch/arm/mach-nomadik/board-nhk8815.c6
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c2
-rw-r--r--arch/arm/mach-omap1/board-fsample.c2
-rw-r--r--arch/arm/mach-omap1/board-generic.c2
-rw-r--r--arch/arm/mach-omap1/board-h2.c2
-rw-r--r--arch/arm/mach-omap1/board-h3.c2
-rw-r--r--arch/arm/mach-omap1/board-htcherald.c2
-rw-r--r--arch/arm/mach-omap1/board-innovator.c2
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c2
-rw-r--r--arch/arm/mach-omap1/board-osk.c2
-rw-r--r--arch/arm/mach-omap1/board-palmte.c2
-rw-r--r--arch/arm/mach-omap1/board-palmtt.c2
-rw-r--r--arch/arm/mach-omap1/board-palmz71.c2
-rw-r--r--arch/arm/mach-omap1/board-perseus2.c2
-rw-r--r--arch/arm/mach-omap1/board-sx1.c2
-rw-r--r--arch/arm/mach-omap1/board-voiceblue.c2
-rw-r--r--arch/arm/mach-omap1/common.h2
-rw-r--r--arch/arm/mach-omap1/time.c6
-rw-r--r--arch/arm/mach-omap2/board-2430sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-3630sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-am3517crane.c2
-rw-r--r--arch/arm/mach-omap2/board-am3517evm.c2
-rw-r--r--arch/arm/mach-omap2/board-apollon.c2
-rw-r--r--arch/arm/mach-omap2/board-cm-t35.c4
-rw-r--r--arch/arm/mach-omap2/board-cm-t3517.c2
-rw-r--r--arch/arm/mach-omap2/board-devkit8000.c2
-rw-r--r--arch/arm/mach-omap2/board-generic.c14
-rw-r--r--arch/arm/mach-omap2/board-h4.c2
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c4
-rw-r--r--arch/arm/mach-omap2/board-ldp.c2
-rw-r--r--arch/arm/mach-omap2/board-n8x0.c6
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3logic.c4
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3stalker.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3touchbook.c2
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c2
-rw-r--r--arch/arm/mach-omap2/board-overo.c2
-rw-r--r--arch/arm/mach-omap2/board-rm680.c4
-rw-r--r--arch/arm/mach-omap2/board-rx51.c2
-rw-r--r--arch/arm/mach-omap2/board-ti8168evm.c4
-rw-r--r--arch/arm/mach-omap2/board-zoom.c4
-rw-r--r--arch/arm/mach-omap2/common.h14
-rw-r--r--arch/arm/mach-omap2/timer.c22
-rw-r--r--arch/arm/mach-orion5x/board-dt.c2
-rw-r--r--arch/arm/mach-orion5x/common.c6
-rw-r--r--arch/arm/mach-orion5x/common.h2
-rw-r--r--arch/arm/mach-orion5x/d2net-setup.c4
-rw-r--r--arch/arm/mach-orion5x/db88f5281-setup.c2
-rw-r--r--arch/arm/mach-orion5x/dns323-setup.c2
-rw-r--r--arch/arm/mach-orion5x/kurobox_pro-setup.c4
-rw-r--r--arch/arm/mach-orion5x/ls-chl-setup.c2
-rw-r--r--arch/arm/mach-orion5x/ls_hgl-setup.c2
-rw-r--r--arch/arm/mach-orion5x/lsmini-setup.c2
-rw-r--r--arch/arm/mach-orion5x/mss2-setup.c2
-rw-r--r--arch/arm/mach-orion5x/mv2120-setup.c2
-rw-r--r--arch/arm/mach-orion5x/net2big-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-ge-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5182-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c2
-rw-r--r--arch/arm/mach-orion5x/terastation_pro2-setup.c2
-rw-r--r--arch/arm/mach-orion5x/ts209-setup.c2
-rw-r--r--arch/arm/mach-orion5x/ts409-setup.c2
-rw-r--r--arch/arm/mach-orion5x/ts78xx-setup.c2
-rw-r--r--arch/arm/mach-orion5x/wnr854t-setup.c2
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c2
-rw-r--r--arch/arm/mach-picoxcell/common.c2
-rw-r--r--arch/arm/mach-picoxcell/common.h2
-rw-r--r--arch/arm/mach-prima2/common.c2
-rw-r--r--arch/arm/mach-prima2/common.h2
-rw-r--r--arch/arm/mach-prima2/timer.c8
-rw-r--r--arch/arm/mach-pxa/balloon3.c2
-rw-r--r--arch/arm/mach-pxa/capc7117.c2
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c2
-rw-r--r--arch/arm/mach-pxa/cm-x300.c2
-rw-r--r--arch/arm/mach-pxa/colibri-pxa270.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c2
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c2
-rw-r--r--arch/arm/mach-pxa/corgi.c6
-rw-r--r--arch/arm/mach-pxa/csb726.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c4
-rw-r--r--arch/arm/mach-pxa/eseries.c12
-rw-r--r--arch/arm/mach-pxa/ezx.c12
-rw-r--r--arch/arm/mach-pxa/generic.h3
-rw-r--r--arch/arm/mach-pxa/gumstix.c2
-rw-r--r--arch/arm/mach-pxa/h5000.c2
-rw-r--r--arch/arm/mach-pxa/himalaya.c2
-rw-r--r--arch/arm/mach-pxa/hx4700.c2
-rw-r--r--arch/arm/mach-pxa/icontrol.c2
-rw-r--r--arch/arm/mach-pxa/idp.c2
-rw-r--r--arch/arm/mach-pxa/littleton.c2
-rw-r--r--arch/arm/mach-pxa/lpd270.c2
-rw-r--r--arch/arm/mach-pxa/lubbock.c2
-rw-r--r--arch/arm/mach-pxa/magician.c2
-rw-r--r--arch/arm/mach-pxa/mainstone.c2
-rw-r--r--arch/arm/mach-pxa/mioa701.c2
-rw-r--r--arch/arm/mach-pxa/mp900.c2
-rw-r--r--arch/arm/mach-pxa/palmld.c2
-rw-r--r--arch/arm/mach-pxa/palmt5.c2
-rw-r--r--arch/arm/mach-pxa/palmtc.c2
-rw-r--r--arch/arm/mach-pxa/palmte2.c2
-rw-r--r--arch/arm/mach-pxa/palmtreo.c4
-rw-r--r--arch/arm/mach-pxa/palmtx.c2
-rw-r--r--arch/arm/mach-pxa/palmz72.c2
-rw-r--r--arch/arm/mach-pxa/pcm027.c2
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/pxa-dt.c2
-rw-r--r--arch/arm/mach-pxa/raumfeld.c6
-rw-r--r--arch/arm/mach-pxa/saar.c2
-rw-r--r--arch/arm/mach-pxa/spitz.c6
-rw-r--r--arch/arm/mach-pxa/stargate2.c4
-rw-r--r--arch/arm/mach-pxa/tavorevb.c2
-rw-r--r--arch/arm/mach-pxa/time.c80
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-pxa/trizeps4.c4
-rw-r--r--arch/arm/mach-pxa/viper.c2
-rw-r--r--arch/arm/mach-pxa/vpac270.c2
-rw-r--r--arch/arm/mach-pxa/xcep.c2
-rw-r--r--arch/arm/mach-pxa/z2.c2
-rw-r--r--arch/arm/mach-pxa/zeus.c2
-rw-r--r--arch/arm/mach-pxa/zylonite.c2
-rw-r--r--arch/arm/mach-realview/realview_eb.c6
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c6
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c6
-rw-r--r--arch/arm/mach-realview/realview_pba8.c6
-rw-r--r--arch/arm/mach-realview/realview_pbx.c6
-rw-r--r--arch/arm/mach-rpc/riscpc.c4
-rw-r--r--arch/arm/mach-rpc/time.c13
-rw-r--r--arch/arm/mach-s3c24xx/mach-amlm5900.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-anubis.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-at2440evb.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-bast.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-gta02.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-h1940.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-jive.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-mini2440.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-n30.c4
-rw-r--r--arch/arm/mach-s3c24xx/mach-nexcoder.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-osiris.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-otom.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-qt2410.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-rx1950.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-rx3715.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2410.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2413.c6
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2416.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2440.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-smdk2443.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-tct_hammer.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-vr1000.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-vstms.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-anw6410.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-crag6410.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-hmt.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-mini6410.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-ncp.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-real6410.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smartq5.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smartq7.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6400.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6410.c2
-rw-r--r--arch/arm/mach-s5p64x0/mach-smdk6440.c2
-rw-r--r--arch/arm/mach-s5p64x0/mach-smdk6450.c2
-rw-r--r--arch/arm/mach-s5pc100/mach-smdkc100.c2
-rw-r--r--arch/arm/mach-s5pv210/mach-aquila.c2
-rw-r--r--arch/arm/mach-s5pv210/mach-goni.c2
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkc110.c2
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkv210.c2
-rw-r--r--arch/arm/mach-s5pv210/mach-torbreck.c2
-rw-r--r--arch/arm/mach-sa1100/assabet.c2
-rw-r--r--arch/arm/mach-sa1100/badge4.c2
-rw-r--r--arch/arm/mach-sa1100/cerf.c2
-rw-r--r--arch/arm/mach-sa1100/collie.c2
-rw-r--r--arch/arm/mach-sa1100/generic.h4
-rw-r--r--arch/arm/mach-sa1100/h3100.c2
-rw-r--r--arch/arm/mach-sa1100/h3600.c2
-rw-r--r--arch/arm/mach-sa1100/hackkit.c2
-rw-r--r--arch/arm/mach-sa1100/jornada720.c2
-rw-r--r--arch/arm/mach-sa1100/lart.c2
-rw-r--r--arch/arm/mach-sa1100/nanoengine.c2
-rw-r--r--arch/arm/mach-sa1100/pleb.c2
-rw-r--r--arch/arm/mach-sa1100/shannon.c2
-rw-r--r--arch/arm/mach-sa1100/simpad.c2
-rw-r--r--arch/arm/mach-sa1100/time.c72
-rw-r--r--arch/arm/mach-shark/core.c6
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c2
-rw-r--r--arch/arm/mach-shmobile/board-ap4evb.c2
-rw-r--r--arch/arm/mach-shmobile/board-armadillo800eva.c5
-rw-r--r--arch/arm/mach-shmobile/board-bonito.c5
-rw-r--r--arch/arm/mach-shmobile/board-kota2.c2
-rw-r--r--arch/arm/mach-shmobile/board-kzm9d.c2
-rw-r--r--arch/arm/mach-shmobile/board-kzm9g.c2
-rw-r--r--arch/arm/mach-shmobile/board-mackerel.c2
-rw-r--r--arch/arm/mach-shmobile/board-marzen.c2
-rw-r--r--arch/arm/mach-shmobile/include/mach/common.h5
-rw-r--r--arch/arm/mach-shmobile/setup-emev2.c2
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7740.c11
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7779.c5
-rw-r--r--arch/arm/mach-shmobile/setup-sh7372.c7
-rw-r--r--arch/arm/mach-shmobile/setup-sh73a0.c5
-rw-r--r--arch/arm/mach-shmobile/timer.c6
-rw-r--r--arch/arm/mach-socfpga/socfpga.c2
-rw-r--r--arch/arm/mach-spear13xx/include/mach/generic.h2
-rw-r--r--arch/arm/mach-spear13xx/spear1310.c2
-rw-r--r--arch/arm/mach-spear13xx/spear1340.c2
-rw-r--r--arch/arm/mach-spear13xx/spear13xx.c6
-rw-r--r--arch/arm/mach-spear3xx/include/mach/generic.h2
-rw-r--r--arch/arm/mach-spear3xx/spear300.c2
-rw-r--r--arch/arm/mach-spear3xx/spear310.c2
-rw-r--r--arch/arm/mach-spear3xx/spear320.c2
-rw-r--r--arch/arm/mach-spear3xx/spear3xx.c6
-rw-r--r--arch/arm/mach-spear6xx/spear6xx.c8
-rw-r--r--arch/arm/mach-tegra/board-dt-tegra20.c2
-rw-r--r--arch/arm/mach-tegra/board-dt-tegra30.c2
-rw-r--r--arch/arm/mach-tegra/board.h2
-rw-r--r--arch/arm/mach-tegra/timer.c6
-rw-r--r--arch/arm/mach-u300/core.c2
-rw-r--r--arch/arm/mach-u300/timer.c10
-rw-r--r--arch/arm/mach-u300/timer.h2
-rw-r--r--arch/arm/mach-ux500/board-mop500.c8
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c2
-rw-r--r--arch/arm/mach-ux500/include/mach/setup.h3
-rw-r--r--arch/arm/mach-ux500/timer.c13
-rw-r--r--arch/arm/mach-versatile/core.c7
-rw-r--r--arch/arm/mach-versatile/core.h2
-rw-r--r--arch/arm/mach-versatile/versatile_ab.c2
-rw-r--r--arch/arm/mach-versatile/versatile_dt.c2
-rw-r--r--arch/arm/mach-versatile/versatile_pb.c2
-rw-r--r--arch/arm/mach-vexpress/v2m.c12
-rw-r--r--arch/arm/mach-vt8500/vt8500.c6
-rw-r--r--arch/arm/mach-w90x900/mach-nuc910evb.c2
-rw-r--r--arch/arm/mach-w90x900/mach-nuc950evb.c2
-rw-r--r--arch/arm/mach-w90x900/mach-nuc960evb.c2
-rw-r--r--arch/arm/mach-w90x900/nuc9xx.h3
-rw-r--r--arch/arm/mach-w90x900/time.c6
-rw-r--r--arch/arm/mach-zynq/common.c9
-rw-r--r--arch/arm/plat-samsung/include/plat/cpu.h3
-rw-r--r--arch/arm/plat-samsung/include/plat/s5p-time.h2
-rw-r--r--arch/arm/plat-samsung/s5p-time.c6
-rw-r--r--arch/arm/plat-samsung/time.c20
-rw-r--r--arch/blackfin/kernel/time.c6
-rw-r--r--arch/cris/arch-v10/kernel/time.c10
-rw-r--r--arch/cris/kernel/time.c11
-rw-r--r--arch/m32r/kernel/time.c4
-rw-r--r--arch/m68k/amiga/config.c10
-rw-r--r--arch/m68k/apollo/config.c9
-rw-r--r--arch/m68k/atari/config.c4
-rw-r--r--arch/m68k/atari/time.c6
-rw-r--r--arch/m68k/bvme6000/config.c10
-rw-r--r--arch/m68k/hp300/config.c2
-rw-r--r--arch/m68k/hp300/time.c4
-rw-r--r--arch/m68k/hp300/time.h2
-rw-r--r--arch/m68k/include/asm/machdep.h2
-rw-r--r--arch/m68k/kernel/setup_mm.c1
-rw-r--r--arch/m68k/kernel/time.c15
-rw-r--r--arch/m68k/mac/config.c4
-rw-r--r--arch/m68k/mac/via.c4
-rw-r--r--arch/m68k/mvme147/config.c8
-rw-r--r--arch/m68k/mvme16x/config.c8
-rw-r--r--arch/m68k/q40/config.c8
-rw-r--r--arch/m68k/sun3/config.c4
-rw-r--r--arch/m68k/sun3/intersil.c4
-rw-r--r--arch/m68k/sun3x/config.c2
-rw-r--r--arch/m68k/sun3x/time.c2
-rw-r--r--arch/m68k/sun3x/time.h2
515 files changed, 833 insertions, 1468 deletions
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h
index 917d4fcfd9b4..308ad7d6f98b 100644
--- a/arch/arm/include/asm/mach/arch.h
+++ b/arch/arm/include/asm/mach/arch.h
@@ -12,7 +12,6 @@
12 12
13struct tag; 13struct tag;
14struct meminfo; 14struct meminfo;
15struct sys_timer;
16struct pt_regs; 15struct pt_regs;
17struct smp_operations; 16struct smp_operations;
18#ifdef CONFIG_SMP 17#ifdef CONFIG_SMP
@@ -48,7 +47,7 @@ struct machine_desc {
48 void (*map_io)(void);/* IO mapping function */ 47 void (*map_io)(void);/* IO mapping function */
49 void (*init_early)(void); 48 void (*init_early)(void);
50 void (*init_irq)(void); 49 void (*init_irq)(void);
51 struct sys_timer *timer; /* system tick timer */ 50 void (*init_time)(void);
52 void (*init_machine)(void); 51 void (*init_machine)(void);
53 void (*init_late)(void); 52 void (*init_late)(void);
54#ifdef CONFIG_MULTI_IRQ_HANDLER 53#ifdef CONFIG_MULTI_IRQ_HANDLER
diff --git a/arch/arm/include/asm/mach/time.h b/arch/arm/include/asm/mach/time.h
index 6ca945f534ab..90c12e1e695c 100644
--- a/arch/arm/include/asm/mach/time.h
+++ b/arch/arm/include/asm/mach/time.h
@@ -10,36 +10,6 @@
10#ifndef __ASM_ARM_MACH_TIME_H 10#ifndef __ASM_ARM_MACH_TIME_H
11#define __ASM_ARM_MACH_TIME_H 11#define __ASM_ARM_MACH_TIME_H
12 12
13/*
14 * This is our kernel timer structure.
15 *
16 * - init
17 * Initialise the kernels jiffy timer source, claim interrupt
18 * using setup_irq. This is called early on during initialisation
19 * while interrupts are still disabled on the local CPU.
20 * - suspend
21 * Suspend the kernel jiffy timer source, if necessary. This
22 * is called with interrupts disabled, after all normal devices
23 * have been suspended. If no action is required, set this to
24 * NULL.
25 * - resume
26 * Resume the kernel jiffy timer source, if necessary. This
27 * is called with interrupts disabled before any normal devices
28 * are resumed. If no action is required, set this to NULL.
29 * - offset
30 * Return the timer offset in microseconds since the last timer
31 * interrupt. Note: this must take account of any unprocessed
32 * timer interrupt which may be pending.
33 */
34struct sys_timer {
35 void (*init)(void);
36 void (*suspend)(void);
37 void (*resume)(void);
38#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
39 unsigned long (*offset)(void);
40#endif
41};
42
43extern void timer_tick(void); 13extern void timer_tick(void);
44 14
45struct timespec; 15struct timespec;
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 09be0c3c9069..955d92d265e5 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -21,7 +21,6 @@
21#include <linux/timex.h> 21#include <linux/timex.h>
22#include <linux/errno.h> 22#include <linux/errno.h>
23#include <linux/profile.h> 23#include <linux/profile.h>
24#include <linux/syscore_ops.h>
25#include <linux/timer.h> 24#include <linux/timer.h>
26#include <linux/irq.h> 25#include <linux/irq.h>
27 26
@@ -31,11 +30,6 @@
31#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
32#include <asm/mach/time.h> 31#include <asm/mach/time.h>
33 32
34/*
35 * Our system timer.
36 */
37static struct sys_timer *system_timer;
38
39#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \ 33#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \
40 defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE) 34 defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE)
41/* this needs a better home */ 35/* this needs a better home */
@@ -69,16 +63,6 @@ unsigned long profile_pc(struct pt_regs *regs)
69EXPORT_SYMBOL(profile_pc); 63EXPORT_SYMBOL(profile_pc);
70#endif 64#endif
71 65
72#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
73u32 arch_gettimeoffset(void)
74{
75 if (system_timer->offset != NULL)
76 return system_timer->offset() * 1000;
77
78 return 0;
79}
80#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */
81
82#ifndef CONFIG_GENERIC_CLOCKEVENTS 66#ifndef CONFIG_GENERIC_CLOCKEVENTS
83/* 67/*
84 * Kernel system timer support. 68 * Kernel system timer support.
@@ -129,43 +113,8 @@ int __init register_persistent_clock(clock_access_fn read_boot,
129 return -EINVAL; 113 return -EINVAL;
130} 114}
131 115
132#if defined(CONFIG_PM) && !defined(CONFIG_GENERIC_CLOCKEVENTS)
133static int timer_suspend(void)
134{
135 if (system_timer->suspend)
136 system_timer->suspend();
137
138 return 0;
139}
140
141static void timer_resume(void)
142{
143 if (system_timer->resume)
144 system_timer->resume();
145}
146#else
147#define timer_suspend NULL
148#define timer_resume NULL
149#endif
150
151static struct syscore_ops timer_syscore_ops = {
152 .suspend = timer_suspend,
153 .resume = timer_resume,
154};
155
156static int __init timer_init_syscore_ops(void)
157{
158 register_syscore_ops(&timer_syscore_ops);
159
160 return 0;
161}
162
163device_initcall(timer_init_syscore_ops);
164
165void __init time_init(void) 116void __init time_init(void)
166{ 117{
167 system_timer = machine_desc->timer; 118 machine_desc->init_time();
168 system_timer->init();
169 sched_clock_postinit(); 119 sched_clock_postinit();
170} 120}
171
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
index cafe98836c8a..180b3024bec3 100644
--- a/arch/arm/mach-at91/at91rm9200_time.c
+++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -274,8 +274,3 @@ void __init at91rm9200_timer_init(void)
274 /* register clocksource */ 274 /* register clocksource */
275 clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); 275 clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);
276} 276}
277
278struct sys_timer at91rm9200_timer = {
279 .init = at91rm9200_timer_init,
280};
281
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index 358412f1f5f8..3a4bc2e1a65e 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -104,12 +104,38 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
104 } 104 }
105} 105}
106 106
107static void at91sam926x_pit_suspend(struct clock_event_device *cedev)
108{
109 /* Disable timer */
110 pit_write(AT91_PIT_MR, 0);
111}
112
113static void at91sam926x_pit_reset(void)
114{
115 /* Disable timer and irqs */
116 pit_write(AT91_PIT_MR, 0);
117
118 /* Clear any pending interrupts, wait for PIT to stop counting */
119 while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
120 cpu_relax();
121
122 /* Start PIT but don't enable IRQ */
123 pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
124}
125
126static void at91sam926x_pit_resume(struct clock_event_device *cedev)
127{
128 at91sam926x_pit_reset();
129}
130
107static struct clock_event_device pit_clkevt = { 131static struct clock_event_device pit_clkevt = {
108 .name = "pit", 132 .name = "pit",
109 .features = CLOCK_EVT_FEAT_PERIODIC, 133 .features = CLOCK_EVT_FEAT_PERIODIC,
110 .shift = 32, 134 .shift = 32,
111 .rating = 100, 135 .rating = 100,
112 .set_mode = pit_clkevt_mode, 136 .set_mode = pit_clkevt_mode,
137 .suspend = at91sam926x_pit_suspend,
138 .resume = at91sam926x_pit_resume,
113}; 139};
114 140
115 141
@@ -150,19 +176,6 @@ static struct irqaction at91sam926x_pit_irq = {
150 .irq = NR_IRQS_LEGACY + AT91_ID_SYS, 176 .irq = NR_IRQS_LEGACY + AT91_ID_SYS,
151}; 177};
152 178
153static void at91sam926x_pit_reset(void)
154{
155 /* Disable timer and irqs */
156 pit_write(AT91_PIT_MR, 0);
157
158 /* Clear any pending interrupts, wait for PIT to stop counting */
159 while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
160 cpu_relax();
161
162 /* Start PIT but don't enable IRQ */
163 pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
164}
165
166#ifdef CONFIG_OF 179#ifdef CONFIG_OF
167static struct of_device_id pit_timer_ids[] = { 180static struct of_device_id pit_timer_ids[] = {
168 { .compatible = "atmel,at91sam9260-pit" }, 181 { .compatible = "atmel,at91sam9260-pit" },
@@ -211,7 +224,7 @@ static int __init of_at91sam926x_pit_init(void)
211/* 224/*
212 * Set up both clocksource and clockevent support. 225 * Set up both clocksource and clockevent support.
213 */ 226 */
214static void __init at91sam926x_pit_init(void) 227void __init at91sam926x_pit_init(void)
215{ 228{
216 unsigned long pit_rate; 229 unsigned long pit_rate;
217 unsigned bits; 230 unsigned bits;
@@ -250,12 +263,6 @@ static void __init at91sam926x_pit_init(void)
250 clockevents_register_device(&pit_clkevt); 263 clockevents_register_device(&pit_clkevt);
251} 264}
252 265
253static void at91sam926x_pit_suspend(void)
254{
255 /* Disable timer */
256 pit_write(AT91_PIT_MR, 0);
257}
258
259void __init at91sam926x_ioremap_pit(u32 addr) 266void __init at91sam926x_ioremap_pit(u32 addr)
260{ 267{
261#if defined(CONFIG_OF) 268#if defined(CONFIG_OF)
@@ -272,9 +279,3 @@ void __init at91sam926x_ioremap_pit(u32 addr)
272 if (!pit_base_addr) 279 if (!pit_base_addr)
273 panic("Impossible to ioremap PIT\n"); 280 panic("Impossible to ioremap PIT\n");
274} 281}
275
276struct sys_timer at91sam926x_timer = {
277 .init = at91sam926x_pit_init,
278 .suspend = at91sam926x_pit_suspend,
279 .resume = at91sam926x_pit_reset,
280};
diff --git a/arch/arm/mach-at91/at91x40_time.c b/arch/arm/mach-at91/at91x40_time.c
index 0e57e440c061..0c07a4459cb2 100644
--- a/arch/arm/mach-at91/at91x40_time.c
+++ b/arch/arm/mach-at91/at91x40_time.c
@@ -42,9 +42,10 @@
42#define AT91_TC_CLK1BASE 0x40 42#define AT91_TC_CLK1BASE 0x40
43#define AT91_TC_CLK2BASE 0x80 43#define AT91_TC_CLK2BASE 0x80
44 44
45static unsigned long at91x40_gettimeoffset(void) 45static u32 at91x40_gettimeoffset(void)
46{ 46{
47 return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); 47 return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 /
48 (AT91X40_MASTER_CLOCK / 128)) * 1000;
48} 49}
49 50
50static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) 51static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id)
@@ -64,6 +65,8 @@ void __init at91x40_timer_init(void)
64{ 65{
65 unsigned int v; 66 unsigned int v;
66 67
68 arch_gettimeoffset = at91x40_gettimeoffset;
69
67 at91_tc_write(AT91_TC_BCR, 0); 70 at91_tc_write(AT91_TC_BCR, 0);
68 v = at91_tc_read(AT91_TC_BMR); 71 v = at91_tc_read(AT91_TC_BMR);
69 v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; 72 v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE;
@@ -79,9 +82,3 @@ void __init at91x40_timer_init(void)
79 82
80 at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN)); 83 at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN));
81} 84}
82
83struct sys_timer at91x40_timer = {
84 .init = at91x40_timer_init,
85 .offset = at91x40_gettimeoffset,
86};
87
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c
index b99b5752cc10..35ab632bbf68 100644
--- a/arch/arm/mach-at91/board-1arm.c
+++ b/arch/arm/mach-at91/board-1arm.c
@@ -90,7 +90,7 @@ static void __init onearm_board_init(void)
90 90
91MACHINE_START(ONEARM, "Ajeco 1ARM single board computer") 91MACHINE_START(ONEARM, "Ajeco 1ARM single board computer")
92 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 92 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
93 .timer = &at91rm9200_timer, 93 .init_time = at91rm9200_timer_init,
94 .map_io = at91_map_io, 94 .map_io = at91_map_io,
95 .handle_irq = at91_aic_handle_irq, 95 .handle_irq = at91_aic_handle_irq,
96 .init_early = onearm_init_early, 96 .init_early = onearm_init_early,
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
index 854b97974287..f95e31cda4b3 100644
--- a/arch/arm/mach-at91/board-afeb-9260v1.c
+++ b/arch/arm/mach-at91/board-afeb-9260v1.c
@@ -210,7 +210,7 @@ static void __init afeb9260_board_init(void)
210 210
211MACHINE_START(AFEB9260, "Custom afeb9260 board") 211MACHINE_START(AFEB9260, "Custom afeb9260 board")
212 /* Maintainer: Sergey Lapin <slapin@ossfans.org> */ 212 /* Maintainer: Sergey Lapin <slapin@ossfans.org> */
213 .timer = &at91sam926x_timer, 213 .init_time = at91sam926x_pit_init,
214 .map_io = at91_map_io, 214 .map_io = at91_map_io,
215 .handle_irq = at91_aic_handle_irq, 215 .handle_irq = at91_aic_handle_irq,
216 .init_early = afeb9260_init_early, 216 .init_early = afeb9260_init_early,
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
index 28a18ce6d914..ade948b82662 100644
--- a/arch/arm/mach-at91/board-cam60.c
+++ b/arch/arm/mach-at91/board-cam60.c
@@ -187,7 +187,7 @@ static void __init cam60_board_init(void)
187 187
188MACHINE_START(CAM60, "KwikByte CAM60") 188MACHINE_START(CAM60, "KwikByte CAM60")
189 /* Maintainer: KwikByte */ 189 /* Maintainer: KwikByte */
190 .timer = &at91sam926x_timer, 190 .init_time = at91sam926x_pit_init,
191 .map_io = at91_map_io, 191 .map_io = at91_map_io,
192 .handle_irq = at91_aic_handle_irq, 192 .handle_irq = at91_aic_handle_irq,
193 .init_early = cam60_init_early, 193 .init_early = cam60_init_early,
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c
index c17bb533a949..92983050a9bd 100644
--- a/arch/arm/mach-at91/board-carmeva.c
+++ b/arch/arm/mach-at91/board-carmeva.c
@@ -157,7 +157,7 @@ static void __init carmeva_board_init(void)
157 157
158MACHINE_START(CARMEVA, "Carmeva") 158MACHINE_START(CARMEVA, "Carmeva")
159 /* Maintainer: Conitec Datasystems */ 159 /* Maintainer: Conitec Datasystems */
160 .timer = &at91rm9200_timer, 160 .init_time = at91rm9200_timer_init,
161 .map_io = at91_map_io, 161 .map_io = at91_map_io,
162 .handle_irq = at91_aic_handle_irq, 162 .handle_irq = at91_aic_handle_irq,
163 .init_early = carmeva_init_early, 163 .init_early = carmeva_init_early,
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c
index 847432441ecc..008527efdbcf 100644
--- a/arch/arm/mach-at91/board-cpu9krea.c
+++ b/arch/arm/mach-at91/board-cpu9krea.c
@@ -374,7 +374,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260")
374MACHINE_START(CPUAT9G20, "Eukrea CPU9G20") 374MACHINE_START(CPUAT9G20, "Eukrea CPU9G20")
375#endif 375#endif
376 /* Maintainer: Eric Benard - EUKREA Electromatique */ 376 /* Maintainer: Eric Benard - EUKREA Electromatique */
377 .timer = &at91sam926x_timer, 377 .init_time = at91sam926x_pit_init,
378 .map_io = at91_map_io, 378 .map_io = at91_map_io,
379 .handle_irq = at91_aic_handle_irq, 379 .handle_irq = at91_aic_handle_irq,
380 .init_early = cpu9krea_init_early, 380 .init_early = cpu9krea_init_early,
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c
index 2a7af7868747..42f1353a4baf 100644
--- a/arch/arm/mach-at91/board-cpuat91.c
+++ b/arch/arm/mach-at91/board-cpuat91.c
@@ -178,7 +178,7 @@ static void __init cpuat91_board_init(void)
178 178
179MACHINE_START(CPUAT91, "Eukrea") 179MACHINE_START(CPUAT91, "Eukrea")
180 /* Maintainer: Eric Benard - EUKREA Electromatique */ 180 /* Maintainer: Eric Benard - EUKREA Electromatique */
181 .timer = &at91rm9200_timer, 181 .init_time = at91rm9200_timer_init,
182 .map_io = at91_map_io, 182 .map_io = at91_map_io,
183 .handle_irq = at91_aic_handle_irq, 183 .handle_irq = at91_aic_handle_irq,
184 .init_early = cpuat91_init_early, 184 .init_early = cpuat91_init_early,
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c
index 48a531e05be3..e5fde215225b 100644
--- a/arch/arm/mach-at91/board-csb337.c
+++ b/arch/arm/mach-at91/board-csb337.c
@@ -251,7 +251,7 @@ static void __init csb337_board_init(void)
251 251
252MACHINE_START(CSB337, "Cogent CSB337") 252MACHINE_START(CSB337, "Cogent CSB337")
253 /* Maintainer: Bill Gatliff */ 253 /* Maintainer: Bill Gatliff */
254 .timer = &at91rm9200_timer, 254 .init_time = at91rm9200_timer_init,
255 .map_io = at91_map_io, 255 .map_io = at91_map_io,
256 .handle_irq = at91_aic_handle_irq, 256 .handle_irq = at91_aic_handle_irq,
257 .init_early = csb337_init_early, 257 .init_early = csb337_init_early,
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c
index ec0f3abd504b..fdf11061c577 100644
--- a/arch/arm/mach-at91/board-csb637.c
+++ b/arch/arm/mach-at91/board-csb637.c
@@ -132,7 +132,7 @@ static void __init csb637_board_init(void)
132 132
133MACHINE_START(CSB637, "Cogent CSB637") 133MACHINE_START(CSB637, "Cogent CSB637")
134 /* Maintainer: Bill Gatliff */ 134 /* Maintainer: Bill Gatliff */
135 .timer = &at91rm9200_timer, 135 .init_time = at91rm9200_timer_init,
136 .map_io = at91_map_io, 136 .map_io = at91_map_io,
137 .handle_irq = at91_aic_handle_irq, 137 .handle_irq = at91_aic_handle_irq,
138 .init_early = csb637_init_early, 138 .init_early = csb637_init_early,
diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
index 881170ce61dd..8db30132abed 100644
--- a/arch/arm/mach-at91/board-dt.c
+++ b/arch/arm/mach-at91/board-dt.c
@@ -49,7 +49,7 @@ static const char *at91_dt_board_compat[] __initdata = {
49 49
50DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)") 50DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
51 /* Maintainer: Atmel */ 51 /* Maintainer: Atmel */
52 .timer = &at91sam926x_timer, 52 .init_time = at91sam926x_pit_init,
53 .map_io = at91_map_io, 53 .map_io = at91_map_io,
54 .handle_irq = at91_aic_handle_irq, 54 .handle_irq = at91_aic_handle_irq,
55 .init_early = at91_dt_initialize, 55 .init_early = at91_dt_initialize,
diff --git a/arch/arm/mach-at91/board-eb01.c b/arch/arm/mach-at91/board-eb01.c
index b489388a6f84..becf0a6a289e 100644
--- a/arch/arm/mach-at91/board-eb01.c
+++ b/arch/arm/mach-at91/board-eb01.c
@@ -44,7 +44,7 @@ static void __init at91eb01_init_early(void)
44 44
45MACHINE_START(AT91EB01, "Atmel AT91 EB01") 45MACHINE_START(AT91EB01, "Atmel AT91 EB01")
46 /* Maintainer: Greg Ungerer <gerg@snapgear.com> */ 46 /* Maintainer: Greg Ungerer <gerg@snapgear.com> */
47 .timer = &at91x40_timer, 47 .init_time = at91x40_timer_init,
48 .handle_irq = at91_aic_handle_irq, 48 .handle_irq = at91_aic_handle_irq,
49 .init_early = at91eb01_init_early, 49 .init_early = at91eb01_init_early,
50 .init_irq = at91eb01_init_irq, 50 .init_irq = at91eb01_init_irq,
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c
index 9f5e71c95f05..f9be8161bbfa 100644
--- a/arch/arm/mach-at91/board-eb9200.c
+++ b/arch/arm/mach-at91/board-eb9200.c
@@ -116,7 +116,7 @@ static void __init eb9200_board_init(void)
116} 116}
117 117
118MACHINE_START(ATEB9200, "Embest ATEB9200") 118MACHINE_START(ATEB9200, "Embest ATEB9200")
119 .timer = &at91rm9200_timer, 119 .init_time = at91rm9200_timer_init,
120 .map_io = at91_map_io, 120 .map_io = at91_map_io,
121 .handle_irq = at91_aic_handle_irq, 121 .handle_irq = at91_aic_handle_irq,
122 .init_early = eb9200_init_early, 122 .init_early = eb9200_init_early,
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c
index ef69e0ebe949..b2fcd71262ba 100644
--- a/arch/arm/mach-at91/board-ecbat91.c
+++ b/arch/arm/mach-at91/board-ecbat91.c
@@ -181,7 +181,7 @@ static void __init ecb_at91board_init(void)
181 181
182MACHINE_START(ECBAT91, "emQbit's ECB_AT91") 182MACHINE_START(ECBAT91, "emQbit's ECB_AT91")
183 /* Maintainer: emQbit.com */ 183 /* Maintainer: emQbit.com */
184 .timer = &at91rm9200_timer, 184 .init_time = at91rm9200_timer_init,
185 .map_io = at91_map_io, 185 .map_io = at91_map_io,
186 .handle_irq = at91_aic_handle_irq, 186 .handle_irq = at91_aic_handle_irq,
187 .init_early = ecb_at91init_early, 187 .init_early = ecb_at91init_early,
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c
index 50f3d3795c05..77de410efc90 100644
--- a/arch/arm/mach-at91/board-eco920.c
+++ b/arch/arm/mach-at91/board-eco920.c
@@ -149,7 +149,7 @@ static void __init eco920_board_init(void)
149 149
150MACHINE_START(ECO920, "eco920") 150MACHINE_START(ECO920, "eco920")
151 /* Maintainer: Sascha Hauer */ 151 /* Maintainer: Sascha Hauer */
152 .timer = &at91rm9200_timer, 152 .init_time = at91rm9200_timer_init,
153 .map_io = at91_map_io, 153 .map_io = at91_map_io,
154 .handle_irq = at91_aic_handle_irq, 154 .handle_irq = at91_aic_handle_irq,
155 .init_early = eco920_init_early, 155 .init_early = eco920_init_early,
diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c
index 5d44eba0f20f..737c08563628 100644
--- a/arch/arm/mach-at91/board-flexibity.c
+++ b/arch/arm/mach-at91/board-flexibity.c
@@ -159,7 +159,7 @@ static void __init flexibity_board_init(void)
159 159
160MACHINE_START(FLEXIBITY, "Flexibity Connect") 160MACHINE_START(FLEXIBITY, "Flexibity Connect")
161 /* Maintainer: Maxim Osipov */ 161 /* Maintainer: Maxim Osipov */
162 .timer = &at91sam926x_timer, 162 .init_time = at91sam926x_pit_init,
163 .map_io = at91_map_io, 163 .map_io = at91_map_io,
164 .handle_irq = at91_aic_handle_irq, 164 .handle_irq = at91_aic_handle_irq,
165 .init_early = flexibity_init_early, 165 .init_early = flexibity_init_early,
diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c
index 191d37c16bab..2ea7059b840b 100644
--- a/arch/arm/mach-at91/board-foxg20.c
+++ b/arch/arm/mach-at91/board-foxg20.c
@@ -261,7 +261,7 @@ static void __init foxg20_board_init(void)
261 261
262MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20") 262MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20")
263 /* Maintainer: Sergio Tanzilli */ 263 /* Maintainer: Sergio Tanzilli */
264 .timer = &at91sam926x_timer, 264 .init_time = at91sam926x_pit_init,
265 .map_io = at91_map_io, 265 .map_io = at91_map_io,
266 .handle_irq = at91_aic_handle_irq, 266 .handle_irq = at91_aic_handle_irq,
267 .init_early = foxg20_init_early, 267 .init_early = foxg20_init_early,
diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c
index 23a2fa17ab29..c1d61d247790 100644
--- a/arch/arm/mach-at91/board-gsia18s.c
+++ b/arch/arm/mach-at91/board-gsia18s.c
@@ -574,7 +574,7 @@ static void __init gsia18s_board_init(void)
574} 574}
575 575
576MACHINE_START(GSIA18S, "GS_IA18_S") 576MACHINE_START(GSIA18S, "GS_IA18_S")
577 .timer = &at91sam926x_timer, 577 .init_time = at91sam926x_pit_init,
578 .map_io = at91_map_io, 578 .map_io = at91_map_io,
579 .handle_irq = at91_aic_handle_irq, 579 .handle_irq = at91_aic_handle_irq,
580 .init_early = gsia18s_init_early, 580 .init_early = gsia18s_init_early,
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c
index 9a43d1e1a037..88e2f5d2d16d 100644
--- a/arch/arm/mach-at91/board-kafa.c
+++ b/arch/arm/mach-at91/board-kafa.c
@@ -103,7 +103,7 @@ static void __init kafa_board_init(void)
103 103
104MACHINE_START(KAFA, "Sperry-Sun KAFA") 104MACHINE_START(KAFA, "Sperry-Sun KAFA")
105 /* Maintainer: Sergei Sharonov */ 105 /* Maintainer: Sergei Sharonov */
106 .timer = &at91rm9200_timer, 106 .init_time = at91rm9200_timer_init,
107 .map_io = at91_map_io, 107 .map_io = at91_map_io,
108 .handle_irq = at91_aic_handle_irq, 108 .handle_irq = at91_aic_handle_irq,
109 .init_early = kafa_init_early, 109 .init_early = kafa_init_early,
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
index f168bec2369f..0c519d9ebffc 100644
--- a/arch/arm/mach-at91/board-kb9202.c
+++ b/arch/arm/mach-at91/board-kb9202.c
@@ -149,7 +149,7 @@ static void __init kb9202_board_init(void)
149 149
150MACHINE_START(KB9200, "KB920x") 150MACHINE_START(KB9200, "KB920x")
151 /* Maintainer: KwikByte, Inc. */ 151 /* Maintainer: KwikByte, Inc. */
152 .timer = &at91rm9200_timer, 152 .init_time = at91rm9200_timer_init,
153 .map_io = at91_map_io, 153 .map_io = at91_map_io,
154 .handle_irq = at91_aic_handle_irq, 154 .handle_irq = at91_aic_handle_irq,
155 .init_early = kb9202_init_early, 155 .init_early = kb9202_init_early,
diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
index bc7a1c4a1f6a..5b4760fe53de 100644
--- a/arch/arm/mach-at91/board-neocore926.c
+++ b/arch/arm/mach-at91/board-neocore926.c
@@ -378,7 +378,7 @@ static void __init neocore926_board_init(void)
378 378
379MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926") 379MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926")
380 /* Maintainer: ADENEO */ 380 /* Maintainer: ADENEO */
381 .timer = &at91sam926x_timer, 381 .init_time = at91sam926x_pit_init,
382 .map_io = at91_map_io, 382 .map_io = at91_map_io,
383 .handle_irq = at91_aic_handle_irq, 383 .handle_irq = at91_aic_handle_irq,
384 .init_early = neocore926_init_early, 384 .init_early = neocore926_init_early,
diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c
index 0299554495dd..65c0d6b5ecba 100644
--- a/arch/arm/mach-at91/board-pcontrol-g20.c
+++ b/arch/arm/mach-at91/board-pcontrol-g20.c
@@ -217,7 +217,7 @@ static void __init pcontrol_g20_board_init(void)
217 217
218MACHINE_START(PCONTROL_G20, "PControl G20") 218MACHINE_START(PCONTROL_G20, "PControl G20")
219 /* Maintainer: pgsellmann@portner-elektronik.at */ 219 /* Maintainer: pgsellmann@portner-elektronik.at */
220 .timer = &at91sam926x_timer, 220 .init_time = at91sam926x_pit_init,
221 .map_io = at91_map_io, 221 .map_io = at91_map_io,
222 .handle_irq = at91_aic_handle_irq, 222 .handle_irq = at91_aic_handle_irq,
223 .init_early = pcontrol_g20_init_early, 223 .init_early = pcontrol_g20_init_early,
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c
index 4938f1cd5e13..ab2b2ec36c14 100644
--- a/arch/arm/mach-at91/board-picotux200.c
+++ b/arch/arm/mach-at91/board-picotux200.c
@@ -119,7 +119,7 @@ static void __init picotux200_board_init(void)
119 119
120MACHINE_START(PICOTUX2XX, "picotux 200") 120MACHINE_START(PICOTUX2XX, "picotux 200")
121 /* Maintainer: Kleinhenz Elektronik GmbH */ 121 /* Maintainer: Kleinhenz Elektronik GmbH */
122 .timer = &at91rm9200_timer, 122 .init_time = at91rm9200_timer_init,
123 .map_io = at91_map_io, 123 .map_io = at91_map_io,
124 .handle_irq = at91_aic_handle_irq, 124 .handle_irq = at91_aic_handle_irq,
125 .init_early = picotux200_init_early, 125 .init_early = picotux200_init_early,
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
index 33b1628467ea..aa3bc9b0f150 100644
--- a/arch/arm/mach-at91/board-qil-a9260.c
+++ b/arch/arm/mach-at91/board-qil-a9260.c
@@ -257,7 +257,7 @@ static void __init ek_board_init(void)
257 257
258MACHINE_START(QIL_A9260, "CALAO QIL_A9260") 258MACHINE_START(QIL_A9260, "CALAO QIL_A9260")
259 /* Maintainer: calao-systems */ 259 /* Maintainer: calao-systems */
260 .timer = &at91sam926x_timer, 260 .init_time = at91sam926x_pit_init,
261 .map_io = at91_map_io, 261 .map_io = at91_map_io,
262 .handle_irq = at91_aic_handle_irq, 262 .handle_irq = at91_aic_handle_irq,
263 .init_early = ek_init_early, 263 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
index 9e5061bef0d0..690541b18cbc 100644
--- a/arch/arm/mach-at91/board-rm9200dk.c
+++ b/arch/arm/mach-at91/board-rm9200dk.c
@@ -219,7 +219,7 @@ static void __init dk_board_init(void)
219 219
220MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK") 220MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
221 /* Maintainer: SAN People/Atmel */ 221 /* Maintainer: SAN People/Atmel */
222 .timer = &at91rm9200_timer, 222 .init_time = at91rm9200_timer_init,
223 .map_io = at91_map_io, 223 .map_io = at91_map_io,
224 .handle_irq = at91_aic_handle_irq, 224 .handle_irq = at91_aic_handle_irq,
225 .init_early = dk_init_early, 225 .init_early = dk_init_early,
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c
index 58277dbc718f..8b17dadc1aba 100644
--- a/arch/arm/mach-at91/board-rm9200ek.c
+++ b/arch/arm/mach-at91/board-rm9200ek.c
@@ -186,7 +186,7 @@ static void __init ek_board_init(void)
186 186
187MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK") 187MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")
188 /* Maintainer: SAN People/Atmel */ 188 /* Maintainer: SAN People/Atmel */
189 .timer = &at91rm9200_timer, 189 .init_time = at91rm9200_timer_init,
190 .map_io = at91_map_io, 190 .map_io = at91_map_io,
191 .handle_irq = at91_aic_handle_irq, 191 .handle_irq = at91_aic_handle_irq,
192 .init_early = ek_init_early, 192 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c
index 2e8b8339a206..f6d7f1958c7e 100644
--- a/arch/arm/mach-at91/board-rsi-ews.c
+++ b/arch/arm/mach-at91/board-rsi-ews.c
@@ -222,7 +222,7 @@ static void __init rsi_ews_board_init(void)
222 222
223MACHINE_START(RSI_EWS, "RSI EWS") 223MACHINE_START(RSI_EWS, "RSI EWS")
224 /* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */ 224 /* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */
225 .timer = &at91rm9200_timer, 225 .init_time = at91rm9200_timer_init,
226 .map_io = at91_map_io, 226 .map_io = at91_map_io,
227 .handle_irq = at91_aic_handle_irq, 227 .handle_irq = at91_aic_handle_irq,
228 .init_early = rsi_ews_init_early, 228 .init_early = rsi_ews_init_early,
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
index b75fbf6003a1..43ee4dc43b50 100644
--- a/arch/arm/mach-at91/board-sam9-l9260.c
+++ b/arch/arm/mach-at91/board-sam9-l9260.c
@@ -218,7 +218,7 @@ static void __init ek_board_init(void)
218 218
219MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260") 219MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")
220 /* Maintainer: Olimex */ 220 /* Maintainer: Olimex */
221 .timer = &at91sam926x_timer, 221 .init_time = at91sam926x_pit_init,
222 .map_io = at91_map_io, 222 .map_io = at91_map_io,
223 .handle_irq = at91_aic_handle_irq, 223 .handle_irq = at91_aic_handle_irq,
224 .init_early = ek_init_early, 224 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
index f0135cd1d858..0b153c87521d 100644
--- a/arch/arm/mach-at91/board-sam9260ek.c
+++ b/arch/arm/mach-at91/board-sam9260ek.c
@@ -343,7 +343,7 @@ static void __init ek_board_init(void)
343 343
344MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") 344MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
345 /* Maintainer: Atmel */ 345 /* Maintainer: Atmel */
346 .timer = &at91sam926x_timer, 346 .init_time = at91sam926x_pit_init,
347 .map_io = at91_map_io, 347 .map_io = at91_map_io,
348 .handle_irq = at91_aic_handle_irq, 348 .handle_irq = at91_aic_handle_irq,
349 .init_early = ek_init_early, 349 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
index 13ebaa8e4100..b446645c7727 100644
--- a/arch/arm/mach-at91/board-sam9261ek.c
+++ b/arch/arm/mach-at91/board-sam9261ek.c
@@ -612,7 +612,7 @@ MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")
612MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK") 612MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")
613#endif 613#endif
614 /* Maintainer: Atmel */ 614 /* Maintainer: Atmel */
615 .timer = &at91sam926x_timer, 615 .init_time = at91sam926x_pit_init,
616 .map_io = at91_map_io, 616 .map_io = at91_map_io,
617 .handle_irq = at91_aic_handle_irq, 617 .handle_irq = at91_aic_handle_irq,
618 .init_early = ek_init_early, 618 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
index 89b9608742a7..3284df05df14 100644
--- a/arch/arm/mach-at91/board-sam9263ek.c
+++ b/arch/arm/mach-at91/board-sam9263ek.c
@@ -443,7 +443,7 @@ static void __init ek_board_init(void)
443 443
444MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") 444MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")
445 /* Maintainer: Atmel */ 445 /* Maintainer: Atmel */
446 .timer = &at91sam926x_timer, 446 .init_time = at91sam926x_pit_init,
447 .map_io = at91_map_io, 447 .map_io = at91_map_io,
448 .handle_irq = at91_aic_handle_irq, 448 .handle_irq = at91_aic_handle_irq,
449 .init_early = ek_init_early, 449 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
index 1b7dd9f688d3..f9cd1f2c7146 100644
--- a/arch/arm/mach-at91/board-sam9g20ek.c
+++ b/arch/arm/mach-at91/board-sam9g20ek.c
@@ -409,7 +409,7 @@ static void __init ek_board_init(void)
409 409
410MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") 410MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")
411 /* Maintainer: Atmel */ 411 /* Maintainer: Atmel */
412 .timer = &at91sam926x_timer, 412 .init_time = at91sam926x_pit_init,
413 .map_io = at91_map_io, 413 .map_io = at91_map_io,
414 .handle_irq = at91_aic_handle_irq, 414 .handle_irq = at91_aic_handle_irq,
415 .init_early = ek_init_early, 415 .init_early = ek_init_early,
@@ -419,7 +419,7 @@ MACHINE_END
419 419
420MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod") 420MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
421 /* Maintainer: Atmel */ 421 /* Maintainer: Atmel */
422 .timer = &at91sam926x_timer, 422 .init_time = at91sam926x_pit_init,
423 .map_io = at91_map_io, 423 .map_io = at91_map_io,
424 .handle_irq = at91_aic_handle_irq, 424 .handle_irq = at91_aic_handle_irq,
425 .init_early = ek_init_early, 425 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
index e4cc375e3a32..2a94896a1375 100644
--- a/arch/arm/mach-at91/board-sam9m10g45ek.c
+++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
@@ -502,7 +502,7 @@ static void __init ek_board_init(void)
502 502
503MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") 503MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK")
504 /* Maintainer: Atmel */ 504 /* Maintainer: Atmel */
505 .timer = &at91sam926x_timer, 505 .init_time = at91sam926x_pit_init,
506 .map_io = at91_map_io, 506 .map_io = at91_map_io,
507 .handle_irq = at91_aic_handle_irq, 507 .handle_irq = at91_aic_handle_irq,
508 .init_early = ek_init_early, 508 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
index 377a1097afa7..aa265dcf2128 100644
--- a/arch/arm/mach-at91/board-sam9rlek.c
+++ b/arch/arm/mach-at91/board-sam9rlek.c
@@ -320,7 +320,7 @@ static void __init ek_board_init(void)
320 320
321MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK") 321MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")
322 /* Maintainer: Atmel */ 322 /* Maintainer: Atmel */
323 .timer = &at91sam926x_timer, 323 .init_time = at91sam926x_pit_init,
324 .map_io = at91_map_io, 324 .map_io = at91_map_io,
325 .handle_irq = at91_aic_handle_irq, 325 .handle_irq = at91_aic_handle_irq,
326 .init_early = ek_init_early, 326 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
index 98771500ddb9..3aaa9784cf0e 100644
--- a/arch/arm/mach-at91/board-snapper9260.c
+++ b/arch/arm/mach-at91/board-snapper9260.c
@@ -177,7 +177,7 @@ static void __init snapper9260_board_init(void)
177} 177}
178 178
179MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module") 179MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module")
180 .timer = &at91sam926x_timer, 180 .init_time = at91sam926x_pit_init,
181 .map_io = at91_map_io, 181 .map_io = at91_map_io,
182 .handle_irq = at91_aic_handle_irq, 182 .handle_irq = at91_aic_handle_irq,
183 .init_early = snapper9260_init_early, 183 .init_early = snapper9260_init_early,
diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c
index 48a962b61fa3..a033b8df9fb2 100644
--- a/arch/arm/mach-at91/board-stamp9g20.c
+++ b/arch/arm/mach-at91/board-stamp9g20.c
@@ -272,7 +272,7 @@ static void __init stamp9g20evb_board_init(void)
272 272
273MACHINE_START(PORTUXG20, "taskit PortuxG20") 273MACHINE_START(PORTUXG20, "taskit PortuxG20")
274 /* Maintainer: taskit GmbH */ 274 /* Maintainer: taskit GmbH */
275 .timer = &at91sam926x_timer, 275 .init_time = at91sam926x_pit_init,
276 .map_io = at91_map_io, 276 .map_io = at91_map_io,
277 .handle_irq = at91_aic_handle_irq, 277 .handle_irq = at91_aic_handle_irq,
278 .init_early = stamp9g20_init_early, 278 .init_early = stamp9g20_init_early,
@@ -282,7 +282,7 @@ MACHINE_END
282 282
283MACHINE_START(STAMP9G20, "taskit Stamp9G20") 283MACHINE_START(STAMP9G20, "taskit Stamp9G20")
284 /* Maintainer: taskit GmbH */ 284 /* Maintainer: taskit GmbH */
285 .timer = &at91sam926x_timer, 285 .init_time = at91sam926x_pit_init,
286 .map_io = at91_map_io, 286 .map_io = at91_map_io,
287 .handle_irq = at91_aic_handle_irq, 287 .handle_irq = at91_aic_handle_irq,
288 .init_early = stamp9g20_init_early, 288 .init_early = stamp9g20_init_early,
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c
index c1060f96e589..2487d944a1bc 100644
--- a/arch/arm/mach-at91/board-usb-a926x.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -355,7 +355,7 @@ static void __init ek_board_init(void)
355 355
356MACHINE_START(USB_A9263, "CALAO USB_A9263") 356MACHINE_START(USB_A9263, "CALAO USB_A9263")
357 /* Maintainer: calao-systems */ 357 /* Maintainer: calao-systems */
358 .timer = &at91sam926x_timer, 358 .init_time = at91sam926x_pit_init,
359 .map_io = at91_map_io, 359 .map_io = at91_map_io,
360 .handle_irq = at91_aic_handle_irq, 360 .handle_irq = at91_aic_handle_irq,
361 .init_early = ek_init_early, 361 .init_early = ek_init_early,
@@ -365,7 +365,7 @@ MACHINE_END
365 365
366MACHINE_START(USB_A9260, "CALAO USB_A9260") 366MACHINE_START(USB_A9260, "CALAO USB_A9260")
367 /* Maintainer: calao-systems */ 367 /* Maintainer: calao-systems */
368 .timer = &at91sam926x_timer, 368 .init_time = at91sam926x_pit_init,
369 .map_io = at91_map_io, 369 .map_io = at91_map_io,
370 .handle_irq = at91_aic_handle_irq, 370 .handle_irq = at91_aic_handle_irq,
371 .init_early = ek_init_early, 371 .init_early = ek_init_early,
@@ -375,7 +375,7 @@ MACHINE_END
375 375
376MACHINE_START(USB_A9G20, "CALAO USB_A92G0") 376MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
377 /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */ 377 /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
378 .timer = &at91sam926x_timer, 378 .init_time = at91sam926x_pit_init,
379 .map_io = at91_map_io, 379 .map_io = at91_map_io,
380 .handle_irq = at91_aic_handle_irq, 380 .handle_irq = at91_aic_handle_irq,
381 .init_early = ek_init_early, 381 .init_early = ek_init_early,
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
index 8673aebcb85d..be083771df2e 100644
--- a/arch/arm/mach-at91/board-yl-9200.c
+++ b/arch/arm/mach-at91/board-yl-9200.c
@@ -587,7 +587,7 @@ static void __init yl9200_board_init(void)
587 587
588MACHINE_START(YL9200, "uCdragon YL-9200") 588MACHINE_START(YL9200, "uCdragon YL-9200")
589 /* Maintainer: S.Birtles */ 589 /* Maintainer: S.Birtles */
590 .timer = &at91rm9200_timer, 590 .init_time = at91rm9200_timer_init,
591 .map_io = at91_map_io, 591 .map_io = at91_map_io,
592 .handle_irq = at91_aic_handle_irq, 592 .handle_irq = at91_aic_handle_irq,
593 .init_early = yl9200_init_early, 593 .init_early = yl9200_init_early,
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
index fc593d615e7d..78ab06548658 100644
--- a/arch/arm/mach-at91/generic.h
+++ b/arch/arm/mach-at91/generic.h
@@ -36,12 +36,11 @@ extern int __init at91_aic5_of_init(struct device_node *node,
36 36
37 37
38 /* Timer */ 38 /* Timer */
39struct sys_timer;
40extern void at91rm9200_ioremap_st(u32 addr); 39extern void at91rm9200_ioremap_st(u32 addr);
41extern struct sys_timer at91rm9200_timer; 40extern void at91rm9200_timer_init(void);
42extern void at91sam926x_ioremap_pit(u32 addr); 41extern void at91sam926x_ioremap_pit(u32 addr);
43extern struct sys_timer at91sam926x_timer; 42extern void at91sam926x_pit_init(void);
44extern struct sys_timer at91x40_timer; 43extern void at91x40_timer_init(void);
45 44
46 /* Clocks */ 45 /* Clocks */
47#ifdef CONFIG_AT91_PMC_UNIT 46#ifdef CONFIG_AT91_PMC_UNIT
diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm.c
index 3a62f1b1cabc..3df68030cf68 100644
--- a/arch/arm/mach-bcm/board_bcm.c
+++ b/arch/arm/mach-bcm/board_bcm.c
@@ -31,10 +31,6 @@ static void timer_init(void)
31{ 31{
32} 32}
33 33
34static struct sys_timer timer = {
35 .init = timer_init,
36};
37
38static void __init init_irq(void) 34static void __init init_irq(void)
39{ 35{
40 of_irq_init(irq_match); 36 of_irq_init(irq_match);
@@ -50,7 +46,7 @@ static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, };
50 46
51DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") 47DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor")
52 .init_irq = init_irq, 48 .init_irq = init_irq,
53 .timer = &timer, 49 .init_time = timer_init,
54 .init_machine = board_init, 50 .init_machine = board_init,
55 .dt_compat = bcm11351_dt_compat, 51 .dt_compat = bcm11351_dt_compat,
56 .handle_irq = gic_handle_irq, 52 .handle_irq = gic_handle_irq,
diff --git a/arch/arm/mach-bcm2835/bcm2835.c b/arch/arm/mach-bcm2835/bcm2835.c
index f0d739f4b7a3..176d2d24782d 100644
--- a/arch/arm/mach-bcm2835/bcm2835.c
+++ b/arch/arm/mach-bcm2835/bcm2835.c
@@ -104,7 +104,7 @@ DT_MACHINE_START(BCM2835, "BCM2835")
104 .init_irq = bcm2835_init_irq, 104 .init_irq = bcm2835_init_irq,
105 .handle_irq = bcm2835_handle_irq, 105 .handle_irq = bcm2835_handle_irq,
106 .init_machine = bcm2835_init, 106 .init_machine = bcm2835_init,
107 .timer = &bcm2835_timer, 107 .init_time = bcm2835_timer_init,
108 .restart = bcm2835_restart, 108 .restart = bcm2835_restart,
109 .dt_compat = bcm2835_compat 109 .dt_compat = bcm2835_compat
110MACHINE_END 110MACHINE_END
diff --git a/arch/arm/mach-clps711x/board-autcpu12.c b/arch/arm/mach-clps711x/board-autcpu12.c
index 3fbf43f72589..f38584709df7 100644
--- a/arch/arm/mach-clps711x/board-autcpu12.c
+++ b/arch/arm/mach-clps711x/board-autcpu12.c
@@ -170,7 +170,7 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
170 .nr_irqs = CLPS711X_NR_IRQS, 170 .nr_irqs = CLPS711X_NR_IRQS,
171 .map_io = clps711x_map_io, 171 .map_io = clps711x_map_io,
172 .init_irq = clps711x_init_irq, 172 .init_irq = clps711x_init_irq,
173 .timer = &clps711x_timer, 173 .init_time = clps711x_timer_init,
174 .init_machine = autcpu12_init, 174 .init_machine = autcpu12_init,
175 .init_late = autcpu12_init_late, 175 .init_late = autcpu12_init_late,
176 .handle_irq = clps711x_handle_irq, 176 .handle_irq = clps711x_handle_irq,
diff --git a/arch/arm/mach-clps711x/board-cdb89712.c b/arch/arm/mach-clps711x/board-cdb89712.c
index 60900ddf97c9..baab7da33c9b 100644
--- a/arch/arm/mach-clps711x/board-cdb89712.c
+++ b/arch/arm/mach-clps711x/board-cdb89712.c
@@ -140,7 +140,7 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
140 .nr_irqs = CLPS711X_NR_IRQS, 140 .nr_irqs = CLPS711X_NR_IRQS,
141 .map_io = clps711x_map_io, 141 .map_io = clps711x_map_io,
142 .init_irq = clps711x_init_irq, 142 .init_irq = clps711x_init_irq,
143 .timer = &clps711x_timer, 143 .init_time = clps711x_timer_init,
144 .init_machine = cdb89712_init, 144 .init_machine = cdb89712_init,
145 .handle_irq = clps711x_handle_irq, 145 .handle_irq = clps711x_handle_irq,
146 .restart = clps711x_restart, 146 .restart = clps711x_restart,
diff --git a/arch/arm/mach-clps711x/board-clep7312.c b/arch/arm/mach-clps711x/board-clep7312.c
index 0b32a487183b..014aa3c19a03 100644
--- a/arch/arm/mach-clps711x/board-clep7312.c
+++ b/arch/arm/mach-clps711x/board-clep7312.c
@@ -40,7 +40,7 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
40 .fixup = fixup_clep7312, 40 .fixup = fixup_clep7312,
41 .map_io = clps711x_map_io, 41 .map_io = clps711x_map_io,
42 .init_irq = clps711x_init_irq, 42 .init_irq = clps711x_init_irq,
43 .timer = &clps711x_timer, 43 .init_time = clps711x_timer_init,
44 .handle_irq = clps711x_handle_irq, 44 .handle_irq = clps711x_handle_irq,
45 .restart = clps711x_restart, 45 .restart = clps711x_restart,
46MACHINE_END 46MACHINE_END
diff --git a/arch/arm/mach-clps711x/board-edb7211.c b/arch/arm/mach-clps711x/board-edb7211.c
index 71aa5cf2c0d3..5f928e9ed2ef 100644
--- a/arch/arm/mach-clps711x/board-edb7211.c
+++ b/arch/arm/mach-clps711x/board-edb7211.c
@@ -173,7 +173,7 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
173 .reserve = edb7211_reserve, 173 .reserve = edb7211_reserve,
174 .map_io = edb7211_map_io, 174 .map_io = edb7211_map_io,
175 .init_irq = clps711x_init_irq, 175 .init_irq = clps711x_init_irq,
176 .timer = &clps711x_timer, 176 .init_time = clps711x_timer_init,
177 .init_machine = edb7211_init, 177 .init_machine = edb7211_init,
178 .handle_irq = clps711x_handle_irq, 178 .handle_irq = clps711x_handle_irq,
179 .restart = clps711x_restart, 179 .restart = clps711x_restart,
diff --git a/arch/arm/mach-clps711x/board-fortunet.c b/arch/arm/mach-clps711x/board-fortunet.c
index 7d0125580366..c5675efc8c6a 100644
--- a/arch/arm/mach-clps711x/board-fortunet.c
+++ b/arch/arm/mach-clps711x/board-fortunet.c
@@ -78,7 +78,7 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
78 .fixup = fortunet_fixup, 78 .fixup = fortunet_fixup,
79 .map_io = clps711x_map_io, 79 .map_io = clps711x_map_io,
80 .init_irq = clps711x_init_irq, 80 .init_irq = clps711x_init_irq,
81 .timer = &clps711x_timer, 81 .init_time = clps711x_timer_init,
82 .handle_irq = clps711x_handle_irq, 82 .handle_irq = clps711x_handle_irq,
83 .restart = clps711x_restart, 83 .restart = clps711x_restart,
84MACHINE_END 84MACHINE_END
diff --git a/arch/arm/mach-clps711x/board-p720t.c b/arch/arm/mach-clps711x/board-p720t.c
index 1518fc83babd..8d3ee6771135 100644
--- a/arch/arm/mach-clps711x/board-p720t.c
+++ b/arch/arm/mach-clps711x/board-p720t.c
@@ -224,7 +224,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
224 .map_io = p720t_map_io, 224 .map_io = p720t_map_io,
225 .init_early = p720t_init_early, 225 .init_early = p720t_init_early,
226 .init_irq = clps711x_init_irq, 226 .init_irq = clps711x_init_irq,
227 .timer = &clps711x_timer, 227 .init_time = clps711x_timer_init,
228 .init_machine = p720t_init, 228 .init_machine = p720t_init,
229 .init_late = p720t_init_late, 229 .init_late = p720t_init_late,
230 .handle_irq = clps711x_handle_irq, 230 .handle_irq = clps711x_handle_irq,
diff --git a/arch/arm/mach-clps711x/common.c b/arch/arm/mach-clps711x/common.c
index e046439573ee..20ff50f3ccf0 100644
--- a/arch/arm/mach-clps711x/common.c
+++ b/arch/arm/mach-clps711x/common.c
@@ -282,7 +282,7 @@ static void add_fixed_clk(struct clk *clk, const char *name, int rate)
282 clk_register_clkdev(clk, name, NULL); 282 clk_register_clkdev(clk, name, NULL);
283} 283}
284 284
285static void __init clps711x_timer_init(void) 285void __init clps711x_timer_init(void)
286{ 286{
287 int osc, ext, pll, cpu, bus, timl, timh, uart, spi; 287 int osc, ext, pll, cpu, bus, timl, timh, uart, spi;
288 u32 tmp; 288 u32 tmp;
@@ -345,10 +345,6 @@ static void __init clps711x_timer_init(void)
345 setup_irq(IRQ_TC2OI, &clps711x_timer_irq); 345 setup_irq(IRQ_TC2OI, &clps711x_timer_irq);
346} 346}
347 347
348struct sys_timer clps711x_timer = {
349 .init = clps711x_timer_init,
350};
351
352void clps711x_restart(char mode, const char *cmd) 348void clps711x_restart(char mode, const char *cmd)
353{ 349{
354 soft_restart(0); 350 soft_restart(0);
diff --git a/arch/arm/mach-clps711x/common.h b/arch/arm/mach-clps711x/common.h
index b7c0c75c90c0..f84a7292c70e 100644
--- a/arch/arm/mach-clps711x/common.h
+++ b/arch/arm/mach-clps711x/common.h
@@ -8,10 +8,8 @@
8#define CLPS711X_NR_GPIO (4 * 8 + 3) 8#define CLPS711X_NR_GPIO (4 * 8 + 3)
9#define CLPS711X_GPIO(prt, bit) ((prt) * 8 + (bit)) 9#define CLPS711X_GPIO(prt, bit) ((prt) * 8 + (bit))
10 10
11struct sys_timer;
12
13extern void clps711x_map_io(void); 11extern void clps711x_map_io(void);
14extern void clps711x_init_irq(void); 12extern void clps711x_init_irq(void);
13extern void clps711x_timer_init(void);
15extern void clps711x_handle_irq(struct pt_regs *regs); 14extern void clps711x_handle_irq(struct pt_regs *regs);
16extern void clps711x_restart(char mode, const char *cmd); 15extern void clps711x_restart(char mode, const char *cmd);
17extern struct sys_timer clps711x_timer;
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index ae305397003c..3c86f910b647 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -250,7 +250,7 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
250 .atag_offset = 0x100, 250 .atag_offset = 0x100,
251 .map_io = cns3420_map_io, 251 .map_io = cns3420_map_io,
252 .init_irq = cns3xxx_init_irq, 252 .init_irq = cns3xxx_init_irq,
253 .timer = &cns3xxx_timer, 253 .init_time = cns3xxx_timer_init,
254 .handle_irq = gic_handle_irq, 254 .handle_irq = gic_handle_irq,
255 .init_machine = cns3420_init, 255 .init_machine = cns3420_init,
256 .restart = cns3xxx_restart, 256 .restart = cns3xxx_restart,
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c
index 031805b1428d..1754f8f4f34c 100644
--- a/arch/arm/mach-cns3xxx/core.c
+++ b/arch/arm/mach-cns3xxx/core.c
@@ -235,17 +235,13 @@ static void __init __cns3xxx_timer_init(unsigned int timer_irq)
235 cns3xxx_clockevents_init(timer_irq); 235 cns3xxx_clockevents_init(timer_irq);
236} 236}
237 237
238static void __init cns3xxx_timer_init(void) 238void __init cns3xxx_timer_init(void)
239{ 239{
240 cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT); 240 cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT);
241 241
242 __cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0); 242 __cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0);
243} 243}
244 244
245struct sys_timer cns3xxx_timer = {
246 .init = cns3xxx_timer_init,
247};
248
249#ifdef CONFIG_CACHE_L2X0 245#ifdef CONFIG_CACHE_L2X0
250 246
251void __init cns3xxx_l2x0_init(void) 247void __init cns3xxx_l2x0_init(void)
diff --git a/arch/arm/mach-cns3xxx/core.h b/arch/arm/mach-cns3xxx/core.h
index 4894b8c17151..b23b17b4da10 100644
--- a/arch/arm/mach-cns3xxx/core.h
+++ b/arch/arm/mach-cns3xxx/core.h
@@ -11,7 +11,7 @@
11#ifndef __CNS3XXX_CORE_H 11#ifndef __CNS3XXX_CORE_H
12#define __CNS3XXX_CORE_H 12#define __CNS3XXX_CORE_H
13 13
14extern struct sys_timer cns3xxx_timer; 14extern void cns3xxx_timer_init(void);
15 15
16#ifdef CONFIG_CACHE_L2X0 16#ifdef CONFIG_CACHE_L2X0
17void __init cns3xxx_l2x0_init(void); 17void __init cns3xxx_l2x0_init(void);
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index 95b5e102ceb1..e3742716cbaa 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -679,7 +679,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
679 .atag_offset = 0x100, 679 .atag_offset = 0x100,
680 .map_io = da830_evm_map_io, 680 .map_io = da830_evm_map_io,
681 .init_irq = cp_intc_init, 681 .init_irq = cp_intc_init,
682 .timer = &davinci_timer, 682 .init_time = davinci_timer_init,
683 .init_machine = da830_evm_init, 683 .init_machine = da830_evm_init,
684 .init_late = davinci_init_late, 684 .init_late = davinci_init_late,
685 .dma_zone_size = SZ_128M, 685 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 0299915575a8..3b3356097bb0 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -1599,7 +1599,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
1599 .atag_offset = 0x100, 1599 .atag_offset = 0x100,
1600 .map_io = da850_evm_map_io, 1600 .map_io = da850_evm_map_io,
1601 .init_irq = cp_intc_init, 1601 .init_irq = cp_intc_init,
1602 .timer = &davinci_timer, 1602 .init_time = davinci_timer_init,
1603 .init_machine = da850_evm_init, 1603 .init_machine = da850_evm_init,
1604 .init_late = davinci_init_late, 1604 .init_late = davinci_init_late,
1605 .dma_zone_size = SZ_128M, 1605 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index cdf8d0746e79..147b8e1a4407 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -355,7 +355,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
355 .atag_offset = 0x100, 355 .atag_offset = 0x100,
356 .map_io = dm355_evm_map_io, 356 .map_io = dm355_evm_map_io,
357 .init_irq = davinci_irq_init, 357 .init_irq = davinci_irq_init,
358 .timer = &davinci_timer, 358 .init_time = davinci_timer_init,
359 .init_machine = dm355_evm_init, 359 .init_machine = dm355_evm_init,
360 .init_late = davinci_init_late, 360 .init_late = davinci_init_late,
361 .dma_zone_size = SZ_128M, 361 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
index d41954507fc2..dff4ddc5ef81 100644
--- a/arch/arm/mach-davinci/board-dm355-leopard.c
+++ b/arch/arm/mach-davinci/board-dm355-leopard.c
@@ -274,7 +274,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
274 .atag_offset = 0x100, 274 .atag_offset = 0x100,
275 .map_io = dm355_leopard_map_io, 275 .map_io = dm355_leopard_map_io,
276 .init_irq = davinci_irq_init, 276 .init_irq = davinci_irq_init,
277 .timer = &davinci_timer, 277 .init_time = davinci_timer_init,
278 .init_machine = dm355_leopard_init, 278 .init_machine = dm355_leopard_init,
279 .init_late = davinci_init_late, 279 .init_late = davinci_init_late,
280 .dma_zone_size = SZ_128M, 280 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index 5d49c75388ca..c2d4958a0cb6 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -616,7 +616,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
616 .atag_offset = 0x100, 616 .atag_offset = 0x100,
617 .map_io = dm365_evm_map_io, 617 .map_io = dm365_evm_map_io,
618 .init_irq = davinci_irq_init, 618 .init_irq = davinci_irq_init,
619 .timer = &davinci_timer, 619 .init_time = davinci_timer_init,
620 .init_machine = dm365_evm_init, 620 .init_machine = dm365_evm_init,
621 .init_late = davinci_init_late, 621 .init_late = davinci_init_late,
622 .dma_zone_size = SZ_128M, 622 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index f5e018de7fa5..e4a16f98e6a2 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -825,7 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
825 .atag_offset = 0x100, 825 .atag_offset = 0x100,
826 .map_io = davinci_evm_map_io, 826 .map_io = davinci_evm_map_io,
827 .init_irq = davinci_irq_init, 827 .init_irq = davinci_irq_init,
828 .timer = &davinci_timer, 828 .init_time = davinci_timer_init,
829 .init_machine = davinci_evm_init, 829 .init_machine = davinci_evm_init,
830 .init_late = davinci_init_late, 830 .init_late = davinci_init_late,
831 .dma_zone_size = SZ_128M, 831 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 9211e8800c79..a9f2054c3e9b 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -818,7 +818,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
818 .atag_offset = 0x100, 818 .atag_offset = 0x100,
819 .map_io = davinci_map_io, 819 .map_io = davinci_map_io,
820 .init_irq = davinci_irq_init, 820 .init_irq = davinci_irq_init,
821 .timer = &davinci_timer, 821 .init_time = davinci_timer_init,
822 .init_machine = evm_init, 822 .init_machine = evm_init,
823 .init_late = davinci_init_late, 823 .init_late = davinci_init_late,
824 .dma_zone_size = SZ_128M, 824 .dma_zone_size = SZ_128M,
@@ -829,7 +829,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
829 .atag_offset = 0x100, 829 .atag_offset = 0x100,
830 .map_io = davinci_map_io, 830 .map_io = davinci_map_io,
831 .init_irq = davinci_irq_init, 831 .init_irq = davinci_irq_init,
832 .timer = &davinci_timer, 832 .init_time = davinci_timer_init,
833 .init_machine = evm_init, 833 .init_machine = evm_init,
834 .init_late = davinci_init_late, 834 .init_late = davinci_init_late,
835 .dma_zone_size = SZ_128M, 835 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 43e4a0d663fa..b0df578bf744 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -570,7 +570,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
570 .atag_offset = 0x100, 570 .atag_offset = 0x100,
571 .map_io = mityomapl138_map_io, 571 .map_io = mityomapl138_map_io,
572 .init_irq = cp_intc_init, 572 .init_irq = cp_intc_init,
573 .timer = &davinci_timer, 573 .init_time = davinci_timer_init,
574 .init_machine = mityomapl138_init, 574 .init_machine = mityomapl138_init,
575 .init_late = davinci_init_late, 575 .init_late = davinci_init_late,
576 .dma_zone_size = SZ_128M, 576 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c
index 3e3e3afebf88..1c98107527fa 100644
--- a/arch/arm/mach-davinci/board-neuros-osd2.c
+++ b/arch/arm/mach-davinci/board-neuros-osd2.c
@@ -237,7 +237,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
237 .atag_offset = 0x100, 237 .atag_offset = 0x100,
238 .map_io = davinci_ntosd2_map_io, 238 .map_io = davinci_ntosd2_map_io,
239 .init_irq = davinci_irq_init, 239 .init_irq = davinci_irq_init,
240 .timer = &davinci_timer, 240 .init_time = davinci_timer_init,
241 .init_machine = davinci_ntosd2_init, 241 .init_machine = davinci_ntosd2_init,
242 .init_late = davinci_init_late, 242 .init_late = davinci_init_late,
243 .dma_zone_size = SZ_128M, 243 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index dc1208e9e664..deb3922612b9 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -341,7 +341,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
341 .atag_offset = 0x100, 341 .atag_offset = 0x100,
342 .map_io = omapl138_hawk_map_io, 342 .map_io = omapl138_hawk_map_io,
343 .init_irq = cp_intc_init, 343 .init_irq = cp_intc_init,
344 .timer = &davinci_timer, 344 .init_time = davinci_timer_init,
345 .init_machine = omapl138_hawk_init, 345 .init_machine = omapl138_hawk_init,
346 .init_late = davinci_init_late, 346 .init_late = davinci_init_late,
347 .dma_zone_size = SZ_128M, 347 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index 6957787fa7f3..739be7e738fe 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -155,7 +155,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
155 .atag_offset = 0x100, 155 .atag_offset = 0x100,
156 .map_io = davinci_sffsdr_map_io, 156 .map_io = davinci_sffsdr_map_io,
157 .init_irq = davinci_irq_init, 157 .init_irq = davinci_irq_init,
158 .timer = &davinci_timer, 158 .init_time = davinci_timer_init,
159 .init_machine = davinci_sffsdr_init, 159 .init_machine = davinci_sffsdr_init,
160 .init_late = davinci_init_late, 160 .init_late = davinci_init_late,
161 .dma_zone_size = SZ_128M, 161 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-tnetv107x-evm.c b/arch/arm/mach-davinci/board-tnetv107x-evm.c
index be3099733b1f..4f416023d4e2 100644
--- a/arch/arm/mach-davinci/board-tnetv107x-evm.c
+++ b/arch/arm/mach-davinci/board-tnetv107x-evm.c
@@ -280,7 +280,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")
280 .atag_offset = 0x100, 280 .atag_offset = 0x100,
281 .map_io = tnetv107x_init, 281 .map_io = tnetv107x_init,
282 .init_irq = cp_intc_init, 282 .init_irq = cp_intc_init,
283 .timer = &davinci_timer, 283 .init_time = davinci_timer_init,
284 .init_machine = tnetv107x_evm_board_init, 284 .init_machine = tnetv107x_evm_board_init,
285 .init_late = davinci_init_late, 285 .init_late = davinci_init_late,
286 .dma_zone_size = SZ_128M, 286 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index 37c27af18fa0..9a7c76efc8f8 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -56,7 +56,7 @@ static const char *da850_boards_compat[] __initdata = {
56DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x") 56DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
57 .map_io = da850_init, 57 .map_io = da850_init,
58 .init_irq = da8xx_init_irq, 58 .init_irq = da8xx_init_irq,
59 .timer = &davinci_timer, 59 .init_time = davinci_timer_init,
60 .init_machine = da850_init_machine, 60 .init_machine = da850_init_machine,
61 .dt_compat = da850_boards_compat, 61 .dt_compat = da850_boards_compat,
62 .init_late = davinci_init_late, 62 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 046c7238a3d6..b124b77c90c5 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -15,9 +15,7 @@
15#include <linux/compiler.h> 15#include <linux/compiler.h>
16#include <linux/types.h> 16#include <linux/types.h>
17 17
18struct sys_timer; 18extern void davinci_timer_init(void);
19
20extern struct sys_timer davinci_timer;
21 19
22extern void davinci_irq_init(void); 20extern void davinci_irq_init(void);
23extern void __iomem *davinci_intc_base; 21extern void __iomem *davinci_intc_base;
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 9847938785ca..bad361ec1666 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -337,7 +337,7 @@ static struct clock_event_device clockevent_davinci = {
337}; 337};
338 338
339 339
340static void __init davinci_timer_init(void) 340void __init davinci_timer_init(void)
341{ 341{
342 struct clk *timer_clk; 342 struct clk *timer_clk;
343 struct davinci_soc_info *soc_info = &davinci_soc_info; 343 struct davinci_soc_info *soc_info = &davinci_soc_info;
@@ -410,11 +410,6 @@ static void __init davinci_timer_init(void)
410 timer32_config(&timers[i]); 410 timer32_config(&timers[i]);
411} 411}
412 412
413struct sys_timer davinci_timer = {
414 .init = davinci_timer_init,
415};
416
417
418/* reset board using watchdog timer */ 413/* reset board using watchdog timer */
419void davinci_watchdog_reset(struct platform_device *pdev) 414void davinci_watchdog_reset(struct platform_device *pdev)
420{ 415{
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
index 792b4e2e24f1..0dc39cf30fdd 100644
--- a/arch/arm/mach-dove/cm-a510.c
+++ b/arch/arm/mach-dove/cm-a510.c
@@ -92,6 +92,6 @@ MACHINE_START(CM_A510, "Compulab CM-A510 Board")
92 .map_io = dove_map_io, 92 .map_io = dove_map_io,
93 .init_early = dove_init_early, 93 .init_early = dove_init_early,
94 .init_irq = dove_init_irq, 94 .init_irq = dove_init_irq,
95 .timer = &dove_timer, 95 .init_time = dove_timer_init,
96 .restart = dove_restart, 96 .restart = dove_restart,
97MACHINE_END 97MACHINE_END
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index 89f4f993cd03..0c7911b3e155 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -242,17 +242,13 @@ static int __init dove_find_tclk(void)
242 return 166666667; 242 return 166666667;
243} 243}
244 244
245static void __init dove_timer_init(void) 245void __init dove_timer_init(void)
246{ 246{
247 dove_tclk = dove_find_tclk(); 247 dove_tclk = dove_find_tclk();
248 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR, 248 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
249 IRQ_DOVE_BRIDGE, dove_tclk); 249 IRQ_DOVE_BRIDGE, dove_tclk);
250} 250}
251 251
252struct sys_timer dove_timer = {
253 .init = dove_timer_init,
254};
255
256/***************************************************************************** 252/*****************************************************************************
257 * Cryptographic Engines and Security Accelerator (CESA) 253 * Cryptographic Engines and Security Accelerator (CESA)
258 ****************************************************************************/ 254 ****************************************************************************/
@@ -454,7 +450,7 @@ DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)")
454 .map_io = dove_map_io, 450 .map_io = dove_map_io,
455 .init_early = dove_init_early, 451 .init_early = dove_init_early,
456 .init_irq = orion_dt_init_irq, 452 .init_irq = orion_dt_init_irq,
457 .timer = &dove_timer, 453 .init_time = dove_timer_init,
458 .init_machine = dove_dt_init, 454 .init_machine = dove_dt_init,
459 .restart = dove_restart, 455 .restart = dove_restart,
460 .dt_compat = dove_dt_board_compat, 456 .dt_compat = dove_dt_board_compat,
diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h
index 1a233404b735..ee59fba4c6d1 100644
--- a/arch/arm/mach-dove/common.h
+++ b/arch/arm/mach-dove/common.h
@@ -14,7 +14,7 @@
14struct mv643xx_eth_platform_data; 14struct mv643xx_eth_platform_data;
15struct mv_sata_platform_data; 15struct mv_sata_platform_data;
16 16
17extern struct sys_timer dove_timer; 17extern void dove_timer_init(void);
18 18
19/* 19/*
20 * Basic Dove init functions used early by machine-setup. 20 * Basic Dove init functions used early by machine-setup.
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c
index bc2867f11346..76e26f949c27 100644
--- a/arch/arm/mach-dove/dove-db-setup.c
+++ b/arch/arm/mach-dove/dove-db-setup.c
@@ -98,6 +98,6 @@ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
98 .map_io = dove_map_io, 98 .map_io = dove_map_io,
99 .init_early = dove_init_early, 99 .init_early = dove_init_early,
100 .init_irq = dove_init_irq, 100 .init_irq = dove_init_irq,
101 .timer = &dove_timer, 101 .init_time = dove_timer_init,
102 .restart = dove_restart, 102 .restart = dove_restart,
103MACHINE_END 103MACHINE_END
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c
index f0fe6b5350e2..b13cc74114db 100644
--- a/arch/arm/mach-ebsa110/core.c
+++ b/arch/arm/mach-ebsa110/core.c
@@ -158,7 +158,7 @@ static void __init ebsa110_init_early(void)
158 * interrupt, then the PIT counter will roll over (ie, be negative). 158 * interrupt, then the PIT counter will roll over (ie, be negative).
159 * This actually works out to be convenient. 159 * This actually works out to be convenient.
160 */ 160 */
161static unsigned long ebsa110_gettimeoffset(void) 161static u32 ebsa110_gettimeoffset(void)
162{ 162{
163 unsigned long offset, count; 163 unsigned long offset, count;
164 164
@@ -181,7 +181,7 @@ static unsigned long ebsa110_gettimeoffset(void)
181 */ 181 */
182 offset = offset * (1000000 / HZ) / COUNT; 182 offset = offset * (1000000 / HZ) / COUNT;
183 183
184 return offset; 184 return offset * 1000;
185} 185}
186 186
187static irqreturn_t 187static irqreturn_t
@@ -213,8 +213,10 @@ static struct irqaction ebsa110_timer_irq = {
213/* 213/*
214 * Set up timer interrupt. 214 * Set up timer interrupt.
215 */ 215 */
216static void __init ebsa110_timer_init(void) 216void __init ebsa110_timer_init(void)
217{ 217{
218 arch_gettimeoffset = ebsa110_gettimeoffset;
219
218 /* 220 /*
219 * Timer 1, mode 2, LSB/MSB 221 * Timer 1, mode 2, LSB/MSB
220 */ 222 */
@@ -225,11 +227,6 @@ static void __init ebsa110_timer_init(void)
225 setup_irq(IRQ_EBSA110_TIMER0, &ebsa110_timer_irq); 227 setup_irq(IRQ_EBSA110_TIMER0, &ebsa110_timer_irq);
226} 228}
227 229
228static struct sys_timer ebsa110_timer = {
229 .init = ebsa110_timer_init,
230 .offset = ebsa110_gettimeoffset,
231};
232
233static struct plat_serial8250_port serial_platform_data[] = { 230static struct plat_serial8250_port serial_platform_data[] = {
234 { 231 {
235 .iobase = 0x3f8, 232 .iobase = 0x3f8,
@@ -328,6 +325,6 @@ MACHINE_START(EBSA110, "EBSA110")
328 .map_io = ebsa110_map_io, 325 .map_io = ebsa110_map_io,
329 .init_early = ebsa110_init_early, 326 .init_early = ebsa110_init_early,
330 .init_irq = ebsa110_init_irq, 327 .init_irq = ebsa110_init_irq,
331 .timer = &ebsa110_timer, 328 .init_time = ebsa110_timer_init,
332 .restart = ebsa110_restart, 329 .restart = ebsa110_restart,
333MACHINE_END 330MACHINE_END
diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c
index 41383bf03d4b..82d9c788535a 100644
--- a/arch/arm/mach-ep93xx/adssphere.c
+++ b/arch/arm/mach-ep93xx/adssphere.c
@@ -40,7 +40,7 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")
40 .map_io = ep93xx_map_io, 40 .map_io = ep93xx_map_io,
41 .init_irq = ep93xx_init_irq, 41 .init_irq = ep93xx_init_irq,
42 .handle_irq = vic_handle_irq, 42 .handle_irq = vic_handle_irq,
43 .timer = &ep93xx_timer, 43 .init_time = ep93xx_timer_init,
44 .init_machine = adssphere_init_machine, 44 .init_machine = adssphere_init_machine,
45 .init_late = ep93xx_init_late, 45 .init_late = ep93xx_init_late,
46 .restart = ep93xx_restart, 46 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index e85bf17f2d2a..ee27b4b0ab07 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -140,11 +140,29 @@ static struct irqaction ep93xx_timer_irq = {
140 .handler = ep93xx_timer_interrupt, 140 .handler = ep93xx_timer_interrupt,
141}; 141};
142 142
143static void __init ep93xx_timer_init(void) 143static u32 ep93xx_gettimeoffset(void)
144{
145 int offset;
146
147 offset = __raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time;
148
149 /*
150 * Timer 4 is based on a 983.04 kHz reference clock,
151 * so dividing by 983040 gives the fraction of a second,
152 * so dividing by 0.983040 converts to uS.
153 * Refactor the calculation to avoid overflow.
154 * Finally, multiply by 1000 to give nS.
155 */
156 return (offset + (53 * offset / 3072)) * 1000;
157}
158
159void __init ep93xx_timer_init(void)
144{ 160{
145 u32 tmode = EP93XX_TIMER123_CONTROL_MODE | 161 u32 tmode = EP93XX_TIMER123_CONTROL_MODE |
146 EP93XX_TIMER123_CONTROL_CLKSEL; 162 EP93XX_TIMER123_CONTROL_CLKSEL;
147 163
164 arch_gettimeoffset = ep93xx_gettimeoffset;
165
148 /* Enable periodic HZ timer. */ 166 /* Enable periodic HZ timer. */
149 __raw_writel(tmode, EP93XX_TIMER1_CONTROL); 167 __raw_writel(tmode, EP93XX_TIMER1_CONTROL);
150 __raw_writel(TIMER1_RELOAD, EP93XX_TIMER1_LOAD); 168 __raw_writel(TIMER1_RELOAD, EP93XX_TIMER1_LOAD);
@@ -158,21 +176,6 @@ static void __init ep93xx_timer_init(void)
158 setup_irq(IRQ_EP93XX_TIMER1, &ep93xx_timer_irq); 176 setup_irq(IRQ_EP93XX_TIMER1, &ep93xx_timer_irq);
159} 177}
160 178
161static unsigned long ep93xx_gettimeoffset(void)
162{
163 int offset;
164
165 offset = __raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time;
166
167 /* Calculate (1000000 / 983040) * offset. */
168 return offset + (53 * offset / 3072);
169}
170
171struct sys_timer ep93xx_timer = {
172 .init = ep93xx_timer_init,
173 .offset = ep93xx_gettimeoffset,
174};
175
176 179
177/************************************************************************* 180/*************************************************************************
178 * EP93xx IRQ handling 181 * EP93xx IRQ handling
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c
index b8f53d57a299..ac260519c9e9 100644
--- a/arch/arm/mach-ep93xx/edb93xx.c
+++ b/arch/arm/mach-ep93xx/edb93xx.c
@@ -277,7 +277,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board")
277 .map_io = ep93xx_map_io, 277 .map_io = ep93xx_map_io,
278 .init_irq = ep93xx_init_irq, 278 .init_irq = ep93xx_init_irq,
279 .handle_irq = vic_handle_irq, 279 .handle_irq = vic_handle_irq,
280 .timer = &ep93xx_timer, 280 .init_time = ep93xx_timer_init,
281 .init_machine = edb93xx_init_machine, 281 .init_machine = edb93xx_init_machine,
282 .init_late = ep93xx_init_late, 282 .init_late = ep93xx_init_late,
283 .restart = ep93xx_restart, 283 .restart = ep93xx_restart,
@@ -291,7 +291,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
291 .map_io = ep93xx_map_io, 291 .map_io = ep93xx_map_io,
292 .init_irq = ep93xx_init_irq, 292 .init_irq = ep93xx_init_irq,
293 .handle_irq = vic_handle_irq, 293 .handle_irq = vic_handle_irq,
294 .timer = &ep93xx_timer, 294 .init_time = ep93xx_timer_init,
295 .init_machine = edb93xx_init_machine, 295 .init_machine = edb93xx_init_machine,
296 .init_late = ep93xx_init_late, 296 .init_late = ep93xx_init_late,
297 .restart = ep93xx_restart, 297 .restart = ep93xx_restart,
@@ -305,7 +305,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
305 .map_io = ep93xx_map_io, 305 .map_io = ep93xx_map_io,
306 .init_irq = ep93xx_init_irq, 306 .init_irq = ep93xx_init_irq,
307 .handle_irq = vic_handle_irq, 307 .handle_irq = vic_handle_irq,
308 .timer = &ep93xx_timer, 308 .init_time = ep93xx_timer_init,
309 .init_machine = edb93xx_init_machine, 309 .init_machine = edb93xx_init_machine,
310 .init_late = ep93xx_init_late, 310 .init_late = ep93xx_init_late,
311 .restart = ep93xx_restart, 311 .restart = ep93xx_restart,
@@ -319,7 +319,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
319 .map_io = ep93xx_map_io, 319 .map_io = ep93xx_map_io,
320 .init_irq = ep93xx_init_irq, 320 .init_irq = ep93xx_init_irq,
321 .handle_irq = vic_handle_irq, 321 .handle_irq = vic_handle_irq,
322 .timer = &ep93xx_timer, 322 .init_time = ep93xx_timer_init,
323 .init_machine = edb93xx_init_machine, 323 .init_machine = edb93xx_init_machine,
324 .init_late = ep93xx_init_late, 324 .init_late = ep93xx_init_late,
325 .restart = ep93xx_restart, 325 .restart = ep93xx_restart,
@@ -333,7 +333,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")
333 .map_io = ep93xx_map_io, 333 .map_io = ep93xx_map_io,
334 .init_irq = ep93xx_init_irq, 334 .init_irq = ep93xx_init_irq,
335 .handle_irq = vic_handle_irq, 335 .handle_irq = vic_handle_irq,
336 .timer = &ep93xx_timer, 336 .init_time = ep93xx_timer_init,
337 .init_machine = edb93xx_init_machine, 337 .init_machine = edb93xx_init_machine,
338 .init_late = ep93xx_init_late, 338 .init_late = ep93xx_init_late,
339 .restart = ep93xx_restart, 339 .restart = ep93xx_restart,
@@ -347,7 +347,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
347 .map_io = ep93xx_map_io, 347 .map_io = ep93xx_map_io,
348 .init_irq = ep93xx_init_irq, 348 .init_irq = ep93xx_init_irq,
349 .handle_irq = vic_handle_irq, 349 .handle_irq = vic_handle_irq,
350 .timer = &ep93xx_timer, 350 .init_time = ep93xx_timer_init,
351 .init_machine = edb93xx_init_machine, 351 .init_machine = edb93xx_init_machine,
352 .init_late = ep93xx_init_late, 352 .init_late = ep93xx_init_late,
353 .restart = ep93xx_restart, 353 .restart = ep93xx_restart,
@@ -361,7 +361,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
361 .map_io = ep93xx_map_io, 361 .map_io = ep93xx_map_io,
362 .init_irq = ep93xx_init_irq, 362 .init_irq = ep93xx_init_irq,
363 .handle_irq = vic_handle_irq, 363 .handle_irq = vic_handle_irq,
364 .timer = &ep93xx_timer, 364 .init_time = ep93xx_timer_init,
365 .init_machine = edb93xx_init_machine, 365 .init_machine = edb93xx_init_machine,
366 .init_late = ep93xx_init_late, 366 .init_late = ep93xx_init_late,
367 .restart = ep93xx_restart, 367 .restart = ep93xx_restart,
@@ -375,7 +375,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
375 .map_io = ep93xx_map_io, 375 .map_io = ep93xx_map_io,
376 .init_irq = ep93xx_init_irq, 376 .init_irq = ep93xx_init_irq,
377 .handle_irq = vic_handle_irq, 377 .handle_irq = vic_handle_irq,
378 .timer = &ep93xx_timer, 378 .init_time = ep93xx_timer_init,
379 .init_machine = edb93xx_init_machine, 379 .init_machine = edb93xx_init_machine,
380 .init_late = ep93xx_init_late, 380 .init_late = ep93xx_init_late,
381 .restart = ep93xx_restart, 381 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c
index 7fd705b5efe4..76c50f42bd71 100644
--- a/arch/arm/mach-ep93xx/gesbc9312.c
+++ b/arch/arm/mach-ep93xx/gesbc9312.c
@@ -40,7 +40,7 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
40 .map_io = ep93xx_map_io, 40 .map_io = ep93xx_map_io,
41 .init_irq = ep93xx_init_irq, 41 .init_irq = ep93xx_init_irq,
42 .handle_irq = vic_handle_irq, 42 .handle_irq = vic_handle_irq,
43 .timer = &ep93xx_timer, 43 .init_time = ep93xx_timer_init,
44 .init_machine = gesbc9312_init_machine, 44 .init_machine = gesbc9312_init_machine,
45 .init_late = ep93xx_init_late, 45 .init_late = ep93xx_init_late,
46 .restart = ep93xx_restart, 46 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index 33a5122c6dc8..a14e1b37beff 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -53,7 +53,7 @@ int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
53void ep93xx_ide_release_gpio(struct platform_device *pdev); 53void ep93xx_ide_release_gpio(struct platform_device *pdev);
54 54
55void ep93xx_init_devices(void); 55void ep93xx_init_devices(void);
56extern struct sys_timer ep93xx_timer; 56extern void ep93xx_timer_init(void);
57 57
58void ep93xx_restart(char, const char *); 58void ep93xx_restart(char, const char *);
59void ep93xx_init_late(void); 59void ep93xx_init_late(void);
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c
index 3d7cdab725b2..777cd2170f8a 100644
--- a/arch/arm/mach-ep93xx/micro9.c
+++ b/arch/arm/mach-ep93xx/micro9.c
@@ -83,7 +83,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High")
83 .map_io = ep93xx_map_io, 83 .map_io = ep93xx_map_io,
84 .init_irq = ep93xx_init_irq, 84 .init_irq = ep93xx_init_irq,
85 .handle_irq = vic_handle_irq, 85 .handle_irq = vic_handle_irq,
86 .timer = &ep93xx_timer, 86 .init_time = ep93xx_timer_init,
87 .init_machine = micro9_init_machine, 87 .init_machine = micro9_init_machine,
88 .init_late = ep93xx_init_late, 88 .init_late = ep93xx_init_late,
89 .restart = ep93xx_restart, 89 .restart = ep93xx_restart,
@@ -97,7 +97,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid")
97 .map_io = ep93xx_map_io, 97 .map_io = ep93xx_map_io,
98 .init_irq = ep93xx_init_irq, 98 .init_irq = ep93xx_init_irq,
99 .handle_irq = vic_handle_irq, 99 .handle_irq = vic_handle_irq,
100 .timer = &ep93xx_timer, 100 .init_time = ep93xx_timer_init,
101 .init_machine = micro9_init_machine, 101 .init_machine = micro9_init_machine,
102 .init_late = ep93xx_init_late, 102 .init_late = ep93xx_init_late,
103 .restart = ep93xx_restart, 103 .restart = ep93xx_restart,
@@ -111,7 +111,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite")
111 .map_io = ep93xx_map_io, 111 .map_io = ep93xx_map_io,
112 .init_irq = ep93xx_init_irq, 112 .init_irq = ep93xx_init_irq,
113 .handle_irq = vic_handle_irq, 113 .handle_irq = vic_handle_irq,
114 .timer = &ep93xx_timer, 114 .init_time = ep93xx_timer_init,
115 .init_machine = micro9_init_machine, 115 .init_machine = micro9_init_machine,
116 .init_late = ep93xx_init_late, 116 .init_late = ep93xx_init_late,
117 .restart = ep93xx_restart, 117 .restart = ep93xx_restart,
@@ -125,7 +125,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim")
125 .map_io = ep93xx_map_io, 125 .map_io = ep93xx_map_io,
126 .init_irq = ep93xx_init_irq, 126 .init_irq = ep93xx_init_irq,
127 .handle_irq = vic_handle_irq, 127 .handle_irq = vic_handle_irq,
128 .timer = &ep93xx_timer, 128 .init_time = ep93xx_timer_init,
129 .init_machine = micro9_init_machine, 129 .init_machine = micro9_init_machine,
130 .init_late = ep93xx_init_late, 130 .init_late = ep93xx_init_late,
131 .restart = ep93xx_restart, 131 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c
index 0eb3f17a6fa2..6ff39ee2ad5d 100644
--- a/arch/arm/mach-ep93xx/simone.c
+++ b/arch/arm/mach-ep93xx/simone.c
@@ -84,7 +84,7 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board")
84 .map_io = ep93xx_map_io, 84 .map_io = ep93xx_map_io,
85 .init_irq = ep93xx_init_irq, 85 .init_irq = ep93xx_init_irq,
86 .handle_irq = vic_handle_irq, 86 .handle_irq = vic_handle_irq,
87 .timer = &ep93xx_timer, 87 .init_time = ep93xx_timer_init,
88 .init_machine = simone_init_machine, 88 .init_machine = simone_init_machine,
89 .init_late = ep93xx_init_late, 89 .init_late = ep93xx_init_late,
90 .restart = ep93xx_restart, 90 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c
index 50043eef1cf2..6434c07dbf96 100644
--- a/arch/arm/mach-ep93xx/snappercl15.c
+++ b/arch/arm/mach-ep93xx/snappercl15.c
@@ -177,7 +177,7 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15")
177 .map_io = ep93xx_map_io, 177 .map_io = ep93xx_map_io,
178 .init_irq = ep93xx_init_irq, 178 .init_irq = ep93xx_init_irq,
179 .handle_irq = vic_handle_irq, 179 .handle_irq = vic_handle_irq,
180 .timer = &ep93xx_timer, 180 .init_time = ep93xx_timer_init,
181 .init_machine = snappercl15_init_machine, 181 .init_machine = snappercl15_init_machine,
182 .init_late = ep93xx_init_late, 182 .init_late = ep93xx_init_late,
183 .restart = ep93xx_restart, 183 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c
index 3c4c233391dc..e4fa0d3760a5 100644
--- a/arch/arm/mach-ep93xx/ts72xx.c
+++ b/arch/arm/mach-ep93xx/ts72xx.c
@@ -247,7 +247,7 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
247 .map_io = ts72xx_map_io, 247 .map_io = ts72xx_map_io,
248 .init_irq = ep93xx_init_irq, 248 .init_irq = ep93xx_init_irq,
249 .handle_irq = vic_handle_irq, 249 .handle_irq = vic_handle_irq,
250 .timer = &ep93xx_timer, 250 .init_time = ep93xx_timer_init,
251 .init_machine = ts72xx_init_machine, 251 .init_machine = ts72xx_init_machine,
252 .init_late = ep93xx_init_late, 252 .init_late = ep93xx_init_late,
253 .restart = ep93xx_restart, 253 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c b/arch/arm/mach-ep93xx/vision_ep9307.c
index ba92e25e3016..8610ba293991 100644
--- a/arch/arm/mach-ep93xx/vision_ep9307.c
+++ b/arch/arm/mach-ep93xx/vision_ep9307.c
@@ -365,7 +365,7 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")
365 .map_io = vision_map_io, 365 .map_io = vision_map_io,
366 .init_irq = ep93xx_init_irq, 366 .init_irq = ep93xx_init_irq,
367 .handle_irq = vic_handle_irq, 367 .handle_irq = vic_handle_irq,
368 .timer = &ep93xx_timer, 368 .init_time = ep93xx_timer_init,
369 .init_machine = vision_init_machine, 369 .init_machine = vision_init_machine,
370 .init_late = ep93xx_init_late, 370 .init_late = ep93xx_init_late,
371 .restart = ep93xx_restart, 371 .restart = ep93xx_restart,
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 04744f9c120f..12f2f1117e99 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -12,7 +12,7 @@
12#ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H 12#ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
13#define __ARCH_ARM_MACH_EXYNOS_COMMON_H 13#define __ARCH_ARM_MACH_EXYNOS_COMMON_H
14 14
15extern struct sys_timer exynos4_timer; 15extern void exynos4_timer_init(void);
16 16
17struct map_desc; 17struct map_desc;
18void exynos_init_io(struct map_desc *mach_desc, int size); 18void exynos_init_io(struct map_desc *mach_desc, int size);
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c
index b938f9fc1dd1..2f18130d0d10 100644
--- a/arch/arm/mach-exynos/mach-armlex4210.c
+++ b/arch/arm/mach-exynos/mach-armlex4210.c
@@ -204,6 +204,6 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
204 .handle_irq = gic_handle_irq, 204 .handle_irq = gic_handle_irq,
205 .init_machine = armlex4210_machine_init, 205 .init_machine = armlex4210_machine_init,
206 .init_late = exynos_init_late, 206 .init_late = exynos_init_late,
207 .timer = &exynos4_timer, 207 .init_time = exynos4_timer_init,
208 .restart = exynos4_restart, 208 .restart = exynos4_restart,
209MACHINE_END 209MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 92757ff817ae..160030168b19 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -110,7 +110,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
110 .handle_irq = gic_handle_irq, 110 .handle_irq = gic_handle_irq,
111 .init_machine = exynos4_dt_machine_init, 111 .init_machine = exynos4_dt_machine_init,
112 .init_late = exynos_init_late, 112 .init_late = exynos_init_late,
113 .timer = &exynos4_timer, 113 .init_time = exynos4_timer_init,
114 .dt_compat = exynos4_dt_compat, 114 .dt_compat = exynos4_dt_compat,
115 .restart = exynos4_restart, 115 .restart = exynos4_restart,
116MACHINE_END 116MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c
index e99d3d8f2bcf..4e074c67cc8b 100644
--- a/arch/arm/mach-exynos/mach-exynos5-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos5-dt.c
@@ -182,7 +182,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
182 .handle_irq = gic_handle_irq, 182 .handle_irq = gic_handle_irq,
183 .init_machine = exynos5_dt_machine_init, 183 .init_machine = exynos5_dt_machine_init,
184 .init_late = exynos_init_late, 184 .init_late = exynos_init_late,
185 .timer = &exynos4_timer, 185 .init_time = exynos4_timer_init,
186 .dt_compat = exynos5_dt_compat, 186 .dt_compat = exynos5_dt_compat,
187 .restart = exynos5_restart, 187 .restart = exynos5_restart,
188 .reserve = exynos5_reserve, 188 .reserve = exynos5_reserve,
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c
index 27d4ed8b116e..dccd1d16b836 100644
--- a/arch/arm/mach-exynos/mach-nuri.c
+++ b/arch/arm/mach-exynos/mach-nuri.c
@@ -1382,7 +1382,7 @@ MACHINE_START(NURI, "NURI")
1382 .handle_irq = gic_handle_irq, 1382 .handle_irq = gic_handle_irq,
1383 .init_machine = nuri_machine_init, 1383 .init_machine = nuri_machine_init,
1384 .init_late = exynos_init_late, 1384 .init_late = exynos_init_late,
1385 .timer = &exynos4_timer, 1385 .init_time = exynos4_timer_init,
1386 .reserve = &nuri_reserve, 1386 .reserve = &nuri_reserve,
1387 .restart = exynos4_restart, 1387 .restart = exynos4_restart,
1388MACHINE_END 1388MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
index 5e34b9c16196..4e1156324562 100644
--- a/arch/arm/mach-exynos/mach-origen.c
+++ b/arch/arm/mach-exynos/mach-origen.c
@@ -817,7 +817,7 @@ MACHINE_START(ORIGEN, "ORIGEN")
817 .handle_irq = gic_handle_irq, 817 .handle_irq = gic_handle_irq,
818 .init_machine = origen_machine_init, 818 .init_machine = origen_machine_init,
819 .init_late = exynos_init_late, 819 .init_late = exynos_init_late,
820 .timer = &exynos4_timer, 820 .init_time = exynos4_timer_init,
821 .reserve = &origen_reserve, 821 .reserve = &origen_reserve,
822 .restart = exynos4_restart, 822 .restart = exynos4_restart,
823MACHINE_END 823MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c
index ae6da40c2aa9..e9c9c2995f09 100644
--- a/arch/arm/mach-exynos/mach-smdk4x12.c
+++ b/arch/arm/mach-exynos/mach-smdk4x12.c
@@ -378,7 +378,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
378 .map_io = smdk4x12_map_io, 378 .map_io = smdk4x12_map_io,
379 .handle_irq = gic_handle_irq, 379 .handle_irq = gic_handle_irq,
380 .init_machine = smdk4x12_machine_init, 380 .init_machine = smdk4x12_machine_init,
381 .timer = &exynos4_timer, 381 .init_time = exynos4_timer_init,
382 .restart = exynos4_restart, 382 .restart = exynos4_restart,
383 .reserve = &smdk4x12_reserve, 383 .reserve = &smdk4x12_reserve,
384MACHINE_END 384MACHINE_END
@@ -393,7 +393,7 @@ MACHINE_START(SMDK4412, "SMDK4412")
393 .handle_irq = gic_handle_irq, 393 .handle_irq = gic_handle_irq,
394 .init_machine = smdk4x12_machine_init, 394 .init_machine = smdk4x12_machine_init,
395 .init_late = exynos_init_late, 395 .init_late = exynos_init_late,
396 .timer = &exynos4_timer, 396 .init_time = exynos4_timer_init,
397 .restart = exynos4_restart, 397 .restart = exynos4_restart,
398 .reserve = &smdk4x12_reserve, 398 .reserve = &smdk4x12_reserve,
399MACHINE_END 399MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
index 35548e3c097d..b228ab9bda0b 100644
--- a/arch/arm/mach-exynos/mach-smdkv310.c
+++ b/arch/arm/mach-exynos/mach-smdkv310.c
@@ -425,7 +425,7 @@ MACHINE_START(SMDKV310, "SMDKV310")
425 .map_io = smdkv310_map_io, 425 .map_io = smdkv310_map_io,
426 .handle_irq = gic_handle_irq, 426 .handle_irq = gic_handle_irq,
427 .init_machine = smdkv310_machine_init, 427 .init_machine = smdkv310_machine_init,
428 .timer = &exynos4_timer, 428 .init_time = exynos4_timer_init,
429 .reserve = &smdkv310_reserve, 429 .reserve = &smdkv310_reserve,
430 .restart = exynos4_restart, 430 .restart = exynos4_restart,
431MACHINE_END 431MACHINE_END
@@ -439,7 +439,7 @@ MACHINE_START(SMDKC210, "SMDKC210")
439 .handle_irq = gic_handle_irq, 439 .handle_irq = gic_handle_irq,
440 .init_machine = smdkv310_machine_init, 440 .init_machine = smdkv310_machine_init,
441 .init_late = exynos_init_late, 441 .init_late = exynos_init_late,
442 .timer = &exynos4_timer, 442 .init_time = exynos4_timer_init,
443 .reserve = &smdkv310_reserve, 443 .reserve = &smdkv310_reserve,
444 .restart = exynos4_restart, 444 .restart = exynos4_restart,
445MACHINE_END 445MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c
index 9e3340f18950..866f29a9beee 100644
--- a/arch/arm/mach-exynos/mach-universal_c210.c
+++ b/arch/arm/mach-exynos/mach-universal_c210.c
@@ -1154,7 +1154,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
1154 .handle_irq = gic_handle_irq, 1154 .handle_irq = gic_handle_irq,
1155 .init_machine = universal_machine_init, 1155 .init_machine = universal_machine_init,
1156 .init_late = exynos_init_late, 1156 .init_late = exynos_init_late,
1157 .timer = &s5p_timer, 1157 .init_time = s5p_timer_init,
1158 .reserve = &universal_reserve, 1158 .reserve = &universal_reserve,
1159 .restart = exynos4_restart, 1159 .restart = exynos4_restart,
1160MACHINE_END 1160MACHINE_END
diff --git a/arch/arm/mach-exynos/mct.c b/arch/arm/mach-exynos/mct.c
index 57668eb68e75..4a89b54fcadb 100644
--- a/arch/arm/mach-exynos/mct.c
+++ b/arch/arm/mach-exynos/mct.c
@@ -478,7 +478,7 @@ static void __init exynos4_timer_resources(void)
478#endif /* CONFIG_LOCAL_TIMERS */ 478#endif /* CONFIG_LOCAL_TIMERS */
479} 479}
480 480
481static void __init exynos_timer_init(void) 481void __init exynos4_timer_init(void)
482{ 482{
483 if (soc_is_exynos5440()) { 483 if (soc_is_exynos5440()) {
484 arch_timer_of_register(); 484 arch_timer_of_register();
@@ -494,7 +494,3 @@ static void __init exynos_timer_init(void)
494 exynos4_clocksource_init(); 494 exynos4_clocksource_init();
495 exynos4_clockevent_init(); 495 exynos4_clockevent_init();
496} 496}
497
498struct sys_timer exynos4_timer = {
499 .init = exynos_timer_init,
500};
diff --git a/arch/arm/mach-footbridge/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c
index 25b453601acc..6987a09ec219 100644
--- a/arch/arm/mach-footbridge/cats-hw.c
+++ b/arch/arm/mach-footbridge/cats-hw.c
@@ -90,6 +90,6 @@ MACHINE_START(CATS, "Chalice-CATS")
90 .fixup = fixup_cats, 90 .fixup = fixup_cats,
91 .map_io = footbridge_map_io, 91 .map_io = footbridge_map_io,
92 .init_irq = footbridge_init_irq, 92 .init_irq = footbridge_init_irq,
93 .timer = &isa_timer, 93 .init_time = isa_timer_init,
94 .restart = footbridge_restart, 94 .restart = footbridge_restart,
95MACHINE_END 95MACHINE_END
diff --git a/arch/arm/mach-footbridge/common.h b/arch/arm/mach-footbridge/common.h
index c9767b892cb2..a846e50a07b8 100644
--- a/arch/arm/mach-footbridge/common.h
+++ b/arch/arm/mach-footbridge/common.h
@@ -1,6 +1,6 @@
1 1
2extern struct sys_timer footbridge_timer; 2extern void footbridge_timer_init(void);
3extern struct sys_timer isa_timer; 3extern void isa_timer_init(void);
4 4
5extern void isa_rtc_init(void); 5extern void isa_rtc_init(void);
6 6
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index 3b54196447c7..9f14b1d9a0e7 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -93,7 +93,7 @@ static struct irqaction footbridge_timer_irq = {
93/* 93/*
94 * Set up timer interrupt. 94 * Set up timer interrupt.
95 */ 95 */
96static void __init footbridge_timer_init(void) 96void __init footbridge_timer_init(void)
97{ 97{
98 struct clock_event_device *ce = &ckevt_dc21285; 98 struct clock_event_device *ce = &ckevt_dc21285;
99 99
@@ -108,7 +108,3 @@ static void __init footbridge_timer_init(void)
108 108
109 clockevents_register_device(ce); 109 clockevents_register_device(ce);
110} 110}
111
112struct sys_timer footbridge_timer = {
113 .init = footbridge_timer_init,
114};
diff --git a/arch/arm/mach-footbridge/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c
index b09551ef89ca..b08243500e2e 100644
--- a/arch/arm/mach-footbridge/ebsa285.c
+++ b/arch/arm/mach-footbridge/ebsa285.c
@@ -101,7 +101,7 @@ MACHINE_START(EBSA285, "EBSA285")
101 .video_end = 0x000bffff, 101 .video_end = 0x000bffff,
102 .map_io = footbridge_map_io, 102 .map_io = footbridge_map_io,
103 .init_irq = footbridge_init_irq, 103 .init_irq = footbridge_init_irq,
104 .timer = &footbridge_timer, 104 .init_time = footbridge_timer_init,
105 .restart = footbridge_restart, 105 .restart = footbridge_restart,
106MACHINE_END 106MACHINE_END
107 107
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
index c40bb415f4b5..d9301dd56354 100644
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ b/arch/arm/mach-footbridge/isa-timer.c
@@ -31,14 +31,10 @@ static struct irqaction pit_timer_irq = {
31 .dev_id = &i8253_clockevent, 31 .dev_id = &i8253_clockevent,
32}; 32};
33 33
34static void __init isa_timer_init(void) 34void __init isa_timer_init(void)
35{ 35{
36 clocksource_i8253_init(); 36 clocksource_i8253_init();
37 37
38 setup_irq(i8253_clockevent.irq, &pit_timer_irq); 38 setup_irq(i8253_clockevent.irq, &pit_timer_irq);
39 clockevent_i8253_init(false); 39 clockevent_i8253_init(false);
40} 40}
41
42struct sys_timer isa_timer = {
43 .init = isa_timer_init,
44};
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c
index d2d14339c6c4..90ea23fdce4c 100644
--- a/arch/arm/mach-footbridge/netwinder-hw.c
+++ b/arch/arm/mach-footbridge/netwinder-hw.c
@@ -766,6 +766,6 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")
766 .fixup = fixup_netwinder, 766 .fixup = fixup_netwinder,
767 .map_io = footbridge_map_io, 767 .map_io = footbridge_map_io,
768 .init_irq = footbridge_init_irq, 768 .init_irq = footbridge_init_irq,
769 .timer = &isa_timer, 769 .init_time = isa_timer_init,
770 .restart = netwinder_restart, 770 .restart = netwinder_restart,
771MACHINE_END 771MACHINE_END
diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c
index e1e9990fa957..7bdeabdcd4d8 100644
--- a/arch/arm/mach-footbridge/personal.c
+++ b/arch/arm/mach-footbridge/personal.c
@@ -18,7 +18,7 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
18 .atag_offset = 0x100, 18 .atag_offset = 0x100,
19 .map_io = footbridge_map_io, 19 .map_io = footbridge_map_io,
20 .init_irq = footbridge_init_irq, 20 .init_irq = footbridge_init_irq,
21 .timer = &footbridge_timer, 21 .init_time = footbridge_timer_init,
22 .restart = footbridge_restart, 22 .restart = footbridge_restart,
23MACHINE_END 23MACHINE_END
24 24
diff --git a/arch/arm/mach-gemini/board-nas4220b.c b/arch/arm/mach-gemini/board-nas4220b.c
index 5927d3c253aa..08bd650c42f3 100644
--- a/arch/arm/mach-gemini/board-nas4220b.c
+++ b/arch/arm/mach-gemini/board-nas4220b.c
@@ -31,10 +31,6 @@
31 31
32#include "common.h" 32#include "common.h"
33 33
34static struct sys_timer ib4220b_timer = {
35 .init = gemini_timer_init,
36};
37
38static struct gpio_led ib4220b_leds[] = { 34static struct gpio_led ib4220b_leds[] = {
39 { 35 {
40 .name = "nas4220b:orange:hdd", 36 .name = "nas4220b:orange:hdd",
@@ -105,6 +101,6 @@ MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")
105 .atag_offset = 0x100, 101 .atag_offset = 0x100,
106 .map_io = gemini_map_io, 102 .map_io = gemini_map_io,
107 .init_irq = gemini_init_irq, 103 .init_irq = gemini_init_irq,
108 .timer = &ib4220b_timer, 104 .init_time = gemini_timer_init,
109 .init_machine = ib4220b_init, 105 .init_machine = ib4220b_init,
110MACHINE_END 106MACHINE_END
diff --git a/arch/arm/mach-gemini/board-rut1xx.c b/arch/arm/mach-gemini/board-rut1xx.c
index cd7437a1cea0..fa0a36337f4d 100644
--- a/arch/arm/mach-gemini/board-rut1xx.c
+++ b/arch/arm/mach-gemini/board-rut1xx.c
@@ -71,10 +71,6 @@ static struct platform_device rut1xx_leds = {
71 }, 71 },
72}; 72};
73 73
74static struct sys_timer rut1xx_timer = {
75 .init = gemini_timer_init,
76};
77
78static void __init rut1xx_init(void) 74static void __init rut1xx_init(void)
79{ 75{
80 gemini_gpio_init(); 76 gemini_gpio_init();
@@ -89,6 +85,6 @@ MACHINE_START(RUT100, "Teltonika RUT100")
89 .atag_offset = 0x100, 85 .atag_offset = 0x100,
90 .map_io = gemini_map_io, 86 .map_io = gemini_map_io,
91 .init_irq = gemini_init_irq, 87 .init_irq = gemini_init_irq,
92 .timer = &rut1xx_timer, 88 .init_time = gemini_timer_init,
93 .init_machine = rut1xx_init, 89 .init_machine = rut1xx_init,
94MACHINE_END 90MACHINE_END
diff --git a/arch/arm/mach-gemini/board-wbd111.c b/arch/arm/mach-gemini/board-wbd111.c
index a367880368f1..3321cd6cc1f3 100644
--- a/arch/arm/mach-gemini/board-wbd111.c
+++ b/arch/arm/mach-gemini/board-wbd111.c
@@ -80,10 +80,6 @@ static struct platform_device wbd111_leds_device = {
80 }, 80 },
81}; 81};
82 82
83static struct sys_timer wbd111_timer = {
84 .init = gemini_timer_init,
85};
86
87static struct mtd_partition wbd111_partitions[] = { 83static struct mtd_partition wbd111_partitions[] = {
88 { 84 {
89 .name = "RedBoot", 85 .name = "RedBoot",
@@ -132,6 +128,6 @@ MACHINE_START(WBD111, "Wiliboard WBD-111")
132 .atag_offset = 0x100, 128 .atag_offset = 0x100,
133 .map_io = gemini_map_io, 129 .map_io = gemini_map_io,
134 .init_irq = gemini_init_irq, 130 .init_irq = gemini_init_irq,
135 .timer = &wbd111_timer, 131 .init_time = gemini_timer_init,
136 .init_machine = wbd111_init, 132 .init_machine = wbd111_init,
137MACHINE_END 133MACHINE_END
diff --git a/arch/arm/mach-gemini/board-wbd222.c b/arch/arm/mach-gemini/board-wbd222.c
index f382811c1319..fe33c825fdaf 100644
--- a/arch/arm/mach-gemini/board-wbd222.c
+++ b/arch/arm/mach-gemini/board-wbd222.c
@@ -80,10 +80,6 @@ static struct platform_device wbd222_leds_device = {
80 }, 80 },
81}; 81};
82 82
83static struct sys_timer wbd222_timer = {
84 .init = gemini_timer_init,
85};
86
87static struct mtd_partition wbd222_partitions[] = { 83static struct mtd_partition wbd222_partitions[] = {
88 { 84 {
89 .name = "RedBoot", 85 .name = "RedBoot",
@@ -132,6 +128,6 @@ MACHINE_START(WBD222, "Wiliboard WBD-222")
132 .atag_offset = 0x100, 128 .atag_offset = 0x100,
133 .map_io = gemini_map_io, 129 .map_io = gemini_map_io,
134 .init_irq = gemini_init_irq, 130 .init_irq = gemini_init_irq,
135 .timer = &wbd222_timer, 131 .init_time = gemini_timer_init,
136 .init_machine = wbd222_init, 132 .init_machine = wbd222_init,
137MACHINE_END 133MACHINE_END
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index aa1331e86bcf..17ef91fa3d56 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -42,12 +42,12 @@ void __init arch_dma_init(dma_t *dma)
42} 42}
43 43
44/* 44/*
45 * Return usecs since last timer reload 45 * Return nsecs since last timer reload
46 * (timercount * (usecs perjiffie)) / (ticks per jiffie) 46 * (timercount * (usecs perjiffie)) / (ticks per jiffie)
47 */ 47 */
48unsigned long h720x_gettimeoffset(void) 48u32 h720x_gettimeoffset(void)
49{ 49{
50 return (CPU_REG (TIMER_VIRT, TM0_COUNT) * tick_usec) / LATCH; 50 return ((CPU_REG(TIMER_VIRT, TM0_COUNT) * tick_usec) / LATCH) * 1000;
51} 51}
52 52
53/* 53/*
diff --git a/arch/arm/mach-h720x/common.h b/arch/arm/mach-h720x/common.h
index 2489537d33dd..7e738410ca93 100644
--- a/arch/arm/mach-h720x/common.h
+++ b/arch/arm/mach-h720x/common.h
@@ -13,18 +13,18 @@
13 * 13 *
14 */ 14 */
15 15
16extern unsigned long h720x_gettimeoffset(void); 16extern u32 h720x_gettimeoffset(void);
17extern void __init h720x_init_irq(void); 17extern void __init h720x_init_irq(void);
18extern void __init h720x_map_io(void); 18extern void __init h720x_map_io(void);
19extern void h720x_restart(char, const char *); 19extern void h720x_restart(char, const char *);
20 20
21#ifdef CONFIG_ARCH_H7202 21#ifdef CONFIG_ARCH_H7202
22extern struct sys_timer h7202_timer; 22extern void h7202_timer_init(void);
23extern void __init init_hw_h7202(void); 23extern void __init init_hw_h7202(void);
24extern void __init h7202_init_irq(void); 24extern void __init h7202_init_irq(void);
25extern void __init h7202_init_time(void); 25extern void __init h7202_init_time(void);
26#endif 26#endif
27 27
28#ifdef CONFIG_ARCH_H7201 28#ifdef CONFIG_ARCH_H7201
29extern struct sys_timer h7201_timer; 29extern void h7201_timer_init(void);
30#endif 30#endif
diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c
index 24df2a349a98..13c741215387 100644
--- a/arch/arm/mach-h720x/cpu-h7201.c
+++ b/arch/arm/mach-h720x/cpu-h7201.c
@@ -44,8 +44,10 @@ static struct irqaction h7201_timer_irq = {
44/* 44/*
45 * Setup TIMER0 as system timer 45 * Setup TIMER0 as system timer
46 */ 46 */
47void __init h7201_init_time(void) 47void __init h7201_timer_init(void)
48{ 48{
49 arch_gettimeoffset = h720x_gettimeoffset;
50
49 CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH; 51 CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;
50 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET; 52 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;
51 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; 53 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START;
@@ -53,8 +55,3 @@ void __init h7201_init_time(void)
53 55
54 setup_irq(IRQ_TIMER0, &h7201_timer_irq); 56 setup_irq(IRQ_TIMER0, &h7201_timer_irq);
55} 57}
56
57struct sys_timer h7201_timer = {
58 .init = h7201_init_time,
59 .offset = h720x_gettimeoffset,
60};
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c
index c37d570b852d..e2ae7e898f9d 100644
--- a/arch/arm/mach-h720x/cpu-h7202.c
+++ b/arch/arm/mach-h720x/cpu-h7202.c
@@ -178,8 +178,10 @@ static struct irqaction h7202_timer_irq = {
178/* 178/*
179 * Setup TIMER0 as system timer 179 * Setup TIMER0 as system timer
180 */ 180 */
181void __init h7202_init_time(void) 181void __init h7202_timer_init(void)
182{ 182{
183 arch_gettimeoffset = h720x_gettimeoffset;
184
183 CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH; 185 CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;
184 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET; 186 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;
185 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; 187 CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START;
@@ -188,11 +190,6 @@ void __init h7202_init_time(void)
188 setup_irq(IRQ_TIMER0, &h7202_timer_irq); 190 setup_irq(IRQ_TIMER0, &h7202_timer_irq);
189} 191}
190 192
191struct sys_timer h7202_timer = {
192 .init = h7202_init_time,
193 .offset = h720x_gettimeoffset,
194};
195
196void __init h7202_init_irq (void) 193void __init h7202_init_irq (void)
197{ 194{
198 int irq; 195 int irq;
diff --git a/arch/arm/mach-h720x/h7201-eval.c b/arch/arm/mach-h720x/h7201-eval.c
index 5fdb20c855e2..4fdeb686c0a9 100644
--- a/arch/arm/mach-h720x/h7201-eval.c
+++ b/arch/arm/mach-h720x/h7201-eval.c
@@ -32,7 +32,7 @@ MACHINE_START(H7201, "Hynix GMS30C7201")
32 .atag_offset = 0x1000, 32 .atag_offset = 0x1000,
33 .map_io = h720x_map_io, 33 .map_io = h720x_map_io,
34 .init_irq = h720x_init_irq, 34 .init_irq = h720x_init_irq,
35 .timer = &h7201_timer, 35 .init_time = h7201_timer_init,
36 .dma_zone_size = SZ_256M, 36 .dma_zone_size = SZ_256M,
37 .restart = h720x_restart, 37 .restart = h720x_restart,
38MACHINE_END 38MACHINE_END
diff --git a/arch/arm/mach-h720x/h7202-eval.c b/arch/arm/mach-h720x/h7202-eval.c
index 169673036c59..f68e967a2062 100644
--- a/arch/arm/mach-h720x/h7202-eval.c
+++ b/arch/arm/mach-h720x/h7202-eval.c
@@ -74,7 +74,7 @@ MACHINE_START(H7202, "Hynix HMS30C7202")
74 .atag_offset = 0x100, 74 .atag_offset = 0x100,
75 .map_io = h720x_map_io, 75 .map_io = h720x_map_io,
76 .init_irq = h7202_init_irq, 76 .init_irq = h7202_init_irq,
77 .timer = &h7202_timer, 77 .init_time = h7202_timer_init,
78 .init_machine = init_eval_h7202, 78 .init_machine = init_eval_h7202,
79 .dma_zone_size = SZ_256M, 79 .dma_zone_size = SZ_256M,
80 .restart = h720x_restart, 80 .restart = h720x_restart,
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
index dc248167d206..f6ca285ee5c5 100644
--- a/arch/arm/mach-highbank/highbank.c
+++ b/arch/arm/mach-highbank/highbank.c
@@ -129,10 +129,6 @@ static void __init highbank_timer_init(void)
129 arch_timer_sched_clock_init(); 129 arch_timer_sched_clock_init();
130} 130}
131 131
132static struct sys_timer highbank_timer = {
133 .init = highbank_timer_init,
134};
135
136static void highbank_power_off(void) 132static void highbank_power_off(void)
137{ 133{
138 hignbank_set_pwr_shutdown(); 134 hignbank_set_pwr_shutdown();
@@ -209,7 +205,7 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
209 .smp = smp_ops(highbank_smp_ops), 205 .smp = smp_ops(highbank_smp_ops),
210 .map_io = debug_ll_io_init, 206 .map_io = debug_ll_io_init,
211 .init_irq = highbank_init_irq, 207 .init_irq = highbank_init_irq,
212 .timer = &highbank_timer, 208 .init_time = highbank_timer_init,
213 .handle_irq = gic_handle_irq, 209 .handle_irq = gic_handle_irq,
214 .init_machine = highbank_init, 210 .init_machine = highbank_init,
215 .dt_compat = highbank_match, 211 .dt_compat = highbank_match,
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
index e17dfbc42192..03b65e5ea541 100644
--- a/arch/arm/mach-imx/imx25-dt.c
+++ b/arch/arm/mach-imx/imx25-dt.c
@@ -22,15 +22,6 @@ static void __init imx25_dt_init(void)
22 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 22 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
23} 23}
24 24
25static void __init imx25_timer_init(void)
26{
27 mx25_clocks_init_dt();
28}
29
30static struct sys_timer imx25_timer = {
31 .init = imx25_timer_init,
32};
33
34static const char * const imx25_dt_board_compat[] __initconst = { 25static const char * const imx25_dt_board_compat[] __initconst = {
35 "fsl,imx25", 26 "fsl,imx25",
36 NULL 27 NULL
@@ -41,7 +32,7 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
41 .init_early = imx25_init_early, 32 .init_early = imx25_init_early,
42 .init_irq = mx25_init_irq, 33 .init_irq = mx25_init_irq,
43 .handle_irq = imx25_handle_irq, 34 .handle_irq = imx25_handle_irq,
44 .timer = &imx25_timer, 35 .init_time = imx25_timer_init,
45 .init_machine = imx25_dt_init, 36 .init_machine = imx25_dt_init,
46 .dt_compat = imx25_dt_board_compat, 37 .dt_compat = imx25_dt_board_compat,
47 .restart = mxc_restart, 38 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c
index ebfae96543c4..c915a490a11c 100644
--- a/arch/arm/mach-imx/imx27-dt.c
+++ b/arch/arm/mach-imx/imx27-dt.c
@@ -39,26 +39,22 @@ static void __init imx27_dt_init(void)
39 imx27_auxdata_lookup, NULL); 39 imx27_auxdata_lookup, NULL);
40} 40}
41 41
42static void __init imx27_timer_init(void)
43{
44 mx27_clocks_init_dt();
45}
46
47static struct sys_timer imx27_timer = {
48 .init = imx27_timer_init,
49};
50
51static const char * const imx27_dt_board_compat[] __initconst = { 42static const char * const imx27_dt_board_compat[] __initconst = {
52 "fsl,imx27", 43 "fsl,imx27",
53 NULL 44 NULL
54}; 45};
55 46
47static void __init imx27_timer_init(void)
48{
49 mx27_clocks_init_dt();
50}
51
56DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)") 52DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
57 .map_io = mx27_map_io, 53 .map_io = mx27_map_io,
58 .init_early = imx27_init_early, 54 .init_early = imx27_init_early,
59 .init_irq = mx27_init_irq, 55 .init_irq = mx27_init_irq,
60 .handle_irq = imx27_handle_irq, 56 .handle_irq = imx27_handle_irq,
61 .timer = &imx27_timer, 57 .init_time = imx27_timer_init,
62 .init_machine = imx27_dt_init, 58 .init_machine = imx27_dt_init,
63 .dt_compat = imx27_dt_board_compat, 59 .dt_compat = imx27_dt_board_compat,
64 .restart = mxc_restart, 60 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
index af476de2570e..f9a690960097 100644
--- a/arch/arm/mach-imx/imx31-dt.c
+++ b/arch/arm/mach-imx/imx31-dt.c
@@ -38,15 +38,6 @@ static void __init imx31_dt_init(void)
38 imx31_auxdata_lookup, NULL); 38 imx31_auxdata_lookup, NULL);
39} 39}
40 40
41static void __init imx31_timer_init(void)
42{
43 mx31_clocks_init_dt();
44}
45
46static struct sys_timer imx31_timer = {
47 .init = imx31_timer_init,
48};
49
50static const char *imx31_dt_board_compat[] __initdata = { 41static const char *imx31_dt_board_compat[] __initdata = {
51 "fsl,imx31", 42 "fsl,imx31",
52 NULL 43 NULL
@@ -57,7 +48,7 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
57 .init_early = imx31_init_early, 48 .init_early = imx31_init_early,
58 .init_irq = mx31_init_irq, 49 .init_irq = mx31_init_irq,
59 .handle_irq = imx31_handle_irq, 50 .handle_irq = imx31_handle_irq,
60 .timer = &imx31_timer, 51 .init_time = mx31_clocks_init_dt,
61 .init_machine = imx31_dt_init, 52 .init_machine = imx31_dt_init,
62 .dt_compat = imx31_dt_board_compat, 53 .dt_compat = imx31_dt_board_compat,
63 .restart = mxc_restart, 54 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
index 5ffa40c673f8..e2926a8863f8 100644
--- a/arch/arm/mach-imx/imx51-dt.c
+++ b/arch/arm/mach-imx/imx51-dt.c
@@ -24,26 +24,22 @@ static void __init imx51_dt_init(void)
24 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 24 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
25} 25}
26 26
27static void __init imx51_timer_init(void)
28{
29 mx51_clocks_init_dt();
30}
31
32static struct sys_timer imx51_timer = {
33 .init = imx51_timer_init,
34};
35
36static const char *imx51_dt_board_compat[] __initdata = { 27static const char *imx51_dt_board_compat[] __initdata = {
37 "fsl,imx51", 28 "fsl,imx51",
38 NULL 29 NULL
39}; 30};
40 31
32static void __init imx51_timer_init(void)
33{
34 mx51_clocks_init_dt();
35}
36
41DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") 37DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
42 .map_io = mx51_map_io, 38 .map_io = mx51_map_io,
43 .init_early = imx51_init_early, 39 .init_early = imx51_init_early,
44 .init_irq = mx51_init_irq, 40 .init_irq = mx51_init_irq,
45 .handle_irq = imx51_handle_irq, 41 .handle_irq = imx51_handle_irq,
46 .timer = &imx51_timer, 42 .init_time = imx51_timer_init,
47 .init_machine = imx51_dt_init, 43 .init_machine = imx51_dt_init,
48 .init_late = imx51_init_late, 44 .init_late = imx51_init_late,
49 .dt_compat = imx51_dt_board_compat, 45 .dt_compat = imx51_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-apf9328.c b/arch/arm/mach-imx/mach-apf9328.c
index 5c9bd2c66e6d..067580b2969b 100644
--- a/arch/arm/mach-imx/mach-apf9328.c
+++ b/arch/arm/mach-imx/mach-apf9328.c
@@ -137,17 +137,13 @@ static void __init apf9328_timer_init(void)
137 mx1_clocks_init(32768); 137 mx1_clocks_init(32768);
138} 138}
139 139
140static struct sys_timer apf9328_timer = {
141 .init = apf9328_timer_init,
142};
143
144MACHINE_START(APF9328, "Armadeus APF9328") 140MACHINE_START(APF9328, "Armadeus APF9328")
145 /* Maintainer: Gwenhael Goavec-Merou, ARMadeus Systems */ 141 /* Maintainer: Gwenhael Goavec-Merou, ARMadeus Systems */
146 .map_io = mx1_map_io, 142 .map_io = mx1_map_io,
147 .init_early = imx1_init_early, 143 .init_early = imx1_init_early,
148 .init_irq = mx1_init_irq, 144 .init_irq = mx1_init_irq,
149 .handle_irq = imx1_handle_irq, 145 .handle_irq = imx1_handle_irq,
150 .timer = &apf9328_timer, 146 .init_time = apf9328_timer_init,
151 .init_machine = apf9328_init, 147 .init_machine = apf9328_init,
152 .restart = mxc_restart, 148 .restart = mxc_restart,
153MACHINE_END 149MACHINE_END
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c
index 59bd6b06a6b5..368a6e3f5926 100644
--- a/arch/arm/mach-imx/mach-armadillo5x0.c
+++ b/arch/arm/mach-imx/mach-armadillo5x0.c
@@ -557,10 +557,6 @@ static void __init armadillo5x0_timer_init(void)
557 mx31_clocks_init(26000000); 557 mx31_clocks_init(26000000);
558} 558}
559 559
560static struct sys_timer armadillo5x0_timer = {
561 .init = armadillo5x0_timer_init,
562};
563
564MACHINE_START(ARMADILLO5X0, "Armadillo-500") 560MACHINE_START(ARMADILLO5X0, "Armadillo-500")
565 /* Maintainer: Alberto Panizzo */ 561 /* Maintainer: Alberto Panizzo */
566 .atag_offset = 0x100, 562 .atag_offset = 0x100,
@@ -568,7 +564,7 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")
568 .init_early = imx31_init_early, 564 .init_early = imx31_init_early,
569 .init_irq = mx31_init_irq, 565 .init_irq = mx31_init_irq,
570 .handle_irq = imx31_handle_irq, 566 .handle_irq = imx31_handle_irq,
571 .timer = &armadillo5x0_timer, 567 .init_time = armadillo5x0_timer_init,
572 .init_machine = armadillo5x0_init, 568 .init_machine = armadillo5x0_init,
573 .restart = mxc_restart, 569 .restart = mxc_restart,
574MACHINE_END 570MACHINE_END
diff --git a/arch/arm/mach-imx/mach-bug.c b/arch/arm/mach-imx/mach-bug.c
index 3a39d5aec07a..2d00476f7d2c 100644
--- a/arch/arm/mach-imx/mach-bug.c
+++ b/arch/arm/mach-imx/mach-bug.c
@@ -53,16 +53,12 @@ static void __init bug_timer_init(void)
53 mx31_clocks_init(26000000); 53 mx31_clocks_init(26000000);
54} 54}
55 55
56static struct sys_timer bug_timer = {
57 .init = bug_timer_init,
58};
59
60MACHINE_START(BUG, "BugLabs BUGBase") 56MACHINE_START(BUG, "BugLabs BUGBase")
61 .map_io = mx31_map_io, 57 .map_io = mx31_map_io,
62 .init_early = imx31_init_early, 58 .init_early = imx31_init_early,
63 .init_irq = mx31_init_irq, 59 .init_irq = mx31_init_irq,
64 .handle_irq = imx31_handle_irq, 60 .handle_irq = imx31_handle_irq,
65 .timer = &bug_timer, 61 .init_time = bug_timer_init,
66 .init_machine = bug_board_init, 62 .init_machine = bug_board_init,
67 .restart = mxc_restart, 63 .restart = mxc_restart,
68MACHINE_END 64MACHINE_END
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c
index 12a370646b45..146559311bd2 100644
--- a/arch/arm/mach-imx/mach-cpuimx27.c
+++ b/arch/arm/mach-imx/mach-cpuimx27.c
@@ -309,17 +309,13 @@ static void __init eukrea_cpuimx27_timer_init(void)
309 mx27_clocks_init(26000000); 309 mx27_clocks_init(26000000);
310} 310}
311 311
312static struct sys_timer eukrea_cpuimx27_timer = {
313 .init = eukrea_cpuimx27_timer_init,
314};
315
316MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27") 312MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27")
317 .atag_offset = 0x100, 313 .atag_offset = 0x100,
318 .map_io = mx27_map_io, 314 .map_io = mx27_map_io,
319 .init_early = imx27_init_early, 315 .init_early = imx27_init_early,
320 .init_irq = mx27_init_irq, 316 .init_irq = mx27_init_irq,
321 .handle_irq = imx27_handle_irq, 317 .handle_irq = imx27_handle_irq,
322 .timer = &eukrea_cpuimx27_timer, 318 .init_time = eukrea_cpuimx27_timer_init,
323 .init_machine = eukrea_cpuimx27_init, 319 .init_machine = eukrea_cpuimx27_init,
324 .restart = mxc_restart, 320 .restart = mxc_restart,
325MACHINE_END 321MACHINE_END
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c
index 5a31bf8c8f4c..771362d1fbee 100644
--- a/arch/arm/mach-imx/mach-cpuimx35.c
+++ b/arch/arm/mach-imx/mach-cpuimx35.c
@@ -193,10 +193,6 @@ static void __init eukrea_cpuimx35_timer_init(void)
193 mx35_clocks_init(); 193 mx35_clocks_init();
194} 194}
195 195
196static struct sys_timer eukrea_cpuimx35_timer = {
197 .init = eukrea_cpuimx35_timer_init,
198};
199
200MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35") 196MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")
201 /* Maintainer: Eukrea Electromatique */ 197 /* Maintainer: Eukrea Electromatique */
202 .atag_offset = 0x100, 198 .atag_offset = 0x100,
@@ -204,7 +200,7 @@ MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")
204 .init_early = imx35_init_early, 200 .init_early = imx35_init_early,
205 .init_irq = mx35_init_irq, 201 .init_irq = mx35_init_irq,
206 .handle_irq = imx35_handle_irq, 202 .handle_irq = imx35_handle_irq,
207 .timer = &eukrea_cpuimx35_timer, 203 .init_time = eukrea_cpuimx35_timer_init,
208 .init_machine = eukrea_cpuimx35_init, 204 .init_machine = eukrea_cpuimx35_init,
209 .restart = mxc_restart, 205 .restart = mxc_restart,
210MACHINE_END 206MACHINE_END
diff --git a/arch/arm/mach-imx/mach-cpuimx51sd.c b/arch/arm/mach-imx/mach-cpuimx51sd.c
index b727de029c8f..9b7393234f6f 100644
--- a/arch/arm/mach-imx/mach-cpuimx51sd.c
+++ b/arch/arm/mach-imx/mach-cpuimx51sd.c
@@ -355,10 +355,6 @@ static void __init eukrea_cpuimx51sd_timer_init(void)
355 mx51_clocks_init(32768, 24000000, 22579200, 0); 355 mx51_clocks_init(32768, 24000000, 22579200, 0);
356} 356}
357 357
358static struct sys_timer mxc_timer = {
359 .init = eukrea_cpuimx51sd_timer_init,
360};
361
362MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD") 358MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
363 /* Maintainer: Eric Bénard <eric@eukrea.com> */ 359 /* Maintainer: Eric Bénard <eric@eukrea.com> */
364 .atag_offset = 0x100, 360 .atag_offset = 0x100,
@@ -366,7 +362,7 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
366 .init_early = imx51_init_early, 362 .init_early = imx51_init_early,
367 .init_irq = mx51_init_irq, 363 .init_irq = mx51_init_irq,
368 .handle_irq = imx51_handle_irq, 364 .handle_irq = imx51_handle_irq,
369 .timer = &mxc_timer, 365 .init_time = eukrea_cpuimx51sd_timer_init,
370 .init_machine = eukrea_cpuimx51sd_init, 366 .init_machine = eukrea_cpuimx51sd_init,
371 .init_late = imx51_init_late, 367 .init_late = imx51_init_late,
372 .restart = mxc_restart, 368 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
index 75027a5ad8b7..4bf454424249 100644
--- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
+++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
@@ -159,10 +159,6 @@ static void __init eukrea_cpuimx25_timer_init(void)
159 mx25_clocks_init(); 159 mx25_clocks_init();
160} 160}
161 161
162static struct sys_timer eukrea_cpuimx25_timer = {
163 .init = eukrea_cpuimx25_timer_init,
164};
165
166MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25") 162MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")
167 /* Maintainer: Eukrea Electromatique */ 163 /* Maintainer: Eukrea Electromatique */
168 .atag_offset = 0x100, 164 .atag_offset = 0x100,
@@ -170,7 +166,7 @@ MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")
170 .init_early = imx25_init_early, 166 .init_early = imx25_init_early,
171 .init_irq = mx25_init_irq, 167 .init_irq = mx25_init_irq,
172 .handle_irq = imx25_handle_irq, 168 .handle_irq = imx25_handle_irq,
173 .timer = &eukrea_cpuimx25_timer, 169 .init_time = eukrea_cpuimx25_timer_init,
174 .init_machine = eukrea_cpuimx25_init, 170 .init_machine = eukrea_cpuimx25_init,
175 .restart = mxc_restart, 171 .restart = mxc_restart,
176MACHINE_END 172MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index 318bd8df7fcc..29ac8ee651d2 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -598,10 +598,6 @@ static void __init visstrim_m10_timer_init(void)
598 mx27_clocks_init((unsigned long)25000000); 598 mx27_clocks_init((unsigned long)25000000);
599} 599}
600 600
601static struct sys_timer visstrim_m10_timer = {
602 .init = visstrim_m10_timer_init,
603};
604
605MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10") 601MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
606 .atag_offset = 0x100, 602 .atag_offset = 0x100,
607 .reserve = visstrim_reserve, 603 .reserve = visstrim_reserve,
@@ -609,7 +605,7 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
609 .init_early = imx27_init_early, 605 .init_early = imx27_init_early,
610 .init_irq = mx27_init_irq, 606 .init_irq = mx27_init_irq,
611 .handle_irq = imx27_handle_irq, 607 .handle_irq = imx27_handle_irq,
612 .timer = &visstrim_m10_timer, 608 .init_time = visstrim_m10_timer_init,
613 .init_machine = visstrim_m10_board_init, 609 .init_machine = visstrim_m10_board_init,
614 .restart = mxc_restart, 610 .restart = mxc_restart,
615MACHINE_END 611MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx27ipcam.c b/arch/arm/mach-imx/mach-imx27ipcam.c
index 53a860112938..1a851aea6832 100644
--- a/arch/arm/mach-imx/mach-imx27ipcam.c
+++ b/arch/arm/mach-imx/mach-imx27ipcam.c
@@ -65,10 +65,6 @@ static void __init mx27ipcam_timer_init(void)
65 mx27_clocks_init(25000000); 65 mx27_clocks_init(25000000);
66} 66}
67 67
68static struct sys_timer mx27ipcam_timer = {
69 .init = mx27ipcam_timer_init,
70};
71
72MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM") 68MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")
73 /* maintainer: Freescale Semiconductor, Inc. */ 69 /* maintainer: Freescale Semiconductor, Inc. */
74 .atag_offset = 0x100, 70 .atag_offset = 0x100,
@@ -76,7 +72,7 @@ MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")
76 .init_early = imx27_init_early, 72 .init_early = imx27_init_early,
77 .init_irq = mx27_init_irq, 73 .init_irq = mx27_init_irq,
78 .handle_irq = imx27_handle_irq, 74 .handle_irq = imx27_handle_irq,
79 .timer = &mx27ipcam_timer, 75 .init_time = mx27ipcam_timer_init,
80 .init_machine = mx27ipcam_init, 76 .init_machine = mx27ipcam_init,
81 .restart = mxc_restart, 77 .restart = mxc_restart,
82MACHINE_END 78MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx27lite.c b/arch/arm/mach-imx/mach-imx27lite.c
index fc8dce931378..3da2e3e44ce9 100644
--- a/arch/arm/mach-imx/mach-imx27lite.c
+++ b/arch/arm/mach-imx/mach-imx27lite.c
@@ -72,17 +72,13 @@ static void __init mx27lite_timer_init(void)
72 mx27_clocks_init(26000000); 72 mx27_clocks_init(26000000);
73} 73}
74 74
75static struct sys_timer mx27lite_timer = {
76 .init = mx27lite_timer_init,
77};
78
79MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE") 75MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")
80 .atag_offset = 0x100, 76 .atag_offset = 0x100,
81 .map_io = mx27_map_io, 77 .map_io = mx27_map_io,
82 .init_early = imx27_init_early, 78 .init_early = imx27_init_early,
83 .init_irq = mx27_init_irq, 79 .init_irq = mx27_init_irq,
84 .handle_irq = imx27_handle_irq, 80 .handle_irq = imx27_handle_irq,
85 .timer = &mx27lite_timer, 81 .init_time = mx27lite_timer_init,
86 .init_machine = mx27lite_init, 82 .init_machine = mx27lite_init,
87 .restart = mxc_restart, 83 .restart = mxc_restart,
88MACHINE_END 84MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c
index 860284dea0e7..f579c616feed 100644
--- a/arch/arm/mach-imx/mach-imx53.c
+++ b/arch/arm/mach-imx/mach-imx53.c
@@ -44,26 +44,22 @@ static void __init imx53_dt_init(void)
44 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 44 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
45} 45}
46 46
47static void __init imx53_timer_init(void)
48{
49 mx53_clocks_init_dt();
50}
51
52static struct sys_timer imx53_timer = {
53 .init = imx53_timer_init,
54};
55
56static const char *imx53_dt_board_compat[] __initdata = { 47static const char *imx53_dt_board_compat[] __initdata = {
57 "fsl,imx53", 48 "fsl,imx53",
58 NULL 49 NULL
59}; 50};
60 51
52static void __init imx53_timer_init(void)
53{
54 mx53_clocks_init_dt();
55}
56
61DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)") 57DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
62 .map_io = mx53_map_io, 58 .map_io = mx53_map_io,
63 .init_early = imx53_init_early, 59 .init_early = imx53_init_early,
64 .init_irq = mx53_init_irq, 60 .init_irq = mx53_init_irq,
65 .handle_irq = imx53_handle_irq, 61 .handle_irq = imx53_handle_irq,
66 .timer = &imx53_timer, 62 .init_time = imx53_timer_init,
67 .init_machine = imx53_dt_init, 63 .init_machine = imx53_dt_init,
68 .init_late = imx53_init_late, 64 .init_late = imx53_init_late,
69 .dt_compat = imx53_dt_board_compat, 65 .dt_compat = imx53_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 4eb1b3ac794c..cd277a0f5b16 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -241,10 +241,6 @@ static void __init imx6q_timer_init(void)
241 imx_print_silicon_rev("i.MX6Q", imx6q_revision()); 241 imx_print_silicon_rev("i.MX6Q", imx6q_revision());
242} 242}
243 243
244static struct sys_timer imx6q_timer = {
245 .init = imx6q_timer_init,
246};
247
248static const char *imx6q_dt_compat[] __initdata = { 244static const char *imx6q_dt_compat[] __initdata = {
249 "fsl,imx6q", 245 "fsl,imx6q",
250 NULL, 246 NULL,
@@ -255,7 +251,7 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")
255 .map_io = imx6q_map_io, 251 .map_io = imx6q_map_io,
256 .init_irq = imx6q_init_irq, 252 .init_irq = imx6q_init_irq,
257 .handle_irq = imx6q_handle_irq, 253 .handle_irq = imx6q_handle_irq,
258 .timer = &imx6q_timer, 254 .init_time = imx6q_timer_init,
259 .init_machine = imx6q_init_machine, 255 .init_machine = imx6q_init_machine,
260 .init_late = imx6q_init_late, 256 .init_late = imx6q_init_late,
261 .dt_compat = imx6q_dt_compat, 257 .dt_compat = imx6q_dt_compat,
diff --git a/arch/arm/mach-imx/mach-kzm_arm11_01.c b/arch/arm/mach-imx/mach-kzm_arm11_01.c
index 2e536ea53444..c7bc41d6b468 100644
--- a/arch/arm/mach-imx/mach-kzm_arm11_01.c
+++ b/arch/arm/mach-imx/mach-kzm_arm11_01.c
@@ -284,17 +284,13 @@ static void __init kzm_timer_init(void)
284 mx31_clocks_init(26000000); 284 mx31_clocks_init(26000000);
285} 285}
286 286
287static struct sys_timer kzm_timer = {
288 .init = kzm_timer_init,
289};
290
291MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01") 287MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")
292 .atag_offset = 0x100, 288 .atag_offset = 0x100,
293 .map_io = kzm_map_io, 289 .map_io = kzm_map_io,
294 .init_early = imx31_init_early, 290 .init_early = imx31_init_early,
295 .init_irq = mx31_init_irq, 291 .init_irq = mx31_init_irq,
296 .handle_irq = imx31_handle_irq, 292 .handle_irq = imx31_handle_irq,
297 .timer = &kzm_timer, 293 .init_time = kzm_timer_init,
298 .init_machine = kzm_board_init, 294 .init_machine = kzm_board_init,
299 .restart = mxc_restart, 295 .restart = mxc_restart,
300MACHINE_END 296MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx1ads.c b/arch/arm/mach-imx/mach-mx1ads.c
index 06b483783e68..9f883e4d6fc9 100644
--- a/arch/arm/mach-imx/mach-mx1ads.c
+++ b/arch/arm/mach-imx/mach-mx1ads.c
@@ -132,10 +132,6 @@ static void __init mx1ads_timer_init(void)
132 mx1_clocks_init(32000); 132 mx1_clocks_init(32000);
133} 133}
134 134
135static struct sys_timer mx1ads_timer = {
136 .init = mx1ads_timer_init,
137};
138
139MACHINE_START(MX1ADS, "Freescale MX1ADS") 135MACHINE_START(MX1ADS, "Freescale MX1ADS")
140 /* Maintainer: Sascha Hauer, Pengutronix */ 136 /* Maintainer: Sascha Hauer, Pengutronix */
141 .atag_offset = 0x100, 137 .atag_offset = 0x100,
@@ -143,7 +139,7 @@ MACHINE_START(MX1ADS, "Freescale MX1ADS")
143 .init_early = imx1_init_early, 139 .init_early = imx1_init_early,
144 .init_irq = mx1_init_irq, 140 .init_irq = mx1_init_irq,
145 .handle_irq = imx1_handle_irq, 141 .handle_irq = imx1_handle_irq,
146 .timer = &mx1ads_timer, 142 .init_time = mx1ads_timer_init,
147 .init_machine = mx1ads_init, 143 .init_machine = mx1ads_init,
148 .restart = mxc_restart, 144 .restart = mxc_restart,
149MACHINE_END 145MACHINE_END
@@ -154,7 +150,7 @@ MACHINE_START(MXLADS, "Freescale MXLADS")
154 .init_early = imx1_init_early, 150 .init_early = imx1_init_early,
155 .init_irq = mx1_init_irq, 151 .init_irq = mx1_init_irq,
156 .handle_irq = imx1_handle_irq, 152 .handle_irq = imx1_handle_irq,
157 .timer = &mx1ads_timer, 153 .init_time = mx1ads_timer_init,
158 .init_machine = mx1ads_init, 154 .init_machine = mx1ads_init,
159 .restart = mxc_restart, 155 .restart = mxc_restart,
160MACHINE_END 156MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
index 6adb3136bb08..a06aa4dc37fc 100644
--- a/arch/arm/mach-imx/mach-mx21ads.c
+++ b/arch/arm/mach-imx/mach-mx21ads.c
@@ -318,10 +318,6 @@ static void __init mx21ads_timer_init(void)
318 mx21_clocks_init(32768, 26000000); 318 mx21_clocks_init(32768, 26000000);
319} 319}
320 320
321static struct sys_timer mx21ads_timer = {
322 .init = mx21ads_timer_init,
323};
324
325MACHINE_START(MX21ADS, "Freescale i.MX21ADS") 321MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
326 /* maintainer: Freescale Semiconductor, Inc. */ 322 /* maintainer: Freescale Semiconductor, Inc. */
327 .atag_offset = 0x100, 323 .atag_offset = 0x100,
@@ -329,7 +325,7 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
329 .init_early = imx21_init_early, 325 .init_early = imx21_init_early,
330 .init_irq = mx21_init_irq, 326 .init_irq = mx21_init_irq,
331 .handle_irq = imx21_handle_irq, 327 .handle_irq = imx21_handle_irq,
332 .timer = &mx21ads_timer, 328 .init_time = mx21ads_timer_init,
333 .init_machine = mx21ads_board_init, 329 .init_machine = mx21ads_board_init,
334 .restart = mxc_restart, 330 .restart = mxc_restart,
335MACHINE_END 331MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c
index b1b03aa55bb8..8bcda688a006 100644
--- a/arch/arm/mach-imx/mach-mx25_3ds.c
+++ b/arch/arm/mach-imx/mach-mx25_3ds.c
@@ -257,10 +257,6 @@ static void __init mx25pdk_timer_init(void)
257 mx25_clocks_init(); 257 mx25_clocks_init();
258} 258}
259 259
260static struct sys_timer mx25pdk_timer = {
261 .init = mx25pdk_timer_init,
262};
263
264MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)") 260MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)")
265 /* Maintainer: Freescale Semiconductor, Inc. */ 261 /* Maintainer: Freescale Semiconductor, Inc. */
266 .atag_offset = 0x100, 262 .atag_offset = 0x100,
@@ -268,7 +264,7 @@ MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)")
268 .init_early = imx25_init_early, 264 .init_early = imx25_init_early,
269 .init_irq = mx25_init_irq, 265 .init_irq = mx25_init_irq,
270 .handle_irq = imx25_handle_irq, 266 .handle_irq = imx25_handle_irq,
271 .timer = &mx25pdk_timer, 267 .init_time = mx25pdk_timer_init,
272 .init_machine = mx25pdk_init, 268 .init_machine = mx25pdk_init,
273 .restart = mxc_restart, 269 .restart = mxc_restart,
274MACHINE_END 270MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index d0e547fa925f..25b3e4c9bc0a 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -538,10 +538,6 @@ static void __init mx27pdk_timer_init(void)
538 mx27_clocks_init(26000000); 538 mx27_clocks_init(26000000);
539} 539}
540 540
541static struct sys_timer mx27pdk_timer = {
542 .init = mx27pdk_timer_init,
543};
544
545MACHINE_START(MX27_3DS, "Freescale MX27PDK") 541MACHINE_START(MX27_3DS, "Freescale MX27PDK")
546 /* maintainer: Freescale Semiconductor, Inc. */ 542 /* maintainer: Freescale Semiconductor, Inc. */
547 .atag_offset = 0x100, 543 .atag_offset = 0x100,
@@ -549,7 +545,7 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
549 .init_early = imx27_init_early, 545 .init_early = imx27_init_early,
550 .init_irq = mx27_init_irq, 546 .init_irq = mx27_init_irq,
551 .handle_irq = imx27_handle_irq, 547 .handle_irq = imx27_handle_irq,
552 .timer = &mx27pdk_timer, 548 .init_time = mx27pdk_timer_init,
553 .init_machine = mx27pdk_init, 549 .init_machine = mx27pdk_init,
554 .restart = mxc_restart, 550 .restart = mxc_restart,
555MACHINE_END 551MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c
index 3d036f57f0e6..9821b824dcaf 100644
--- a/arch/arm/mach-imx/mach-mx27ads.c
+++ b/arch/arm/mach-imx/mach-mx27ads.c
@@ -323,10 +323,6 @@ static void __init mx27ads_timer_init(void)
323 mx27_clocks_init(fref); 323 mx27_clocks_init(fref);
324} 324}
325 325
326static struct sys_timer mx27ads_timer = {
327 .init = mx27ads_timer_init,
328};
329
330static struct map_desc mx27ads_io_desc[] __initdata = { 326static struct map_desc mx27ads_io_desc[] __initdata = {
331 { 327 {
332 .virtual = PBC_BASE_ADDRESS, 328 .virtual = PBC_BASE_ADDRESS,
@@ -349,7 +345,7 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")
349 .init_early = imx27_init_early, 345 .init_early = imx27_init_early,
350 .init_irq = mx27_init_irq, 346 .init_irq = mx27_init_irq,
351 .handle_irq = imx27_handle_irq, 347 .handle_irq = imx27_handle_irq,
352 .timer = &mx27ads_timer, 348 .init_time = mx27ads_timer_init,
353 .init_machine = mx27ads_board_init, 349 .init_machine = mx27ads_board_init,
354 .restart = mxc_restart, 350 .restart = mxc_restart,
355MACHINE_END 351MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index bc301befdd06..1ed916175d41 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -762,10 +762,6 @@ static void __init mx31_3ds_timer_init(void)
762 mx31_clocks_init(26000000); 762 mx31_clocks_init(26000000);
763} 763}
764 764
765static struct sys_timer mx31_3ds_timer = {
766 .init = mx31_3ds_timer_init,
767};
768
769static void __init mx31_3ds_reserve(void) 765static void __init mx31_3ds_reserve(void)
770{ 766{
771 /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ 767 /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */
@@ -780,7 +776,7 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
780 .init_early = imx31_init_early, 776 .init_early = imx31_init_early,
781 .init_irq = mx31_init_irq, 777 .init_irq = mx31_init_irq,
782 .handle_irq = imx31_handle_irq, 778 .handle_irq = imx31_handle_irq,
783 .timer = &mx31_3ds_timer, 779 .init_time = mx31_3ds_timer_init,
784 .init_machine = mx31_3ds_init, 780 .init_machine = mx31_3ds_init,
785 .reserve = mx31_3ds_reserve, 781 .reserve = mx31_3ds_reserve,
786 .restart = mxc_restart, 782 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index 8b56f8883f32..daf8889125cc 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -576,10 +576,6 @@ static void __init mx31ads_timer_init(void)
576 mx31_clocks_init(26000000); 576 mx31_clocks_init(26000000);
577} 577}
578 578
579static struct sys_timer mx31ads_timer = {
580 .init = mx31ads_timer_init,
581};
582
583MACHINE_START(MX31ADS, "Freescale MX31ADS") 579MACHINE_START(MX31ADS, "Freescale MX31ADS")
584 /* Maintainer: Freescale Semiconductor, Inc. */ 580 /* Maintainer: Freescale Semiconductor, Inc. */
585 .atag_offset = 0x100, 581 .atag_offset = 0x100,
@@ -587,7 +583,7 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
587 .init_early = imx31_init_early, 583 .init_early = imx31_init_early,
588 .init_irq = mx31ads_init_irq, 584 .init_irq = mx31ads_init_irq,
589 .handle_irq = imx31_handle_irq, 585 .handle_irq = imx31_handle_irq,
590 .timer = &mx31ads_timer, 586 .init_time = mx31ads_timer_init,
591 .init_machine = mx31ads_init, 587 .init_machine = mx31ads_init,
592 .restart = mxc_restart, 588 .restart = mxc_restart,
593MACHINE_END 589MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c
index 08b9965c8b36..832b1e2f964e 100644
--- a/arch/arm/mach-imx/mach-mx31lilly.c
+++ b/arch/arm/mach-imx/mach-mx31lilly.c
@@ -303,17 +303,13 @@ static void __init mx31lilly_timer_init(void)
303 mx31_clocks_init(26000000); 303 mx31_clocks_init(26000000);
304} 304}
305 305
306static struct sys_timer mx31lilly_timer = {
307 .init = mx31lilly_timer_init,
308};
309
310MACHINE_START(LILLY1131, "INCO startec LILLY-1131") 306MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
311 .atag_offset = 0x100, 307 .atag_offset = 0x100,
312 .map_io = mx31_map_io, 308 .map_io = mx31_map_io,
313 .init_early = imx31_init_early, 309 .init_early = imx31_init_early,
314 .init_irq = mx31_init_irq, 310 .init_irq = mx31_init_irq,
315 .handle_irq = imx31_handle_irq, 311 .handle_irq = imx31_handle_irq,
316 .timer = &mx31lilly_timer, 312 .init_time = mx31lilly_timer_init,
317 .init_machine = mx31lilly_board_init, 313 .init_machine = mx31lilly_board_init,
318 .restart = mxc_restart, 314 .restart = mxc_restart,
319MACHINE_END 315MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c
index bdcd92e59518..bea07299b61a 100644
--- a/arch/arm/mach-imx/mach-mx31lite.c
+++ b/arch/arm/mach-imx/mach-mx31lite.c
@@ -285,10 +285,6 @@ static void __init mx31lite_timer_init(void)
285 mx31_clocks_init(26000000); 285 mx31_clocks_init(26000000);
286} 286}
287 287
288static struct sys_timer mx31lite_timer = {
289 .init = mx31lite_timer_init,
290};
291
292MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM") 288MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
293 /* Maintainer: Freescale Semiconductor, Inc. */ 289 /* Maintainer: Freescale Semiconductor, Inc. */
294 .atag_offset = 0x100, 290 .atag_offset = 0x100,
@@ -296,7 +292,7 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
296 .init_early = imx31_init_early, 292 .init_early = imx31_init_early,
297 .init_irq = mx31_init_irq, 293 .init_irq = mx31_init_irq,
298 .handle_irq = imx31_handle_irq, 294 .handle_irq = imx31_handle_irq,
299 .timer = &mx31lite_timer, 295 .init_time = mx31lite_timer_init,
300 .init_machine = mx31lite_init, 296 .init_machine = mx31lite_init,
301 .restart = mxc_restart, 297 .restart = mxc_restart,
302MACHINE_END 298MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index 2517cfa9f26b..dae4cd7be040 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -596,10 +596,6 @@ static void __init mx31moboard_timer_init(void)
596 mx31_clocks_init(26000000); 596 mx31_clocks_init(26000000);
597} 597}
598 598
599static struct sys_timer mx31moboard_timer = {
600 .init = mx31moboard_timer_init,
601};
602
603static void __init mx31moboard_reserve(void) 599static void __init mx31moboard_reserve(void)
604{ 600{
605 /* reserve 4 MiB for mx3-camera */ 601 /* reserve 4 MiB for mx3-camera */
@@ -615,7 +611,7 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
615 .init_early = imx31_init_early, 611 .init_early = imx31_init_early,
616 .init_irq = mx31_init_irq, 612 .init_irq = mx31_init_irq,
617 .handle_irq = imx31_handle_irq, 613 .handle_irq = imx31_handle_irq,
618 .timer = &mx31moboard_timer, 614 .init_time = mx31moboard_timer_init,
619 .init_machine = mx31moboard_init, 615 .init_machine = mx31moboard_init,
620 .restart = mxc_restart, 616 .restart = mxc_restart,
621MACHINE_END 617MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c
index 5277da45d60c..a42f4f07051f 100644
--- a/arch/arm/mach-imx/mach-mx35_3ds.c
+++ b/arch/arm/mach-imx/mach-mx35_3ds.c
@@ -602,10 +602,6 @@ static void __init mx35pdk_timer_init(void)
602 mx35_clocks_init(); 602 mx35_clocks_init();
603} 603}
604 604
605static struct sys_timer mx35pdk_timer = {
606 .init = mx35pdk_timer_init,
607};
608
609static void __init mx35_3ds_reserve(void) 605static void __init mx35_3ds_reserve(void)
610{ 606{
611 /* reserve MX35_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ 607 /* reserve MX35_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */
@@ -620,7 +616,7 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")
620 .init_early = imx35_init_early, 616 .init_early = imx35_init_early,
621 .init_irq = mx35_init_irq, 617 .init_irq = mx35_init_irq,
622 .handle_irq = imx35_handle_irq, 618 .handle_irq = imx35_handle_irq,
623 .timer = &mx35pdk_timer, 619 .init_time = mx35pdk_timer_init,
624 .init_machine = mx35_3ds_init, 620 .init_machine = mx35_3ds_init,
625 .reserve = mx35_3ds_reserve, 621 .reserve = mx35_3ds_reserve,
626 .restart = mxc_restart, 622 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-mx50_rdp.c b/arch/arm/mach-imx/mach-mx50_rdp.c
index 0c1f88a80bdc..8937902bda5f 100644
--- a/arch/arm/mach-imx/mach-mx50_rdp.c
+++ b/arch/arm/mach-imx/mach-mx50_rdp.c
@@ -210,16 +210,12 @@ static void __init mx50_rdp_timer_init(void)
210 mx50_clocks_init(32768, 24000000, 22579200); 210 mx50_clocks_init(32768, 24000000, 22579200);
211} 211}
212 212
213static struct sys_timer mx50_rdp_timer = {
214 .init = mx50_rdp_timer_init,
215};
216
217MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform") 213MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform")
218 .map_io = mx50_map_io, 214 .map_io = mx50_map_io,
219 .init_early = imx50_init_early, 215 .init_early = imx50_init_early,
220 .init_irq = mx50_init_irq, 216 .init_irq = mx50_init_irq,
221 .handle_irq = imx50_handle_irq, 217 .handle_irq = imx50_handle_irq,
222 .timer = &mx50_rdp_timer, 218 .init_time = mx50_rdp_timer_init,
223 .init_machine = mx50_rdp_board_init, 219 .init_machine = mx50_rdp_board_init,
224 .restart = mxc_restart, 220 .restart = mxc_restart,
225MACHINE_END 221MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx51_3ds.c b/arch/arm/mach-imx/mach-mx51_3ds.c
index abc25bd1107b..2d2365111532 100644
--- a/arch/arm/mach-imx/mach-mx51_3ds.c
+++ b/arch/arm/mach-imx/mach-mx51_3ds.c
@@ -160,10 +160,6 @@ static void __init mx51_3ds_timer_init(void)
160 mx51_clocks_init(32768, 24000000, 22579200, 0); 160 mx51_clocks_init(32768, 24000000, 22579200, 0);
161} 161}
162 162
163static struct sys_timer mx51_3ds_timer = {
164 .init = mx51_3ds_timer_init,
165};
166
167MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board") 163MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
168 /* Maintainer: Freescale Semiconductor, Inc. */ 164 /* Maintainer: Freescale Semiconductor, Inc. */
169 .atag_offset = 0x100, 165 .atag_offset = 0x100,
@@ -171,7 +167,7 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
171 .init_early = imx51_init_early, 167 .init_early = imx51_init_early,
172 .init_irq = mx51_init_irq, 168 .init_irq = mx51_init_irq,
173 .handle_irq = imx51_handle_irq, 169 .handle_irq = imx51_handle_irq,
174 .timer = &mx51_3ds_timer, 170 .init_time = mx51_3ds_timer_init,
175 .init_machine = mx51_3ds_init, 171 .init_machine = mx51_3ds_init,
176 .init_late = imx51_init_late, 172 .init_late = imx51_init_late,
177 .restart = mxc_restart, 173 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-mx51_babbage.c b/arch/arm/mach-imx/mach-mx51_babbage.c
index d9a84ca2199a..6c4d7feb4520 100644
--- a/arch/arm/mach-imx/mach-mx51_babbage.c
+++ b/arch/arm/mach-imx/mach-mx51_babbage.c
@@ -418,10 +418,6 @@ static void __init mx51_babbage_timer_init(void)
418 mx51_clocks_init(32768, 24000000, 22579200, 0); 418 mx51_clocks_init(32768, 24000000, 22579200, 0);
419} 419}
420 420
421static struct sys_timer mx51_babbage_timer = {
422 .init = mx51_babbage_timer_init,
423};
424
425MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board") 421MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
426 /* Maintainer: Amit Kucheria <amit.kucheria@canonical.com> */ 422 /* Maintainer: Amit Kucheria <amit.kucheria@canonical.com> */
427 .atag_offset = 0x100, 423 .atag_offset = 0x100,
@@ -429,7 +425,7 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
429 .init_early = imx51_init_early, 425 .init_early = imx51_init_early,
430 .init_irq = mx51_init_irq, 426 .init_irq = mx51_init_irq,
431 .handle_irq = imx51_handle_irq, 427 .handle_irq = imx51_handle_irq,
432 .timer = &mx51_babbage_timer, 428 .init_time = mx51_babbage_timer_init,
433 .init_machine = mx51_babbage_init, 429 .init_machine = mx51_babbage_init,
434 .init_late = imx51_init_late, 430 .init_late = imx51_init_late,
435 .restart = mxc_restart, 431 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-mxt_td60.c b/arch/arm/mach-imx/mach-mxt_td60.c
index f4a8c7e108e1..a27faaba98ec 100644
--- a/arch/arm/mach-imx/mach-mxt_td60.c
+++ b/arch/arm/mach-imx/mach-mxt_td60.c
@@ -261,10 +261,6 @@ static void __init mxt_td60_timer_init(void)
261 mx27_clocks_init(26000000); 261 mx27_clocks_init(26000000);
262} 262}
263 263
264static struct sys_timer mxt_td60_timer = {
265 .init = mxt_td60_timer_init,
266};
267
268MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60") 264MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60")
269 /* maintainer: Maxtrack Industrial */ 265 /* maintainer: Maxtrack Industrial */
270 .atag_offset = 0x100, 266 .atag_offset = 0x100,
@@ -272,7 +268,7 @@ MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60")
272 .init_early = imx27_init_early, 268 .init_early = imx27_init_early,
273 .init_irq = mx27_init_irq, 269 .init_irq = mx27_init_irq,
274 .handle_irq = imx27_handle_irq, 270 .handle_irq = imx27_handle_irq,
275 .timer = &mxt_td60_timer, 271 .init_time = mxt_td60_timer_init,
276 .init_machine = mxt_td60_board_init, 272 .init_machine = mxt_td60_board_init,
277 .restart = mxc_restart, 273 .restart = mxc_restart,
278MACHINE_END 274MACHINE_END
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index eee369fa94a2..b8b15bb1ffdf 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -416,10 +416,6 @@ static void __init pca100_timer_init(void)
416 mx27_clocks_init(26000000); 416 mx27_clocks_init(26000000);
417} 417}
418 418
419static struct sys_timer pca100_timer = {
420 .init = pca100_timer_init,
421};
422
423MACHINE_START(PCA100, "phyCARD-i.MX27") 419MACHINE_START(PCA100, "phyCARD-i.MX27")
424 .atag_offset = 0x100, 420 .atag_offset = 0x100,
425 .map_io = mx27_map_io, 421 .map_io = mx27_map_io,
@@ -427,6 +423,6 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")
427 .init_irq = mx27_init_irq, 423 .init_irq = mx27_init_irq,
428 .handle_irq = imx27_handle_irq, 424 .handle_irq = imx27_handle_irq,
429 .init_machine = pca100_init, 425 .init_machine = pca100_init,
430 .timer = &pca100_timer, 426 .init_time = pca100_timer_init,
431 .restart = mxc_restart, 427 .restart = mxc_restart,
432MACHINE_END 428MACHINE_END
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c
index 547fef133f65..bc0261e99d39 100644
--- a/arch/arm/mach-imx/mach-pcm037.c
+++ b/arch/arm/mach-imx/mach-pcm037.c
@@ -685,10 +685,6 @@ static void __init pcm037_timer_init(void)
685 mx31_clocks_init(26000000); 685 mx31_clocks_init(26000000);
686} 686}
687 687
688static struct sys_timer pcm037_timer = {
689 .init = pcm037_timer_init,
690};
691
692static void __init pcm037_reserve(void) 688static void __init pcm037_reserve(void)
693{ 689{
694 /* reserve 4 MiB for mx3-camera */ 690 /* reserve 4 MiB for mx3-camera */
@@ -709,7 +705,7 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
709 .init_early = imx31_init_early, 705 .init_early = imx31_init_early,
710 .init_irq = mx31_init_irq, 706 .init_irq = mx31_init_irq,
711 .handle_irq = imx31_handle_irq, 707 .handle_irq = imx31_handle_irq,
712 .timer = &pcm037_timer, 708 .init_time = pcm037_timer_init,
713 .init_machine = pcm037_init, 709 .init_machine = pcm037_init,
714 .init_late = pcm037_init_late, 710 .init_late = pcm037_init_late,
715 .restart = mxc_restart, 711 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 4aa0d0798605..e805ac273e9c 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -346,17 +346,13 @@ static void __init pcm038_timer_init(void)
346 mx27_clocks_init(26000000); 346 mx27_clocks_init(26000000);
347} 347}
348 348
349static struct sys_timer pcm038_timer = {
350 .init = pcm038_timer_init,
351};
352
353MACHINE_START(PCM038, "phyCORE-i.MX27") 349MACHINE_START(PCM038, "phyCORE-i.MX27")
354 .atag_offset = 0x100, 350 .atag_offset = 0x100,
355 .map_io = mx27_map_io, 351 .map_io = mx27_map_io,
356 .init_early = imx27_init_early, 352 .init_early = imx27_init_early,
357 .init_irq = mx27_init_irq, 353 .init_irq = mx27_init_irq,
358 .handle_irq = imx27_handle_irq, 354 .handle_irq = imx27_handle_irq,
359 .timer = &pcm038_timer, 355 .init_time = pcm038_timer_init,
360 .init_machine = pcm038_init, 356 .init_machine = pcm038_init,
361 .restart = mxc_restart, 357 .restart = mxc_restart,
362MACHINE_END 358MACHINE_END
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c
index 92445440221e..8ed533f0f8ca 100644
--- a/arch/arm/mach-imx/mach-pcm043.c
+++ b/arch/arm/mach-imx/mach-pcm043.c
@@ -394,10 +394,6 @@ static void __init pcm043_timer_init(void)
394 mx35_clocks_init(); 394 mx35_clocks_init();
395} 395}
396 396
397static struct sys_timer pcm043_timer = {
398 .init = pcm043_timer_init,
399};
400
401MACHINE_START(PCM043, "Phytec Phycore pcm043") 397MACHINE_START(PCM043, "Phytec Phycore pcm043")
402 /* Maintainer: Pengutronix */ 398 /* Maintainer: Pengutronix */
403 .atag_offset = 0x100, 399 .atag_offset = 0x100,
@@ -405,7 +401,7 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")
405 .init_early = imx35_init_early, 401 .init_early = imx35_init_early,
406 .init_irq = mx35_init_irq, 402 .init_irq = mx35_init_irq,
407 .handle_irq = imx35_handle_irq, 403 .handle_irq = imx35_handle_irq,
408 .timer = &pcm043_timer, 404 .init_time = pcm043_timer_init,
409 .init_machine = pcm043_init, 405 .init_machine = pcm043_init,
410 .restart = mxc_restart, 406 .restart = mxc_restart,
411MACHINE_END 407MACHINE_END
diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c
index 96d9a91f8a3b..22af27ed457e 100644
--- a/arch/arm/mach-imx/mach-qong.c
+++ b/arch/arm/mach-imx/mach-qong.c
@@ -260,10 +260,6 @@ static void __init qong_timer_init(void)
260 mx31_clocks_init(26000000); 260 mx31_clocks_init(26000000);
261} 261}
262 262
263static struct sys_timer qong_timer = {
264 .init = qong_timer_init,
265};
266
267MACHINE_START(QONG, "Dave/DENX QongEVB-LITE") 263MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
268 /* Maintainer: DENX Software Engineering GmbH */ 264 /* Maintainer: DENX Software Engineering GmbH */
269 .atag_offset = 0x100, 265 .atag_offset = 0x100,
@@ -271,7 +267,7 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
271 .init_early = imx31_init_early, 267 .init_early = imx31_init_early,
272 .init_irq = mx31_init_irq, 268 .init_irq = mx31_init_irq,
273 .handle_irq = imx31_handle_irq, 269 .handle_irq = imx31_handle_irq,
274 .timer = &qong_timer, 270 .init_time = qong_timer_init,
275 .init_machine = qong_init, 271 .init_machine = qong_init,
276 .restart = mxc_restart, 272 .restart = mxc_restart,
277MACHINE_END 273MACHINE_END
diff --git a/arch/arm/mach-imx/mach-scb9328.c b/arch/arm/mach-imx/mach-scb9328.c
index fc970409dbaf..b0fa10dd79fe 100644
--- a/arch/arm/mach-imx/mach-scb9328.c
+++ b/arch/arm/mach-imx/mach-scb9328.c
@@ -131,10 +131,6 @@ static void __init scb9328_timer_init(void)
131 mx1_clocks_init(32000); 131 mx1_clocks_init(32000);
132} 132}
133 133
134static struct sys_timer scb9328_timer = {
135 .init = scb9328_timer_init,
136};
137
138MACHINE_START(SCB9328, "Synertronixx scb9328") 134MACHINE_START(SCB9328, "Synertronixx scb9328")
139 /* Sascha Hauer */ 135 /* Sascha Hauer */
140 .atag_offset = 100, 136 .atag_offset = 100,
@@ -142,7 +138,7 @@ MACHINE_START(SCB9328, "Synertronixx scb9328")
142 .init_early = imx1_init_early, 138 .init_early = imx1_init_early,
143 .init_irq = mx1_init_irq, 139 .init_irq = mx1_init_irq,
144 .handle_irq = imx1_handle_irq, 140 .handle_irq = imx1_handle_irq,
145 .timer = &scb9328_timer, 141 .init_time = scb9328_timer_init,
146 .init_machine = scb9328_init, 142 .init_machine = scb9328_init,
147 .restart = mxc_restart, 143 .restart = mxc_restart,
148MACHINE_END 144MACHINE_END
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c
index 3aecf91e4289..0910761e8280 100644
--- a/arch/arm/mach-imx/mach-vpr200.c
+++ b/arch/arm/mach-imx/mach-vpr200.c
@@ -305,17 +305,13 @@ static void __init vpr200_timer_init(void)
305 mx35_clocks_init(); 305 mx35_clocks_init();
306} 306}
307 307
308static struct sys_timer vpr200_timer = {
309 .init = vpr200_timer_init,
310};
311
312MACHINE_START(VPR200, "VPR200") 308MACHINE_START(VPR200, "VPR200")
313 /* Maintainer: Creative Product Design */ 309 /* Maintainer: Creative Product Design */
314 .map_io = mx35_map_io, 310 .map_io = mx35_map_io,
315 .init_early = imx35_init_early, 311 .init_early = imx35_init_early,
316 .init_irq = mx35_init_irq, 312 .init_irq = mx35_init_irq,
317 .handle_irq = imx35_handle_irq, 313 .handle_irq = imx35_handle_irq,
318 .timer = &vpr200_timer, 314 .init_time = vpr200_timer_init,
319 .init_machine = vpr200_board_init, 315 .init_machine = vpr200_board_init,
320 .restart = mxc_restart, 316 .restart = mxc_restart,
321MACHINE_END 317MACHINE_END
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 11e2a4145807..78f1b3814f77 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -425,7 +425,7 @@ void __init ap_init_early(void)
425 425
426#ifdef CONFIG_OF 426#ifdef CONFIG_OF
427 427
428static void __init ap_init_timer_of(void) 428static void __init ap_of_timer_init(void)
429{ 429{
430 struct device_node *node; 430 struct device_node *node;
431 const char *path; 431 const char *path;
@@ -464,10 +464,6 @@ static void __init ap_init_timer_of(void)
464 integrator_clockevent_init(rate, base, irq); 464 integrator_clockevent_init(rate, base, irq);
465} 465}
466 466
467static struct sys_timer ap_of_timer = {
468 .init = ap_init_timer_of,
469};
470
471static const struct of_device_id fpga_irq_of_match[] __initconst = { 467static const struct of_device_id fpga_irq_of_match[] __initconst = {
472 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, }, 468 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
473 { /* Sentinel */ } 469 { /* Sentinel */ }
@@ -586,7 +582,7 @@ DT_MACHINE_START(INTEGRATOR_AP_DT, "ARM Integrator/AP (Device Tree)")
586 .init_early = ap_init_early, 582 .init_early = ap_init_early,
587 .init_irq = ap_init_irq_of, 583 .init_irq = ap_init_irq_of,
588 .handle_irq = fpga_handle_irq, 584 .handle_irq = fpga_handle_irq,
589 .timer = &ap_of_timer, 585 .init_time = ap_of_timer_init,
590 .init_machine = ap_init_of, 586 .init_machine = ap_init_of,
591 .restart = integrator_restart, 587 .restart = integrator_restart,
592 .dt_compat = ap_dt_board_compat, 588 .dt_compat = ap_dt_board_compat,
@@ -638,7 +634,7 @@ static struct platform_device cfi_flash_device = {
638 .resource = &cfi_flash_resource, 634 .resource = &cfi_flash_resource,
639}; 635};
640 636
641static void __init ap_init_timer(void) 637static void __init ap_timer_init(void)
642{ 638{
643 struct clk *clk; 639 struct clk *clk;
644 unsigned long rate; 640 unsigned long rate;
@@ -657,10 +653,6 @@ static void __init ap_init_timer(void)
657 IRQ_TIMERINT1); 653 IRQ_TIMERINT1);
658} 654}
659 655
660static struct sys_timer ap_timer = {
661 .init = ap_init_timer,
662};
663
664#define INTEGRATOR_SC_VALID_INT 0x003fffff 656#define INTEGRATOR_SC_VALID_INT 0x003fffff
665 657
666static void __init ap_init_irq(void) 658static void __init ap_init_irq(void)
@@ -716,7 +708,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")
716 .init_early = ap_init_early, 708 .init_early = ap_init_early,
717 .init_irq = ap_init_irq, 709 .init_irq = ap_init_irq,
718 .handle_irq = fpga_handle_irq, 710 .handle_irq = fpga_handle_irq,
719 .timer = &ap_timer, 711 .init_time = ap_timer_init,
720 .init_machine = ap_init, 712 .init_machine = ap_init,
721 .restart = integrator_restart, 713 .restart = integrator_restart,
722MACHINE_END 714MACHINE_END
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 7322838c0447..4cef9a0ebbb9 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -251,7 +251,7 @@ static void __init intcp_init_early(void)
251 251
252#ifdef CONFIG_OF 252#ifdef CONFIG_OF
253 253
254static void __init intcp_timer_init_of(void) 254static void __init cp_of_timer_init(void)
255{ 255{
256 struct device_node *node; 256 struct device_node *node;
257 const char *path; 257 const char *path;
@@ -283,10 +283,6 @@ static void __init intcp_timer_init_of(void)
283 sp804_clockevents_init(base, irq, node->name); 283 sp804_clockevents_init(base, irq, node->name);
284} 284}
285 285
286static struct sys_timer cp_of_timer = {
287 .init = intcp_timer_init_of,
288};
289
290static const struct of_device_id fpga_irq_of_match[] __initconst = { 286static const struct of_device_id fpga_irq_of_match[] __initconst = {
291 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, }, 287 { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
292 { /* Sentinel */ } 288 { /* Sentinel */ }
@@ -390,7 +386,7 @@ DT_MACHINE_START(INTEGRATOR_CP_DT, "ARM Integrator/CP (Device Tree)")
390 .init_early = intcp_init_early, 386 .init_early = intcp_init_early,
391 .init_irq = intcp_init_irq_of, 387 .init_irq = intcp_init_irq_of,
392 .handle_irq = fpga_handle_irq, 388 .handle_irq = fpga_handle_irq,
393 .timer = &cp_of_timer, 389 .init_time = cp_of_timer_init,
394 .init_machine = intcp_init_of, 390 .init_machine = intcp_init_of,
395 .restart = integrator_restart, 391 .restart = integrator_restart,
396 .dt_compat = intcp_dt_board_compat, 392 .dt_compat = intcp_dt_board_compat,
@@ -512,7 +508,7 @@ static void __init intcp_init_irq(void)
512#define TIMER1_VA_BASE __io_address(INTEGRATOR_TIMER1_BASE) 508#define TIMER1_VA_BASE __io_address(INTEGRATOR_TIMER1_BASE)
513#define TIMER2_VA_BASE __io_address(INTEGRATOR_TIMER2_BASE) 509#define TIMER2_VA_BASE __io_address(INTEGRATOR_TIMER2_BASE)
514 510
515static void __init intcp_timer_init(void) 511static void __init cp_timer_init(void)
516{ 512{
517 writel(0, TIMER0_VA_BASE + TIMER_CTRL); 513 writel(0, TIMER0_VA_BASE + TIMER_CTRL);
518 writel(0, TIMER1_VA_BASE + TIMER_CTRL); 514 writel(0, TIMER1_VA_BASE + TIMER_CTRL);
@@ -522,10 +518,6 @@ static void __init intcp_timer_init(void)
522 sp804_clockevents_init(TIMER1_VA_BASE, IRQ_TIMERINT1, "timer1"); 518 sp804_clockevents_init(TIMER1_VA_BASE, IRQ_TIMERINT1, "timer1");
523} 519}
524 520
525static struct sys_timer cp_timer = {
526 .init = intcp_timer_init,
527};
528
529#define INTEGRATOR_CP_MMC_IRQS { IRQ_CP_MMCIINT0, IRQ_CP_MMCIINT1 } 521#define INTEGRATOR_CP_MMC_IRQS { IRQ_CP_MMCIINT0, IRQ_CP_MMCIINT1 }
530#define INTEGRATOR_CP_AACI_IRQS { IRQ_CP_AACIINT } 522#define INTEGRATOR_CP_AACI_IRQS { IRQ_CP_AACIINT }
531 523
@@ -565,7 +557,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
565 .init_early = intcp_init_early, 557 .init_early = intcp_init_early,
566 .init_irq = intcp_init_irq, 558 .init_irq = intcp_init_irq,
567 .handle_irq = fpga_handle_irq, 559 .handle_irq = fpga_handle_irq,
568 .timer = &cp_timer, 560 .init_time = cp_timer_init,
569 .init_machine = intcp_init, 561 .init_machine = intcp_init,
570 .restart = integrator_restart, 562 .restart = integrator_restart,
571MACHINE_END 563MACHINE_END
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c
index e3f3e7daa79e..02a8228ac2d3 100644
--- a/arch/arm/mach-iop13xx/iq81340mc.c
+++ b/arch/arm/mach-iop13xx/iq81340mc.c
@@ -84,17 +84,13 @@ static void __init iq81340mc_timer_init(void)
84 iop_init_time(bus_freq); 84 iop_init_time(bus_freq);
85} 85}
86 86
87static struct sys_timer iq81340mc_timer = {
88 .init = iq81340mc_timer_init,
89};
90
91MACHINE_START(IQ81340MC, "Intel IQ81340MC") 87MACHINE_START(IQ81340MC, "Intel IQ81340MC")
92 /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ 88 /* Maintainer: Dan Williams <dan.j.williams@intel.com> */
93 .atag_offset = 0x100, 89 .atag_offset = 0x100,
94 .init_early = iop13xx_init_early, 90 .init_early = iop13xx_init_early,
95 .map_io = iop13xx_map_io, 91 .map_io = iop13xx_map_io,
96 .init_irq = iop13xx_init_irq, 92 .init_irq = iop13xx_init_irq,
97 .timer = &iq81340mc_timer, 93 .init_time = iq81340mc_timer_init,
98 .init_machine = iq81340mc_init, 94 .init_machine = iq81340mc_init,
99 .restart = iop13xx_restart, 95 .restart = iop13xx_restart,
100MACHINE_END 96MACHINE_END
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c
index e94744111634..1b80f10722b3 100644
--- a/arch/arm/mach-iop13xx/iq81340sc.c
+++ b/arch/arm/mach-iop13xx/iq81340sc.c
@@ -86,17 +86,13 @@ static void __init iq81340sc_timer_init(void)
86 iop_init_time(bus_freq); 86 iop_init_time(bus_freq);
87} 87}
88 88
89static struct sys_timer iq81340sc_timer = {
90 .init = iq81340sc_timer_init,
91};
92
93MACHINE_START(IQ81340SC, "Intel IQ81340SC") 89MACHINE_START(IQ81340SC, "Intel IQ81340SC")
94 /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ 90 /* Maintainer: Dan Williams <dan.j.williams@intel.com> */
95 .atag_offset = 0x100, 91 .atag_offset = 0x100,
96 .init_early = iop13xx_init_early, 92 .init_early = iop13xx_init_early,
97 .map_io = iop13xx_map_io, 93 .map_io = iop13xx_map_io,
98 .init_irq = iop13xx_init_irq, 94 .init_irq = iop13xx_init_irq,
99 .timer = &iq81340sc_timer, 95 .init_time = iq81340sc_timer_init,
100 .init_machine = iq81340sc_init, 96 .init_machine = iq81340sc_init,
101 .restart = iop13xx_restart, 97 .restart = iop13xx_restart,
102MACHINE_END 98MACHINE_END
diff --git a/arch/arm/mach-iop32x/em7210.c b/arch/arm/mach-iop32x/em7210.c
index 9f369f09c29d..31fbb6c61b25 100644
--- a/arch/arm/mach-iop32x/em7210.c
+++ b/arch/arm/mach-iop32x/em7210.c
@@ -40,10 +40,6 @@ static void __init em7210_timer_init(void)
40 iop_init_time(200000000); 40 iop_init_time(200000000);
41} 41}
42 42
43static struct sys_timer em7210_timer = {
44 .init = em7210_timer_init,
45};
46
47/* 43/*
48 * EM7210 RTC 44 * EM7210 RTC
49 */ 45 */
@@ -205,7 +201,7 @@ MACHINE_START(EM7210, "Lanner EM7210")
205 .atag_offset = 0x100, 201 .atag_offset = 0x100,
206 .map_io = em7210_map_io, 202 .map_io = em7210_map_io,
207 .init_irq = iop32x_init_irq, 203 .init_irq = iop32x_init_irq,
208 .timer = &em7210_timer, 204 .init_time = em7210_timer_init,
209 .init_machine = em7210_init_machine, 205 .init_machine = em7210_init_machine,
210 .restart = iop3xx_restart, 206 .restart = iop3xx_restart,
211MACHINE_END 207MACHINE_END
diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c
index 02e20c3912ba..ac304705fe68 100644
--- a/arch/arm/mach-iop32x/glantank.c
+++ b/arch/arm/mach-iop32x/glantank.c
@@ -44,10 +44,6 @@ static void __init glantank_timer_init(void)
44 iop_init_time(200000000); 44 iop_init_time(200000000);
45} 45}
46 46
47static struct sys_timer glantank_timer = {
48 .init = glantank_timer_init,
49};
50
51 47
52/* 48/*
53 * GLAN Tank I/O. 49 * GLAN Tank I/O.
@@ -209,7 +205,7 @@ MACHINE_START(GLANTANK, "GLAN Tank")
209 .atag_offset = 0x100, 205 .atag_offset = 0x100,
210 .map_io = glantank_map_io, 206 .map_io = glantank_map_io,
211 .init_irq = iop32x_init_irq, 207 .init_irq = iop32x_init_irq,
212 .timer = &glantank_timer, 208 .init_time = glantank_timer_init,
213 .init_machine = glantank_init_machine, 209 .init_machine = glantank_init_machine,
214 .restart = iop3xx_restart, 210 .restart = iop3xx_restart,
215MACHINE_END 211MACHINE_END
diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c
index ddd1c7ecfe57..f2cd2966212d 100644
--- a/arch/arm/mach-iop32x/iq31244.c
+++ b/arch/arm/mach-iop32x/iq31244.c
@@ -75,10 +75,6 @@ static void __init iq31244_timer_init(void)
75 } 75 }
76} 76}
77 77
78static struct sys_timer iq31244_timer = {
79 .init = iq31244_timer_init,
80};
81
82 78
83/* 79/*
84 * IQ31244 I/O. 80 * IQ31244 I/O.
@@ -314,7 +310,7 @@ MACHINE_START(IQ31244, "Intel IQ31244")
314 .atag_offset = 0x100, 310 .atag_offset = 0x100,
315 .map_io = iq31244_map_io, 311 .map_io = iq31244_map_io,
316 .init_irq = iop32x_init_irq, 312 .init_irq = iop32x_init_irq,
317 .timer = &iq31244_timer, 313 .init_time = iq31244_timer_init,
318 .init_machine = iq31244_init_machine, 314 .init_machine = iq31244_init_machine,
319 .restart = iop3xx_restart, 315 .restart = iop3xx_restart,
320MACHINE_END 316MACHINE_END
@@ -329,7 +325,7 @@ MACHINE_START(EP80219, "Intel EP80219")
329 .atag_offset = 0x100, 325 .atag_offset = 0x100,
330 .map_io = iq31244_map_io, 326 .map_io = iq31244_map_io,
331 .init_irq = iop32x_init_irq, 327 .init_irq = iop32x_init_irq,
332 .timer = &iq31244_timer, 328 .init_time = iq31244_timer_init,
333 .init_machine = iq31244_init_machine, 329 .init_machine = iq31244_init_machine,
334 .restart = iop3xx_restart, 330 .restart = iop3xx_restart,
335MACHINE_END 331MACHINE_END
diff --git a/arch/arm/mach-iop32x/iq80321.c b/arch/arm/mach-iop32x/iq80321.c
index bf155e6a3b45..015435de90dd 100644
--- a/arch/arm/mach-iop32x/iq80321.c
+++ b/arch/arm/mach-iop32x/iq80321.c
@@ -43,10 +43,6 @@ static void __init iq80321_timer_init(void)
43 iop_init_time(200000000); 43 iop_init_time(200000000);
44} 44}
45 45
46static struct sys_timer iq80321_timer = {
47 .init = iq80321_timer_init,
48};
49
50 46
51/* 47/*
52 * IQ80321 I/O. 48 * IQ80321 I/O.
@@ -188,7 +184,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")
188 .atag_offset = 0x100, 184 .atag_offset = 0x100,
189 .map_io = iq80321_map_io, 185 .map_io = iq80321_map_io,
190 .init_irq = iop32x_init_irq, 186 .init_irq = iop32x_init_irq,
191 .timer = &iq80321_timer, 187 .init_time = iq80321_timer_init,
192 .init_machine = iq80321_init_machine, 188 .init_machine = iq80321_init_machine,
193 .restart = iop3xx_restart, 189 .restart = iop3xx_restart,
194MACHINE_END 190MACHINE_END
diff --git a/arch/arm/mach-iop32x/n2100.c b/arch/arm/mach-iop32x/n2100.c
index 5a7ae91e8849..ea0984a7449e 100644
--- a/arch/arm/mach-iop32x/n2100.c
+++ b/arch/arm/mach-iop32x/n2100.c
@@ -50,10 +50,6 @@ static void __init n2100_timer_init(void)
50 iop_init_time(198000000); 50 iop_init_time(198000000);
51} 51}
52 52
53static struct sys_timer n2100_timer = {
54 .init = n2100_timer_init,
55};
56
57 53
58/* 54/*
59 * N2100 I/O. 55 * N2100 I/O.
@@ -337,7 +333,7 @@ MACHINE_START(N2100, "Thecus N2100")
337 .atag_offset = 0x100, 333 .atag_offset = 0x100,
338 .map_io = n2100_map_io, 334 .map_io = n2100_map_io,
339 .init_irq = iop32x_init_irq, 335 .init_irq = iop32x_init_irq,
340 .timer = &n2100_timer, 336 .init_time = n2100_timer_init,
341 .init_machine = n2100_init_machine, 337 .init_machine = n2100_init_machine,
342 .restart = n2100_restart, 338 .restart = n2100_restart,
343MACHINE_END 339MACHINE_END
diff --git a/arch/arm/mach-iop33x/iq80331.c b/arch/arm/mach-iop33x/iq80331.c
index e74a7debe793..c43304a10fa7 100644
--- a/arch/arm/mach-iop33x/iq80331.c
+++ b/arch/arm/mach-iop33x/iq80331.c
@@ -45,10 +45,6 @@ static void __init iq80331_timer_init(void)
45 iop_init_time(266000000); 45 iop_init_time(266000000);
46} 46}
47 47
48static struct sys_timer iq80331_timer = {
49 .init = iq80331_timer_init,
50};
51
52 48
53/* 49/*
54 * IQ80331 PCI. 50 * IQ80331 PCI.
@@ -143,7 +139,7 @@ MACHINE_START(IQ80331, "Intel IQ80331")
143 .atag_offset = 0x100, 139 .atag_offset = 0x100,
144 .map_io = iop3xx_map_io, 140 .map_io = iop3xx_map_io,
145 .init_irq = iop33x_init_irq, 141 .init_irq = iop33x_init_irq,
146 .timer = &iq80331_timer, 142 .init_time = iq80331_timer_init,
147 .init_machine = iq80331_init_machine, 143 .init_machine = iq80331_init_machine,
148 .restart = iop3xx_restart, 144 .restart = iop3xx_restart,
149MACHINE_END 145MACHINE_END
diff --git a/arch/arm/mach-iop33x/iq80332.c b/arch/arm/mach-iop33x/iq80332.c
index e2f5beece6e8..8192987e78e5 100644
--- a/arch/arm/mach-iop33x/iq80332.c
+++ b/arch/arm/mach-iop33x/iq80332.c
@@ -45,10 +45,6 @@ static void __init iq80332_timer_init(void)
45 iop_init_time(266000000); 45 iop_init_time(266000000);
46} 46}
47 47
48static struct sys_timer iq80332_timer = {
49 .init = iq80332_timer_init,
50};
51
52 48
53/* 49/*
54 * IQ80332 PCI. 50 * IQ80332 PCI.
@@ -143,7 +139,7 @@ MACHINE_START(IQ80332, "Intel IQ80332")
143 .atag_offset = 0x100, 139 .atag_offset = 0x100,
144 .map_io = iop3xx_map_io, 140 .map_io = iop3xx_map_io,
145 .init_irq = iop33x_init_irq, 141 .init_irq = iop33x_init_irq,
146 .timer = &iq80332_timer, 142 .init_time = iq80332_timer_init,
147 .init_machine = iq80332_init_machine, 143 .init_machine = iq80332_init_machine,
148 .restart = iop3xx_restart, 144 .restart = iop3xx_restart,
149MACHINE_END 145MACHINE_END
diff --git a/arch/arm/mach-ixp4xx/avila-setup.c b/arch/arm/mach-ixp4xx/avila-setup.c
index 90e42e9982cb..6beec150c060 100644
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
@@ -167,7 +167,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")
167 .map_io = ixp4xx_map_io, 167 .map_io = ixp4xx_map_io,
168 .init_early = ixp4xx_init_early, 168 .init_early = ixp4xx_init_early,
169 .init_irq = ixp4xx_init_irq, 169 .init_irq = ixp4xx_init_irq,
170 .timer = &ixp4xx_timer, 170 .init_time = ixp4xx_timer_init,
171 .atag_offset = 0x100, 171 .atag_offset = 0x100,
172 .init_machine = avila_init, 172 .init_machine = avila_init,
173#if defined(CONFIG_PCI) 173#if defined(CONFIG_PCI)
@@ -187,7 +187,7 @@ MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
187 .map_io = ixp4xx_map_io, 187 .map_io = ixp4xx_map_io,
188 .init_early = ixp4xx_init_early, 188 .init_early = ixp4xx_init_early,
189 .init_irq = ixp4xx_init_irq, 189 .init_irq = ixp4xx_init_irq,
190 .timer = &ixp4xx_timer, 190 .init_time = ixp4xx_timer_init,
191 .atag_offset = 0x100, 191 .atag_offset = 0x100,
192 .init_machine = avila_init, 192 .init_machine = avila_init,
193#if defined(CONFIG_PCI) 193#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 8c0c0e2d0727..f6ac695ceb60 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -307,10 +307,6 @@ void __init ixp4xx_timer_init(void)
307 ixp4xx_clockevent_init(); 307 ixp4xx_clockevent_init();
308} 308}
309 309
310struct sys_timer ixp4xx_timer = {
311 .init = ixp4xx_timer_init,
312};
313
314static struct pxa2xx_udc_mach_info ixp4xx_udc_info; 310static struct pxa2xx_udc_mach_info ixp4xx_udc_info;
315 311
316void __init ixp4xx_set_udc_info(struct pxa2xx_udc_mach_info *info) 312void __init ixp4xx_set_udc_info(struct pxa2xx_udc_mach_info *info)
diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c
index 1b83110028d6..820cae8608fc 100644
--- a/arch/arm/mach-ixp4xx/coyote-setup.c
+++ b/arch/arm/mach-ixp4xx/coyote-setup.c
@@ -112,7 +112,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote")
112 .map_io = ixp4xx_map_io, 112 .map_io = ixp4xx_map_io,
113 .init_early = ixp4xx_init_early, 113 .init_early = ixp4xx_init_early,
114 .init_irq = ixp4xx_init_irq, 114 .init_irq = ixp4xx_init_irq,
115 .timer = &ixp4xx_timer, 115 .init_time = ixp4xx_timer_init,
116 .atag_offset = 0x100, 116 .atag_offset = 0x100,
117 .init_machine = coyote_init, 117 .init_machine = coyote_init,
118#if defined(CONFIG_PCI) 118#if defined(CONFIG_PCI)
@@ -132,7 +132,7 @@ MACHINE_START(IXDPG425, "Intel IXDPG425")
132 .map_io = ixp4xx_map_io, 132 .map_io = ixp4xx_map_io,
133 .init_early = ixp4xx_init_early, 133 .init_early = ixp4xx_init_early,
134 .init_irq = ixp4xx_init_irq, 134 .init_irq = ixp4xx_init_irq,
135 .timer = &ixp4xx_timer, 135 .init_time = ixp4xx_timer_init,
136 .atag_offset = 0x100, 136 .atag_offset = 0x100,
137 .init_machine = coyote_init, 137 .init_machine = coyote_init,
138 .restart = ixp4xx_restart, 138 .restart = ixp4xx_restart,
diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c
index 97a0af8f1955..5d413f8c5700 100644
--- a/arch/arm/mach-ixp4xx/dsmg600-setup.c
+++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c
@@ -226,10 +226,6 @@ static void __init dsmg600_timer_init(void)
226 ixp4xx_timer_init(); 226 ixp4xx_timer_init();
227} 227}
228 228
229static struct sys_timer dsmg600_timer = {
230 .init = dsmg600_timer_init,
231};
232
233static void __init dsmg600_init(void) 229static void __init dsmg600_init(void)
234{ 230{
235 ixp4xx_sys_init(); 231 ixp4xx_sys_init();
@@ -282,7 +278,7 @@ MACHINE_START(DSMG600, "D-Link DSM-G600 RevA")
282 .map_io = ixp4xx_map_io, 278 .map_io = ixp4xx_map_io,
283 .init_early = ixp4xx_init_early, 279 .init_early = ixp4xx_init_early,
284 .init_irq = ixp4xx_init_irq, 280 .init_irq = ixp4xx_init_irq,
285 .timer = &dsmg600_timer, 281 .init_time = dsmg600_timer_init,
286 .init_machine = dsmg600_init, 282 .init_machine = dsmg600_init,
287#if defined(CONFIG_PCI) 283#if defined(CONFIG_PCI)
288 .dma_zone_size = SZ_64M, 284 .dma_zone_size = SZ_64M,
diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c
index 9175a25a7511..429966b756ed 100644
--- a/arch/arm/mach-ixp4xx/fsg-setup.c
+++ b/arch/arm/mach-ixp4xx/fsg-setup.c
@@ -272,7 +272,7 @@ MACHINE_START(FSG, "Freecom FSG-3")
272 .map_io = ixp4xx_map_io, 272 .map_io = ixp4xx_map_io,
273 .init_early = ixp4xx_init_early, 273 .init_early = ixp4xx_init_early,
274 .init_irq = ixp4xx_init_irq, 274 .init_irq = ixp4xx_init_irq,
275 .timer = &ixp4xx_timer, 275 .init_time = ixp4xx_timer_init,
276 .atag_offset = 0x100, 276 .atag_offset = 0x100,
277 .init_machine = fsg_init, 277 .init_machine = fsg_init,
278#if defined(CONFIG_PCI) 278#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/gateway7001-setup.c b/arch/arm/mach-ixp4xx/gateway7001-setup.c
index 033c71758953..3d24b3fcee87 100644
--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c
+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c
@@ -99,7 +99,7 @@ MACHINE_START(GATEWAY7001, "Gateway 7001 AP")
99 .map_io = ixp4xx_map_io, 99 .map_io = ixp4xx_map_io,
100 .init_early = ixp4xx_init_early, 100 .init_early = ixp4xx_init_early,
101 .init_irq = ixp4xx_init_irq, 101 .init_irq = ixp4xx_init_irq,
102 .timer = &ixp4xx_timer, 102 .init_time = ixp4xx_timer_init,
103 .atag_offset = 0x100, 103 .atag_offset = 0x100,
104 .init_machine = gateway7001_init, 104 .init_machine = gateway7001_init,
105#if defined(CONFIG_PCI) 105#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c
index 53b8348dfcc2..e54ff491c105 100644
--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -498,7 +498,7 @@ MACHINE_START(GORAMO_MLR, "MultiLink")
498 .map_io = ixp4xx_map_io, 498 .map_io = ixp4xx_map_io,
499 .init_early = ixp4xx_init_early, 499 .init_early = ixp4xx_init_early,
500 .init_irq = ixp4xx_init_irq, 500 .init_irq = ixp4xx_init_irq,
501 .timer = &ixp4xx_timer, 501 .init_time = ixp4xx_timer_init,
502 .atag_offset = 0x100, 502 .atag_offset = 0x100,
503 .init_machine = gmlr_init, 503 .init_machine = gmlr_init,
504#if defined(CONFIG_PCI) 504#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
index 18ebc6be7969..16a12994fb53 100644
--- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c
+++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
@@ -167,7 +167,7 @@ MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)")
167 .map_io = ixp4xx_map_io, 167 .map_io = ixp4xx_map_io,
168 .init_early = ixp4xx_init_early, 168 .init_early = ixp4xx_init_early,
169 .init_irq = ixp4xx_init_irq, 169 .init_irq = ixp4xx_init_irq,
170 .timer = &ixp4xx_timer, 170 .init_time = ixp4xx_timer_init,
171 .atag_offset = 0x100, 171 .atag_offset = 0x100,
172 .init_machine = gtwx5715_init, 172 .init_machine = gtwx5715_init,
173#if defined(CONFIG_PCI) 173#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/include/mach/platform.h b/arch/arm/mach-ixp4xx/include/mach/platform.h
index 5bce94aacca9..db5afb69c123 100644
--- a/arch/arm/mach-ixp4xx/include/mach/platform.h
+++ b/arch/arm/mach-ixp4xx/include/mach/platform.h
@@ -89,8 +89,6 @@ struct ixp4xx_pata_data {
89 void __iomem *cs1; 89 void __iomem *cs1;
90}; 90};
91 91
92struct sys_timer;
93
94#define IXP4XX_ETH_NPEA 0x00 92#define IXP4XX_ETH_NPEA 0x00
95#define IXP4XX_ETH_NPEB 0x10 93#define IXP4XX_ETH_NPEB 0x10
96#define IXP4XX_ETH_NPEC 0x20 94#define IXP4XX_ETH_NPEC 0x20
@@ -125,7 +123,6 @@ extern void ixp4xx_init_early(void);
125extern void ixp4xx_init_irq(void); 123extern void ixp4xx_init_irq(void);
126extern void ixp4xx_sys_init(void); 124extern void ixp4xx_sys_init(void);
127extern void ixp4xx_timer_init(void); 125extern void ixp4xx_timer_init(void);
128extern struct sys_timer ixp4xx_timer;
129extern void ixp4xx_restart(char, const char *); 126extern void ixp4xx_restart(char, const char *);
130extern void ixp4xx_pci_preinit(void); 127extern void ixp4xx_pci_preinit(void);
131struct pci_sys_data; 128struct pci_sys_data;
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c
index 108a9d3f382d..22d688b7d513 100644
--- a/arch/arm/mach-ixp4xx/ixdp425-setup.c
+++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c
@@ -252,7 +252,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
252 .map_io = ixp4xx_map_io, 252 .map_io = ixp4xx_map_io,
253 .init_early = ixp4xx_init_early, 253 .init_early = ixp4xx_init_early,
254 .init_irq = ixp4xx_init_irq, 254 .init_irq = ixp4xx_init_irq,
255 .timer = &ixp4xx_timer, 255 .init_time = ixp4xx_timer_init,
256 .atag_offset = 0x100, 256 .atag_offset = 0x100,
257 .init_machine = ixdp425_init, 257 .init_machine = ixdp425_init,
258#if defined(CONFIG_PCI) 258#if defined(CONFIG_PCI)
@@ -268,7 +268,7 @@ MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
268 .map_io = ixp4xx_map_io, 268 .map_io = ixp4xx_map_io,
269 .init_early = ixp4xx_init_early, 269 .init_early = ixp4xx_init_early,
270 .init_irq = ixp4xx_init_irq, 270 .init_irq = ixp4xx_init_irq,
271 .timer = &ixp4xx_timer, 271 .init_time = ixp4xx_timer_init,
272 .atag_offset = 0x100, 272 .atag_offset = 0x100,
273 .init_machine = ixdp425_init, 273 .init_machine = ixdp425_init,
274#if defined(CONFIG_PCI) 274#if defined(CONFIG_PCI)
@@ -283,7 +283,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
283 .map_io = ixp4xx_map_io, 283 .map_io = ixp4xx_map_io,
284 .init_early = ixp4xx_init_early, 284 .init_early = ixp4xx_init_early,
285 .init_irq = ixp4xx_init_irq, 285 .init_irq = ixp4xx_init_irq,
286 .timer = &ixp4xx_timer, 286 .init_time = ixp4xx_timer_init,
287 .atag_offset = 0x100, 287 .atag_offset = 0x100,
288 .init_machine = ixdp425_init, 288 .init_machine = ixdp425_init,
289#if defined(CONFIG_PCI) 289#if defined(CONFIG_PCI)
@@ -298,7 +298,7 @@ MACHINE_START(KIXRP435, "Intel KIXRP435 Reference Platform")
298 .map_io = ixp4xx_map_io, 298 .map_io = ixp4xx_map_io,
299 .init_early = ixp4xx_init_early, 299 .init_early = ixp4xx_init_early,
300 .init_irq = ixp4xx_init_irq, 300 .init_irq = ixp4xx_init_irq,
301 .timer = &ixp4xx_timer, 301 .init_time = ixp4xx_timer_init,
302 .atag_offset = 0x100, 302 .atag_offset = 0x100,
303 .init_machine = ixdp425_init, 303 .init_machine = ixdp425_init,
304#if defined(CONFIG_PCI) 304#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
index 33cb0955b6bf..ed667ce9f576 100644
--- a/arch/arm/mach-ixp4xx/nas100d-setup.c
+++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
@@ -317,7 +317,7 @@ MACHINE_START(NAS100D, "Iomega NAS 100d")
317 .map_io = ixp4xx_map_io, 317 .map_io = ixp4xx_map_io,
318 .init_early = ixp4xx_init_early, 318 .init_early = ixp4xx_init_early,
319 .init_irq = ixp4xx_init_irq, 319 .init_irq = ixp4xx_init_irq,
320 .timer = &ixp4xx_timer, 320 .init_time = ixp4xx_timer_init,
321 .init_machine = nas100d_init, 321 .init_machine = nas100d_init,
322#if defined(CONFIG_PCI) 322#if defined(CONFIG_PCI)
323 .dma_zone_size = SZ_64M, 323 .dma_zone_size = SZ_64M,
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c
index e2903faaebb3..7e55236c26ea 100644
--- a/arch/arm/mach-ixp4xx/nslu2-setup.c
+++ b/arch/arm/mach-ixp4xx/nslu2-setup.c
@@ -232,10 +232,6 @@ static void __init nslu2_timer_init(void)
232 ixp4xx_timer_init(); 232 ixp4xx_timer_init();
233} 233}
234 234
235static struct sys_timer nslu2_timer = {
236 .init = nslu2_timer_init,
237};
238
239static void __init nslu2_init(void) 235static void __init nslu2_init(void)
240{ 236{
241 uint8_t __iomem *f; 237 uint8_t __iomem *f;
@@ -303,7 +299,7 @@ MACHINE_START(NSLU2, "Linksys NSLU2")
303 .map_io = ixp4xx_map_io, 299 .map_io = ixp4xx_map_io,
304 .init_early = ixp4xx_init_early, 300 .init_early = ixp4xx_init_early,
305 .init_irq = ixp4xx_init_irq, 301 .init_irq = ixp4xx_init_irq,
306 .timer = &nslu2_timer, 302 .init_time = nslu2_timer_init,
307 .init_machine = nslu2_init, 303 .init_machine = nslu2_init,
308#if defined(CONFIG_PCI) 304#if defined(CONFIG_PCI)
309 .dma_zone_size = SZ_64M, 305 .dma_zone_size = SZ_64M,
diff --git a/arch/arm/mach-ixp4xx/omixp-setup.c b/arch/arm/mach-ixp4xx/omixp-setup.c
index 158ddb79821d..46a89f5e8269 100644
--- a/arch/arm/mach-ixp4xx/omixp-setup.c
+++ b/arch/arm/mach-ixp4xx/omixp-setup.c
@@ -245,7 +245,7 @@ MACHINE_START(DEVIXP, "Omicron DEVIXP")
245 .map_io = ixp4xx_map_io, 245 .map_io = ixp4xx_map_io,
246 .init_early = ixp4xx_init_early, 246 .init_early = ixp4xx_init_early,
247 .init_irq = ixp4xx_init_irq, 247 .init_irq = ixp4xx_init_irq,
248 .timer = &ixp4xx_timer, 248 .init_time = ixp4xx_timer_init,
249 .init_machine = omixp_init, 249 .init_machine = omixp_init,
250 .restart = ixp4xx_restart, 250 .restart = ixp4xx_restart,
251MACHINE_END 251MACHINE_END
@@ -257,7 +257,7 @@ MACHINE_START(MICCPT, "Omicron MICCPT")
257 .map_io = ixp4xx_map_io, 257 .map_io = ixp4xx_map_io,
258 .init_early = ixp4xx_init_early, 258 .init_early = ixp4xx_init_early,
259 .init_irq = ixp4xx_init_irq, 259 .init_irq = ixp4xx_init_irq,
260 .timer = &ixp4xx_timer, 260 .init_time = ixp4xx_timer_init,
261 .init_machine = omixp_init, 261 .init_machine = omixp_init,
262#if defined(CONFIG_PCI) 262#if defined(CONFIG_PCI)
263 .dma_zone_size = SZ_64M, 263 .dma_zone_size = SZ_64M,
@@ -272,7 +272,7 @@ MACHINE_START(MIC256, "Omicron MIC256")
272 .map_io = ixp4xx_map_io, 272 .map_io = ixp4xx_map_io,
273 .init_early = ixp4xx_init_early, 273 .init_early = ixp4xx_init_early,
274 .init_irq = ixp4xx_init_irq, 274 .init_irq = ixp4xx_init_irq,
275 .timer = &ixp4xx_timer, 275 .init_time = ixp4xx_timer_init,
276 .init_machine = omixp_init, 276 .init_machine = omixp_init,
277 .restart = ixp4xx_restart, 277 .restart = ixp4xx_restart,
278MACHINE_END 278MACHINE_END
diff --git a/arch/arm/mach-ixp4xx/vulcan-setup.c b/arch/arm/mach-ixp4xx/vulcan-setup.c
index 2798f435aaf4..d42730a1d4ab 100644
--- a/arch/arm/mach-ixp4xx/vulcan-setup.c
+++ b/arch/arm/mach-ixp4xx/vulcan-setup.c
@@ -239,7 +239,7 @@ MACHINE_START(ARCOM_VULCAN, "Arcom/Eurotech Vulcan")
239 .map_io = ixp4xx_map_io, 239 .map_io = ixp4xx_map_io,
240 .init_early = ixp4xx_init_early, 240 .init_early = ixp4xx_init_early,
241 .init_irq = ixp4xx_init_irq, 241 .init_irq = ixp4xx_init_irq,
242 .timer = &ixp4xx_timer, 242 .init_time = ixp4xx_timer_init,
243 .atag_offset = 0x100, 243 .atag_offset = 0x100,
244 .init_machine = vulcan_init, 244 .init_machine = vulcan_init,
245#if defined(CONFIG_PCI) 245#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-ixp4xx/wg302v2-setup.c b/arch/arm/mach-ixp4xx/wg302v2-setup.c
index a785175b115b..8f9ea2f3a9a5 100644
--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c
+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c
@@ -100,7 +100,7 @@ MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2")
100 .map_io = ixp4xx_map_io, 100 .map_io = ixp4xx_map_io,
101 .init_early = ixp4xx_init_early, 101 .init_early = ixp4xx_init_early,
102 .init_irq = ixp4xx_init_irq, 102 .init_irq = ixp4xx_init_irq,
103 .timer = &ixp4xx_timer, 103 .init_time = ixp4xx_timer_init,
104 .atag_offset = 0x100, 104 .atag_offset = 0x100,
105 .init_machine = wg302v2_init, 105 .init_machine = wg302v2_init,
106#if defined(CONFIG_PCI) 106#if defined(CONFIG_PCI)
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index ff4150a2ad05..d6f57fd6f788 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -179,7 +179,7 @@ DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")
179 .map_io = kirkwood_map_io, 179 .map_io = kirkwood_map_io,
180 .init_early = kirkwood_init_early, 180 .init_early = kirkwood_init_early,
181 .init_irq = orion_dt_init_irq, 181 .init_irq = orion_dt_init_irq,
182 .timer = &kirkwood_timer, 182 .init_time = kirkwood_timer_init,
183 .init_machine = kirkwood_dt_init, 183 .init_machine = kirkwood_dt_init,
184 .restart = kirkwood_restart, 184 .restart = kirkwood_restart,
185 .dt_compat = kirkwood_dt_board_compat, 185 .dt_compat = kirkwood_dt_board_compat,
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index bac21a554c91..b5ad4dff6b12 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -530,7 +530,7 @@ static int __init kirkwood_find_tclk(void)
530 return 166666667; 530 return 166666667;
531} 531}
532 532
533static void __init kirkwood_timer_init(void) 533void __init kirkwood_timer_init(void)
534{ 534{
535 kirkwood_tclk = kirkwood_find_tclk(); 535 kirkwood_tclk = kirkwood_find_tclk();
536 536
@@ -538,10 +538,6 @@ static void __init kirkwood_timer_init(void)
538 IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk); 538 IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
539} 539}
540 540
541struct sys_timer kirkwood_timer = {
542 .init = kirkwood_timer_init,
543};
544
545/***************************************************************************** 541/*****************************************************************************
546 * Audio 542 * Audio
547 ****************************************************************************/ 543 ****************************************************************************/
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index 5ffa57f08c80..283ab611e8da 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -156,7 +156,7 @@ void kirkwood_xor1_init(void);
156void kirkwood_crypto_init(void); 156void kirkwood_crypto_init(void);
157 157
158extern int kirkwood_tclk; 158extern int kirkwood_tclk;
159extern struct sys_timer kirkwood_timer; 159extern void kirkwood_timer_init(void);
160 160
161#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) 161#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
162 162
diff --git a/arch/arm/mach-kirkwood/d2net_v2-setup.c b/arch/arm/mach-kirkwood/d2net_v2-setup.c
index 2c1a453df201..453418063c1e 100644
--- a/arch/arm/mach-kirkwood/d2net_v2-setup.c
+++ b/arch/arm/mach-kirkwood/d2net_v2-setup.c
@@ -226,6 +226,6 @@ MACHINE_START(D2NET_V2, "LaCie d2 Network v2")
226 .map_io = kirkwood_map_io, 226 .map_io = kirkwood_map_io,
227 .init_early = kirkwood_init_early, 227 .init_early = kirkwood_init_early,
228 .init_irq = kirkwood_init_irq, 228 .init_irq = kirkwood_init_irq,
229 .timer = &kirkwood_timer, 229 .init_time = kirkwood_timer_init,
230 .restart = kirkwood_restart, 230 .restart = kirkwood_restart,
231MACHINE_END 231MACHINE_END
diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
index c49b177c1523..5a369fe74754 100644
--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
+++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
@@ -103,6 +103,6 @@ MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
103 .map_io = kirkwood_map_io, 103 .map_io = kirkwood_map_io,
104 .init_early = kirkwood_init_early, 104 .init_early = kirkwood_init_early,
105 .init_irq = kirkwood_init_irq, 105 .init_irq = kirkwood_init_irq,
106 .timer = &kirkwood_timer, 106 .init_time = kirkwood_timer_init,
107 .restart = kirkwood_restart, 107 .restart = kirkwood_restart,
108MACHINE_END 108MACHINE_END
diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c
index 791a98fafa29..77f98f2b0416 100644
--- a/arch/arm/mach-kirkwood/dockstar-setup.c
+++ b/arch/arm/mach-kirkwood/dockstar-setup.c
@@ -107,6 +107,6 @@ MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")
107 .map_io = kirkwood_map_io, 107 .map_io = kirkwood_map_io,
108 .init_early = kirkwood_init_early, 108 .init_early = kirkwood_init_early,
109 .init_irq = kirkwood_init_irq, 109 .init_irq = kirkwood_init_irq,
110 .timer = &kirkwood_timer, 110 .init_time = kirkwood_timer_init,
111 .restart = kirkwood_restart, 111 .restart = kirkwood_restart,
112MACHINE_END 112MACHINE_END
diff --git a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/guruplug-setup.c
index 7cb55f982243..1c6e736cbbf8 100644
--- a/arch/arm/mach-kirkwood/guruplug-setup.c
+++ b/arch/arm/mach-kirkwood/guruplug-setup.c
@@ -126,6 +126,6 @@ MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")
126 .map_io = kirkwood_map_io, 126 .map_io = kirkwood_map_io,
127 .init_early = kirkwood_init_early, 127 .init_early = kirkwood_init_early,
128 .init_irq = kirkwood_init_irq, 128 .init_irq = kirkwood_init_irq,
129 .timer = &kirkwood_timer, 129 .init_time = kirkwood_timer_init,
130 .restart = kirkwood_restart, 130 .restart = kirkwood_restart,
131MACHINE_END 131MACHINE_END
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
index 6d8364a97810..ba384b992bef 100644
--- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
+++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
@@ -167,6 +167,6 @@ MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
167 .map_io = kirkwood_map_io, 167 .map_io = kirkwood_map_io,
168 .init_early = kirkwood_init_early, 168 .init_early = kirkwood_init_early,
169 .init_irq = kirkwood_init_irq, 169 .init_irq = kirkwood_init_irq,
170 .timer = &kirkwood_timer, 170 .init_time = kirkwood_timer_init,
171 .restart = kirkwood_restart, 171 .restart = kirkwood_restart,
172MACHINE_END 172MACHINE_END
diff --git a/arch/arm/mach-kirkwood/netspace_v2-setup.c b/arch/arm/mach-kirkwood/netspace_v2-setup.c
index 728e86d33f0c..3b706611da8e 100644
--- a/arch/arm/mach-kirkwood/netspace_v2-setup.c
+++ b/arch/arm/mach-kirkwood/netspace_v2-setup.c
@@ -263,7 +263,7 @@ MACHINE_START(NETSPACE_V2, "LaCie Network Space v2")
263 .map_io = kirkwood_map_io, 263 .map_io = kirkwood_map_io,
264 .init_early = kirkwood_init_early, 264 .init_early = kirkwood_init_early,
265 .init_irq = kirkwood_init_irq, 265 .init_irq = kirkwood_init_irq,
266 .timer = &kirkwood_timer, 266 .init_time = kirkwood_timer_init,
267 .restart = kirkwood_restart, 267 .restart = kirkwood_restart,
268MACHINE_END 268MACHINE_END
269#endif 269#endif
@@ -275,7 +275,7 @@ MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2")
275 .map_io = kirkwood_map_io, 275 .map_io = kirkwood_map_io,
276 .init_early = kirkwood_init_early, 276 .init_early = kirkwood_init_early,
277 .init_irq = kirkwood_init_irq, 277 .init_irq = kirkwood_init_irq,
278 .timer = &kirkwood_timer, 278 .init_time = kirkwood_timer_init,
279 .restart = kirkwood_restart, 279 .restart = kirkwood_restart,
280MACHINE_END 280MACHINE_END
281#endif 281#endif
@@ -287,7 +287,7 @@ MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2")
287 .map_io = kirkwood_map_io, 287 .map_io = kirkwood_map_io,
288 .init_early = kirkwood_init_early, 288 .init_early = kirkwood_init_early,
289 .init_irq = kirkwood_init_irq, 289 .init_irq = kirkwood_init_irq,
290 .timer = &kirkwood_timer, 290 .init_time = kirkwood_timer_init,
291 .restart = kirkwood_restart, 291 .restart = kirkwood_restart,
292MACHINE_END 292MACHINE_END
293#endif 293#endif
diff --git a/arch/arm/mach-kirkwood/netxbig_v2-setup.c b/arch/arm/mach-kirkwood/netxbig_v2-setup.c
index a3b091470b8a..913d032cdb19 100644
--- a/arch/arm/mach-kirkwood/netxbig_v2-setup.c
+++ b/arch/arm/mach-kirkwood/netxbig_v2-setup.c
@@ -404,7 +404,7 @@ MACHINE_START(NET2BIG_V2, "LaCie 2Big Network v2")
404 .map_io = kirkwood_map_io, 404 .map_io = kirkwood_map_io,
405 .init_early = kirkwood_init_early, 405 .init_early = kirkwood_init_early,
406 .init_irq = kirkwood_init_irq, 406 .init_irq = kirkwood_init_irq,
407 .timer = &kirkwood_timer, 407 .init_time = kirkwood_timer_init,
408 .restart = kirkwood_restart, 408 .restart = kirkwood_restart,
409MACHINE_END 409MACHINE_END
410#endif 410#endif
@@ -416,7 +416,7 @@ MACHINE_START(NET5BIG_V2, "LaCie 5Big Network v2")
416 .map_io = kirkwood_map_io, 416 .map_io = kirkwood_map_io,
417 .init_early = kirkwood_init_early, 417 .init_early = kirkwood_init_early,
418 .init_irq = kirkwood_init_irq, 418 .init_irq = kirkwood_init_irq,
419 .timer = &kirkwood_timer, 419 .init_time = kirkwood_timer_init,
420 .restart = kirkwood_restart, 420 .restart = kirkwood_restart,
421MACHINE_END 421MACHINE_END
422#endif 422#endif
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c
index 7e81e9b586bf..8ddd69fdc937 100644
--- a/arch/arm/mach-kirkwood/openrd-setup.c
+++ b/arch/arm/mach-kirkwood/openrd-setup.c
@@ -221,7 +221,7 @@ MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")
221 .map_io = kirkwood_map_io, 221 .map_io = kirkwood_map_io,
222 .init_early = kirkwood_init_early, 222 .init_early = kirkwood_init_early,
223 .init_irq = kirkwood_init_irq, 223 .init_irq = kirkwood_init_irq,
224 .timer = &kirkwood_timer, 224 .init_time = kirkwood_timer_init,
225 .restart = kirkwood_restart, 225 .restart = kirkwood_restart,
226MACHINE_END 226MACHINE_END
227#endif 227#endif
@@ -234,7 +234,7 @@ MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")
234 .map_io = kirkwood_map_io, 234 .map_io = kirkwood_map_io,
235 .init_early = kirkwood_init_early, 235 .init_early = kirkwood_init_early,
236 .init_irq = kirkwood_init_irq, 236 .init_irq = kirkwood_init_irq,
237 .timer = &kirkwood_timer, 237 .init_time = kirkwood_timer_init,
238 .restart = kirkwood_restart, 238 .restart = kirkwood_restart,
239MACHINE_END 239MACHINE_END
240#endif 240#endif
@@ -247,7 +247,7 @@ MACHINE_START(OPENRD_ULTIMATE, "Marvell OpenRD Ultimate Board")
247 .map_io = kirkwood_map_io, 247 .map_io = kirkwood_map_io,
248 .init_early = kirkwood_init_early, 248 .init_early = kirkwood_init_early,
249 .init_irq = kirkwood_init_irq, 249 .init_irq = kirkwood_init_irq,
250 .timer = &kirkwood_timer, 250 .init_time = kirkwood_timer_init,
251 .restart = kirkwood_restart, 251 .restart = kirkwood_restart,
252MACHINE_END 252MACHINE_END
253#endif 253#endif
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
index 19072c84008f..e4fd3129d36f 100644
--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
@@ -84,6 +84,6 @@ MACHINE_START(RD88F6192_NAS, "Marvell RD-88F6192-NAS Development Board")
84 .map_io = kirkwood_map_io, 84 .map_io = kirkwood_map_io,
85 .init_early = kirkwood_init_early, 85 .init_early = kirkwood_init_early,
86 .init_irq = kirkwood_init_irq, 86 .init_irq = kirkwood_init_irq,
87 .timer = &kirkwood_timer, 87 .init_time = kirkwood_timer_init,
88 .restart = kirkwood_restart, 88 .restart = kirkwood_restart,
89MACHINE_END 89MACHINE_END
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
index 9717101a7437..c7d93b48926b 100644
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
@@ -120,6 +120,6 @@ MACHINE_START(RD88F6281, "Marvell RD-88F6281 Reference Board")
120 .map_io = kirkwood_map_io, 120 .map_io = kirkwood_map_io,
121 .init_early = kirkwood_init_early, 121 .init_early = kirkwood_init_early,
122 .init_irq = kirkwood_init_irq, 122 .init_irq = kirkwood_init_irq,
123 .timer = &kirkwood_timer, 123 .init_time = kirkwood_timer_init,
124 .restart = kirkwood_restart, 124 .restart = kirkwood_restart,
125MACHINE_END 125MACHINE_END
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
index 8a175948b28d..55b68fa39f45 100644
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c
@@ -143,7 +143,7 @@ MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
143 .map_io = kirkwood_map_io, 143 .map_io = kirkwood_map_io,
144 .init_early = kirkwood_init_early, 144 .init_early = kirkwood_init_early,
145 .init_irq = kirkwood_init_irq, 145 .init_irq = kirkwood_init_irq,
146 .timer = &kirkwood_timer, 146 .init_time = kirkwood_timer_init,
147 .restart = kirkwood_restart, 147 .restart = kirkwood_restart,
148MACHINE_END 148MACHINE_END
149#endif 149#endif
@@ -155,7 +155,7 @@ MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board")
155 .map_io = kirkwood_map_io, 155 .map_io = kirkwood_map_io,
156 .init_early = kirkwood_init_early, 156 .init_early = kirkwood_init_early,
157 .init_irq = kirkwood_init_irq, 157 .init_irq = kirkwood_init_irq,
158 .timer = &kirkwood_timer, 158 .init_time = kirkwood_timer_init,
159 .restart = kirkwood_restart, 159 .restart = kirkwood_restart,
160MACHINE_END 160MACHINE_END
161#endif 161#endif
diff --git a/arch/arm/mach-kirkwood/t5325-setup.c b/arch/arm/mach-kirkwood/t5325-setup.c
index f2daf711e72e..8736f8c97518 100644
--- a/arch/arm/mach-kirkwood/t5325-setup.c
+++ b/arch/arm/mach-kirkwood/t5325-setup.c
@@ -211,6 +211,6 @@ MACHINE_START(T5325, "HP t5325 Thin Client")
211 .map_io = kirkwood_map_io, 211 .map_io = kirkwood_map_io,
212 .init_early = kirkwood_init_early, 212 .init_early = kirkwood_init_early,
213 .init_irq = kirkwood_init_irq, 213 .init_irq = kirkwood_init_irq,
214 .timer = &kirkwood_timer, 214 .init_time = kirkwood_timer_init,
215 .restart = kirkwood_restart, 215 .restart = kirkwood_restart,
216MACHINE_END 216MACHINE_END
diff --git a/arch/arm/mach-kirkwood/ts219-setup.c b/arch/arm/mach-kirkwood/ts219-setup.c
index 73e2b6ca9564..283abff90228 100644
--- a/arch/arm/mach-kirkwood/ts219-setup.c
+++ b/arch/arm/mach-kirkwood/ts219-setup.c
@@ -137,6 +137,6 @@ MACHINE_START(TS219, "QNAP TS-119/TS-219")
137 .map_io = kirkwood_map_io, 137 .map_io = kirkwood_map_io,
138 .init_early = kirkwood_init_early, 138 .init_early = kirkwood_init_early,
139 .init_irq = kirkwood_init_irq, 139 .init_irq = kirkwood_init_irq,
140 .timer = &kirkwood_timer, 140 .init_time = kirkwood_timer_init,
141 .restart = kirkwood_restart, 141 .restart = kirkwood_restart,
142MACHINE_END 142MACHINE_END
diff --git a/arch/arm/mach-kirkwood/ts41x-setup.c b/arch/arm/mach-kirkwood/ts41x-setup.c
index e4c61279ea86..81d585806b2f 100644
--- a/arch/arm/mach-kirkwood/ts41x-setup.c
+++ b/arch/arm/mach-kirkwood/ts41x-setup.c
@@ -181,6 +181,6 @@ MACHINE_START(TS41X, "QNAP TS-41x")
181 .map_io = kirkwood_map_io, 181 .map_io = kirkwood_map_io,
182 .init_early = kirkwood_init_early, 182 .init_early = kirkwood_init_early,
183 .init_irq = kirkwood_init_irq, 183 .init_irq = kirkwood_init_irq,
184 .timer = &kirkwood_timer, 184 .init_time = kirkwood_timer_init,
185 .restart = kirkwood_restart, 185 .restart = kirkwood_restart,
186MACHINE_END 186MACHINE_END
diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c
index 255502ddd879..7beec9b8becd 100644
--- a/arch/arm/mach-ks8695/board-acs5k.c
+++ b/arch/arm/mach-ks8695/board-acs5k.c
@@ -227,6 +227,6 @@ MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board")
227 .map_io = ks8695_map_io, 227 .map_io = ks8695_map_io,
228 .init_irq = ks8695_init_irq, 228 .init_irq = ks8695_init_irq,
229 .init_machine = acs5k_init, 229 .init_machine = acs5k_init,
230 .timer = &ks8695_timer, 230 .init_time = ks8695_timer_init,
231 .restart = ks8695_restart, 231 .restart = ks8695_restart,
232MACHINE_END 232MACHINE_END
diff --git a/arch/arm/mach-ks8695/board-dsm320.c b/arch/arm/mach-ks8695/board-dsm320.c
index e0d36cef2c56..d37c218c3584 100644
--- a/arch/arm/mach-ks8695/board-dsm320.c
+++ b/arch/arm/mach-ks8695/board-dsm320.c
@@ -125,6 +125,6 @@ MACHINE_START(DSM320, "D-Link DSM-320 Wireless Media Player")
125 .map_io = ks8695_map_io, 125 .map_io = ks8695_map_io,
126 .init_irq = ks8695_init_irq, 126 .init_irq = ks8695_init_irq,
127 .init_machine = dsm320_init, 127 .init_machine = dsm320_init,
128 .timer = &ks8695_timer, 128 .init_time = ks8695_timer_init,
129 .restart = ks8695_restart, 129 .restart = ks8695_restart,
130MACHINE_END 130MACHINE_END
diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c
index a8270725b76d..3acbdfd31391 100644
--- a/arch/arm/mach-ks8695/board-micrel.c
+++ b/arch/arm/mach-ks8695/board-micrel.c
@@ -57,6 +57,6 @@ MACHINE_START(KS8695, "KS8695 Centaur Development Board")
57 .map_io = ks8695_map_io, 57 .map_io = ks8695_map_io,
58 .init_irq = ks8695_init_irq, 58 .init_irq = ks8695_init_irq,
59 .init_machine = micrel_init, 59 .init_machine = micrel_init,
60 .timer = &ks8695_timer, 60 .init_time = ks8695_timer_init,
61 .restart = ks8695_restart, 61 .restart = ks8695_restart,
62MACHINE_END 62MACHINE_END
diff --git a/arch/arm/mach-ks8695/board-og.c b/arch/arm/mach-ks8695/board-og.c
index 1623ba461e47..002bc619bb68 100644
--- a/arch/arm/mach-ks8695/board-og.c
+++ b/arch/arm/mach-ks8695/board-og.c
@@ -145,7 +145,7 @@ MACHINE_START(CM4002, "OpenGear/CM4002")
145 .map_io = ks8695_map_io, 145 .map_io = ks8695_map_io,
146 .init_irq = ks8695_init_irq, 146 .init_irq = ks8695_init_irq,
147 .init_machine = og_init, 147 .init_machine = og_init,
148 .timer = &ks8695_timer, 148 .init_time = ks8695_timer_init,
149 .restart = ks8695_restart, 149 .restart = ks8695_restart,
150MACHINE_END 150MACHINE_END
151#endif 151#endif
@@ -157,7 +157,7 @@ MACHINE_START(CM4008, "OpenGear/CM4008")
157 .map_io = ks8695_map_io, 157 .map_io = ks8695_map_io,
158 .init_irq = ks8695_init_irq, 158 .init_irq = ks8695_init_irq,
159 .init_machine = og_init, 159 .init_machine = og_init,
160 .timer = &ks8695_timer, 160 .init_time = ks8695_timer_init,
161 .restart = ks8695_restart, 161 .restart = ks8695_restart,
162MACHINE_END 162MACHINE_END
163#endif 163#endif
@@ -169,7 +169,7 @@ MACHINE_START(CM41XX, "OpenGear/CM41xx")
169 .map_io = ks8695_map_io, 169 .map_io = ks8695_map_io,
170 .init_irq = ks8695_init_irq, 170 .init_irq = ks8695_init_irq,
171 .init_machine = og_init, 171 .init_machine = og_init,
172 .timer = &ks8695_timer, 172 .init_time = ks8695_timer_init,
173 .restart = ks8695_restart, 173 .restart = ks8695_restart,
174MACHINE_END 174MACHINE_END
175#endif 175#endif
@@ -181,7 +181,7 @@ MACHINE_START(IM4004, "OpenGear/IM4004")
181 .map_io = ks8695_map_io, 181 .map_io = ks8695_map_io,
182 .init_irq = ks8695_init_irq, 182 .init_irq = ks8695_init_irq,
183 .init_machine = og_init, 183 .init_machine = og_init,
184 .timer = &ks8695_timer, 184 .init_time = ks8695_timer_init,
185 .restart = ks8695_restart, 185 .restart = ks8695_restart,
186MACHINE_END 186MACHINE_END
187#endif 187#endif
@@ -193,7 +193,7 @@ MACHINE_START(IM42XX, "OpenGear/IM42xx")
193 .map_io = ks8695_map_io, 193 .map_io = ks8695_map_io,
194 .init_irq = ks8695_init_irq, 194 .init_irq = ks8695_init_irq,
195 .init_machine = og_init, 195 .init_machine = og_init,
196 .timer = &ks8695_timer, 196 .init_time = ks8695_timer_init,
197 .restart = ks8695_restart, 197 .restart = ks8695_restart,
198MACHINE_END 198MACHINE_END
199#endif 199#endif
diff --git a/arch/arm/mach-ks8695/board-sg.c b/arch/arm/mach-ks8695/board-sg.c
index f35b98b5bf37..fdf2352d2cf8 100644
--- a/arch/arm/mach-ks8695/board-sg.c
+++ b/arch/arm/mach-ks8695/board-sg.c
@@ -91,7 +91,7 @@ MACHINE_START(LITE300, "SecureComputing/SG300")
91 .map_io = ks8695_map_io, 91 .map_io = ks8695_map_io,
92 .init_irq = ks8695_init_irq, 92 .init_irq = ks8695_init_irq,
93 .init_machine = sg_init, 93 .init_machine = sg_init,
94 .timer = &ks8695_timer, 94 .init_time = ks8695_timer_init,
95 .restart = ks8695_restart, 95 .restart = ks8695_restart,
96MACHINE_END 96MACHINE_END
97#endif 97#endif
@@ -103,7 +103,7 @@ MACHINE_START(SG310, "McAfee/SG310")
103 .map_io = ks8695_map_io, 103 .map_io = ks8695_map_io,
104 .init_irq = ks8695_init_irq, 104 .init_irq = ks8695_init_irq,
105 .init_machine = sg_init, 105 .init_machine = sg_init,
106 .timer = &ks8695_timer, 106 .init_time = ks8695_timer_init,
107 .restart = ks8695_restart, 107 .restart = ks8695_restart,
108MACHINE_END 108MACHINE_END
109#endif 109#endif
@@ -115,7 +115,7 @@ MACHINE_START(SE4200, "SecureComputing/SE4200")
115 .map_io = ks8695_map_io, 115 .map_io = ks8695_map_io,
116 .init_irq = ks8695_init_irq, 116 .init_irq = ks8695_init_irq,
117 .init_machine = sg_init, 117 .init_machine = sg_init,
118 .timer = &ks8695_timer, 118 .init_time = ks8695_timer_init,
119 .restart = ks8695_restart, 119 .restart = ks8695_restart,
120MACHINE_END 120MACHINE_END
121#endif 121#endif
diff --git a/arch/arm/mach-ks8695/generic.h b/arch/arm/mach-ks8695/generic.h
index f8bdb11a9c33..6e97ce462d73 100644
--- a/arch/arm/mach-ks8695/generic.h
+++ b/arch/arm/mach-ks8695/generic.h
@@ -13,4 +13,4 @@
13extern __init void ks8695_map_io(void); 13extern __init void ks8695_map_io(void);
14extern __init void ks8695_init_irq(void); 14extern __init void ks8695_init_irq(void);
15extern void ks8695_restart(char, const char *); 15extern void ks8695_restart(char, const char *);
16extern struct sys_timer ks8695_timer; 16extern void ks8695_timer_init(void);
diff --git a/arch/arm/mach-ks8695/time.c b/arch/arm/mach-ks8695/time.c
index 46c84bc7792c..c272a3863d5f 100644
--- a/arch/arm/mach-ks8695/time.c
+++ b/arch/arm/mach-ks8695/time.c
@@ -146,7 +146,7 @@ static void ks8695_timer_setup(void)
146 0xFFFFFFFFU); 146 0xFFFFFFFFU);
147} 147}
148 148
149static void __init ks8695_timer_init (void) 149void __init ks8695_timer_init(void)
150{ 150{
151 ks8695_timer_setup(); 151 ks8695_timer_setup();
152 152
@@ -154,10 +154,6 @@ static void __init ks8695_timer_init (void)
154 setup_irq(KS8695_IRQ_TIMER1, &ks8695_timer_irq); 154 setup_irq(KS8695_IRQ_TIMER1, &ks8695_timer_irq);
155} 155}
156 156
157struct sys_timer ks8695_timer = {
158 .init = ks8695_timer_init,
159};
160
161void ks8695_restart(char mode, const char *cmd) 157void ks8695_restart(char mode, const char *cmd)
162{ 158{
163 unsigned int reg; 159 unsigned int reg;
diff --git a/arch/arm/mach-lpc32xx/common.h b/arch/arm/mach-lpc32xx/common.h
index afeac3b1fae6..e0b26062a272 100644
--- a/arch/arm/mach-lpc32xx/common.h
+++ b/arch/arm/mach-lpc32xx/common.h
@@ -25,7 +25,7 @@
25/* 25/*
26 * Other arch specific structures and functions 26 * Other arch specific structures and functions
27 */ 27 */
28extern struct sys_timer lpc32xx_timer; 28extern void lpc32xx_timer_init(void);
29extern void __init lpc32xx_init_irq(void); 29extern void __init lpc32xx_init_irq(void);
30extern void __init lpc32xx_map_io(void); 30extern void __init lpc32xx_map_io(void);
31extern void __init lpc32xx_serial_init(void); 31extern void __init lpc32xx_serial_init(void);
diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c
index e8ff4c3f0566..c1cd5a943ab1 100644
--- a/arch/arm/mach-lpc32xx/phy3250.c
+++ b/arch/arm/mach-lpc32xx/phy3250.c
@@ -263,7 +263,7 @@ DT_MACHINE_START(LPC32XX_DT, "LPC32XX SoC (Flattened Device Tree)")
263 .atag_offset = 0x100, 263 .atag_offset = 0x100,
264 .map_io = lpc32xx_map_io, 264 .map_io = lpc32xx_map_io,
265 .init_irq = lpc32xx_init_irq, 265 .init_irq = lpc32xx_init_irq,
266 .timer = &lpc32xx_timer, 266 .init_time = lpc32xx_timer_init,
267 .init_machine = lpc3250_machine_init, 267 .init_machine = lpc3250_machine_init,
268 .dt_compat = lpc32xx_dt_compat, 268 .dt_compat = lpc32xx_dt_compat,
269 .restart = lpc23xx_restart, 269 .restart = lpc23xx_restart,
diff --git a/arch/arm/mach-lpc32xx/timer.c b/arch/arm/mach-lpc32xx/timer.c
index c40667c33161..88bd4ce3b94a 100644
--- a/arch/arm/mach-lpc32xx/timer.c
+++ b/arch/arm/mach-lpc32xx/timer.c
@@ -100,7 +100,7 @@ static struct irqaction lpc32xx_timer_irq = {
100 * clocks need to be enabled here manually and then tagged as used in 100 * clocks need to be enabled here manually and then tagged as used in
101 * the clock driver initialization 101 * the clock driver initialization
102 */ 102 */
103static void __init lpc32xx_timer_init(void) 103void __init lpc32xx_timer_init(void)
104{ 104{
105 u32 clkrate, pllreg; 105 u32 clkrate, pllreg;
106 106
@@ -161,8 +161,3 @@ static void __init lpc32xx_timer_init(void)
161 clocksource_mmio_init(LPC32XX_TIMER_TC(LPC32XX_TIMER1_BASE), 161 clocksource_mmio_init(LPC32XX_TIMER_TC(LPC32XX_TIMER1_BASE),
162 "lpc32xx_clksrc", clkrate, 300, 32, clocksource_mmio_readl_up); 162 "lpc32xx_clksrc", clkrate, 300, 32, clocksource_mmio_readl_up);
163} 163}
164
165struct sys_timer lpc32xx_timer = {
166 .init = &lpc32xx_timer_init,
167};
168
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index e5dba9c5dc54..9f64d5632e07 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -262,7 +262,7 @@ MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")
262 .map_io = mmp_map_io, 262 .map_io = mmp_map_io,
263 .nr_irqs = MMP_NR_IRQS, 263 .nr_irqs = MMP_NR_IRQS,
264 .init_irq = pxa168_init_irq, 264 .init_irq = pxa168_init_irq,
265 .timer = &pxa168_timer, 265 .init_time = pxa168_timer_init,
266 .init_machine = common_init, 266 .init_machine = common_init,
267 .restart = pxa168_restart, 267 .restart = pxa168_restart,
268MACHINE_END 268MACHINE_END
@@ -271,7 +271,7 @@ MACHINE_START(ZYLONITE2, "PXA168-based Zylonite2 Development Platform")
271 .map_io = mmp_map_io, 271 .map_io = mmp_map_io,
272 .nr_irqs = MMP_NR_IRQS, 272 .nr_irqs = MMP_NR_IRQS,
273 .init_irq = pxa168_init_irq, 273 .init_irq = pxa168_init_irq,
274 .timer = &pxa168_timer, 274 .init_time = pxa168_timer_init,
275 .init_machine = common_init, 275 .init_machine = common_init,
276 .restart = pxa168_restart, 276 .restart = pxa168_restart,
277MACHINE_END 277MACHINE_END
diff --git a/arch/arm/mach-mmp/avengers_lite.c b/arch/arm/mach-mmp/avengers_lite.c
index 603542ae6fbd..1f94957b56ae 100644
--- a/arch/arm/mach-mmp/avengers_lite.c
+++ b/arch/arm/mach-mmp/avengers_lite.c
@@ -45,7 +45,7 @@ MACHINE_START(AVENGERS_LITE, "PXA168 Avengers lite Development Platform")
45 .map_io = mmp_map_io, 45 .map_io = mmp_map_io,
46 .nr_irqs = MMP_NR_IRQS, 46 .nr_irqs = MMP_NR_IRQS,
47 .init_irq = pxa168_init_irq, 47 .init_irq = pxa168_init_irq,
48 .timer = &pxa168_timer, 48 .init_time = pxa168_timer_init,
49 .init_machine = avengers_lite_init, 49 .init_machine = avengers_lite_init,
50 .restart = pxa168_restart, 50 .restart = pxa168_restart,
51MACHINE_END 51MACHINE_END
diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c
index 5cb769cd26d9..2358011c7d8e 100644
--- a/arch/arm/mach-mmp/brownstone.c
+++ b/arch/arm/mach-mmp/brownstone.c
@@ -218,7 +218,7 @@ MACHINE_START(BROWNSTONE, "Brownstone Development Platform")
218 .map_io = mmp_map_io, 218 .map_io = mmp_map_io,
219 .nr_irqs = BROWNSTONE_NR_IRQS, 219 .nr_irqs = BROWNSTONE_NR_IRQS,
220 .init_irq = mmp2_init_irq, 220 .init_irq = mmp2_init_irq,
221 .timer = &mmp2_timer, 221 .init_time = mmp2_timer_init,
222 .init_machine = brownstone_init, 222 .init_machine = brownstone_init,
223 .restart = mmp_restart, 223 .restart = mmp_restart,
224MACHINE_END 224MACHINE_END
diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h
index bd453274fca2..0bdc50b134ce 100644
--- a/arch/arm/mach-mmp/common.h
+++ b/arch/arm/mach-mmp/common.h
@@ -1,7 +1,5 @@
1#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) 1#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
2 2
3struct sys_timer;
4
5extern void timer_init(int irq); 3extern void timer_init(int irq);
6 4
7extern void __init icu_init_irq(void); 5extern void __init icu_init_irq(void);
diff --git a/arch/arm/mach-mmp/flint.c b/arch/arm/mach-mmp/flint.c
index 8059cc0905c6..754c352dd02b 100644
--- a/arch/arm/mach-mmp/flint.c
+++ b/arch/arm/mach-mmp/flint.c
@@ -121,7 +121,7 @@ MACHINE_START(FLINT, "Flint Development Platform")
121 .map_io = mmp_map_io, 121 .map_io = mmp_map_io,
122 .nr_irqs = FLINT_NR_IRQS, 122 .nr_irqs = FLINT_NR_IRQS,
123 .init_irq = mmp2_init_irq, 123 .init_irq = mmp2_init_irq,
124 .timer = &mmp2_timer, 124 .init_time = mmp2_timer_init,
125 .init_machine = flint_init, 125 .init_machine = flint_init,
126 .restart = mmp_restart, 126 .restart = mmp_restart,
127MACHINE_END 127MACHINE_END
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c
index 5c3d61ee729a..d1e2d595e79c 100644
--- a/arch/arm/mach-mmp/gplugd.c
+++ b/arch/arm/mach-mmp/gplugd.c
@@ -194,7 +194,7 @@ MACHINE_START(GPLUGD, "PXA168-based GuruPlug Display (gplugD) Platform")
194 .map_io = mmp_map_io, 194 .map_io = mmp_map_io,
195 .nr_irqs = MMP_NR_IRQS, 195 .nr_irqs = MMP_NR_IRQS,
196 .init_irq = pxa168_init_irq, 196 .init_irq = pxa168_init_irq,
197 .timer = &pxa168_timer, 197 .init_time = pxa168_timer_init,
198 .init_machine = gplugd_init, 198 .init_machine = gplugd_init,
199 .restart = pxa168_restart, 199 .restart = pxa168_restart,
200MACHINE_END 200MACHINE_END
diff --git a/arch/arm/mach-mmp/include/mach/mmp2.h b/arch/arm/mach-mmp/include/mach/mmp2.h
index c4ca4d17194a..0764f4ecec82 100644
--- a/arch/arm/mach-mmp/include/mach/mmp2.h
+++ b/arch/arm/mach-mmp/include/mach/mmp2.h
@@ -3,9 +3,7 @@
3 3
4#include <linux/platform_data/pxa_sdhci.h> 4#include <linux/platform_data/pxa_sdhci.h>
5 5
6struct sys_timer; 6extern void mmp2_timer_init(void);
7
8extern struct sys_timer mmp2_timer;
9extern void __init mmp2_init_icu(void); 7extern void __init mmp2_init_icu(void);
10extern void __init mmp2_init_irq(void); 8extern void __init mmp2_init_irq(void);
11extern void mmp2_clear_pmic_int(void); 9extern void mmp2_clear_pmic_int(void);
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h
index 37632d964d50..7ed1df21ea1c 100644
--- a/arch/arm/mach-mmp/include/mach/pxa168.h
+++ b/arch/arm/mach-mmp/include/mach/pxa168.h
@@ -1,9 +1,7 @@
1#ifndef __ASM_MACH_PXA168_H 1#ifndef __ASM_MACH_PXA168_H
2#define __ASM_MACH_PXA168_H 2#define __ASM_MACH_PXA168_H
3 3
4struct sys_timer; 4extern void pxa168_timer_init(void);
5
6extern struct sys_timer pxa168_timer;
7extern void __init pxa168_init_irq(void); 5extern void __init pxa168_init_irq(void);
8extern void pxa168_restart(char, const char *); 6extern void pxa168_restart(char, const char *);
9extern void pxa168_clear_keypad_wakeup(void); 7extern void pxa168_clear_keypad_wakeup(void);
diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h
index 3b58a3b2d7df..eff31ab6dc3b 100644
--- a/arch/arm/mach-mmp/include/mach/pxa910.h
+++ b/arch/arm/mach-mmp/include/mach/pxa910.h
@@ -1,9 +1,7 @@
1#ifndef __ASM_MACH_PXA910_H 1#ifndef __ASM_MACH_PXA910_H
2#define __ASM_MACH_PXA910_H 2#define __ASM_MACH_PXA910_H
3 3
4struct sys_timer; 4extern void pxa910_timer_init(void);
5
6extern struct sys_timer pxa910_timer;
7extern void __init pxa910_init_irq(void); 5extern void __init pxa910_init_irq(void);
8 6
9#include <linux/i2c.h> 7#include <linux/i2c.h>
diff --git a/arch/arm/mach-mmp/jasper.c b/arch/arm/mach-mmp/jasper.c
index ff73249884d0..66634fd0ecb0 100644
--- a/arch/arm/mach-mmp/jasper.c
+++ b/arch/arm/mach-mmp/jasper.c
@@ -174,7 +174,7 @@ MACHINE_START(MARVELL_JASPER, "Jasper Development Platform")
174 .map_io = mmp_map_io, 174 .map_io = mmp_map_io,
175 .nr_irqs = JASPER_NR_IRQS, 175 .nr_irqs = JASPER_NR_IRQS,
176 .init_irq = mmp2_init_irq, 176 .init_irq = mmp2_init_irq,
177 .timer = &mmp2_timer, 177 .init_time = mmp2_timer_init,
178 .init_machine = jasper_init, 178 .init_machine = jasper_init,
179 .restart = mmp_restart, 179 .restart = mmp_restart,
180MACHINE_END 180MACHINE_END
diff --git a/arch/arm/mach-mmp/mmp-dt.c b/arch/arm/mach-mmp/mmp-dt.c
index 033cc31b3c72..d063efa0a4f1 100644
--- a/arch/arm/mach-mmp/mmp-dt.c
+++ b/arch/arm/mach-mmp/mmp-dt.c
@@ -22,10 +22,6 @@
22extern void __init mmp_dt_irq_init(void); 22extern void __init mmp_dt_irq_init(void);
23extern void __init mmp_dt_init_timer(void); 23extern void __init mmp_dt_init_timer(void);
24 24
25static struct sys_timer mmp_dt_timer = {
26 .init = mmp_dt_init_timer,
27};
28
29static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = { 25static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = {
30 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.0", NULL), 26 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.0", NULL),
31 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4018000, "pxa2xx-uart.1", NULL), 27 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4018000, "pxa2xx-uart.1", NULL),
@@ -69,7 +65,7 @@ static const char *mmp_dt_board_compat[] __initdata = {
69DT_MACHINE_START(PXA168_DT, "Marvell PXA168 (Device Tree Support)") 65DT_MACHINE_START(PXA168_DT, "Marvell PXA168 (Device Tree Support)")
70 .map_io = mmp_map_io, 66 .map_io = mmp_map_io,
71 .init_irq = mmp_dt_irq_init, 67 .init_irq = mmp_dt_irq_init,
72 .timer = &mmp_dt_timer, 68 .init_time = mmp_dt_init_timer,
73 .init_machine = pxa168_dt_init, 69 .init_machine = pxa168_dt_init,
74 .dt_compat = mmp_dt_board_compat, 70 .dt_compat = mmp_dt_board_compat,
75MACHINE_END 71MACHINE_END
@@ -77,7 +73,7 @@ MACHINE_END
77DT_MACHINE_START(PXA910_DT, "Marvell PXA910 (Device Tree Support)") 73DT_MACHINE_START(PXA910_DT, "Marvell PXA910 (Device Tree Support)")
78 .map_io = mmp_map_io, 74 .map_io = mmp_map_io,
79 .init_irq = mmp_dt_irq_init, 75 .init_irq = mmp_dt_irq_init,
80 .timer = &mmp_dt_timer, 76 .init_time = mmp_dt_init_timer,
81 .init_machine = pxa910_dt_init, 77 .init_machine = pxa910_dt_init,
82 .dt_compat = mmp_dt_board_compat, 78 .dt_compat = mmp_dt_board_compat,
83MACHINE_END 79MACHINE_END
diff --git a/arch/arm/mach-mmp/mmp2-dt.c b/arch/arm/mach-mmp/mmp2-dt.c
index 535a5ed5977b..fad431aa6e09 100644
--- a/arch/arm/mach-mmp/mmp2-dt.c
+++ b/arch/arm/mach-mmp/mmp2-dt.c
@@ -24,10 +24,6 @@
24extern void __init mmp_dt_irq_init(void); 24extern void __init mmp_dt_irq_init(void);
25extern void __init mmp_dt_init_timer(void); 25extern void __init mmp_dt_init_timer(void);
26 26
27static struct sys_timer mmp_dt_timer = {
28 .init = mmp_dt_init_timer,
29};
30
31static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = { 27static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = {
32 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4030000, "pxa2xx-uart.0", NULL), 28 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4030000, "pxa2xx-uart.0", NULL),
33 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.1", NULL), 29 OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.1", NULL),
@@ -54,7 +50,7 @@ static const char *mmp2_dt_board_compat[] __initdata = {
54DT_MACHINE_START(MMP2_DT, "Marvell MMP2 (Device Tree Support)") 50DT_MACHINE_START(MMP2_DT, "Marvell MMP2 (Device Tree Support)")
55 .map_io = mmp_map_io, 51 .map_io = mmp_map_io,
56 .init_irq = mmp_dt_irq_init, 52 .init_irq = mmp_dt_irq_init,
57 .timer = &mmp_dt_timer, 53 .init_time = mmp_dt_init_timer,
58 .init_machine = mmp2_dt_init, 54 .init_machine = mmp2_dt_init,
59 .dt_compat = mmp2_dt_board_compat, 55 .dt_compat = mmp2_dt_board_compat,
60MACHINE_END 56MACHINE_END
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c
index 3a3768c7a191..d94d114eef7b 100644
--- a/arch/arm/mach-mmp/mmp2.c
+++ b/arch/arm/mach-mmp/mmp2.c
@@ -114,7 +114,7 @@ postcore_initcall(mmp2_init);
114 114
115#define APBC_TIMERS APBC_REG(0x024) 115#define APBC_TIMERS APBC_REG(0x024)
116 116
117static void __init mmp2_timer_init(void) 117void __init mmp2_timer_init(void)
118{ 118{
119 unsigned long clk_rst; 119 unsigned long clk_rst;
120 120
@@ -130,10 +130,6 @@ static void __init mmp2_timer_init(void)
130 timer_init(IRQ_MMP2_TIMER1); 130 timer_init(IRQ_MMP2_TIMER1);
131} 131}
132 132
133struct sys_timer mmp2_timer = {
134 .init = mmp2_timer_init,
135};
136
137/* on-chip devices */ 133/* on-chip devices */
138MMP2_DEVICE(uart1, "pxa2xx-uart", 0, UART1, 0xd4030000, 0x30, 4, 5); 134MMP2_DEVICE(uart1, "pxa2xx-uart", 0, UART1, 0xd4030000, 0x30, 4, 5);
139MMP2_DEVICE(uart2, "pxa2xx-uart", 1, UART2, 0xd4017000, 0x30, 20, 21); 135MMP2_DEVICE(uart2, "pxa2xx-uart", 1, UART2, 0xd4017000, 0x30, 20, 21);
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
index b7f074f15498..9bc7b86a86a7 100644
--- a/arch/arm/mach-mmp/pxa168.c
+++ b/arch/arm/mach-mmp/pxa168.c
@@ -67,7 +67,7 @@ postcore_initcall(pxa168_init);
67#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3)) 67#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))
68#define APBC_TIMERS APBC_REG(0x34) 68#define APBC_TIMERS APBC_REG(0x34)
69 69
70static void __init pxa168_timer_init(void) 70void __init pxa168_timer_init(void)
71{ 71{
72 /* this is early, we have to initialize the CCU registers by 72 /* this is early, we have to initialize the CCU registers by
73 * ourselves instead of using clk_* API. Clock rate is defined 73 * ourselves instead of using clk_* API. Clock rate is defined
@@ -81,10 +81,6 @@ static void __init pxa168_timer_init(void)
81 timer_init(IRQ_PXA168_TIMER1); 81 timer_init(IRQ_PXA168_TIMER1);
82} 82}
83 83
84struct sys_timer pxa168_timer = {
85 .init = pxa168_timer_init,
86};
87
88void pxa168_clear_keypad_wakeup(void) 84void pxa168_clear_keypad_wakeup(void)
89{ 85{
90 uint32_t val; 86 uint32_t val;
diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c
index 8b1e16fbb7a5..c6a89f1eca4e 100644
--- a/arch/arm/mach-mmp/pxa910.c
+++ b/arch/arm/mach-mmp/pxa910.c
@@ -101,7 +101,7 @@ postcore_initcall(pxa910_init);
101#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3)) 101#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))
102#define APBC_TIMERS APBC_REG(0x34) 102#define APBC_TIMERS APBC_REG(0x34)
103 103
104static void __init pxa910_timer_init(void) 104void __init pxa910_timer_init(void)
105{ 105{
106 /* reset and configure */ 106 /* reset and configure */
107 __raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS); 107 __raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS);
@@ -110,10 +110,6 @@ static void __init pxa910_timer_init(void)
110 timer_init(IRQ_PXA910_AP1_TIMER1); 110 timer_init(IRQ_PXA910_AP1_TIMER1);
111} 111}
112 112
113struct sys_timer pxa910_timer = {
114 .init = pxa910_timer_init,
115};
116
117/* on-chip devices */ 113/* on-chip devices */
118 114
119/* NOTE: there are totally 3 UARTs on PXA910: 115/* NOTE: there are totally 3 UARTs on PXA910:
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c
index b28f9084dfff..4c127d23955d 100644
--- a/arch/arm/mach-mmp/tavorevb.c
+++ b/arch/arm/mach-mmp/tavorevb.c
@@ -103,7 +103,7 @@ MACHINE_START(TAVOREVB, "PXA910 Evaluation Board (aka TavorEVB)")
103 .map_io = mmp_map_io, 103 .map_io = mmp_map_io,
104 .nr_irqs = MMP_NR_IRQS, 104 .nr_irqs = MMP_NR_IRQS,
105 .init_irq = pxa910_init_irq, 105 .init_irq = pxa910_init_irq,
106 .timer = &pxa910_timer, 106 .init_time = pxa910_timer_init,
107 .init_machine = tavorevb_init, 107 .init_machine = tavorevb_init,
108 .restart = mmp_restart, 108 .restart = mmp_restart,
109MACHINE_END 109MACHINE_END
diff --git a/arch/arm/mach-mmp/teton_bga.c b/arch/arm/mach-mmp/teton_bga.c
index dd30ea74785c..8609967975ed 100644
--- a/arch/arm/mach-mmp/teton_bga.c
+++ b/arch/arm/mach-mmp/teton_bga.c
@@ -86,7 +86,7 @@ MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform")
86 .map_io = mmp_map_io, 86 .map_io = mmp_map_io,
87 .nr_irqs = MMP_NR_IRQS, 87 .nr_irqs = MMP_NR_IRQS,
88 .init_irq = pxa168_init_irq, 88 .init_irq = pxa168_init_irq,
89 .timer = &pxa168_timer, 89 .init_time = pxa168_timer_init,
90 .init_machine = teton_bga_init, 90 .init_machine = teton_bga_init,
91 .restart = pxa168_restart, 91 .restart = pxa168_restart,
92MACHINE_END 92MACHINE_END
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index ce55fd8821c4..6e474900b13e 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -218,7 +218,7 @@ MACHINE_START(TTC_DKB, "PXA910-based TTC_DKB Development Platform")
218 .map_io = mmp_map_io, 218 .map_io = mmp_map_io,
219 .nr_irqs = TTCDKB_NR_IRQS, 219 .nr_irqs = TTCDKB_NR_IRQS,
220 .init_irq = pxa910_init_irq, 220 .init_irq = pxa910_init_irq,
221 .timer = &pxa910_timer, 221 .init_time = pxa910_timer_init,
222 .init_machine = ttc_dkb_init, 222 .init_machine = ttc_dkb_init,
223 .restart = mmp_restart, 223 .restart = mmp_restart,
224MACHINE_END 224MACHINE_END
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index b5b4de2cdf9e..27c41eabfd12 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -59,6 +59,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
59 .handle_irq = gic_handle_irq, 59 .handle_irq = gic_handle_irq,
60 .init_machine = msm8x60_dt_init, 60 .init_machine = msm8x60_dt_init,
61 .init_late = msm8x60_init_late, 61 .init_late = msm8x60_init_late,
62 .timer = &msm_dt_timer, 62 .init_time = msm_dt_timer_init,
63 .dt_compat = msm8x60_fluid_match, 63 .dt_compat = msm8x60_fluid_match,
64MACHINE_END 64MACHINE_END
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 4490edb71c17..3226d5276962 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -43,7 +43,7 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
43 .smp = smp_ops(msm_smp_ops), 43 .smp = smp_ops(msm_smp_ops),
44 .map_io = msm_map_msm8960_io, 44 .map_io = msm_map_msm8960_io,
45 .init_irq = msm_dt_init_irq, 45 .init_irq = msm_dt_init_irq,
46 .timer = &msm_dt_timer, 46 .init_time = msm_dt_timer_init,
47 .init_machine = msm_dt_init, 47 .init_machine = msm_dt_init,
48 .dt_compat = msm8960_dt_match, 48 .dt_compat = msm8960_dt_match,
49 .handle_irq = gic_handle_irq, 49 .handle_irq = gic_handle_irq,
diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c
index 6ce542e2e21c..84d720af34ab 100644
--- a/arch/arm/mach-msm/board-halibut.c
+++ b/arch/arm/mach-msm/board-halibut.c
@@ -106,5 +106,5 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
106 .init_irq = halibut_init_irq, 106 .init_irq = halibut_init_irq,
107 .init_machine = halibut_init, 107 .init_machine = halibut_init,
108 .init_late = halibut_init_late, 108 .init_late = halibut_init_late,
109 .timer = &msm7x01_timer, 109 .init_time = msm7x01_timer_init,
110MACHINE_END 110MACHINE_END
diff --git a/arch/arm/mach-msm/board-mahimahi.c b/arch/arm/mach-msm/board-mahimahi.c
index df00bc03ce74..30c3496db593 100644
--- a/arch/arm/mach-msm/board-mahimahi.c
+++ b/arch/arm/mach-msm/board-mahimahi.c
@@ -75,7 +75,7 @@ static void __init mahimahi_init_late(void)
75 smd_debugfs_init(); 75 smd_debugfs_init();
76} 76}
77 77
78extern struct sys_timer msm_timer; 78void msm_timer_init(void);
79 79
80MACHINE_START(MAHIMAHI, "mahimahi") 80MACHINE_START(MAHIMAHI, "mahimahi")
81 .atag_offset = 0x100, 81 .atag_offset = 0x100,
@@ -84,5 +84,5 @@ MACHINE_START(MAHIMAHI, "mahimahi")
84 .init_irq = msm_init_irq, 84 .init_irq = msm_init_irq,
85 .init_machine = mahimahi_init, 85 .init_machine = mahimahi_init,
86 .init_late = mahimahi_init_late, 86 .init_late = mahimahi_init_late,
87 .timer = &msm_timer, 87 .init_time = msm_timer_init,
88MACHINE_END 88MACHINE_END
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c
index effa6f4336c7..7bc3f82e3ec9 100644
--- a/arch/arm/mach-msm/board-msm7x30.c
+++ b/arch/arm/mach-msm/board-msm7x30.c
@@ -131,7 +131,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
131 .init_irq = msm7x30_init_irq, 131 .init_irq = msm7x30_init_irq,
132 .init_machine = msm7x30_init, 132 .init_machine = msm7x30_init,
133 .init_late = msm7x30_init_late, 133 .init_late = msm7x30_init_late,
134 .timer = &msm7x30_timer, 134 .init_time = msm7x30_timer_init,
135MACHINE_END 135MACHINE_END
136 136
137MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") 137MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")
@@ -142,7 +142,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")
142 .init_irq = msm7x30_init_irq, 142 .init_irq = msm7x30_init_irq,
143 .init_machine = msm7x30_init, 143 .init_machine = msm7x30_init,
144 .init_late = msm7x30_init_late, 144 .init_late = msm7x30_init_late,
145 .timer = &msm7x30_timer, 145 .init_time = msm7x30_timer_init,
146MACHINE_END 146MACHINE_END
147 147
148MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") 148MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")
@@ -153,5 +153,5 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")
153 .init_irq = msm7x30_init_irq, 153 .init_irq = msm7x30_init_irq,
154 .init_machine = msm7x30_init, 154 .init_machine = msm7x30_init,
155 .init_late = msm7x30_init_late, 155 .init_late = msm7x30_init_late,
156 .timer = &msm7x30_timer, 156 .init_time = msm7x30_timer_init,
157MACHINE_END 157MACHINE_END
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c
index 2448fcf09eb1..686e7949a73a 100644
--- a/arch/arm/mach-msm/board-qsd8x50.c
+++ b/arch/arm/mach-msm/board-qsd8x50.c
@@ -200,7 +200,7 @@ MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF")
200 .init_irq = qsd8x50_init_irq, 200 .init_irq = qsd8x50_init_irq,
201 .init_machine = qsd8x50_init, 201 .init_machine = qsd8x50_init,
202 .init_late = qsd8x50_init_late, 202 .init_late = qsd8x50_init_late,
203 .timer = &qsd8x50_timer, 203 .init_time = qsd8x50_timer_init,
204MACHINE_END 204MACHINE_END
205 205
206MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5") 206MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")
@@ -209,5 +209,5 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")
209 .init_irq = qsd8x50_init_irq, 209 .init_irq = qsd8x50_init_irq,
210 .init_machine = qsd8x50_init, 210 .init_machine = qsd8x50_init,
211 .init_late = qsd8x50_init_late, 211 .init_late = qsd8x50_init_late,
212 .timer = &qsd8x50_timer, 212 .init_time = qsd8x50_timer_init,
213MACHINE_END 213MACHINE_END
diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c
index b7b0fc7e3278..70730111b37c 100644
--- a/arch/arm/mach-msm/board-sapphire.c
+++ b/arch/arm/mach-msm/board-sapphire.c
@@ -53,7 +53,7 @@ static struct platform_device *devices[] __initdata = {
53 &msm_device_uart3, 53 &msm_device_uart3,
54}; 54};
55 55
56extern struct sys_timer msm_timer; 56void msm_timer_init(void);
57 57
58static void __init sapphire_init_irq(void) 58static void __init sapphire_init_irq(void)
59{ 59{
@@ -113,5 +113,5 @@ MACHINE_START(SAPPHIRE, "sapphire")
113 .init_irq = sapphire_init_irq, 113 .init_irq = sapphire_init_irq,
114 .init_machine = sapphire_init, 114 .init_machine = sapphire_init,
115 .init_late = sapphire_init_late, 115 .init_late = sapphire_init_late,
116 .timer = &msm_timer, 116 .init_time = msm_timer_init,
117MACHINE_END 117MACHINE_END
diff --git a/arch/arm/mach-msm/board-trout.c b/arch/arm/mach-msm/board-trout.c
index 4ba0800e243e..919bfa32871a 100644
--- a/arch/arm/mach-msm/board-trout.c
+++ b/arch/arm/mach-msm/board-trout.c
@@ -110,5 +110,5 @@ MACHINE_START(TROUT, "HTC Dream")
110 .init_irq = trout_init_irq, 110 .init_irq = trout_init_irq,
111 .init_machine = trout_init, 111 .init_machine = trout_init,
112 .init_late = trout_init_late, 112 .init_late = trout_init_late,
113 .timer = &msm7x01_timer, 113 .init_time = msm7x01_timer_init,
114MACHINE_END 114MACHINE_END
diff --git a/arch/arm/mach-msm/common.h b/arch/arm/mach-msm/common.h
index 633a7159d5ff..ce8215a269e5 100644
--- a/arch/arm/mach-msm/common.h
+++ b/arch/arm/mach-msm/common.h
@@ -12,10 +12,10 @@
12#ifndef __MACH_COMMON_H 12#ifndef __MACH_COMMON_H
13#define __MACH_COMMON_H 13#define __MACH_COMMON_H
14 14
15extern struct sys_timer msm7x01_timer; 15extern void msm7x01_timer_init(void);
16extern struct sys_timer msm7x30_timer; 16extern void msm7x30_timer_init(void);
17extern struct sys_timer msm_dt_timer; 17extern void msm_dt_timer_init(void);
18extern struct sys_timer qsd8x50_timer; 18extern void qsd8x50_timer_init(void);
19 19
20extern void msm_map_common_io(void); 20extern void msm_map_common_io(void);
21extern void msm_map_msm7x30_io(void); 21extern void msm_map_msm7x30_io(void);
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index 476549a8a709..2fb5f3eec50f 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -229,7 +229,7 @@ static const struct of_device_id msm_gpt_match[] __initconst = {
229 { }, 229 { },
230}; 230};
231 231
232static void __init msm_dt_timer_init(void) 232void __init msm_dt_timer_init(void)
233{ 233{
234 struct device_node *np; 234 struct device_node *np;
235 u32 freq; 235 u32 freq;
@@ -296,10 +296,6 @@ static void __init msm_dt_timer_init(void)
296 296
297 msm_timer_init(freq, 32, irq, !!percpu_offset); 297 msm_timer_init(freq, 32, irq, !!percpu_offset);
298} 298}
299
300struct sys_timer msm_dt_timer = {
301 .init = msm_dt_timer_init
302};
303#endif 299#endif
304 300
305static int __init msm_timer_map(phys_addr_t event, phys_addr_t source) 301static int __init msm_timer_map(phys_addr_t event, phys_addr_t source)
@@ -317,7 +313,7 @@ static int __init msm_timer_map(phys_addr_t event, phys_addr_t source)
317 return 0; 313 return 0;
318} 314}
319 315
320static void __init msm7x01_timer_init(void) 316void __init msm7x01_timer_init(void)
321{ 317{
322 struct clocksource *cs = &msm_clocksource; 318 struct clocksource *cs = &msm_clocksource;
323 319
@@ -330,28 +326,16 @@ static void __init msm7x01_timer_init(void)
330 false); 326 false);
331} 327}
332 328
333struct sys_timer msm7x01_timer = { 329void __init msm7x30_timer_init(void)
334 .init = msm7x01_timer_init
335};
336
337static void __init msm7x30_timer_init(void)
338{ 330{
339 if (msm_timer_map(0xc0100004, 0xc0100024)) 331 if (msm_timer_map(0xc0100004, 0xc0100024))
340 return; 332 return;
341 msm_timer_init(24576000 / 4, 32, 1, false); 333 msm_timer_init(24576000 / 4, 32, 1, false);
342} 334}
343 335
344struct sys_timer msm7x30_timer = { 336void __init qsd8x50_timer_init(void)
345 .init = msm7x30_timer_init
346};
347
348static void __init qsd8x50_timer_init(void)
349{ 337{
350 if (msm_timer_map(0xAC100000, 0xAC100010)) 338 if (msm_timer_map(0xAC100000, 0xAC100010))
351 return; 339 return;
352 msm_timer_init(19200000 / 4, 32, 7, false); 340 msm_timer_init(19200000 / 4, 32, 7, false);
353} 341}
354
355struct sys_timer qsd8x50_timer = {
356 .init = qsd8x50_timer_init
357};
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
index ee74ec97c141..1f2ef98b37c6 100644
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
@@ -150,6 +150,6 @@ MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
150 .map_io = mv78xx0_map_io, 150 .map_io = mv78xx0_map_io,
151 .init_early = mv78xx0_init_early, 151 .init_early = mv78xx0_init_early,
152 .init_irq = mv78xx0_init_irq, 152 .init_irq = mv78xx0_init_irq,
153 .timer = &mv78xx0_timer, 153 .init_time = mv78xx0_timer_init,
154 .restart = mv78xx0_restart, 154 .restart = mv78xx0_restart,
155MACHINE_END 155MACHINE_END
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index d0cb4857b4b3..0efa14498ebc 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -336,16 +336,12 @@ void __init mv78xx0_init_early(void)
336 orion_time_set_base(TIMER_VIRT_BASE); 336 orion_time_set_base(TIMER_VIRT_BASE);
337} 337}
338 338
339static void __init_refok mv78xx0_timer_init(void) 339void __init_refok mv78xx0_timer_init(void)
340{ 340{
341 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR, 341 orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
342 IRQ_MV78XX0_TIMER_1, get_tclk()); 342 IRQ_MV78XX0_TIMER_1, get_tclk());
343} 343}
344 344
345struct sys_timer mv78xx0_timer = {
346 .init = mv78xx0_timer_init,
347};
348
349 345
350/***************************************************************************** 346/*****************************************************************************
351 * General 347 * General
diff --git a/arch/arm/mach-mv78xx0/common.h b/arch/arm/mach-mv78xx0/common.h
index 507c767d49e0..5e9485bad0ac 100644
--- a/arch/arm/mach-mv78xx0/common.h
+++ b/arch/arm/mach-mv78xx0/common.h
@@ -47,7 +47,7 @@ void mv78xx0_uart3_init(void);
47void mv78xx0_i2c_init(void); 47void mv78xx0_i2c_init(void);
48void mv78xx0_restart(char, const char *); 48void mv78xx0_restart(char, const char *);
49 49
50extern struct sys_timer mv78xx0_timer; 50extern void mv78xx0_timer_init(void);
51 51
52 52
53#endif 53#endif
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index 4d6d48bf51ef..4e0f22b30bc8 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -98,6 +98,6 @@ MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")
98 .map_io = mv78xx0_map_io, 98 .map_io = mv78xx0_map_io,
99 .init_early = mv78xx0_init_early, 99 .init_early = mv78xx0_init_early,
100 .init_irq = mv78xx0_init_irq, 100 .init_irq = mv78xx0_init_irq,
101 .timer = &mv78xx0_timer, 101 .init_time = mv78xx0_timer_init,
102 .restart = mv78xx0_restart, 102 .restart = mv78xx0_restart,
103MACHINE_END 103MACHINE_END
diff --git a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
index 9a882706e138..d2d06f3957f3 100644
--- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
+++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
@@ -83,6 +83,6 @@ MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")
83 .map_io = mv78xx0_map_io, 83 .map_io = mv78xx0_map_io,
84 .init_early = mv78xx0_init_early, 84 .init_early = mv78xx0_init_early,
85 .init_irq = mv78xx0_init_irq, 85 .init_irq = mv78xx0_init_irq,
86 .timer = &mv78xx0_timer, 86 .init_time = mv78xx0_timer_init,
87 .restart = mv78xx0_restart, 87 .restart = mv78xx0_restart,
88MACHINE_END 88MACHINE_END
diff --git a/arch/arm/mach-mvebu/armada-370-xp.c b/arch/arm/mach-mvebu/armada-370-xp.c
index 7434b5e36197..a5ea616d6d12 100644
--- a/arch/arm/mach-mvebu/armada-370-xp.c
+++ b/arch/arm/mach-mvebu/armada-370-xp.c
@@ -56,10 +56,6 @@ void __init armada_370_xp_init_early(void)
56 init_dma_coherent_pool_size(SZ_1M); 56 init_dma_coherent_pool_size(SZ_1M);
57} 57}
58 58
59struct sys_timer armada_370_xp_timer = {
60 .init = armada_370_xp_timer_and_clk_init,
61};
62
63static void __init armada_370_xp_dt_init(void) 59static void __init armada_370_xp_dt_init(void)
64{ 60{
65 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 61 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
@@ -78,7 +74,7 @@ DT_MACHINE_START(ARMADA_XP_DT, "Marvell Armada 370/XP (Device Tree)")
78 .init_early = armada_370_xp_init_early, 74 .init_early = armada_370_xp_init_early,
79 .init_irq = armada_370_xp_init_irq, 75 .init_irq = armada_370_xp_init_irq,
80 .handle_irq = armada_370_xp_handle_irq, 76 .handle_irq = armada_370_xp_handle_irq,
81 .timer = &armada_370_xp_timer, 77 .init_time = armada_370_xp_timer_and_clk_init,
82 .restart = mvebu_restart, 78 .restart = mvebu_restart,
83 .dt_compat = armada_370_xp_dt_compat, 79 .dt_compat = armada_370_xp_dt_compat,
84MACHINE_END 80MACHINE_END
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
index c66129b5dd18..5fad7cefe8aa 100644
--- a/arch/arm/mach-mxs/mach-mxs.c
+++ b/arch/arm/mach-mxs/mach-mxs.c
@@ -163,19 +163,11 @@ static void __init imx23_timer_init(void)
163 mx23_clocks_init(); 163 mx23_clocks_init();
164} 164}
165 165
166static struct sys_timer imx23_timer = {
167 .init = imx23_timer_init,
168};
169
170static void __init imx28_timer_init(void) 166static void __init imx28_timer_init(void)
171{ 167{
172 mx28_clocks_init(); 168 mx28_clocks_init();
173} 169}
174 170
175static struct sys_timer imx28_timer = {
176 .init = imx28_timer_init,
177};
178
179enum mac_oui { 171enum mac_oui {
180 OUI_FSL, 172 OUI_FSL,
181 OUI_DENX, 173 OUI_DENX,
@@ -446,7 +438,7 @@ DT_MACHINE_START(IMX23, "Freescale i.MX23 (Device Tree)")
446 .map_io = mx23_map_io, 438 .map_io = mx23_map_io,
447 .init_irq = icoll_init_irq, 439 .init_irq = icoll_init_irq,
448 .handle_irq = icoll_handle_irq, 440 .handle_irq = icoll_handle_irq,
449 .timer = &imx23_timer, 441 .init_time = imx23_timer_init,
450 .init_machine = mxs_machine_init, 442 .init_machine = mxs_machine_init,
451 .dt_compat = imx23_dt_compat, 443 .dt_compat = imx23_dt_compat,
452 .restart = mxs_restart, 444 .restart = mxs_restart,
@@ -456,7 +448,7 @@ DT_MACHINE_START(IMX28, "Freescale i.MX28 (Device Tree)")
456 .map_io = mx28_map_io, 448 .map_io = mx28_map_io,
457 .init_irq = icoll_init_irq, 449 .init_irq = icoll_init_irq,
458 .handle_irq = icoll_handle_irq, 450 .handle_irq = icoll_handle_irq,
459 .timer = &imx28_timer, 451 .init_time = imx28_timer_init,
460 .init_machine = mxs_machine_init, 452 .init_machine = mxs_machine_init,
461 .dt_compat = imx28_dt_compat, 453 .dt_compat = imx28_dt_compat,
462 .restart = mxs_restart, 454 .restart = mxs_restart,
diff --git a/arch/arm/mach-netx/generic.h b/arch/arm/mach-netx/generic.h
index 9b915119b8d6..768b26bbb42b 100644
--- a/arch/arm/mach-netx/generic.h
+++ b/arch/arm/mach-netx/generic.h
@@ -21,5 +21,4 @@ extern void __init netx_map_io(void);
21extern void __init netx_init_irq(void); 21extern void __init netx_init_irq(void);
22extern void netx_restart(char, const char *); 22extern void netx_restart(char, const char *);
23 23
24struct sys_timer; 24extern void netx_timer_init(void);
25extern struct sys_timer netx_timer;
diff --git a/arch/arm/mach-netx/nxdb500.c b/arch/arm/mach-netx/nxdb500.c
index 8b781ff7c9e9..241e1b9c58cb 100644
--- a/arch/arm/mach-netx/nxdb500.c
+++ b/arch/arm/mach-netx/nxdb500.c
@@ -205,7 +205,7 @@ MACHINE_START(NXDB500, "Hilscher nxdb500")
205 .map_io = netx_map_io, 205 .map_io = netx_map_io,
206 .init_irq = netx_init_irq, 206 .init_irq = netx_init_irq,
207 .handle_irq = vic_handle_irq, 207 .handle_irq = vic_handle_irq,
208 .timer = &netx_timer, 208 .init_time = netx_timer_init,
209 .init_machine = nxdb500_init, 209 .init_machine = nxdb500_init,
210 .restart = netx_restart, 210 .restart = netx_restart,
211MACHINE_END 211MACHINE_END
diff --git a/arch/arm/mach-netx/nxdkn.c b/arch/arm/mach-netx/nxdkn.c
index b26dbce334f2..055aeecedde2 100644
--- a/arch/arm/mach-netx/nxdkn.c
+++ b/arch/arm/mach-netx/nxdkn.c
@@ -98,7 +98,7 @@ MACHINE_START(NXDKN, "Hilscher nxdkn")
98 .map_io = netx_map_io, 98 .map_io = netx_map_io,
99 .init_irq = netx_init_irq, 99 .init_irq = netx_init_irq,
100 .handle_irq = vic_handle_irq, 100 .handle_irq = vic_handle_irq,
101 .timer = &netx_timer, 101 .init_time = netx_timer_init,
102 .init_machine = nxdkn_init, 102 .init_machine = nxdkn_init,
103 .restart = netx_restart, 103 .restart = netx_restart,
104MACHINE_END 104MACHINE_END
diff --git a/arch/arm/mach-netx/nxeb500hmi.c b/arch/arm/mach-netx/nxeb500hmi.c
index 257382efafa0..018e91c55b00 100644
--- a/arch/arm/mach-netx/nxeb500hmi.c
+++ b/arch/arm/mach-netx/nxeb500hmi.c
@@ -182,7 +182,7 @@ MACHINE_START(NXEB500HMI, "Hilscher nxeb500hmi")
182 .map_io = netx_map_io, 182 .map_io = netx_map_io,
183 .init_irq = netx_init_irq, 183 .init_irq = netx_init_irq,
184 .handle_irq = vic_handle_irq, 184 .handle_irq = vic_handle_irq,
185 .timer = &netx_timer, 185 .init_time = netx_timer_init,
186 .init_machine = nxeb500hmi_init, 186 .init_machine = nxeb500hmi_init,
187 .restart = netx_restart, 187 .restart = netx_restart,
188MACHINE_END 188MACHINE_END
diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c
index e24c141ba489..0dee4524494f 100644
--- a/arch/arm/mach-netx/time.c
+++ b/arch/arm/mach-netx/time.c
@@ -107,7 +107,7 @@ static struct irqaction netx_timer_irq = {
107/* 107/*
108 * Set up timer interrupt 108 * Set up timer interrupt
109 */ 109 */
110static void __init netx_timer_init(void) 110void __init netx_timer_init(void)
111{ 111{
112 /* disable timer initially */ 112 /* disable timer initially */
113 writel(0, NETX_GPIO_COUNTER_CTRL(0)); 113 writel(0, NETX_GPIO_COUNTER_CTRL(0));
@@ -151,7 +151,3 @@ static void __init netx_timer_init(void)
151 netx_clockevent.cpumask = cpumask_of(0); 151 netx_clockevent.cpumask = cpumask_of(0);
152 clockevents_register_device(&netx_clockevent); 152 clockevents_register_device(&netx_clockevent);
153} 153}
154
155struct sys_timer netx_timer = {
156 .init = netx_timer_init,
157};
diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c
index 98167a4319f7..ab756ed87ef0 100644
--- a/arch/arm/mach-nomadik/board-nhk8815.c
+++ b/arch/arm/mach-nomadik/board-nhk8815.c
@@ -268,10 +268,6 @@ static void __init nomadik_timer_init(void)
268 nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE), IRQ_MTU0); 268 nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE), IRQ_MTU0);
269} 269}
270 270
271static struct sys_timer nomadik_timer = {
272 .init = nomadik_timer_init,
273};
274
275static struct i2c_board_info __initdata nhk8815_i2c0_devices[] = { 271static struct i2c_board_info __initdata nhk8815_i2c0_devices[] = {
276 { 272 {
277 I2C_BOARD_INFO("stw4811", 0x2d), 273 I2C_BOARD_INFO("stw4811", 0x2d),
@@ -354,7 +350,7 @@ MACHINE_START(NOMADIK, "NHK8815")
354 .map_io = cpu8815_map_io, 350 .map_io = cpu8815_map_io,
355 .init_irq = cpu8815_init_irq, 351 .init_irq = cpu8815_init_irq,
356 .handle_irq = vic_handle_irq, 352 .handle_irq = vic_handle_irq,
357 .timer = &nomadik_timer, 353 .init_time = nomadik_timer_init,
358 .init_machine = nhk8815_platform_init, 354 .init_machine = nhk8815_platform_init,
359 .restart = cpu8815_restart, 355 .restart = cpu8815_restart,
360MACHINE_END 356MACHINE_END
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index a8fce3ccc707..3d2aa6f30192 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -628,6 +628,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
628 .init_irq = omap1_init_irq, 628 .init_irq = omap1_init_irq,
629 .init_machine = ams_delta_init, 629 .init_machine = ams_delta_init,
630 .init_late = ams_delta_init_late, 630 .init_late = ams_delta_init_late,
631 .timer = &omap1_timer, 631 .init_time = omap1_timer_init,
632 .restart = omap1_restart, 632 .restart = omap1_restart,
633MACHINE_END 633MACHINE_END
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c
index 560a7dcf0a56..702d58039cc1 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -364,6 +364,6 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")
364 .init_irq = omap1_init_irq, 364 .init_irq = omap1_init_irq,
365 .init_machine = omap_fsample_init, 365 .init_machine = omap_fsample_init,
366 .init_late = omap1_init_late, 366 .init_late = omap1_init_late,
367 .timer = &omap1_timer, 367 .init_time = omap1_timer_init,
368 .restart = omap1_restart, 368 .restart = omap1_restart,
369MACHINE_END 369MACHINE_END
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c
index 608e7d2a2778..e1d9171774bc 100644
--- a/arch/arm/mach-omap1/board-generic.c
+++ b/arch/arm/mach-omap1/board-generic.c
@@ -84,6 +84,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
84 .init_irq = omap1_init_irq, 84 .init_irq = omap1_init_irq,
85 .init_machine = omap_generic_init, 85 .init_machine = omap_generic_init,
86 .init_late = omap1_init_late, 86 .init_late = omap1_init_late,
87 .timer = &omap1_timer, 87 .init_time = omap1_timer_init,
88 .restart = omap1_restart, 88 .restart = omap1_restart,
89MACHINE_END 89MACHINE_END
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 2274bd677efc..0dac3d239e32 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -461,6 +461,6 @@ MACHINE_START(OMAP_H2, "TI-H2")
461 .init_irq = omap1_init_irq, 461 .init_irq = omap1_init_irq,
462 .init_machine = h2_init, 462 .init_machine = h2_init,
463 .init_late = omap1_init_late, 463 .init_late = omap1_init_late,
464 .timer = &omap1_timer, 464 .init_time = omap1_timer_init,
465 .restart = omap1_restart, 465 .restart = omap1_restart,
466MACHINE_END 466MACHINE_END
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index 1051935f0aac..816ecd13f81e 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -454,6 +454,6 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
454 .init_irq = omap1_init_irq, 454 .init_irq = omap1_init_irq,
455 .init_machine = h3_init, 455 .init_machine = h3_init,
456 .init_late = omap1_init_late, 456 .init_late = omap1_init_late,
457 .timer = &omap1_timer, 457 .init_time = omap1_timer_init,
458 .restart = omap1_restart, 458 .restart = omap1_restart,
459MACHINE_END 459MACHINE_END
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c
index 356f816c84a6..35a2379b986f 100644
--- a/arch/arm/mach-omap1/board-htcherald.c
+++ b/arch/arm/mach-omap1/board-htcherald.c
@@ -603,6 +603,6 @@ MACHINE_START(HERALD, "HTC Herald")
603 .init_irq = omap1_init_irq, 603 .init_irq = omap1_init_irq,
604 .init_machine = htcherald_init, 604 .init_machine = htcherald_init,
605 .init_late = omap1_init_late, 605 .init_late = omap1_init_late,
606 .timer = &omap1_timer, 606 .init_time = omap1_timer_init,
607 .restart = omap1_restart, 607 .restart = omap1_restart,
608MACHINE_END 608MACHINE_END
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index f8033fab0f82..bd5f02e9c354 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -458,6 +458,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
458 .init_irq = omap1_init_irq, 458 .init_irq = omap1_init_irq,
459 .init_machine = innovator_init, 459 .init_machine = innovator_init,
460 .init_late = omap1_init_late, 460 .init_late = omap1_init_late,
461 .timer = &omap1_timer, 461 .init_time = omap1_timer_init,
462 .restart = omap1_restart, 462 .restart = omap1_restart,
463MACHINE_END 463MACHINE_END
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index 24d2f2df11a0..4695ca717706 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -242,6 +242,6 @@ MACHINE_START(NOKIA770, "Nokia 770")
242 .init_irq = omap1_init_irq, 242 .init_irq = omap1_init_irq,
243 .init_machine = omap_nokia770_init, 243 .init_machine = omap_nokia770_init,
244 .init_late = omap1_init_late, 244 .init_late = omap1_init_late,
245 .timer = &omap1_timer, 245 .init_time = omap1_timer_init,
246 .restart = omap1_restart, 246 .restart = omap1_restart,
247MACHINE_END 247MACHINE_END
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 872ea47cd28a..a7ce69286688 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -609,6 +609,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
609 .init_irq = omap1_init_irq, 609 .init_irq = omap1_init_irq,
610 .init_machine = osk_init, 610 .init_machine = osk_init,
611 .init_late = omap1_init_late, 611 .init_late = omap1_init_late,
612 .timer = &omap1_timer, 612 .init_time = omap1_timer_init,
613 .restart = omap1_restart, 613 .restart = omap1_restart,
614MACHINE_END 614MACHINE_END
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c
index c33dceb46607..845a1a7aef95 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -268,6 +268,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
268 .init_irq = omap1_init_irq, 268 .init_irq = omap1_init_irq,
269 .init_machine = omap_palmte_init, 269 .init_machine = omap_palmte_init,
270 .init_late = omap1_init_late, 270 .init_late = omap1_init_late,
271 .timer = &omap1_timer, 271 .init_time = omap1_timer_init,
272 .restart = omap1_restart, 272 .restart = omap1_restart,
273MACHINE_END 273MACHINE_END
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c
index 2948b0ee4be8..65a4a3e357f2 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -314,6 +314,6 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
314 .init_irq = omap1_init_irq, 314 .init_irq = omap1_init_irq,
315 .init_machine = omap_palmtt_init, 315 .init_machine = omap_palmtt_init,
316 .init_late = omap1_init_late, 316 .init_late = omap1_init_late,
317 .timer = &omap1_timer, 317 .init_time = omap1_timer_init,
318 .restart = omap1_restart, 318 .restart = omap1_restart,
319MACHINE_END 319MACHINE_END
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c
index 7a05895c0be3..01c970071fd8 100644
--- a/arch/arm/mach-omap1/board-palmz71.c
+++ b/arch/arm/mach-omap1/board-palmz71.c
@@ -330,6 +330,6 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
330 .init_irq = omap1_init_irq, 330 .init_irq = omap1_init_irq,
331 .init_machine = omap_palmz71_init, 331 .init_machine = omap_palmz71_init,
332 .init_late = omap1_init_late, 332 .init_late = omap1_init_late,
333 .timer = &omap1_timer, 333 .init_time = omap1_timer_init,
334 .restart = omap1_restart, 334 .restart = omap1_restart,
335MACHINE_END 335MACHINE_END
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
index 27f8d12ec222..8b2f7127f716 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -326,6 +326,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
326 .init_irq = omap1_init_irq, 326 .init_irq = omap1_init_irq,
327 .init_machine = omap_perseus2_init, 327 .init_machine = omap_perseus2_init,
328 .init_late = omap1_init_late, 328 .init_late = omap1_init_late,
329 .timer = &omap1_timer, 329 .init_time = omap1_timer_init,
330 .restart = omap1_restart, 330 .restart = omap1_restart,
331MACHINE_END 331MACHINE_END
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c
index 20ed52ae1714..9732a98f3e06 100644
--- a/arch/arm/mach-omap1/board-sx1.c
+++ b/arch/arm/mach-omap1/board-sx1.c
@@ -407,6 +407,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
407 .init_irq = omap1_init_irq, 407 .init_irq = omap1_init_irq,
408 .init_machine = omap_sx1_init, 408 .init_machine = omap_sx1_init,
409 .init_late = omap1_init_late, 409 .init_late = omap1_init_late,
410 .timer = &omap1_timer, 410 .init_time = omap1_timer_init,
411 .restart = omap1_restart, 411 .restart = omap1_restart,
412MACHINE_END 412MACHINE_END
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
index abf705f49b19..6c116e1a4b01 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -289,6 +289,6 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
289 .init_irq = omap1_init_irq, 289 .init_irq = omap1_init_irq,
290 .init_machine = voiceblue_init, 290 .init_machine = voiceblue_init,
291 .init_late = omap1_init_late, 291 .init_late = omap1_init_late,
292 .timer = &omap1_timer, 292 .init_time = omap1_timer_init,
293 .restart = voiceblue_restart, 293 .restart = voiceblue_restart,
294MACHINE_END 294MACHINE_END
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h
index b53e0854422f..fb18831e88aa 100644
--- a/arch/arm/mach-omap1/common.h
+++ b/arch/arm/mach-omap1/common.h
@@ -75,7 +75,7 @@ extern void __init omap_check_revision(void);
75extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd, 75extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
76 unsigned int ctrl); 76 unsigned int ctrl);
77 77
78extern struct sys_timer omap1_timer; 78extern void omap1_timer_init(void);
79#ifdef CONFIG_OMAP_32K_TIMER 79#ifdef CONFIG_OMAP_32K_TIMER
80extern int omap_32k_timer_init(void); 80extern int omap_32k_timer_init(void);
81#else 81#else
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 4d4816fd6fc9..1d4512fdc9bc 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -236,12 +236,8 @@ static inline void omap_mpu_timer_init(void)
236 * Timer initialization 236 * Timer initialization
237 * --------------------------------------------------------------------------- 237 * ---------------------------------------------------------------------------
238 */ 238 */
239static void __init omap1_timer_init(void) 239void __init omap1_timer_init(void)
240{ 240{
241 if (omap_32k_timer_init() != 0) 241 if (omap_32k_timer_init() != 0)
242 omap_mpu_timer_init(); 242 omap_mpu_timer_init();
243} 243}
244
245struct sys_timer omap1_timer = {
246 .init = omap1_timer_init,
247};
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
index 4815ea6f8f5d..5f413968d568 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -284,6 +284,6 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
284 .handle_irq = omap2_intc_handle_irq, 284 .handle_irq = omap2_intc_handle_irq,
285 .init_machine = omap_2430sdp_init, 285 .init_machine = omap_2430sdp_init,
286 .init_late = omap2430_init_late, 286 .init_late = omap2430_init_late,
287 .timer = &omap2_timer, 287 .init_time = omap2_sync32k_timer_init,
288 .restart = omap2xxx_restart, 288 .restart = omap2xxx_restart,
289MACHINE_END 289MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index bb73afc9ac17..8e2513f6a282 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -597,6 +597,6 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
597 .handle_irq = omap3_intc_handle_irq, 597 .handle_irq = omap3_intc_handle_irq,
598 .init_machine = omap_3430sdp_init, 598 .init_machine = omap_3430sdp_init,
599 .init_late = omap3430_init_late, 599 .init_late = omap3430_init_late,
600 .timer = &omap3_timer, 600 .init_time = omap3_sync32k_timer_init,
601 .restart = omap3xxx_restart, 601 .restart = omap3xxx_restart,
602MACHINE_END 602MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
index 050aaa771254..33846274bb8a 100644
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -211,6 +211,6 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
211 .handle_irq = omap3_intc_handle_irq, 211 .handle_irq = omap3_intc_handle_irq,
212 .init_machine = omap_sdp_init, 212 .init_machine = omap_sdp_init,
213 .init_late = omap3630_init_late, 213 .init_late = omap3630_init_late,
214 .timer = &omap3_timer, 214 .init_time = omap3_sync32k_timer_init,
215 .restart = omap3xxx_restart, 215 .restart = omap3xxx_restart,
216MACHINE_END 216MACHINE_END
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 1cc6696594fd..f5d5f5941d7d 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -725,6 +725,6 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
725 .handle_irq = gic_handle_irq, 725 .handle_irq = gic_handle_irq,
726 .init_machine = omap_4430sdp_init, 726 .init_machine = omap_4430sdp_init,
727 .init_late = omap4430_init_late, 727 .init_late = omap4430_init_late,
728 .timer = &omap4_timer, 728 .init_time = omap4_local_timer_init,
729 .restart = omap44xx_restart, 729 .restart = omap44xx_restart,
730MACHINE_END 730MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c
index 51b96a1206d1..07f0be24a5d1 100644
--- a/arch/arm/mach-omap2/board-am3517crane.c
+++ b/arch/arm/mach-omap2/board-am3517crane.c
@@ -92,6 +92,6 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
92 .handle_irq = omap3_intc_handle_irq, 92 .handle_irq = omap3_intc_handle_irq,
93 .init_machine = am3517_crane_init, 93 .init_machine = am3517_crane_init,
94 .init_late = am35xx_init_late, 94 .init_late = am35xx_init_late,
95 .timer = &omap3_timer, 95 .init_time = omap3_sync32k_timer_init,
96 .restart = omap3xxx_restart, 96 .restart = omap3xxx_restart,
97MACHINE_END 97MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index f81a303b87ff..6f5b2a05f4b2 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -393,6 +393,6 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
393 .handle_irq = omap3_intc_handle_irq, 393 .handle_irq = omap3_intc_handle_irq,
394 .init_machine = am3517_evm_init, 394 .init_machine = am3517_evm_init,
395 .init_late = am35xx_init_late, 395 .init_late = am35xx_init_late,
396 .timer = &omap3_timer, 396 .init_time = omap3_sync32k_timer_init,
397 .restart = omap3xxx_restart, 397 .restart = omap3xxx_restart,
398MACHINE_END 398MACHINE_END
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index 5d0a61f54165..3a6ca74709ab 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -337,6 +337,6 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
337 .handle_irq = omap2_intc_handle_irq, 337 .handle_irq = omap2_intc_handle_irq,
338 .init_machine = omap_apollon_init, 338 .init_machine = omap_apollon_init,
339 .init_late = omap2420_init_late, 339 .init_late = omap2420_init_late,
340 .timer = &omap2_timer, 340 .init_time = omap2_sync32k_timer_init,
341 .restart = omap2xxx_restart, 341 .restart = omap2xxx_restart,
342MACHINE_END 342MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index b3102c2f4a3c..68647c389190 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -751,7 +751,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
751 .handle_irq = omap3_intc_handle_irq, 751 .handle_irq = omap3_intc_handle_irq,
752 .init_machine = cm_t35_init, 752 .init_machine = cm_t35_init,
753 .init_late = omap35xx_init_late, 753 .init_late = omap35xx_init_late,
754 .timer = &omap3_timer, 754 .init_time = omap3_sync32k_timer_init,
755 .restart = omap3xxx_restart, 755 .restart = omap3xxx_restart,
756MACHINE_END 756MACHINE_END
757 757
@@ -764,6 +764,6 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")
764 .handle_irq = omap3_intc_handle_irq, 764 .handle_irq = omap3_intc_handle_irq,
765 .init_machine = cm_t3730_init, 765 .init_machine = cm_t3730_init,
766 .init_late = omap3630_init_late, 766 .init_late = omap3630_init_late,
767 .timer = &omap3_timer, 767 .init_time = omap3_sync32k_timer_init,
768 .restart = omap3xxx_restart, 768 .restart = omap3xxx_restart,
769MACHINE_END 769MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c
index ebbc2adb499e..6a9529ab95cd 100644
--- a/arch/arm/mach-omap2/board-cm-t3517.c
+++ b/arch/arm/mach-omap2/board-cm-t3517.c
@@ -297,6 +297,6 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
297 .handle_irq = omap3_intc_handle_irq, 297 .handle_irq = omap3_intc_handle_irq,
298 .init_machine = cm_t3517_init, 298 .init_machine = cm_t3517_init,
299 .init_late = am35xx_init_late, 299 .init_late = am35xx_init_late,
300 .timer = &omap3_gp_timer, 300 .init_time = omap3_gp_gptimer_timer_init,
301 .restart = omap3xxx_restart, 301 .restart = omap3xxx_restart,
302MACHINE_END 302MACHINE_END
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index 12865af25d3a..0b1d8f758088 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -643,6 +643,6 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
643 .handle_irq = omap3_intc_handle_irq, 643 .handle_irq = omap3_intc_handle_irq,
644 .init_machine = devkit8000_init, 644 .init_machine = devkit8000_init,
645 .init_late = omap35xx_init_late, 645 .init_late = omap35xx_init_late,
646 .timer = &omap3_secure_timer, 646 .init_time = omap3_secure_sync32k_timer_init,
647 .restart = omap3xxx_restart, 647 .restart = omap3xxx_restart,
648MACHINE_END 648MACHINE_END
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 53cb380b7877..8a5f814613c6 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -65,7 +65,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
65 .init_irq = omap_intc_of_init, 65 .init_irq = omap_intc_of_init,
66 .handle_irq = omap2_intc_handle_irq, 66 .handle_irq = omap2_intc_handle_irq,
67 .init_machine = omap_generic_init, 67 .init_machine = omap_generic_init,
68 .timer = &omap2_timer, 68 .init_time = omap2_sync32k_timer_init,
69 .dt_compat = omap242x_boards_compat, 69 .dt_compat = omap242x_boards_compat,
70 .restart = omap2xxx_restart, 70 .restart = omap2xxx_restart,
71MACHINE_END 71MACHINE_END
@@ -84,7 +84,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
84 .init_irq = omap_intc_of_init, 84 .init_irq = omap_intc_of_init,
85 .handle_irq = omap2_intc_handle_irq, 85 .handle_irq = omap2_intc_handle_irq,
86 .init_machine = omap_generic_init, 86 .init_machine = omap_generic_init,
87 .timer = &omap2_timer, 87 .init_time = omap2_sync32k_timer_init,
88 .dt_compat = omap243x_boards_compat, 88 .dt_compat = omap243x_boards_compat,
89 .restart = omap2xxx_restart, 89 .restart = omap2xxx_restart,
90MACHINE_END 90MACHINE_END
@@ -103,7 +103,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
103 .init_irq = omap_intc_of_init, 103 .init_irq = omap_intc_of_init,
104 .handle_irq = omap3_intc_handle_irq, 104 .handle_irq = omap3_intc_handle_irq,
105 .init_machine = omap_generic_init, 105 .init_machine = omap_generic_init,
106 .timer = &omap3_timer, 106 .init_time = omap3_sync32k_timer_init,
107 .dt_compat = omap3_boards_compat, 107 .dt_compat = omap3_boards_compat,
108 .restart = omap3xxx_restart, 108 .restart = omap3xxx_restart,
109MACHINE_END 109MACHINE_END
@@ -120,7 +120,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
120 .init_irq = omap_intc_of_init, 120 .init_irq = omap_intc_of_init,
121 .handle_irq = omap3_intc_handle_irq, 121 .handle_irq = omap3_intc_handle_irq,
122 .init_machine = omap_generic_init, 122 .init_machine = omap_generic_init,
123 .timer = &omap3_secure_timer, 123 .init_time = omap3_secure_sync32k_timer_init,
124 .dt_compat = omap3_gp_boards_compat, 124 .dt_compat = omap3_gp_boards_compat,
125 .restart = omap3xxx_restart, 125 .restart = omap3xxx_restart,
126MACHINE_END 126MACHINE_END
@@ -139,7 +139,7 @@ DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
139 .init_irq = omap_intc_of_init, 139 .init_irq = omap_intc_of_init,
140 .handle_irq = omap3_intc_handle_irq, 140 .handle_irq = omap3_intc_handle_irq,
141 .init_machine = omap_generic_init, 141 .init_machine = omap_generic_init,
142 .timer = &omap3_am33xx_timer, 142 .init_time = omap3_am33xx_gptimer_timer_init,
143 .dt_compat = am33xx_boards_compat, 143 .dt_compat = am33xx_boards_compat,
144MACHINE_END 144MACHINE_END
145#endif 145#endif
@@ -159,7 +159,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
159 .handle_irq = gic_handle_irq, 159 .handle_irq = gic_handle_irq,
160 .init_machine = omap_generic_init, 160 .init_machine = omap_generic_init,
161 .init_late = omap4430_init_late, 161 .init_late = omap4430_init_late,
162 .timer = &omap4_timer, 162 .init_time = omap4_local_timer_init,
163 .dt_compat = omap4_boards_compat, 163 .dt_compat = omap4_boards_compat,
164 .restart = omap44xx_restart, 164 .restart = omap44xx_restart,
165MACHINE_END 165MACHINE_END
@@ -179,7 +179,7 @@ DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
179 .init_irq = omap_gic_of_init, 179 .init_irq = omap_gic_of_init,
180 .handle_irq = gic_handle_irq, 180 .handle_irq = gic_handle_irq,
181 .init_machine = omap_generic_init, 181 .init_machine = omap_generic_init,
182 .timer = &omap5_timer, 182 .init_time = omap5_realtime_timer_init,
183 .dt_compat = omap5_boards_compat, 183 .dt_compat = omap5_boards_compat,
184 .restart = omap44xx_restart, 184 .restart = omap44xx_restart,
185MACHINE_END 185MACHINE_END
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index 3be1311f9e33..812c829fa46f 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -342,6 +342,6 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
342 .handle_irq = omap2_intc_handle_irq, 342 .handle_irq = omap2_intc_handle_irq,
343 .init_machine = omap_h4_init, 343 .init_machine = omap_h4_init,
344 .init_late = omap2420_init_late, 344 .init_late = omap2420_init_late,
345 .timer = &omap2_timer, 345 .init_time = omap2_sync32k_timer_init,
346 .restart = omap2xxx_restart, 346 .restart = omap2xxx_restart,
347MACHINE_END 347MACHINE_END
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 0f24cb84ba5a..5b447649f5a0 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -655,7 +655,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
655 .handle_irq = omap3_intc_handle_irq, 655 .handle_irq = omap3_intc_handle_irq,
656 .init_machine = igep_init, 656 .init_machine = igep_init,
657 .init_late = omap35xx_init_late, 657 .init_late = omap35xx_init_late,
658 .timer = &omap3_timer, 658 .init_time = omap3_sync32k_timer_init,
659 .restart = omap3xxx_restart, 659 .restart = omap3xxx_restart,
660MACHINE_END 660MACHINE_END
661 661
@@ -668,6 +668,6 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
668 .handle_irq = omap3_intc_handle_irq, 668 .handle_irq = omap3_intc_handle_irq,
669 .init_machine = igep_init, 669 .init_machine = igep_init,
670 .init_late = omap35xx_init_late, 670 .init_late = omap35xx_init_late,
671 .timer = &omap3_timer, 671 .init_time = omap3_sync32k_timer_init,
672 .restart = omap3xxx_restart, 672 .restart = omap3xxx_restart,
673MACHINE_END 673MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index 0869f4f3d3e1..ff440c0d04dd 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -435,6 +435,6 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
435 .handle_irq = omap3_intc_handle_irq, 435 .handle_irq = omap3_intc_handle_irq,
436 .init_machine = omap_ldp_init, 436 .init_machine = omap_ldp_init,
437 .init_late = omap3430_init_late, 437 .init_late = omap3430_init_late,
438 .timer = &omap3_timer, 438 .init_time = omap3_sync32k_timer_init,
439 .restart = omap3xxx_restart, 439 .restart = omap3xxx_restart,
440MACHINE_END 440MACHINE_END
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 0abb30fe399c..f6eeb87e4e95 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -731,7 +731,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
731 .handle_irq = omap2_intc_handle_irq, 731 .handle_irq = omap2_intc_handle_irq,
732 .init_machine = n8x0_init_machine, 732 .init_machine = n8x0_init_machine,
733 .init_late = omap2420_init_late, 733 .init_late = omap2420_init_late,
734 .timer = &omap2_timer, 734 .init_time = omap2_sync32k_timer_init,
735 .restart = omap2xxx_restart, 735 .restart = omap2xxx_restart,
736MACHINE_END 736MACHINE_END
737 737
@@ -744,7 +744,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
744 .handle_irq = omap2_intc_handle_irq, 744 .handle_irq = omap2_intc_handle_irq,
745 .init_machine = n8x0_init_machine, 745 .init_machine = n8x0_init_machine,
746 .init_late = omap2420_init_late, 746 .init_late = omap2420_init_late,
747 .timer = &omap2_timer, 747 .init_time = omap2_sync32k_timer_init,
748 .restart = omap2xxx_restart, 748 .restart = omap2xxx_restart,
749MACHINE_END 749MACHINE_END
750 750
@@ -757,6 +757,6 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
757 .handle_irq = omap2_intc_handle_irq, 757 .handle_irq = omap2_intc_handle_irq,
758 .init_machine = n8x0_init_machine, 758 .init_machine = n8x0_init_machine,
759 .init_late = omap2420_init_late, 759 .init_late = omap2420_init_late,
760 .timer = &omap2_timer, 760 .init_time = omap2_sync32k_timer_init,
761 .restart = omap2xxx_restart, 761 .restart = omap2xxx_restart,
762MACHINE_END 762MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 22c483d5dfa8..b81b4585f46f 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -544,6 +544,6 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
544 .handle_irq = omap3_intc_handle_irq, 544 .handle_irq = omap3_intc_handle_irq,
545 .init_machine = omap3_beagle_init, 545 .init_machine = omap3_beagle_init,
546 .init_late = omap3_init_late, 546 .init_late = omap3_init_late,
547 .timer = &omap3_secure_timer, 547 .init_time = omap3_secure_sync32k_timer_init,
548 .restart = omap3xxx_restart, 548 .restart = omap3xxx_restart,
549MACHINE_END 549MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 3985f35aee06..f2f636b19762 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -757,6 +757,6 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
757 .handle_irq = omap3_intc_handle_irq, 757 .handle_irq = omap3_intc_handle_irq,
758 .init_machine = omap3_evm_init, 758 .init_machine = omap3_evm_init,
759 .init_late = omap35xx_init_late, 759 .init_late = omap35xx_init_late,
760 .timer = &omap3_timer, 760 .init_time = omap3_sync32k_timer_init,
761 .restart = omap3xxx_restart, 761 .restart = omap3xxx_restart,
762MACHINE_END 762MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 2a065ba6eb58..0fba43a9b07d 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -231,7 +231,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
231 .handle_irq = omap3_intc_handle_irq, 231 .handle_irq = omap3_intc_handle_irq,
232 .init_machine = omap3logic_init, 232 .init_machine = omap3logic_init,
233 .init_late = omap35xx_init_late, 233 .init_late = omap35xx_init_late,
234 .timer = &omap3_timer, 234 .init_time = omap3_sync32k_timer_init,
235 .restart = omap3xxx_restart, 235 .restart = omap3xxx_restart,
236MACHINE_END 236MACHINE_END
237 237
@@ -244,6 +244,6 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
244 .handle_irq = omap3_intc_handle_irq, 244 .handle_irq = omap3_intc_handle_irq,
245 .init_machine = omap3logic_init, 245 .init_machine = omap3logic_init,
246 .init_late = omap35xx_init_late, 246 .init_late = omap35xx_init_late,
247 .timer = &omap3_timer, 247 .init_time = omap3_sync32k_timer_init,
248 .restart = omap3xxx_restart, 248 .restart = omap3xxx_restart,
249MACHINE_END 249MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index a53a6683c1b8..12e181689340 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -618,6 +618,6 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
618 .handle_irq = omap3_intc_handle_irq, 618 .handle_irq = omap3_intc_handle_irq,
619 .init_machine = omap3pandora_init, 619 .init_machine = omap3pandora_init,
620 .init_late = omap35xx_init_late, 620 .init_late = omap35xx_init_late,
621 .timer = &omap3_timer, 621 .init_time = omap3_sync32k_timer_init,
622 .restart = omap3xxx_restart, 622 .restart = omap3xxx_restart,
623MACHINE_END 623MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index 53a6cbcf9747..13ee40545604 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -427,6 +427,6 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
427 .handle_irq = omap3_intc_handle_irq, 427 .handle_irq = omap3_intc_handle_irq,
428 .init_machine = omap3_stalker_init, 428 .init_machine = omap3_stalker_init,
429 .init_late = omap35xx_init_late, 429 .init_late = omap35xx_init_late,
430 .timer = &omap3_secure_timer, 430 .init_time = omap3_secure_sync32k_timer_init,
431 .restart = omap3xxx_restart, 431 .restart = omap3xxx_restart,
432MACHINE_END 432MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index 263cb9cfbf37..36c455c85ed9 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -386,6 +386,6 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
386 .handle_irq = omap3_intc_handle_irq, 386 .handle_irq = omap3_intc_handle_irq,
387 .init_machine = omap3_touchbook_init, 387 .init_machine = omap3_touchbook_init,
388 .init_late = omap3430_init_late, 388 .init_late = omap3430_init_late,
389 .timer = &omap3_secure_timer, 389 .init_time = omap3_secure_sync32k_timer_init,
390 .restart = omap3xxx_restart, 390 .restart = omap3xxx_restart,
391MACHINE_END 391MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 5c8e9cee2c2e..ed8240c1a9b9 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -456,6 +456,6 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
456 .handle_irq = gic_handle_irq, 456 .handle_irq = gic_handle_irq,
457 .init_machine = omap4_panda_init, 457 .init_machine = omap4_panda_init,
458 .init_late = omap4430_init_late, 458 .init_late = omap4430_init_late,
459 .timer = &omap4_timer, 459 .init_time = omap4_local_timer_init,
460 .restart = omap44xx_restart, 460 .restart = omap44xx_restart,
461MACHINE_END 461MACHINE_END
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index c8fde3e56441..233a37d541c3 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -551,6 +551,6 @@ MACHINE_START(OVERO, "Gumstix Overo")
551 .handle_irq = omap3_intc_handle_irq, 551 .handle_irq = omap3_intc_handle_irq,
552 .init_machine = overo_init, 552 .init_machine = overo_init,
553 .init_late = omap35xx_init_late, 553 .init_late = omap35xx_init_late,
554 .timer = &omap3_timer, 554 .init_time = omap3_sync32k_timer_init,
555 .restart = omap3xxx_restart, 555 .restart = omap3xxx_restart,
556MACHINE_END 556MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c
index 0c777b75e484..386a2ddc1173 100644
--- a/arch/arm/mach-omap2/board-rm680.c
+++ b/arch/arm/mach-omap2/board-rm680.c
@@ -147,7 +147,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
147 .handle_irq = omap3_intc_handle_irq, 147 .handle_irq = omap3_intc_handle_irq,
148 .init_machine = rm680_init, 148 .init_machine = rm680_init,
149 .init_late = omap3630_init_late, 149 .init_late = omap3630_init_late,
150 .timer = &omap3_timer, 150 .init_time = omap3_sync32k_timer_init,
151 .restart = omap3xxx_restart, 151 .restart = omap3xxx_restart,
152MACHINE_END 152MACHINE_END
153 153
@@ -160,6 +160,6 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board")
160 .handle_irq = omap3_intc_handle_irq, 160 .handle_irq = omap3_intc_handle_irq,
161 .init_machine = rm680_init, 161 .init_machine = rm680_init,
162 .init_late = omap3630_init_late, 162 .init_late = omap3630_init_late,
163 .timer = &omap3_timer, 163 .init_time = omap3_sync32k_timer_init,
164 .restart = omap3xxx_restart, 164 .restart = omap3xxx_restart,
165MACHINE_END 165MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index d0374ea2dfb0..f7c4616cbb60 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -123,6 +123,6 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
123 .handle_irq = omap3_intc_handle_irq, 123 .handle_irq = omap3_intc_handle_irq,
124 .init_machine = rx51_init, 124 .init_machine = rx51_init,
125 .init_late = omap3430_init_late, 125 .init_late = omap3430_init_late,
126 .timer = &omap3_timer, 126 .init_time = omap3_sync32k_timer_init,
127 .restart = omap3xxx_restart, 127 .restart = omap3xxx_restart,
128MACHINE_END 128MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c
index 1a3e056d63a7..6273c286e1d8 100644
--- a/arch/arm/mach-omap2/board-ti8168evm.c
+++ b/arch/arm/mach-omap2/board-ti8168evm.c
@@ -43,7 +43,7 @@ MACHINE_START(TI8168EVM, "ti8168evm")
43 .map_io = ti81xx_map_io, 43 .map_io = ti81xx_map_io,
44 .init_early = ti81xx_init_early, 44 .init_early = ti81xx_init_early,
45 .init_irq = ti81xx_init_irq, 45 .init_irq = ti81xx_init_irq,
46 .timer = &omap3_timer, 46 .init_time = omap3_sync32k_timer_init,
47 .init_machine = ti81xx_evm_init, 47 .init_machine = ti81xx_evm_init,
48 .init_late = ti81xx_init_late, 48 .init_late = ti81xx_init_late,
49 .restart = omap44xx_restart, 49 .restart = omap44xx_restart,
@@ -55,7 +55,7 @@ MACHINE_START(TI8148EVM, "ti8148evm")
55 .map_io = ti81xx_map_io, 55 .map_io = ti81xx_map_io,
56 .init_early = ti81xx_init_early, 56 .init_early = ti81xx_init_early,
57 .init_irq = ti81xx_init_irq, 57 .init_irq = ti81xx_init_irq,
58 .timer = &omap3_timer, 58 .init_time = omap3_sync32k_timer_init,
59 .init_machine = ti81xx_evm_init, 59 .init_machine = ti81xx_evm_init,
60 .init_late = ti81xx_init_late, 60 .init_late = ti81xx_init_late,
61 .restart = omap44xx_restart, 61 .restart = omap44xx_restart,
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c
index d7fa31e67238..d257cf1e0abe 100644
--- a/arch/arm/mach-omap2/board-zoom.c
+++ b/arch/arm/mach-omap2/board-zoom.c
@@ -137,7 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
137 .handle_irq = omap3_intc_handle_irq, 137 .handle_irq = omap3_intc_handle_irq,
138 .init_machine = omap_zoom_init, 138 .init_machine = omap_zoom_init,
139 .init_late = omap3430_init_late, 139 .init_late = omap3430_init_late,
140 .timer = &omap3_timer, 140 .init_time = omap3_sync32k_timer_init,
141 .restart = omap3xxx_restart, 141 .restart = omap3xxx_restart,
142MACHINE_END 142MACHINE_END
143 143
@@ -150,6 +150,6 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
150 .handle_irq = omap3_intc_handle_irq, 150 .handle_irq = omap3_intc_handle_irq,
151 .init_machine = omap_zoom_init, 151 .init_machine = omap_zoom_init,
152 .init_late = omap3630_init_late, 152 .init_late = omap3630_init_late,
153 .timer = &omap3_timer, 153 .init_time = omap3_sync32k_timer_init,
154 .restart = omap3xxx_restart, 154 .restart = omap3xxx_restart,
155MACHINE_END 155MACHINE_END
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 948bcaa82eb6..b4350274361b 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -79,13 +79,13 @@ static inline int omap_mux_late_init(void)
79 79
80extern void omap2_init_common_infrastructure(void); 80extern void omap2_init_common_infrastructure(void);
81 81
82extern struct sys_timer omap2_timer; 82extern void omap2_sync32k_timer_init(void);
83extern struct sys_timer omap3_timer; 83extern void omap3_sync32k_timer_init(void);
84extern struct sys_timer omap3_secure_timer; 84extern void omap3_secure_sync32k_timer_init(void);
85extern struct sys_timer omap3_gp_timer; 85extern void omap3_gp_gptimer_timer_init(void);
86extern struct sys_timer omap3_am33xx_timer; 86extern void omap3_am33xx_gptimer_timer_init(void);
87extern struct sys_timer omap4_timer; 87extern void omap4_local_timer_init(void);
88extern struct sys_timer omap5_timer; 88extern void omap5_realtime_timer_init(void);
89 89
90void omap2420_init_early(void); 90void omap2420_init_early(void);
91void omap2430_init_early(void); 91void omap2430_init_early(void);
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 691aa674665a..5975a42e16d4 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -556,7 +556,7 @@ static inline void __init realtime_counter_init(void)
556 556
557#define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ 557#define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \
558 clksrc_nr, clksrc_src) \ 558 clksrc_nr, clksrc_src) \
559static void __init omap##name##_gptimer_timer_init(void) \ 559void __init omap##name##_gptimer_timer_init(void) \
560{ \ 560{ \
561 omap_dmtimer_init(); \ 561 omap_dmtimer_init(); \
562 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 562 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
@@ -565,7 +565,7 @@ static void __init omap##name##_gptimer_timer_init(void) \
565 565
566#define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ 566#define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \
567 clksrc_nr, clksrc_src) \ 567 clksrc_nr, clksrc_src) \
568static void __init omap##name##_sync32k_timer_init(void) \ 568void __init omap##name##_sync32k_timer_init(void) \
569{ \ 569{ \
570 omap_dmtimer_init(); \ 570 omap_dmtimer_init(); \
571 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 571 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
@@ -576,33 +576,23 @@ static void __init omap##name##_sync32k_timer_init(void) \
576 omap2_sync32k_clocksource_init(); \ 576 omap2_sync32k_clocksource_init(); \
577} 577}
578 578
579#define OMAP_SYS_TIMER(name, clksrc) \
580struct sys_timer omap##name##_timer = { \
581 .init = omap##name##_##clksrc##_timer_init, \
582};
583
584#ifdef CONFIG_ARCH_OMAP2 579#ifdef CONFIG_ARCH_OMAP2
585OMAP_SYS_32K_TIMER_INIT(2, 1, OMAP2_32K_SOURCE, "ti,timer-alwon", 580OMAP_SYS_32K_TIMER_INIT(2, 1, OMAP2_32K_SOURCE, "ti,timer-alwon",
586 2, OMAP2_MPU_SOURCE); 581 2, OMAP2_MPU_SOURCE);
587OMAP_SYS_TIMER(2, sync32k);
588#endif /* CONFIG_ARCH_OMAP2 */ 582#endif /* CONFIG_ARCH_OMAP2 */
589 583
590#ifdef CONFIG_ARCH_OMAP3 584#ifdef CONFIG_ARCH_OMAP3
591OMAP_SYS_32K_TIMER_INIT(3, 1, OMAP3_32K_SOURCE, "ti,timer-alwon", 585OMAP_SYS_32K_TIMER_INIT(3, 1, OMAP3_32K_SOURCE, "ti,timer-alwon",
592 2, OMAP3_MPU_SOURCE); 586 2, OMAP3_MPU_SOURCE);
593OMAP_SYS_TIMER(3, sync32k);
594OMAP_SYS_32K_TIMER_INIT(3_secure, 12, OMAP3_32K_SOURCE, "ti,timer-secure", 587OMAP_SYS_32K_TIMER_INIT(3_secure, 12, OMAP3_32K_SOURCE, "ti,timer-secure",
595 2, OMAP3_MPU_SOURCE); 588 2, OMAP3_MPU_SOURCE);
596OMAP_SYS_TIMER(3_secure, sync32k);
597OMAP_SYS_GP_TIMER_INIT(3_gp, 1, OMAP3_MPU_SOURCE, "ti,timer-alwon", 589OMAP_SYS_GP_TIMER_INIT(3_gp, 1, OMAP3_MPU_SOURCE, "ti,timer-alwon",
598 2, OMAP3_MPU_SOURCE); 590 2, OMAP3_MPU_SOURCE);
599OMAP_SYS_TIMER(3_gp, gptimer);
600#endif /* CONFIG_ARCH_OMAP3 */ 591#endif /* CONFIG_ARCH_OMAP3 */
601 592
602#ifdef CONFIG_SOC_AM33XX 593#ifdef CONFIG_SOC_AM33XX
603OMAP_SYS_GP_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, "ti,timer-alwon", 594OMAP_SYS_GP_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, "ti,timer-alwon",
604 2, OMAP4_MPU_SOURCE); 595 2, OMAP4_MPU_SOURCE);
605OMAP_SYS_TIMER(3_am33xx, gptimer);
606#endif /* CONFIG_SOC_AM33XX */ 596#endif /* CONFIG_SOC_AM33XX */
607 597
608#ifdef CONFIG_ARCH_OMAP4 598#ifdef CONFIG_ARCH_OMAP4
@@ -610,7 +600,7 @@ OMAP_SYS_32K_TIMER_INIT(4, 1, OMAP4_32K_SOURCE, "ti,timer-alwon",
610 2, OMAP4_MPU_SOURCE); 600 2, OMAP4_MPU_SOURCE);
611#ifdef CONFIG_LOCAL_TIMERS 601#ifdef CONFIG_LOCAL_TIMERS
612static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29); 602static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29);
613static void __init omap4_local_timer_init(void) 603void __init omap4_local_timer_init(void)
614{ 604{
615 omap4_sync32k_timer_init(); 605 omap4_sync32k_timer_init();
616 /* Local timers are not supprted on OMAP4430 ES1.0 */ 606 /* Local timers are not supprted on OMAP4430 ES1.0 */
@@ -628,18 +618,17 @@ static void __init omap4_local_timer_init(void)
628 } 618 }
629} 619}
630#else /* CONFIG_LOCAL_TIMERS */ 620#else /* CONFIG_LOCAL_TIMERS */
631static void __init omap4_local_timer_init(void) 621void __init omap4_local_timer_init(void)
632{ 622{
633 omap4_sync32k_timer_init(); 623 omap4_sync32k_timer_init();
634} 624}
635#endif /* CONFIG_LOCAL_TIMERS */ 625#endif /* CONFIG_LOCAL_TIMERS */
636OMAP_SYS_TIMER(4, local);
637#endif /* CONFIG_ARCH_OMAP4 */ 626#endif /* CONFIG_ARCH_OMAP4 */
638 627
639#ifdef CONFIG_SOC_OMAP5 628#ifdef CONFIG_SOC_OMAP5
640OMAP_SYS_32K_TIMER_INIT(5, 1, OMAP4_32K_SOURCE, "ti,timer-alwon", 629OMAP_SYS_32K_TIMER_INIT(5, 1, OMAP4_32K_SOURCE, "ti,timer-alwon",
641 2, OMAP4_MPU_SOURCE); 630 2, OMAP4_MPU_SOURCE);
642static void __init omap5_realtime_timer_init(void) 631void __init omap5_realtime_timer_init(void)
643{ 632{
644 int err; 633 int err;
645 634
@@ -650,7 +639,6 @@ static void __init omap5_realtime_timer_init(void)
650 if (err) 639 if (err)
651 pr_err("%s: arch_timer_register failed %d\n", __func__, err); 640 pr_err("%s: arch_timer_register failed %d\n", __func__, err);
652} 641}
653OMAP_SYS_TIMER(5, realtime);
654#endif /* CONFIG_SOC_OMAP5 */ 642#endif /* CONFIG_SOC_OMAP5 */
655 643
656/** 644/**
diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
index 32e5c211a89b..35a8014529ca 100644
--- a/arch/arm/mach-orion5x/board-dt.c
+++ b/arch/arm/mach-orion5x/board-dt.c
@@ -72,7 +72,7 @@ DT_MACHINE_START(ORION5X_DT, "Marvell Orion5x (Flattened Device Tree)")
72 .map_io = orion5x_map_io, 72 .map_io = orion5x_map_io,
73 .init_early = orion5x_init_early, 73 .init_early = orion5x_init_early,
74 .init_irq = orion_dt_init_irq, 74 .init_irq = orion_dt_init_irq,
75 .timer = &orion5x_timer, 75 .init_time = orion5x_timer_init,
76 .init_machine = orion5x_dt_init, 76 .init_machine = orion5x_dt_init,
77 .restart = orion5x_restart, 77 .restart = orion5x_restart,
78 .dt_compat = orion5x_dt_compat, 78 .dt_compat = orion5x_dt_compat,
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 550f92320afb..d068f1431c40 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -217,7 +217,7 @@ int __init orion5x_find_tclk(void)
217 return 166666667; 217 return 166666667;
218} 218}
219 219
220static void __init orion5x_timer_init(void) 220void __init orion5x_timer_init(void)
221{ 221{
222 orion5x_tclk = orion5x_find_tclk(); 222 orion5x_tclk = orion5x_find_tclk();
223 223
@@ -225,10 +225,6 @@ static void __init orion5x_timer_init(void)
225 IRQ_ORION5X_BRIDGE, orion5x_tclk); 225 IRQ_ORION5X_BRIDGE, orion5x_tclk);
226} 226}
227 227
228struct sys_timer orion5x_timer = {
229 .init = orion5x_timer_init,
230};
231
232 228
233/***************************************************************************** 229/*****************************************************************************
234 * General 230 * General
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
index 7db5cdd9c4b7..e60345760283 100644
--- a/arch/arm/mach-orion5x/common.h
+++ b/arch/arm/mach-orion5x/common.h
@@ -15,7 +15,7 @@ void orion5x_init(void);
15void orion5x_id(u32 *dev, u32 *rev, char **dev_name); 15void orion5x_id(u32 *dev, u32 *rev, char **dev_name);
16void clk_init(void); 16void clk_init(void);
17extern int orion5x_tclk; 17extern int orion5x_tclk;
18extern struct sys_timer orion5x_timer; 18extern void orion5x_timer_init(void);
19 19
20/* 20/*
21 * Enumerations and functions for Orion windows mapping. Used by Orion core 21 * Enumerations and functions for Orion windows mapping. Used by Orion core
diff --git a/arch/arm/mach-orion5x/d2net-setup.c b/arch/arm/mach-orion5x/d2net-setup.c
index e3629c063df2..57d0af74874d 100644
--- a/arch/arm/mach-orion5x/d2net-setup.c
+++ b/arch/arm/mach-orion5x/d2net-setup.c
@@ -342,7 +342,7 @@ MACHINE_START(D2NET, "LaCie d2 Network")
342 .map_io = orion5x_map_io, 342 .map_io = orion5x_map_io,
343 .init_early = orion5x_init_early, 343 .init_early = orion5x_init_early,
344 .init_irq = orion5x_init_irq, 344 .init_irq = orion5x_init_irq,
345 .timer = &orion5x_timer, 345 .init_time = orion5x_timer_init,
346 .fixup = tag_fixup_mem32, 346 .fixup = tag_fixup_mem32,
347 .restart = orion5x_restart, 347 .restart = orion5x_restart,
348MACHINE_END 348MACHINE_END
@@ -355,7 +355,7 @@ MACHINE_START(BIGDISK, "LaCie Big Disk Network")
355 .map_io = orion5x_map_io, 355 .map_io = orion5x_map_io,
356 .init_early = orion5x_init_early, 356 .init_early = orion5x_init_early,
357 .init_irq = orion5x_init_irq, 357 .init_irq = orion5x_init_irq,
358 .timer = &orion5x_timer, 358 .init_time = orion5x_timer_init,
359 .fixup = tag_fixup_mem32, 359 .fixup = tag_fixup_mem32,
360 .restart = orion5x_restart, 360 .restart = orion5x_restart,
361MACHINE_END 361MACHINE_END
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index 41fe2b1ff47c..76665640087b 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -362,6 +362,6 @@ MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
362 .map_io = orion5x_map_io, 362 .map_io = orion5x_map_io,
363 .init_early = orion5x_init_early, 363 .init_early = orion5x_init_early,
364 .init_irq = orion5x_init_irq, 364 .init_irq = orion5x_init_irq,
365 .timer = &orion5x_timer, 365 .init_time = orion5x_timer_init,
366 .restart = orion5x_restart, 366 .restart = orion5x_restart,
367MACHINE_END 367MACHINE_END
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index e533588880ff..6eb1732757fd 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -714,7 +714,7 @@ MACHINE_START(DNS323, "D-Link DNS-323")
714 .map_io = orion5x_map_io, 714 .map_io = orion5x_map_io,
715 .init_early = orion5x_init_early, 715 .init_early = orion5x_init_early,
716 .init_irq = orion5x_init_irq, 716 .init_irq = orion5x_init_irq,
717 .timer = &orion5x_timer, 717 .init_time = orion5x_timer_init,
718 .fixup = tag_fixup_mem32, 718 .fixup = tag_fixup_mem32,
719 .restart = orion5x_restart, 719 .restart = orion5x_restart,
720MACHINE_END 720MACHINE_END
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index f1ae10ae5bd4..b98403526218 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -383,7 +383,7 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
383 .map_io = orion5x_map_io, 383 .map_io = orion5x_map_io,
384 .init_early = orion5x_init_early, 384 .init_early = orion5x_init_early,
385 .init_irq = orion5x_init_irq, 385 .init_irq = orion5x_init_irq,
386 .timer = &orion5x_timer, 386 .init_time = orion5x_timer_init,
387 .fixup = tag_fixup_mem32, 387 .fixup = tag_fixup_mem32,
388 .restart = orion5x_restart, 388 .restart = orion5x_restart,
389MACHINE_END 389MACHINE_END
@@ -397,7 +397,7 @@ MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
397 .map_io = orion5x_map_io, 397 .map_io = orion5x_map_io,
398 .init_early = orion5x_init_early, 398 .init_early = orion5x_init_early,
399 .init_irq = orion5x_init_irq, 399 .init_irq = orion5x_init_irq,
400 .timer = &orion5x_timer, 400 .init_time = orion5x_timer_init,
401 .fixup = tag_fixup_mem32, 401 .fixup = tag_fixup_mem32,
402 .restart = orion5x_restart, 402 .restart = orion5x_restart,
403MACHINE_END 403MACHINE_END
diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c
index 0c9e413b5805..044da5b6a6ae 100644
--- a/arch/arm/mach-orion5x/ls-chl-setup.c
+++ b/arch/arm/mach-orion5x/ls-chl-setup.c
@@ -322,7 +322,7 @@ MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")
322 .map_io = orion5x_map_io, 322 .map_io = orion5x_map_io,
323 .init_early = orion5x_init_early, 323 .init_early = orion5x_init_early,
324 .init_irq = orion5x_init_irq, 324 .init_irq = orion5x_init_irq,
325 .timer = &orion5x_timer, 325 .init_time = orion5x_timer_init,
326 .fixup = tag_fixup_mem32, 326 .fixup = tag_fixup_mem32,
327 .restart = orion5x_restart, 327 .restart = orion5x_restart,
328MACHINE_END 328MACHINE_END
diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c
index c1b5d8a58037..d49f93423f52 100644
--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
+++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
@@ -269,7 +269,7 @@ MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")
269 .map_io = orion5x_map_io, 269 .map_io = orion5x_map_io,
270 .init_early = orion5x_init_early, 270 .init_early = orion5x_init_early,
271 .init_irq = orion5x_init_irq, 271 .init_irq = orion5x_init_irq,
272 .timer = &orion5x_timer, 272 .init_time = orion5x_timer_init,
273 .fixup = tag_fixup_mem32, 273 .fixup = tag_fixup_mem32,
274 .restart = orion5x_restart, 274 .restart = orion5x_restart,
275MACHINE_END 275MACHINE_END
diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c
index 949eaa8f12e3..8e3965c6c0fe 100644
--- a/arch/arm/mach-orion5x/lsmini-setup.c
+++ b/arch/arm/mach-orion5x/lsmini-setup.c
@@ -271,7 +271,7 @@ MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini")
271 .map_io = orion5x_map_io, 271 .map_io = orion5x_map_io,
272 .init_early = orion5x_init_early, 272 .init_early = orion5x_init_early,
273 .init_irq = orion5x_init_irq, 273 .init_irq = orion5x_init_irq,
274 .timer = &orion5x_timer, 274 .init_time = orion5x_timer_init,
275 .fixup = tag_fixup_mem32, 275 .fixup = tag_fixup_mem32,
276 .restart = orion5x_restart, 276 .restart = orion5x_restart,
277MACHINE_END 277MACHINE_END
diff --git a/arch/arm/mach-orion5x/mss2-setup.c b/arch/arm/mach-orion5x/mss2-setup.c
index 1c16d045333e..0ec94a1f2b16 100644
--- a/arch/arm/mach-orion5x/mss2-setup.c
+++ b/arch/arm/mach-orion5x/mss2-setup.c
@@ -265,7 +265,7 @@ MACHINE_START(MSS2, "Maxtor Shared Storage II")
265 .map_io = orion5x_map_io, 265 .map_io = orion5x_map_io,
266 .init_early = orion5x_init_early, 266 .init_early = orion5x_init_early,
267 .init_irq = orion5x_init_irq, 267 .init_irq = orion5x_init_irq,
268 .timer = &orion5x_timer, 268 .init_time = orion5x_timer_init,
269 .fixup = tag_fixup_mem32, 269 .fixup = tag_fixup_mem32,
270 .restart = orion5x_restart, 270 .restart = orion5x_restart,
271MACHINE_END 271MACHINE_END
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index c87fde4deeca..18143f2a9093 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -233,7 +233,7 @@ MACHINE_START(MV2120, "HP Media Vault mv2120")
233 .map_io = orion5x_map_io, 233 .map_io = orion5x_map_io,
234 .init_early = orion5x_init_early, 234 .init_early = orion5x_init_early,
235 .init_irq = orion5x_init_irq, 235 .init_irq = orion5x_init_irq,
236 .timer = &orion5x_timer, 236 .init_time = orion5x_timer_init,
237 .fixup = tag_fixup_mem32, 237 .fixup = tag_fixup_mem32,
238 .restart = orion5x_restart, 238 .restart = orion5x_restart,
239MACHINE_END 239MACHINE_END
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
index 3506f16c0bf2..282e503b003e 100644
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ b/arch/arm/mach-orion5x/net2big-setup.c
@@ -425,7 +425,7 @@ MACHINE_START(NET2BIG, "LaCie 2Big Network")
425 .map_io = orion5x_map_io, 425 .map_io = orion5x_map_io,
426 .init_early = orion5x_init_early, 426 .init_early = orion5x_init_early,
427 .init_irq = orion5x_init_irq, 427 .init_irq = orion5x_init_irq,
428 .timer = &orion5x_timer, 428 .init_time = orion5x_timer_init,
429 .fixup = tag_fixup_mem32, 429 .fixup = tag_fixup_mem32,
430 .restart = orion5x_restart, 430 .restart = orion5x_restart,
431MACHINE_END 431MACHINE_END
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 9b1c95310291..d6e72f672afb 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -171,7 +171,7 @@ MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")
171 .map_io = orion5x_map_io, 171 .map_io = orion5x_map_io,
172 .init_early = orion5x_init_early, 172 .init_early = orion5x_init_early,
173 .init_irq = orion5x_init_irq, 173 .init_irq = orion5x_init_irq,
174 .timer = &orion5x_timer, 174 .init_time = orion5x_timer_init,
175 .fixup = tag_fixup_mem32, 175 .fixup = tag_fixup_mem32,
176 .restart = orion5x_restart, 176 .restart = orion5x_restart,
177MACHINE_END 177MACHINE_END
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index 51ba2b81a10b..c8b7913310e5 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -183,7 +183,7 @@ MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")
183 .map_io = orion5x_map_io, 183 .map_io = orion5x_map_io,
184 .init_early = orion5x_init_early, 184 .init_early = orion5x_init_early,
185 .init_irq = orion5x_init_irq, 185 .init_irq = orion5x_init_irq,
186 .timer = &orion5x_timer, 186 .init_time = orion5x_timer_init,
187 .fixup = tag_fixup_mem32, 187 .fixup = tag_fixup_mem32,
188 .restart = orion5x_restart, 188 .restart = orion5x_restart,
189MACHINE_END 189MACHINE_END
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index 0a56b9444f1b..f9e156725d7c 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -281,6 +281,6 @@ MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
281 .map_io = orion5x_map_io, 281 .map_io = orion5x_map_io,
282 .init_early = orion5x_init_early, 282 .init_early = orion5x_init_early,
283 .init_irq = orion5x_init_irq, 283 .init_irq = orion5x_init_irq,
284 .timer = &orion5x_timer, 284 .init_time = orion5x_timer_init,
285 .restart = orion5x_restart, 285 .restart = orion5x_restart,
286MACHINE_END 286MACHINE_END
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index ed50910b08a4..78a1e6ab1b9d 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -123,7 +123,7 @@ MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")
123 .map_io = orion5x_map_io, 123 .map_io = orion5x_map_io,
124 .init_early = orion5x_init_early, 124 .init_early = orion5x_init_early,
125 .init_irq = orion5x_init_irq, 125 .init_irq = orion5x_init_irq,
126 .timer = &orion5x_timer, 126 .init_time = orion5x_timer_init,
127 .fixup = tag_fixup_mem32, 127 .fixup = tag_fixup_mem32,
128 .restart = orion5x_restart, 128 .restart = orion5x_restart,
129MACHINE_END 129MACHINE_END
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
index 90e571dc4deb..acc0877ec1c9 100644
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
@@ -361,7 +361,7 @@ MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
361 .map_io = orion5x_map_io, 361 .map_io = orion5x_map_io,
362 .init_early = orion5x_init_early, 362 .init_early = orion5x_init_early,
363 .init_irq = orion5x_init_irq, 363 .init_irq = orion5x_init_irq,
364 .timer = &orion5x_timer, 364 .init_time = orion5x_timer_init,
365 .fixup = tag_fixup_mem32, 365 .fixup = tag_fixup_mem32,
366 .restart = orion5x_restart, 366 .restart = orion5x_restart,
367MACHINE_END 367MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index b184f680e0db..9c17f0c2b488 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -326,7 +326,7 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
326 .map_io = orion5x_map_io, 326 .map_io = orion5x_map_io,
327 .init_early = orion5x_init_early, 327 .init_early = orion5x_init_early,
328 .init_irq = orion5x_init_irq, 328 .init_irq = orion5x_init_irq,
329 .timer = &orion5x_timer, 329 .init_time = orion5x_timer_init,
330 .fixup = tag_fixup_mem32, 330 .fixup = tag_fixup_mem32,
331 .restart = orion5x_restart, 331 .restart = orion5x_restart,
332MACHINE_END 332MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index a5c2e64c4ece..8cc5ab6c503e 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -315,7 +315,7 @@ MACHINE_START(TS409, "QNAP TS-409")
315 .map_io = orion5x_map_io, 315 .map_io = orion5x_map_io,
316 .init_early = orion5x_init_early, 316 .init_early = orion5x_init_early,
317 .init_irq = orion5x_init_irq, 317 .init_irq = orion5x_init_irq,
318 .timer = &orion5x_timer, 318 .init_time = orion5x_timer_init,
319 .fixup = tag_fixup_mem32, 319 .fixup = tag_fixup_mem32,
320 .restart = orion5x_restart, 320 .restart = orion5x_restart,
321MACHINE_END 321MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index b0727dcd1ef9..e960855d32ac 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -619,6 +619,6 @@ MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
619 .map_io = ts78xx_map_io, 619 .map_io = ts78xx_map_io,
620 .init_early = orion5x_init_early, 620 .init_early = orion5x_init_early,
621 .init_irq = orion5x_init_irq, 621 .init_irq = orion5x_init_irq,
622 .timer = &orion5x_timer, 622 .init_time = orion5x_timer_init,
623 .restart = orion5x_restart, 623 .restart = orion5x_restart,
624MACHINE_END 624MACHINE_END
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index 754c12b6abf0..66552ca7e05d 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -176,7 +176,7 @@ MACHINE_START(WNR854T, "Netgear WNR854T")
176 .map_io = orion5x_map_io, 176 .map_io = orion5x_map_io,
177 .init_early = orion5x_init_early, 177 .init_early = orion5x_init_early,
178 .init_irq = orion5x_init_irq, 178 .init_irq = orion5x_init_irq,
179 .timer = &orion5x_timer, 179 .init_time = orion5x_timer_init,
180 .fixup = tag_fixup_mem32, 180 .fixup = tag_fixup_mem32,
181 .restart = orion5x_restart, 181 .restart = orion5x_restart,
182MACHINE_END 182MACHINE_END
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 45c21251eb1e..2c5408e2e689 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -264,7 +264,7 @@ MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")
264 .map_io = orion5x_map_io, 264 .map_io = orion5x_map_io,
265 .init_early = orion5x_init_early, 265 .init_early = orion5x_init_early,
266 .init_irq = orion5x_init_irq, 266 .init_irq = orion5x_init_irq,
267 .timer = &orion5x_timer, 267 .init_time = orion5x_timer_init,
268 .fixup = tag_fixup_mem32, 268 .fixup = tag_fixup_mem32,
269 .restart = orion5x_restart, 269 .restart = orion5x_restart,
270MACHINE_END 270MACHINE_END
diff --git a/arch/arm/mach-picoxcell/common.c b/arch/arm/mach-picoxcell/common.c
index f6c0849af5e9..518c59bdbcda 100644
--- a/arch/arm/mach-picoxcell/common.c
+++ b/arch/arm/mach-picoxcell/common.c
@@ -99,7 +99,7 @@ DT_MACHINE_START(PICOXCELL, "Picochip picoXcell")
99 .nr_irqs = NR_IRQS_LEGACY, 99 .nr_irqs = NR_IRQS_LEGACY,
100 .init_irq = picoxcell_init_irq, 100 .init_irq = picoxcell_init_irq,
101 .handle_irq = vic_handle_irq, 101 .handle_irq = vic_handle_irq,
102 .timer = &dw_apb_timer, 102 .init_time = dw_apb_timer_init,
103 .init_machine = picoxcell_init_machine, 103 .init_machine = picoxcell_init_machine,
104 .dt_compat = picoxcell_dt_match, 104 .dt_compat = picoxcell_dt_match,
105 .restart = picoxcell_wdt_restart, 105 .restart = picoxcell_wdt_restart,
diff --git a/arch/arm/mach-picoxcell/common.h b/arch/arm/mach-picoxcell/common.h
index a65cb02f84c8..481b42a4ef15 100644
--- a/arch/arm/mach-picoxcell/common.h
+++ b/arch/arm/mach-picoxcell/common.h
@@ -12,6 +12,6 @@
12 12
13#include <asm/mach/time.h> 13#include <asm/mach/time.h>
14 14
15extern struct sys_timer dw_apb_timer; 15extern void dw_apb_timer_init(void);
16 16
17#endif /* __PICOXCELL_COMMON_H__ */ 17#endif /* __PICOXCELL_COMMON_H__ */
diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c
index f25a54194639..ed3570e5eb8f 100644
--- a/arch/arm/mach-prima2/common.c
+++ b/arch/arm/mach-prima2/common.c
@@ -40,7 +40,7 @@ DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)")
40 /* Maintainer: Barry Song <baohua.song@csr.com> */ 40 /* Maintainer: Barry Song <baohua.song@csr.com> */
41 .map_io = sirfsoc_map_lluart, 41 .map_io = sirfsoc_map_lluart,
42 .init_irq = sirfsoc_of_irq_init, 42 .init_irq = sirfsoc_of_irq_init,
43 .timer = &sirfsoc_timer, 43 .init_time = sirfsoc_timer_init,
44 .dma_zone_size = SZ_256M, 44 .dma_zone_size = SZ_256M,
45 .init_machine = sirfsoc_mach_init, 45 .init_machine = sirfsoc_mach_init,
46 .init_late = sirfsoc_init_late, 46 .init_late = sirfsoc_init_late,
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
index 60d826fc2185..9c75f124e3cf 100644
--- a/arch/arm/mach-prima2/common.h
+++ b/arch/arm/mach-prima2/common.h
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <asm/mach/time.h> 13#include <asm/mach/time.h>
14 14
15extern struct sys_timer sirfsoc_timer; 15extern void sirfsoc_timer_init(void);
16 16
17extern void __init sirfsoc_of_irq_init(void); 17extern void __init sirfsoc_of_irq_init(void);
18extern void __init sirfsoc_of_clk_init(void); 18extern void __init sirfsoc_of_clk_init(void);
diff --git a/arch/arm/mach-prima2/timer.c b/arch/arm/mach-prima2/timer.c
index d95bf252f694..8c732a5beb7f 100644
--- a/arch/arm/mach-prima2/timer.c
+++ b/arch/arm/mach-prima2/timer.c
@@ -187,7 +187,7 @@ static void __init sirfsoc_clockevent_init(void)
187} 187}
188 188
189/* initialize the kernel jiffy timer source */ 189/* initialize the kernel jiffy timer source */
190static void __init sirfsoc_timer_init(void) 190void __init sirfsoc_timer_init(void)
191{ 191{
192 unsigned long rate; 192 unsigned long rate;
193 struct clk *clk; 193 struct clk *clk;
@@ -226,7 +226,7 @@ static struct of_device_id timer_ids[] = {
226 {}, 226 {},
227}; 227};
228 228
229static void __init sirfsoc_of_timer_map(void) 229void __init sirfsoc_of_timer_map(void)
230{ 230{
231 struct device_node *np; 231 struct device_node *np;
232 const unsigned int *intspec; 232 const unsigned int *intspec;
@@ -245,7 +245,3 @@ static void __init sirfsoc_of_timer_map(void)
245 245
246 of_node_put(np); 246 of_node_put(np);
247} 247}
248
249struct sys_timer sirfsoc_timer = {
250 .init = sirfsoc_timer_init,
251};
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index 208229342514..2f71b3fbd319 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -822,7 +822,7 @@ MACHINE_START(BALLOON3, "Balloon3")
822 .nr_irqs = BALLOON3_NR_IRQS, 822 .nr_irqs = BALLOON3_NR_IRQS,
823 .init_irq = balloon3_init_irq, 823 .init_irq = balloon3_init_irq,
824 .handle_irq = pxa27x_handle_irq, 824 .handle_irq = pxa27x_handle_irq,
825 .timer = &pxa_timer, 825 .init_time = pxa_timer_init,
826 .init_machine = balloon3_init, 826 .init_machine = balloon3_init,
827 .atag_offset = 0x100, 827 .atag_offset = 0x100,
828 .restart = pxa_restart, 828 .restart = pxa_restart,
diff --git a/arch/arm/mach-pxa/capc7117.c b/arch/arm/mach-pxa/capc7117.c
index 9a8760b72913..c092730749b9 100644
--- a/arch/arm/mach-pxa/capc7117.c
+++ b/arch/arm/mach-pxa/capc7117.c
@@ -153,7 +153,7 @@ MACHINE_START(CAPC7117,
153 .nr_irqs = PXA_NR_IRQS, 153 .nr_irqs = PXA_NR_IRQS,
154 .init_irq = pxa3xx_init_irq, 154 .init_irq = pxa3xx_init_irq,
155 .handle_irq = pxa3xx_handle_irq, 155 .handle_irq = pxa3xx_handle_irq,
156 .timer = &pxa_timer, 156 .init_time = pxa_timer_init,
157 .init_machine = capc7117_init, 157 .init_machine = capc7117_init,
158 .restart = pxa_restart, 158 .restart = pxa_restart,
159MACHINE_END 159MACHINE_END
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index a103c8ffea9f..bb99f59a36d8 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -520,7 +520,7 @@ MACHINE_START(ARMCORE, "Compulab CM-X2XX")
520 .init_irq = cmx2xx_init_irq, 520 .init_irq = cmx2xx_init_irq,
521 /* NOTE: pxa25x_handle_irq() works on PXA27x w/o camera support */ 521 /* NOTE: pxa25x_handle_irq() works on PXA27x w/o camera support */
522 .handle_irq = pxa25x_handle_irq, 522 .handle_irq = pxa25x_handle_irq,
523 .timer = &pxa_timer, 523 .init_time = pxa_timer_init,
524 .init_machine = cmx2xx_init, 524 .init_machine = cmx2xx_init,
525#ifdef CONFIG_PCI 525#ifdef CONFIG_PCI
526 .dma_zone_size = SZ_64M, 526 .dma_zone_size = SZ_64M,
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c
index cc2b23afcaaf..8091aac89edf 100644
--- a/arch/arm/mach-pxa/cm-x300.c
+++ b/arch/arm/mach-pxa/cm-x300.c
@@ -854,7 +854,7 @@ MACHINE_START(CM_X300, "CM-X300 module")
854 .nr_irqs = PXA_NR_IRQS, 854 .nr_irqs = PXA_NR_IRQS,
855 .init_irq = pxa3xx_init_irq, 855 .init_irq = pxa3xx_init_irq,
856 .handle_irq = pxa3xx_handle_irq, 856 .handle_irq = pxa3xx_handle_irq,
857 .timer = &pxa_timer, 857 .init_time = pxa_timer_init,
858 .init_machine = cm_x300_init, 858 .init_machine = cm_x300_init,
859 .fixup = cm_x300_fixup, 859 .fixup = cm_x300_fixup,
860 .restart = pxa_restart, 860 .restart = pxa_restart,
diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c
index b2f227d36125..5f9d9303b346 100644
--- a/arch/arm/mach-pxa/colibri-pxa270.c
+++ b/arch/arm/mach-pxa/colibri-pxa270.c
@@ -313,7 +313,7 @@ MACHINE_START(COLIBRI, "Toradex Colibri PXA270")
313 .nr_irqs = PXA_NR_IRQS, 313 .nr_irqs = PXA_NR_IRQS,
314 .init_irq = pxa27x_init_irq, 314 .init_irq = pxa27x_init_irq,
315 .handle_irq = pxa27x_handle_irq, 315 .handle_irq = pxa27x_handle_irq,
316 .timer = &pxa_timer, 316 .init_time = pxa_timer_init,
317 .restart = pxa_restart, 317 .restart = pxa_restart,
318MACHINE_END 318MACHINE_END
319 319
@@ -324,7 +324,7 @@ MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC")
324 .nr_irqs = PXA_NR_IRQS, 324 .nr_irqs = PXA_NR_IRQS,
325 .init_irq = pxa27x_init_irq, 325 .init_irq = pxa27x_init_irq,
326 .handle_irq = pxa27x_handle_irq, 326 .handle_irq = pxa27x_handle_irq,
327 .timer = &pxa_timer, 327 .init_time = pxa_timer_init,
328 .restart = pxa_restart, 328 .restart = pxa_restart,
329MACHINE_END 329MACHINE_END
330 330
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index a9c9c163dd95..f1a1ac1fbd85 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -189,7 +189,7 @@ MACHINE_START(COLIBRI300, "Toradex Colibri PXA300")
189 .nr_irqs = PXA_NR_IRQS, 189 .nr_irqs = PXA_NR_IRQS,
190 .init_irq = pxa3xx_init_irq, 190 .init_irq = pxa3xx_init_irq,
191 .handle_irq = pxa3xx_handle_irq, 191 .handle_irq = pxa3xx_handle_irq,
192 .timer = &pxa_timer, 192 .init_time = pxa_timer_init,
193 .restart = pxa_restart, 193 .restart = pxa_restart,
194MACHINE_END 194MACHINE_END
195 195
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index 25515cd7e68f..f6cc8b0ab82f 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -259,7 +259,7 @@ MACHINE_START(COLIBRI320, "Toradex Colibri PXA320")
259 .nr_irqs = PXA_NR_IRQS, 259 .nr_irqs = PXA_NR_IRQS,
260 .init_irq = pxa3xx_init_irq, 260 .init_irq = pxa3xx_init_irq,
261 .handle_irq = pxa3xx_handle_irq, 261 .handle_irq = pxa3xx_handle_irq,
262 .timer = &pxa_timer, 262 .init_time = pxa_timer_init,
263 .restart = pxa_restart, 263 .restart = pxa_restart,
264MACHINE_END 264MACHINE_END
265 265
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 7c83f52c549c..a5b8fead7d61 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -733,7 +733,7 @@ MACHINE_START(CORGI, "SHARP Corgi")
733 .init_irq = pxa25x_init_irq, 733 .init_irq = pxa25x_init_irq,
734 .handle_irq = pxa25x_handle_irq, 734 .handle_irq = pxa25x_handle_irq,
735 .init_machine = corgi_init, 735 .init_machine = corgi_init,
736 .timer = &pxa_timer, 736 .init_time = pxa_timer_init,
737 .restart = corgi_restart, 737 .restart = corgi_restart,
738MACHINE_END 738MACHINE_END
739#endif 739#endif
@@ -746,7 +746,7 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd")
746 .init_irq = pxa25x_init_irq, 746 .init_irq = pxa25x_init_irq,
747 .handle_irq = pxa25x_handle_irq, 747 .handle_irq = pxa25x_handle_irq,
748 .init_machine = corgi_init, 748 .init_machine = corgi_init,
749 .timer = &pxa_timer, 749 .init_time = pxa_timer_init,
750 .restart = corgi_restart, 750 .restart = corgi_restart,
751MACHINE_END 751MACHINE_END
752#endif 752#endif
@@ -759,7 +759,7 @@ MACHINE_START(HUSKY, "SHARP Husky")
759 .init_irq = pxa25x_init_irq, 759 .init_irq = pxa25x_init_irq,
760 .handle_irq = pxa25x_handle_irq, 760 .handle_irq = pxa25x_handle_irq,
761 .init_machine = corgi_init, 761 .init_machine = corgi_init,
762 .timer = &pxa_timer, 762 .init_time = pxa_timer_init,
763 .restart = corgi_restart, 763 .restart = corgi_restart,
764MACHINE_END 764MACHINE_END
765#endif 765#endif
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c
index 7039f44b3647..fadfff8feaef 100644
--- a/arch/arm/mach-pxa/csb726.c
+++ b/arch/arm/mach-pxa/csb726.c
@@ -278,6 +278,6 @@ MACHINE_START(CSB726, "Cogent CSB726")
278 .init_irq = pxa27x_init_irq, 278 .init_irq = pxa27x_init_irq,
279 .handle_irq = pxa27x_handle_irq, 279 .handle_irq = pxa27x_handle_irq,
280 .init_machine = csb726_init, 280 .init_machine = csb726_init,
281 .timer = &pxa_timer, 281 .init_time = pxa_timer_init,
282 .restart = pxa_restart, 282 .restart = pxa_restart,
283MACHINE_END 283MACHINE_END
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 1b6411439ec8..446563a7d1ad 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -1298,7 +1298,7 @@ MACHINE_START(EM_X270, "Compulab EM-X270")
1298 .nr_irqs = PXA_NR_IRQS, 1298 .nr_irqs = PXA_NR_IRQS,
1299 .init_irq = pxa27x_init_irq, 1299 .init_irq = pxa27x_init_irq,
1300 .handle_irq = pxa27x_handle_irq, 1300 .handle_irq = pxa27x_handle_irq,
1301 .timer = &pxa_timer, 1301 .init_time = pxa_timer_init,
1302 .init_machine = em_x270_init, 1302 .init_machine = em_x270_init,
1303 .restart = pxa_restart, 1303 .restart = pxa_restart,
1304MACHINE_END 1304MACHINE_END
@@ -1309,7 +1309,7 @@ MACHINE_START(EXEDA, "Compulab eXeda")
1309 .nr_irqs = PXA_NR_IRQS, 1309 .nr_irqs = PXA_NR_IRQS,
1310 .init_irq = pxa27x_init_irq, 1310 .init_irq = pxa27x_init_irq,
1311 .handle_irq = pxa27x_handle_irq, 1311 .handle_irq = pxa27x_handle_irq,
1312 .timer = &pxa_timer, 1312 .init_time = pxa_timer_init,
1313 .init_machine = em_x270_init, 1313 .init_machine = em_x270_init,
1314 .restart = pxa_restart, 1314 .restart = pxa_restart,
1315MACHINE_END 1315MACHINE_END
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c
index be2ee9bf5c6e..8280ebcaab9f 100644
--- a/arch/arm/mach-pxa/eseries.c
+++ b/arch/arm/mach-pxa/eseries.c
@@ -195,7 +195,7 @@ MACHINE_START(E330, "Toshiba e330")
195 .handle_irq = pxa25x_handle_irq, 195 .handle_irq = pxa25x_handle_irq,
196 .fixup = eseries_fixup, 196 .fixup = eseries_fixup,
197 .init_machine = e330_init, 197 .init_machine = e330_init,
198 .timer = &pxa_timer, 198 .init_time = pxa_timer_init,
199 .restart = pxa_restart, 199 .restart = pxa_restart,
200MACHINE_END 200MACHINE_END
201#endif 201#endif
@@ -246,7 +246,7 @@ MACHINE_START(E350, "Toshiba e350")
246 .handle_irq = pxa25x_handle_irq, 246 .handle_irq = pxa25x_handle_irq,
247 .fixup = eseries_fixup, 247 .fixup = eseries_fixup,
248 .init_machine = e350_init, 248 .init_machine = e350_init,
249 .timer = &pxa_timer, 249 .init_time = pxa_timer_init,
250 .restart = pxa_restart, 250 .restart = pxa_restart,
251MACHINE_END 251MACHINE_END
252#endif 252#endif
@@ -370,7 +370,7 @@ MACHINE_START(E400, "Toshiba e400")
370 .handle_irq = pxa25x_handle_irq, 370 .handle_irq = pxa25x_handle_irq,
371 .fixup = eseries_fixup, 371 .fixup = eseries_fixup,
372 .init_machine = e400_init, 372 .init_machine = e400_init,
373 .timer = &pxa_timer, 373 .init_time = pxa_timer_init,
374 .restart = pxa_restart, 374 .restart = pxa_restart,
375MACHINE_END 375MACHINE_END
376#endif 376#endif
@@ -566,7 +566,7 @@ MACHINE_START(E740, "Toshiba e740")
566 .handle_irq = pxa25x_handle_irq, 566 .handle_irq = pxa25x_handle_irq,
567 .fixup = eseries_fixup, 567 .fixup = eseries_fixup,
568 .init_machine = e740_init, 568 .init_machine = e740_init,
569 .timer = &pxa_timer, 569 .init_time = pxa_timer_init,
570 .restart = pxa_restart, 570 .restart = pxa_restart,
571MACHINE_END 571MACHINE_END
572#endif 572#endif
@@ -765,7 +765,7 @@ MACHINE_START(E750, "Toshiba e750")
765 .handle_irq = pxa25x_handle_irq, 765 .handle_irq = pxa25x_handle_irq,
766 .fixup = eseries_fixup, 766 .fixup = eseries_fixup,
767 .init_machine = e750_init, 767 .init_machine = e750_init,
768 .timer = &pxa_timer, 768 .init_time = pxa_timer_init,
769 .restart = pxa_restart, 769 .restart = pxa_restart,
770MACHINE_END 770MACHINE_END
771#endif 771#endif
@@ -977,7 +977,7 @@ MACHINE_START(E800, "Toshiba e800")
977 .handle_irq = pxa25x_handle_irq, 977 .handle_irq = pxa25x_handle_irq,
978 .fixup = eseries_fixup, 978 .fixup = eseries_fixup,
979 .init_machine = e800_init, 979 .init_machine = e800_init,
980 .timer = &pxa_timer, 980 .init_time = pxa_timer_init,
981 .restart = pxa_restart, 981 .restart = pxa_restart,
982MACHINE_END 982MACHINE_END
983#endif 983#endif
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index dc58fa0edb66..dca10709be8f 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -802,7 +802,7 @@ MACHINE_START(EZX_A780, "Motorola EZX A780")
802 .nr_irqs = EZX_NR_IRQS, 802 .nr_irqs = EZX_NR_IRQS,
803 .init_irq = pxa27x_init_irq, 803 .init_irq = pxa27x_init_irq,
804 .handle_irq = pxa27x_handle_irq, 804 .handle_irq = pxa27x_handle_irq,
805 .timer = &pxa_timer, 805 .init_time = pxa_timer_init,
806 .init_machine = a780_init, 806 .init_machine = a780_init,
807 .restart = pxa_restart, 807 .restart = pxa_restart,
808MACHINE_END 808MACHINE_END
@@ -869,7 +869,7 @@ MACHINE_START(EZX_E680, "Motorola EZX E680")
869 .nr_irqs = EZX_NR_IRQS, 869 .nr_irqs = EZX_NR_IRQS,
870 .init_irq = pxa27x_init_irq, 870 .init_irq = pxa27x_init_irq,
871 .handle_irq = pxa27x_handle_irq, 871 .handle_irq = pxa27x_handle_irq,
872 .timer = &pxa_timer, 872 .init_time = pxa_timer_init,
873 .init_machine = e680_init, 873 .init_machine = e680_init,
874 .restart = pxa_restart, 874 .restart = pxa_restart,
875MACHINE_END 875MACHINE_END
@@ -936,7 +936,7 @@ MACHINE_START(EZX_A1200, "Motorola EZX A1200")
936 .nr_irqs = EZX_NR_IRQS, 936 .nr_irqs = EZX_NR_IRQS,
937 .init_irq = pxa27x_init_irq, 937 .init_irq = pxa27x_init_irq,
938 .handle_irq = pxa27x_handle_irq, 938 .handle_irq = pxa27x_handle_irq,
939 .timer = &pxa_timer, 939 .init_time = pxa_timer_init,
940 .init_machine = a1200_init, 940 .init_machine = a1200_init,
941 .restart = pxa_restart, 941 .restart = pxa_restart,
942MACHINE_END 942MACHINE_END
@@ -1128,7 +1128,7 @@ MACHINE_START(EZX_A910, "Motorola EZX A910")
1128 .nr_irqs = EZX_NR_IRQS, 1128 .nr_irqs = EZX_NR_IRQS,
1129 .init_irq = pxa27x_init_irq, 1129 .init_irq = pxa27x_init_irq,
1130 .handle_irq = pxa27x_handle_irq, 1130 .handle_irq = pxa27x_handle_irq,
1131 .timer = &pxa_timer, 1131 .init_time = pxa_timer_init,
1132 .init_machine = a910_init, 1132 .init_machine = a910_init,
1133 .restart = pxa_restart, 1133 .restart = pxa_restart,
1134MACHINE_END 1134MACHINE_END
@@ -1195,7 +1195,7 @@ MACHINE_START(EZX_E6, "Motorola EZX E6")
1195 .nr_irqs = EZX_NR_IRQS, 1195 .nr_irqs = EZX_NR_IRQS,
1196 .init_irq = pxa27x_init_irq, 1196 .init_irq = pxa27x_init_irq,
1197 .handle_irq = pxa27x_handle_irq, 1197 .handle_irq = pxa27x_handle_irq,
1198 .timer = &pxa_timer, 1198 .init_time = pxa_timer_init,
1199 .init_machine = e6_init, 1199 .init_machine = e6_init,
1200 .restart = pxa_restart, 1200 .restart = pxa_restart,
1201MACHINE_END 1201MACHINE_END
@@ -1236,7 +1236,7 @@ MACHINE_START(EZX_E2, "Motorola EZX E2")
1236 .nr_irqs = EZX_NR_IRQS, 1236 .nr_irqs = EZX_NR_IRQS,
1237 .init_irq = pxa27x_init_irq, 1237 .init_irq = pxa27x_init_irq,
1238 .handle_irq = pxa27x_handle_irq, 1238 .handle_irq = pxa27x_handle_irq,
1239 .timer = &pxa_timer, 1239 .init_time = pxa_timer_init,
1240 .init_machine = e2_init, 1240 .init_machine = e2_init,
1241 .restart = pxa_restart, 1241 .restart = pxa_restart,
1242MACHINE_END 1242MACHINE_END
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index 42d5cca66257..fd7ea39b78c0 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -10,9 +10,8 @@
10 */ 10 */
11 11
12struct irq_data; 12struct irq_data;
13struct sys_timer;
14 13
15extern struct sys_timer pxa_timer; 14extern void pxa_timer_init(void);
16 15
17extern void __init pxa_map_io(void); 16extern void __init pxa_map_io(void);
18 17
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
index 60755a6bb1c6..00b92dad7b81 100644
--- a/arch/arm/mach-pxa/gumstix.c
+++ b/arch/arm/mach-pxa/gumstix.c
@@ -238,7 +238,7 @@ MACHINE_START(GUMSTIX, "Gumstix")
238 .nr_irqs = PXA_NR_IRQS, 238 .nr_irqs = PXA_NR_IRQS,
239 .init_irq = pxa25x_init_irq, 239 .init_irq = pxa25x_init_irq,
240 .handle_irq = pxa25x_handle_irq, 240 .handle_irq = pxa25x_handle_irq,
241 .timer = &pxa_timer, 241 .init_time = pxa_timer_init,
242 .init_machine = gumstix_init, 242 .init_machine = gumstix_init,
243 .restart = pxa_restart, 243 .restart = pxa_restart,
244MACHINE_END 244MACHINE_END
diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c
index e7dec589f014..875ec3351499 100644
--- a/arch/arm/mach-pxa/h5000.c
+++ b/arch/arm/mach-pxa/h5000.c
@@ -208,7 +208,7 @@ MACHINE_START(H5400, "HP iPAQ H5000")
208 .nr_irqs = PXA_NR_IRQS, 208 .nr_irqs = PXA_NR_IRQS,
209 .init_irq = pxa25x_init_irq, 209 .init_irq = pxa25x_init_irq,
210 .handle_irq = pxa25x_handle_irq, 210 .handle_irq = pxa25x_handle_irq,
211 .timer = &pxa_timer, 211 .init_time = pxa_timer_init,
212 .init_machine = h5000_init, 212 .init_machine = h5000_init,
213 .restart = pxa_restart, 213 .restart = pxa_restart,
214MACHINE_END 214MACHINE_END
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c
index 2962de898da9..7a8d749a07b8 100644
--- a/arch/arm/mach-pxa/himalaya.c
+++ b/arch/arm/mach-pxa/himalaya.c
@@ -164,6 +164,6 @@ MACHINE_START(HIMALAYA, "HTC Himalaya")
164 .init_irq = pxa25x_init_irq, 164 .init_irq = pxa25x_init_irq,
165 .handle_irq = pxa25x_handle_irq, 165 .handle_irq = pxa25x_handle_irq,
166 .init_machine = himalaya_init, 166 .init_machine = himalaya_init,
167 .timer = &pxa_timer, 167 .init_time = pxa_timer_init,
168 .restart = pxa_restart, 168 .restart = pxa_restart,
169MACHINE_END 169MACHINE_END
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index e2c6391863fe..133109ec7332 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -900,6 +900,6 @@ MACHINE_START(H4700, "HP iPAQ HX4700")
900 .init_irq = pxa27x_init_irq, 900 .init_irq = pxa27x_init_irq,
901 .handle_irq = pxa27x_handle_irq, 901 .handle_irq = pxa27x_handle_irq,
902 .init_machine = hx4700_init, 902 .init_machine = hx4700_init,
903 .timer = &pxa_timer, 903 .init_time = pxa_timer_init,
904 .restart = pxa_restart, 904 .restart = pxa_restart,
905MACHINE_END 905MACHINE_END
diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c
index 1d02eabc9c65..fe31bfcbb8df 100644
--- a/arch/arm/mach-pxa/icontrol.c
+++ b/arch/arm/mach-pxa/icontrol.c
@@ -196,7 +196,7 @@ MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")
196 .nr_irqs = PXA_NR_IRQS, 196 .nr_irqs = PXA_NR_IRQS,
197 .init_irq = pxa3xx_init_irq, 197 .init_irq = pxa3xx_init_irq,
198 .handle_irq = pxa3xx_handle_irq, 198 .handle_irq = pxa3xx_handle_irq,
199 .timer = &pxa_timer, 199 .init_time = pxa_timer_init,
200 .init_machine = icontrol_init, 200 .init_machine = icontrol_init,
201 .restart = pxa_restart, 201 .restart = pxa_restart,
202MACHINE_END 202MACHINE_END
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index 64507cdd2e8f..343c4e3a7c5d 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -279,7 +279,7 @@ MACHINE_START(PXA_IDP, "Vibren PXA255 IDP")
279 .nr_irqs = PXA_NR_IRQS, 279 .nr_irqs = PXA_NR_IRQS,
280 .init_irq = pxa25x_init_irq, 280 .init_irq = pxa25x_init_irq,
281 .handle_irq = pxa25x_handle_irq, 281 .handle_irq = pxa25x_handle_irq,
282 .timer = &pxa_timer, 282 .init_time = pxa_timer_init,
283 .init_machine = idp_init, 283 .init_machine = idp_init,
284 .restart = pxa_restart, 284 .restart = pxa_restart,
285MACHINE_END 285MACHINE_END
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index 402874f9021f..e848c4607baf 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -443,7 +443,7 @@ MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleto
443 .nr_irqs = LITTLETON_NR_IRQS, 443 .nr_irqs = LITTLETON_NR_IRQS,
444 .init_irq = pxa3xx_init_irq, 444 .init_irq = pxa3xx_init_irq,
445 .handle_irq = pxa3xx_handle_irq, 445 .handle_irq = pxa3xx_handle_irq,
446 .timer = &pxa_timer, 446 .init_time = pxa_timer_init,
447 .init_machine = littleton_init, 447 .init_machine = littleton_init,
448 .restart = pxa_restart, 448 .restart = pxa_restart,
449MACHINE_END 449MACHINE_END
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index 1a63eaa89867..1255ee00f3d1 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -503,7 +503,7 @@ MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine")
503 .nr_irqs = LPD270_NR_IRQS, 503 .nr_irqs = LPD270_NR_IRQS,
504 .init_irq = lpd270_init_irq, 504 .init_irq = lpd270_init_irq,
505 .handle_irq = pxa27x_handle_irq, 505 .handle_irq = pxa27x_handle_irq,
506 .timer = &pxa_timer, 506 .init_time = pxa_timer_init,
507 .init_machine = lpd270_init, 507 .init_machine = lpd270_init,
508 .restart = pxa_restart, 508 .restart = pxa_restart,
509MACHINE_END 509MACHINE_END
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 553056d9a3c5..d8a1be619f21 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -650,7 +650,7 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
650 .nr_irqs = LUBBOCK_NR_IRQS, 650 .nr_irqs = LUBBOCK_NR_IRQS,
651 .init_irq = lubbock_init_irq, 651 .init_irq = lubbock_init_irq,
652 .handle_irq = pxa25x_handle_irq, 652 .handle_irq = pxa25x_handle_irq,
653 .timer = &pxa_timer, 653 .init_time = pxa_timer_init,
654 .init_machine = lubbock_init, 654 .init_machine = lubbock_init,
655 .restart = pxa_restart, 655 .restart = pxa_restart,
656MACHINE_END 656MACHINE_END
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index f7922404d941..f44532fc648b 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -774,6 +774,6 @@ MACHINE_START(MAGICIAN, "HTC Magician")
774 .init_irq = pxa27x_init_irq, 774 .init_irq = pxa27x_init_irq,
775 .handle_irq = pxa27x_handle_irq, 775 .handle_irq = pxa27x_handle_irq,
776 .init_machine = magician_init, 776 .init_machine = magician_init,
777 .timer = &pxa_timer, 777 .init_time = pxa_timer_init,
778 .restart = pxa_restart, 778 .restart = pxa_restart,
779MACHINE_END 779MACHINE_END
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index f27a61ee7ac7..7a12c1ba90ff 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -714,7 +714,7 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
714 .nr_irqs = MAINSTONE_NR_IRQS, 714 .nr_irqs = MAINSTONE_NR_IRQS,
715 .init_irq = mainstone_init_irq, 715 .init_irq = mainstone_init_irq,
716 .handle_irq = pxa27x_handle_irq, 716 .handle_irq = pxa27x_handle_irq,
717 .timer = &pxa_timer, 717 .init_time = pxa_timer_init,
718 .init_machine = mainstone_init, 718 .init_machine = mainstone_init,
719 .restart = pxa_restart, 719 .restart = pxa_restart,
720MACHINE_END 720MACHINE_END
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 2831308dba68..f8979b943cbf 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -762,6 +762,6 @@ MACHINE_START(MIOA701, "MIO A701")
762 .init_irq = &pxa27x_init_irq, 762 .init_irq = &pxa27x_init_irq,
763 .handle_irq = &pxa27x_handle_irq, 763 .handle_irq = &pxa27x_handle_irq,
764 .init_machine = mioa701_machine_init, 764 .init_machine = mioa701_machine_init,
765 .timer = &pxa_timer, 765 .init_time = pxa_timer_init,
766 .restart = mioa701_restart, 766 .restart = mioa701_restart,
767MACHINE_END 767MACHINE_END
diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c
index 152efbf093f6..854f1f562d6b 100644
--- a/arch/arm/mach-pxa/mp900.c
+++ b/arch/arm/mach-pxa/mp900.c
@@ -93,7 +93,7 @@ static void __init mp900c_init(void)
93/* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */ 93/* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */
94MACHINE_START(NEC_MP900, "MobilePro900/C") 94MACHINE_START(NEC_MP900, "MobilePro900/C")
95 .atag_offset = 0x220100, 95 .atag_offset = 0x220100,
96 .timer = &pxa_timer, 96 .init_time = pxa_timer_init,
97 .map_io = pxa25x_map_io, 97 .map_io = pxa25x_map_io,
98 .nr_irqs = PXA_NR_IRQS, 98 .nr_irqs = PXA_NR_IRQS,
99 .init_irq = pxa25x_init_irq, 99 .init_irq = pxa25x_init_irq,
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 8bcc96e3b0db..909b713e5789 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -347,7 +347,7 @@ MACHINE_START(PALMLD, "Palm LifeDrive")
347 .nr_irqs = PXA_NR_IRQS, 347 .nr_irqs = PXA_NR_IRQS,
348 .init_irq = pxa27x_init_irq, 348 .init_irq = pxa27x_init_irq,
349 .handle_irq = pxa27x_handle_irq, 349 .handle_irq = pxa27x_handle_irq,
350 .timer = &pxa_timer, 350 .init_time = pxa_timer_init,
351 .init_machine = palmld_init, 351 .init_machine = palmld_init,
352 .restart = pxa_restart, 352 .restart = pxa_restart,
353MACHINE_END 353MACHINE_END
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 5ca7b904a30e..5033fd07968f 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -208,7 +208,7 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5")
208 .nr_irqs = PXA_NR_IRQS, 208 .nr_irqs = PXA_NR_IRQS,
209 .init_irq = pxa27x_init_irq, 209 .init_irq = pxa27x_init_irq,
210 .handle_irq = pxa27x_handle_irq, 210 .handle_irq = pxa27x_handle_irq,
211 .timer = &pxa_timer, 211 .init_time = pxa_timer_init,
212 .init_machine = palmt5_init, 212 .init_machine = palmt5_init,
213 .restart = pxa_restart, 213 .restart = pxa_restart,
214MACHINE_END 214MACHINE_END
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
index ca924cfedfc0..100b176f7e88 100644
--- a/arch/arm/mach-pxa/palmtc.c
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -542,7 +542,7 @@ MACHINE_START(PALMTC, "Palm Tungsten|C")
542 .nr_irqs = PXA_NR_IRQS, 542 .nr_irqs = PXA_NR_IRQS,
543 .init_irq = pxa25x_init_irq, 543 .init_irq = pxa25x_init_irq,
544 .handle_irq = pxa25x_handle_irq, 544 .handle_irq = pxa25x_handle_irq,
545 .timer = &pxa_timer, 545 .init_time = pxa_timer_init,
546 .init_machine = palmtc_init, 546 .init_machine = palmtc_init,
547 .restart = pxa_restart, 547 .restart = pxa_restart,
548MACHINE_END 548MACHINE_END
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index 32e0d7998355..0742721ced2d 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -363,7 +363,7 @@ MACHINE_START(PALMTE2, "Palm Tungsten|E2")
363 .nr_irqs = PXA_NR_IRQS, 363 .nr_irqs = PXA_NR_IRQS,
364 .init_irq = pxa25x_init_irq, 364 .init_irq = pxa25x_init_irq,
365 .handle_irq = pxa25x_handle_irq, 365 .handle_irq = pxa25x_handle_irq,
366 .timer = &pxa_timer, 366 .init_time = pxa_timer_init,
367 .init_machine = palmte2_init, 367 .init_machine = palmte2_init,
368 .restart = pxa_restart, 368 .restart = pxa_restart,
369MACHINE_END 369MACHINE_END
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
index 3f3c48f2f7ce..d17bda278782 100644
--- a/arch/arm/mach-pxa/palmtreo.c
+++ b/arch/arm/mach-pxa/palmtreo.c
@@ -451,7 +451,7 @@ MACHINE_START(TREO680, "Palm Treo 680")
451 .nr_irqs = PXA_NR_IRQS, 451 .nr_irqs = PXA_NR_IRQS,
452 .init_irq = pxa27x_init_irq, 452 .init_irq = pxa27x_init_irq,
453 .handle_irq = pxa27x_handle_irq, 453 .handle_irq = pxa27x_handle_irq,
454 .timer = &pxa_timer, 454 .init_time = pxa_timer_init,
455 .init_machine = treo680_init, 455 .init_machine = treo680_init,
456 .restart = pxa_restart, 456 .restart = pxa_restart,
457MACHINE_END 457MACHINE_END
@@ -465,7 +465,7 @@ MACHINE_START(CENTRO, "Palm Centro 685")
465 .nr_irqs = PXA_NR_IRQS, 465 .nr_irqs = PXA_NR_IRQS,
466 .init_irq = pxa27x_init_irq, 466 .init_irq = pxa27x_init_irq,
467 .handle_irq = pxa27x_handle_irq, 467 .handle_irq = pxa27x_handle_irq,
468 .timer = &pxa_timer, 468 .init_time = pxa_timer_init,
469 .init_machine = centro_init, 469 .init_machine = centro_init,
470 .restart = pxa_restart, 470 .restart = pxa_restart,
471MACHINE_END 471MACHINE_END
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 8b4366628a12..627c93a7364c 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -366,7 +366,7 @@ MACHINE_START(PALMTX, "Palm T|X")
366 .nr_irqs = PXA_NR_IRQS, 366 .nr_irqs = PXA_NR_IRQS,
367 .init_irq = pxa27x_init_irq, 367 .init_irq = pxa27x_init_irq,
368 .handle_irq = pxa27x_handle_irq, 368 .handle_irq = pxa27x_handle_irq,
369 .timer = &pxa_timer, 369 .init_time = pxa_timer_init,
370 .init_machine = palmtx_init, 370 .init_machine = palmtx_init,
371 .restart = pxa_restart, 371 .restart = pxa_restart,
372MACHINE_END 372MACHINE_END
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index 8cdd4f58e253..18b7fcd98592 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -404,7 +404,7 @@ MACHINE_START(PALMZ72, "Palm Zire72")
404 .nr_irqs = PXA_NR_IRQS, 404 .nr_irqs = PXA_NR_IRQS,
405 .init_irq = pxa27x_init_irq, 405 .init_irq = pxa27x_init_irq,
406 .handle_irq = pxa27x_handle_irq, 406 .handle_irq = pxa27x_handle_irq,
407 .timer = &pxa_timer, 407 .init_time = pxa_timer_init,
408 .init_machine = palmz72_init, 408 .init_machine = palmz72_init,
409 .restart = pxa_restart, 409 .restart = pxa_restart,
410MACHINE_END 410MACHINE_END
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c
index fe9054435b6f..69918c7e3f1f 100644
--- a/arch/arm/mach-pxa/pcm027.c
+++ b/arch/arm/mach-pxa/pcm027.c
@@ -263,7 +263,7 @@ MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270")
263 .nr_irqs = PCM027_NR_IRQS, 263 .nr_irqs = PCM027_NR_IRQS,
264 .init_irq = pxa27x_init_irq, 264 .init_irq = pxa27x_init_irq,
265 .handle_irq = pxa27x_handle_irq, 265 .handle_irq = pxa27x_handle_irq,
266 .timer = &pxa_timer, 266 .init_time = pxa_timer_init,
267 .init_machine = pcm027_init, 267 .init_machine = pcm027_init,
268 .restart = pxa_restart, 268 .restart = pxa_restart,
269MACHINE_END 269MACHINE_END
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 2910bb935c75..50ccd5f1d560 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -469,7 +469,7 @@ MACHINE_START(POODLE, "SHARP Poodle")
469 .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */ 469 .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */
470 .init_irq = pxa25x_init_irq, 470 .init_irq = pxa25x_init_irq,
471 .handle_irq = pxa25x_handle_irq, 471 .handle_irq = pxa25x_handle_irq,
472 .timer = &pxa_timer, 472 .init_time = pxa_timer_init,
473 .init_machine = poodle_init, 473 .init_machine = poodle_init,
474 .restart = pxa_restart, 474 .restart = pxa_restart,
475MACHINE_END 475MACHINE_END
diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c
index c9192cea0033..3835979a0dd3 100644
--- a/arch/arm/mach-pxa/pxa-dt.c
+++ b/arch/arm/mach-pxa/pxa-dt.c
@@ -55,7 +55,7 @@ DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)")
55 .map_io = pxa3xx_map_io, 55 .map_io = pxa3xx_map_io,
56 .init_irq = pxa3xx_dt_init_irq, 56 .init_irq = pxa3xx_dt_init_irq,
57 .handle_irq = pxa3xx_handle_irq, 57 .handle_irq = pxa3xx_handle_irq,
58 .timer = &pxa_timer, 58 .init_time = pxa_timer_init,
59 .restart = pxa_restart, 59 .restart = pxa_restart,
60 .init_machine = pxa3xx_dt_init, 60 .init_machine = pxa3xx_dt_init,
61 .dt_compat = pxa3xx_dt_board_compat, 61 .dt_compat = pxa3xx_dt_board_compat,
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
index 25b08bfa997b..af41888acbd6 100644
--- a/arch/arm/mach-pxa/raumfeld.c
+++ b/arch/arm/mach-pxa/raumfeld.c
@@ -1095,7 +1095,7 @@ MACHINE_START(RAUMFELD_RC, "Raumfeld Controller")
1095 .nr_irqs = PXA_NR_IRQS, 1095 .nr_irqs = PXA_NR_IRQS,
1096 .init_irq = pxa3xx_init_irq, 1096 .init_irq = pxa3xx_init_irq,
1097 .handle_irq = pxa3xx_handle_irq, 1097 .handle_irq = pxa3xx_handle_irq,
1098 .timer = &pxa_timer, 1098 .init_time = pxa_timer_init,
1099 .restart = pxa_restart, 1099 .restart = pxa_restart,
1100MACHINE_END 1100MACHINE_END
1101#endif 1101#endif
@@ -1108,7 +1108,7 @@ MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector")
1108 .nr_irqs = PXA_NR_IRQS, 1108 .nr_irqs = PXA_NR_IRQS,
1109 .init_irq = pxa3xx_init_irq, 1109 .init_irq = pxa3xx_init_irq,
1110 .handle_irq = pxa3xx_handle_irq, 1110 .handle_irq = pxa3xx_handle_irq,
1111 .timer = &pxa_timer, 1111 .init_time = pxa_timer_init,
1112 .restart = pxa_restart, 1112 .restart = pxa_restart,
1113MACHINE_END 1113MACHINE_END
1114#endif 1114#endif
@@ -1121,7 +1121,7 @@ MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker")
1121 .nr_irqs = PXA_NR_IRQS, 1121 .nr_irqs = PXA_NR_IRQS,
1122 .init_irq = pxa3xx_init_irq, 1122 .init_irq = pxa3xx_init_irq,
1123 .handle_irq = pxa3xx_handle_irq, 1123 .handle_irq = pxa3xx_handle_irq,
1124 .timer = &pxa_timer, 1124 .init_time = pxa_timer_init,
1125 .restart = pxa_restart, 1125 .restart = pxa_restart,
1126MACHINE_END 1126MACHINE_END
1127#endif 1127#endif
diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c
index 08d87a5d2639..710c493eac89 100644
--- a/arch/arm/mach-pxa/saar.c
+++ b/arch/arm/mach-pxa/saar.c
@@ -601,7 +601,7 @@ MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)")
601 .nr_irqs = PXA_NR_IRQS, 601 .nr_irqs = PXA_NR_IRQS,
602 .init_irq = pxa3xx_init_irq, 602 .init_irq = pxa3xx_init_irq,
603 .handle_irq = pxa3xx_handle_irq, 603 .handle_irq = pxa3xx_handle_irq,
604 .timer = &pxa_timer, 604 .init_time = pxa_timer_init,
605 .init_machine = saar_init, 605 .init_machine = saar_init,
606 .restart = pxa_restart, 606 .restart = pxa_restart,
607MACHINE_END 607MACHINE_END
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 2073f0e6db0d..f90aa27ad599 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -986,7 +986,7 @@ MACHINE_START(SPITZ, "SHARP Spitz")
986 .init_irq = pxa27x_init_irq, 986 .init_irq = pxa27x_init_irq,
987 .handle_irq = pxa27x_handle_irq, 987 .handle_irq = pxa27x_handle_irq,
988 .init_machine = spitz_init, 988 .init_machine = spitz_init,
989 .timer = &pxa_timer, 989 .init_time = pxa_timer_init,
990 .restart = spitz_restart, 990 .restart = spitz_restart,
991MACHINE_END 991MACHINE_END
992#endif 992#endif
@@ -1000,7 +1000,7 @@ MACHINE_START(BORZOI, "SHARP Borzoi")
1000 .init_irq = pxa27x_init_irq, 1000 .init_irq = pxa27x_init_irq,
1001 .handle_irq = pxa27x_handle_irq, 1001 .handle_irq = pxa27x_handle_irq,
1002 .init_machine = spitz_init, 1002 .init_machine = spitz_init,
1003 .timer = &pxa_timer, 1003 .init_time = pxa_timer_init,
1004 .restart = spitz_restart, 1004 .restart = spitz_restart,
1005MACHINE_END 1005MACHINE_END
1006#endif 1006#endif
@@ -1014,7 +1014,7 @@ MACHINE_START(AKITA, "SHARP Akita")
1014 .init_irq = pxa27x_init_irq, 1014 .init_irq = pxa27x_init_irq,
1015 .handle_irq = pxa27x_handle_irq, 1015 .handle_irq = pxa27x_handle_irq,
1016 .init_machine = spitz_init, 1016 .init_machine = spitz_init,
1017 .timer = &pxa_timer, 1017 .init_time = pxa_timer_init,
1018 .restart = spitz_restart, 1018 .restart = spitz_restart,
1019MACHINE_END 1019MACHINE_END
1020#endif 1020#endif
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index 456560b5aad4..88fde43c948c 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -1006,7 +1006,7 @@ MACHINE_START(INTELMOTE2, "IMOTE 2")
1006 .nr_irqs = PXA_NR_IRQS, 1006 .nr_irqs = PXA_NR_IRQS,
1007 .init_irq = pxa27x_init_irq, 1007 .init_irq = pxa27x_init_irq,
1008 .handle_irq = pxa27x_handle_irq, 1008 .handle_irq = pxa27x_handle_irq,
1009 .timer = &pxa_timer, 1009 .init_time = pxa_timer_init,
1010 .init_machine = imote2_init, 1010 .init_machine = imote2_init,
1011 .atag_offset = 0x100, 1011 .atag_offset = 0x100,
1012 .restart = pxa_restart, 1012 .restart = pxa_restart,
@@ -1019,7 +1019,7 @@ MACHINE_START(STARGATE2, "Stargate 2")
1019 .nr_irqs = STARGATE_NR_IRQS, 1019 .nr_irqs = STARGATE_NR_IRQS,
1020 .init_irq = pxa27x_init_irq, 1020 .init_irq = pxa27x_init_irq,
1021 .handle_irq = pxa27x_handle_irq, 1021 .handle_irq = pxa27x_handle_irq,
1022 .timer = &pxa_timer, 1022 .init_time = pxa_timer_init,
1023 .init_machine = stargate2_init, 1023 .init_machine = stargate2_init,
1024 .atag_offset = 0x100, 1024 .atag_offset = 0x100,
1025 .restart = pxa_restart, 1025 .restart = pxa_restart,
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c
index 1a25f8a7b0ce..f55979c09a5f 100644
--- a/arch/arm/mach-pxa/tavorevb.c
+++ b/arch/arm/mach-pxa/tavorevb.c
@@ -494,7 +494,7 @@ MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)")
494 .nr_irqs = PXA_NR_IRQS, 494 .nr_irqs = PXA_NR_IRQS,
495 .init_irq = pxa3xx_init_irq, 495 .init_irq = pxa3xx_init_irq,
496 .handle_irq = pxa3xx_handle_irq, 496 .handle_irq = pxa3xx_handle_irq,
497 .timer = &pxa_timer, 497 .init_time = pxa_timer_init,
498 .init_machine = tavorevb_init, 498 .init_machine = tavorevb_init,
499 .restart = pxa_restart, 499 .restart = pxa_restart,
500MACHINE_END 500MACHINE_END
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index 4bc47d63698b..bea19a06b2bf 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -89,48 +89,10 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
89 } 89 }
90} 90}
91 91
92static struct clock_event_device ckevt_pxa_osmr0 = {
93 .name = "osmr0",
94 .features = CLOCK_EVT_FEAT_ONESHOT,
95 .rating = 200,
96 .set_next_event = pxa_osmr0_set_next_event,
97 .set_mode = pxa_osmr0_set_mode,
98};
99
100static struct irqaction pxa_ost0_irq = {
101 .name = "ost0",
102 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
103 .handler = pxa_ost0_interrupt,
104 .dev_id = &ckevt_pxa_osmr0,
105};
106
107static void __init pxa_timer_init(void)
108{
109 unsigned long clock_tick_rate = get_clock_tick_rate();
110
111 writel_relaxed(0, OIER);
112 writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
113
114 setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate);
115
116 clockevents_calc_mult_shift(&ckevt_pxa_osmr0, clock_tick_rate, 4);
117 ckevt_pxa_osmr0.max_delta_ns =
118 clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);
119 ckevt_pxa_osmr0.min_delta_ns =
120 clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1;
121 ckevt_pxa_osmr0.cpumask = cpumask_of(0);
122
123 setup_irq(IRQ_OST0, &pxa_ost0_irq);
124
125 clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32,
126 clocksource_mmio_readl_up);
127 clockevents_register_device(&ckevt_pxa_osmr0);
128}
129
130#ifdef CONFIG_PM 92#ifdef CONFIG_PM
131static unsigned long osmr[4], oier, oscr; 93static unsigned long osmr[4], oier, oscr;
132 94
133static void pxa_timer_suspend(void) 95static void pxa_timer_suspend(struct clock_event_device *cedev)
134{ 96{
135 osmr[0] = readl_relaxed(OSMR0); 97 osmr[0] = readl_relaxed(OSMR0);
136 osmr[1] = readl_relaxed(OSMR1); 98 osmr[1] = readl_relaxed(OSMR1);
@@ -140,7 +102,7 @@ static void pxa_timer_suspend(void)
140 oscr = readl_relaxed(OSCR); 102 oscr = readl_relaxed(OSCR);
141} 103}
142 104
143static void pxa_timer_resume(void) 105static void pxa_timer_resume(struct clock_event_device *cedev)
144{ 106{
145 /* 107 /*
146 * Ensure that we have at least MIN_OSCR_DELTA between match 108 * Ensure that we have at least MIN_OSCR_DELTA between match
@@ -163,8 +125,42 @@ static void pxa_timer_resume(void)
163#define pxa_timer_resume NULL 125#define pxa_timer_resume NULL
164#endif 126#endif
165 127
166struct sys_timer pxa_timer = { 128static struct clock_event_device ckevt_pxa_osmr0 = {
167 .init = pxa_timer_init, 129 .name = "osmr0",
130 .features = CLOCK_EVT_FEAT_ONESHOT,
131 .rating = 200,
132 .set_next_event = pxa_osmr0_set_next_event,
133 .set_mode = pxa_osmr0_set_mode,
168 .suspend = pxa_timer_suspend, 134 .suspend = pxa_timer_suspend,
169 .resume = pxa_timer_resume, 135 .resume = pxa_timer_resume,
170}; 136};
137
138static struct irqaction pxa_ost0_irq = {
139 .name = "ost0",
140 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
141 .handler = pxa_ost0_interrupt,
142 .dev_id = &ckevt_pxa_osmr0,
143};
144
145void __init pxa_timer_init(void)
146{
147 unsigned long clock_tick_rate = get_clock_tick_rate();
148
149 writel_relaxed(0, OIER);
150 writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
151
152 setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate);
153
154 clockevents_calc_mult_shift(&ckevt_pxa_osmr0, clock_tick_rate, 4);
155 ckevt_pxa_osmr0.max_delta_ns =
156 clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);
157 ckevt_pxa_osmr0.min_delta_ns =
158 clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1;
159 ckevt_pxa_osmr0.cpumask = cpumask_of(0);
160
161 setup_irq(IRQ_OST0, &pxa_ost0_irq);
162
163 clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32,
164 clocksource_mmio_readl_up);
165 clockevents_register_device(&ckevt_pxa_osmr0);
166}
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 233629edf7ee..9e7998d3635f 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -982,6 +982,6 @@ MACHINE_START(TOSA, "SHARP Tosa")
982 .init_irq = pxa25x_init_irq, 982 .init_irq = pxa25x_init_irq,
983 .handle_irq = pxa25x_handle_irq, 983 .handle_irq = pxa25x_handle_irq,
984 .init_machine = tosa_init, 984 .init_machine = tosa_init,
985 .timer = &pxa_timer, 985 .init_time = pxa_timer_init,
986 .restart = tosa_restart, 986 .restart = tosa_restart,
987MACHINE_END 987MACHINE_END
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index fbbcbed4d1d4..c58043462acd 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -561,7 +561,7 @@ MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module")
561 .nr_irqs = PXA_NR_IRQS, 561 .nr_irqs = PXA_NR_IRQS,
562 .init_irq = pxa27x_init_irq, 562 .init_irq = pxa27x_init_irq,
563 .handle_irq = pxa27x_handle_irq, 563 .handle_irq = pxa27x_handle_irq,
564 .timer = &pxa_timer, 564 .init_time = pxa_timer_init,
565 .restart = pxa_restart, 565 .restart = pxa_restart,
566MACHINE_END 566MACHINE_END
567 567
@@ -573,6 +573,6 @@ MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module")
573 .nr_irqs = PXA_NR_IRQS, 573 .nr_irqs = PXA_NR_IRQS,
574 .init_irq = pxa27x_init_irq, 574 .init_irq = pxa27x_init_irq,
575 .handle_irq = pxa27x_handle_irq, 575 .handle_irq = pxa27x_handle_irq,
576 .timer = &pxa_timer, 576 .init_time = pxa_timer_init,
577 .restart = pxa_restart, 577 .restart = pxa_restart,
578MACHINE_END 578MACHINE_END
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index c773e4dded64..9c363c081d3f 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -997,7 +997,7 @@ MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC")
997 .nr_irqs = PXA_NR_IRQS, 997 .nr_irqs = PXA_NR_IRQS,
998 .init_irq = viper_init_irq, 998 .init_irq = viper_init_irq,
999 .handle_irq = pxa25x_handle_irq, 999 .handle_irq = pxa25x_handle_irq,
1000 .timer = &pxa_timer, 1000 .init_time = pxa_timer_init,
1001 .init_machine = viper_init, 1001 .init_machine = viper_init,
1002 .restart = pxa_restart, 1002 .restart = pxa_restart,
1003MACHINE_END 1003MACHINE_END
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c
index 491b6c9a2a9b..aa89488f961e 100644
--- a/arch/arm/mach-pxa/vpac270.c
+++ b/arch/arm/mach-pxa/vpac270.c
@@ -719,7 +719,7 @@ MACHINE_START(VPAC270, "Voipac PXA270")
719 .nr_irqs = PXA_NR_IRQS, 719 .nr_irqs = PXA_NR_IRQS,
720 .init_irq = pxa27x_init_irq, 720 .init_irq = pxa27x_init_irq,
721 .handle_irq = pxa27x_handle_irq, 721 .handle_irq = pxa27x_handle_irq,
722 .timer = &pxa_timer, 722 .init_time = pxa_timer_init,
723 .init_machine = vpac270_init, 723 .init_machine = vpac270_init,
724 .restart = pxa_restart, 724 .restart = pxa_restart,
725MACHINE_END 725MACHINE_END
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c
index 4275713ccd10..13b1d4586d7d 100644
--- a/arch/arm/mach-pxa/xcep.c
+++ b/arch/arm/mach-pxa/xcep.c
@@ -185,7 +185,7 @@ MACHINE_START(XCEP, "Iskratel XCEP")
185 .nr_irqs = PXA_NR_IRQS, 185 .nr_irqs = PXA_NR_IRQS,
186 .init_irq = pxa25x_init_irq, 186 .init_irq = pxa25x_init_irq,
187 .handle_irq = pxa25x_handle_irq, 187 .handle_irq = pxa25x_handle_irq,
188 .timer = &pxa_timer, 188 .init_time = pxa_timer_init,
189 .restart = pxa_restart, 189 .restart = pxa_restart,
190MACHINE_END 190MACHINE_END
191 191
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c
index 97529face7aa..989903a7e467 100644
--- a/arch/arm/mach-pxa/z2.c
+++ b/arch/arm/mach-pxa/z2.c
@@ -722,7 +722,7 @@ MACHINE_START(ZIPIT2, "Zipit Z2")
722 .nr_irqs = PXA_NR_IRQS, 722 .nr_irqs = PXA_NR_IRQS,
723 .init_irq = pxa27x_init_irq, 723 .init_irq = pxa27x_init_irq,
724 .handle_irq = pxa27x_handle_irq, 724 .handle_irq = pxa27x_handle_irq,
725 .timer = &pxa_timer, 725 .init_time = pxa_timer_init,
726 .init_machine = z2_init, 726 .init_machine = z2_init,
727 .restart = pxa_restart, 727 .restart = pxa_restart,
728MACHINE_END 728MACHINE_END
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index abd3aa145083..f5d436434566 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -910,7 +910,7 @@ MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS")
910 .nr_irqs = ZEUS_NR_IRQS, 910 .nr_irqs = ZEUS_NR_IRQS,
911 .init_irq = zeus_init_irq, 911 .init_irq = zeus_init_irq,
912 .handle_irq = pxa27x_handle_irq, 912 .handle_irq = pxa27x_handle_irq,
913 .timer = &pxa_timer, 913 .init_time = pxa_timer_init,
914 .init_machine = zeus_init, 914 .init_machine = zeus_init,
915 .restart = pxa_restart, 915 .restart = pxa_restart,
916MACHINE_END 916MACHINE_END
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 226279fac9d4..1f00d650ac27 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -428,7 +428,7 @@ MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
428 .nr_irqs = ZYLONITE_NR_IRQS, 428 .nr_irqs = ZYLONITE_NR_IRQS,
429 .init_irq = pxa3xx_init_irq, 429 .init_irq = pxa3xx_init_irq,
430 .handle_irq = pxa3xx_handle_irq, 430 .handle_irq = pxa3xx_handle_irq,
431 .timer = &pxa_timer, 431 .init_time = pxa_timer_init,
432 .init_machine = zylonite_init, 432 .init_machine = zylonite_init,
433 .restart = pxa_restart, 433 .restart = pxa_restart,
434MACHINE_END 434MACHINE_END
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 28511d43637a..f892862fd6ae 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -418,10 +418,6 @@ static void __init realview_eb_timer_init(void)
418 realview_eb_twd_init(); 418 realview_eb_twd_init();
419} 419}
420 420
421static struct sys_timer realview_eb_timer = {
422 .init = realview_eb_timer_init,
423};
424
425static void realview_eb_restart(char mode, const char *cmd) 421static void realview_eb_restart(char mode, const char *cmd)
426{ 422{
427 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); 423 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
@@ -472,7 +468,7 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
472 .map_io = realview_eb_map_io, 468 .map_io = realview_eb_map_io,
473 .init_early = realview_init_early, 469 .init_early = realview_init_early,
474 .init_irq = gic_init_irq, 470 .init_irq = gic_init_irq,
475 .timer = &realview_eb_timer, 471 .init_time = realview_eb_timer_init,
476 .handle_irq = gic_handle_irq, 472 .handle_irq = gic_handle_irq,
477 .init_machine = realview_eb_init, 473 .init_machine = realview_eb_init,
478#ifdef CONFIG_ZONE_DMA 474#ifdef CONFIG_ZONE_DMA
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index 07d6672ddae7..6a4524b93fc6 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -329,10 +329,6 @@ static void __init realview_pb1176_timer_init(void)
329 realview_timer_init(IRQ_DC1176_TIMER0); 329 realview_timer_init(IRQ_DC1176_TIMER0);
330} 330}
331 331
332static struct sys_timer realview_pb1176_timer = {
333 .init = realview_pb1176_timer_init,
334};
335
336static void realview_pb1176_restart(char mode, const char *cmd) 332static void realview_pb1176_restart(char mode, const char *cmd)
337{ 333{
338 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); 334 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
@@ -384,7 +380,7 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
384 .map_io = realview_pb1176_map_io, 380 .map_io = realview_pb1176_map_io,
385 .init_early = realview_init_early, 381 .init_early = realview_init_early,
386 .init_irq = gic_init_irq, 382 .init_irq = gic_init_irq,
387 .timer = &realview_pb1176_timer, 383 .init_time = realview_pb1176_timer_init,
388 .handle_irq = gic_handle_irq, 384 .handle_irq = gic_handle_irq,
389 .init_machine = realview_pb1176_init, 385 .init_machine = realview_pb1176_init,
390#ifdef CONFIG_ZONE_DMA 386#ifdef CONFIG_ZONE_DMA
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 7ed53d75350f..502f6e6c6913 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -316,10 +316,6 @@ static void __init realview_pb11mp_timer_init(void)
316 realview_pb11mp_twd_init(); 316 realview_pb11mp_twd_init();
317} 317}
318 318
319static struct sys_timer realview_pb11mp_timer = {
320 .init = realview_pb11mp_timer_init,
321};
322
323static void realview_pb11mp_restart(char mode, const char *cmd) 319static void realview_pb11mp_restart(char mode, const char *cmd)
324{ 320{
325 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); 321 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
@@ -367,7 +363,7 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
367 .map_io = realview_pb11mp_map_io, 363 .map_io = realview_pb11mp_map_io,
368 .init_early = realview_init_early, 364 .init_early = realview_init_early,
369 .init_irq = gic_init_irq, 365 .init_irq = gic_init_irq,
370 .timer = &realview_pb11mp_timer, 366 .init_time = realview_pb11mp_timer_init,
371 .handle_irq = gic_handle_irq, 367 .handle_irq = gic_handle_irq,
372 .init_machine = realview_pb11mp_init, 368 .init_machine = realview_pb11mp_init,
373#ifdef CONFIG_ZONE_DMA 369#ifdef CONFIG_ZONE_DMA
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 9992431b8a15..85c81aaa05e8 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -264,10 +264,6 @@ static void __init realview_pba8_timer_init(void)
264 realview_timer_init(IRQ_PBA8_TIMER0_1); 264 realview_timer_init(IRQ_PBA8_TIMER0_1);
265} 265}
266 266
267static struct sys_timer realview_pba8_timer = {
268 .init = realview_pba8_timer_init,
269};
270
271static void realview_pba8_restart(char mode, const char *cmd) 267static void realview_pba8_restart(char mode, const char *cmd)
272{ 268{
273 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); 269 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
@@ -308,7 +304,7 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
308 .map_io = realview_pba8_map_io, 304 .map_io = realview_pba8_map_io,
309 .init_early = realview_init_early, 305 .init_early = realview_init_early,
310 .init_irq = gic_init_irq, 306 .init_irq = gic_init_irq,
311 .timer = &realview_pba8_timer, 307 .init_time = realview_pba8_timer_init,
312 .handle_irq = gic_handle_irq, 308 .handle_irq = gic_handle_irq,
313 .init_machine = realview_pba8_init, 309 .init_machine = realview_pba8_init,
314#ifdef CONFIG_ZONE_DMA 310#ifdef CONFIG_ZONE_DMA
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 4f486f05108a..a15a7b0be29b 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -324,10 +324,6 @@ static void __init realview_pbx_timer_init(void)
324 realview_pbx_twd_init(); 324 realview_pbx_twd_init();
325} 325}
326 326
327static struct sys_timer realview_pbx_timer = {
328 .init = realview_pbx_timer_init,
329};
330
331static void realview_pbx_fixup(struct tag *tags, char **from, 327static void realview_pbx_fixup(struct tag *tags, char **from,
332 struct meminfo *meminfo) 328 struct meminfo *meminfo)
333{ 329{
@@ -404,7 +400,7 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
404 .map_io = realview_pbx_map_io, 400 .map_io = realview_pbx_map_io,
405 .init_early = realview_init_early, 401 .init_early = realview_init_early,
406 .init_irq = gic_init_irq, 402 .init_irq = gic_init_irq,
407 .timer = &realview_pbx_timer, 403 .init_time = realview_pbx_timer_init,
408 .handle_irq = gic_handle_irq, 404 .handle_irq = gic_handle_irq,
409 .init_machine = realview_pbx_init, 405 .init_machine = realview_pbx_init,
410#ifdef CONFIG_ZONE_DMA 406#ifdef CONFIG_ZONE_DMA
diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c
index f3fa259ce01f..a302cf5e0fc7 100644
--- a/arch/arm/mach-rpc/riscpc.c
+++ b/arch/arm/mach-rpc/riscpc.c
@@ -211,7 +211,7 @@ static void rpc_restart(char mode, const char *cmd)
211 soft_restart(0); 211 soft_restart(0);
212} 212}
213 213
214extern struct sys_timer ioc_timer; 214void ioc_timer_init(void);
215 215
216MACHINE_START(RISCPC, "Acorn-RiscPC") 216MACHINE_START(RISCPC, "Acorn-RiscPC")
217 /* Maintainer: Russell King */ 217 /* Maintainer: Russell King */
@@ -220,6 +220,6 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
220 .reserve_lp1 = 1, 220 .reserve_lp1 = 1,
221 .map_io = rpc_map_io, 221 .map_io = rpc_map_io,
222 .init_irq = rpc_init_irq, 222 .init_irq = rpc_init_irq,
223 .timer = &ioc_timer, 223 .init_time = ioc_timer_init,
224 .restart = rpc_restart, 224 .restart = rpc_restart,
225MACHINE_END 225MACHINE_END
diff --git a/arch/arm/mach-rpc/time.c b/arch/arm/mach-rpc/time.c
index 581fca934bb3..9a6def14df01 100644
--- a/arch/arm/mach-rpc/time.c
+++ b/arch/arm/mach-rpc/time.c
@@ -24,7 +24,7 @@
24 24
25#include <asm/mach/time.h> 25#include <asm/mach/time.h>
26 26
27unsigned long ioc_timer_gettimeoffset(void) 27static u32 ioc_timer_gettimeoffset(void)
28{ 28{
29 unsigned int count1, count2, status; 29 unsigned int count1, count2, status;
30 long offset; 30 long offset;
@@ -56,7 +56,7 @@ unsigned long ioc_timer_gettimeoffset(void)
56 } 56 }
57 57
58 offset = (LATCH - offset) * (tick_nsec / 1000); 58 offset = (LATCH - offset) * (tick_nsec / 1000);
59 return (offset + LATCH/2) / LATCH; 59 return ((offset + LATCH/2) / LATCH) * 1000;
60} 60}
61 61
62void __init ioctime_init(void) 62void __init ioctime_init(void)
@@ -82,14 +82,9 @@ static struct irqaction ioc_timer_irq = {
82/* 82/*
83 * Set up timer interrupt. 83 * Set up timer interrupt.
84 */ 84 */
85static void __init ioc_timer_init(void) 85void __init ioc_timer_init(void)
86{ 86{
87 arch_gettimeoffset = ioc_timer_gettimeoffset;
87 ioctime_init(); 88 ioctime_init();
88 setup_irq(IRQ_TIMER0, &ioc_timer_irq); 89 setup_irq(IRQ_TIMER0, &ioc_timer_irq);
89} 90}
90
91struct sys_timer ioc_timer = {
92 .init = ioc_timer_init,
93 .offset = ioc_timer_gettimeoffset,
94};
95
diff --git a/arch/arm/mach-s3c24xx/mach-amlm5900.c b/arch/arm/mach-s3c24xx/mach-amlm5900.c
index f4ad99c1e476..0e0279e79150 100644
--- a/arch/arm/mach-s3c24xx/mach-amlm5900.c
+++ b/arch/arm/mach-s3c24xx/mach-amlm5900.c
@@ -237,6 +237,6 @@ MACHINE_START(AML_M5900, "AML_M5900")
237 .map_io = amlm5900_map_io, 237 .map_io = amlm5900_map_io,
238 .init_irq = s3c24xx_init_irq, 238 .init_irq = s3c24xx_init_irq,
239 .init_machine = amlm5900_init, 239 .init_machine = amlm5900_init,
240 .timer = &s3c24xx_timer, 240 .init_time = s3c24xx_timer_init,
241 .restart = s3c2410_restart, 241 .restart = s3c2410_restart,
242MACHINE_END 242MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-anubis.c b/arch/arm/mach-s3c24xx/mach-anubis.c
index 1ee8c4638743..85eefab881af 100644
--- a/arch/arm/mach-s3c24xx/mach-anubis.c
+++ b/arch/arm/mach-s3c24xx/mach-anubis.c
@@ -448,6 +448,6 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
448 .map_io = anubis_map_io, 448 .map_io = anubis_map_io,
449 .init_machine = anubis_init, 449 .init_machine = anubis_init,
450 .init_irq = s3c24xx_init_irq, 450 .init_irq = s3c24xx_init_irq,
451 .timer = &s3c24xx_timer, 451 .init_time = s3c24xx_timer_init,
452 .restart = s3c244x_restart, 452 .restart = s3c244x_restart,
453MACHINE_END 453MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-at2440evb.c b/arch/arm/mach-s3c24xx/mach-at2440evb.c
index 00381fe5de32..b31c4aa724f2 100644
--- a/arch/arm/mach-s3c24xx/mach-at2440evb.c
+++ b/arch/arm/mach-s3c24xx/mach-at2440evb.c
@@ -210,6 +210,6 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
210 .map_io = at2440evb_map_io, 210 .map_io = at2440evb_map_io,
211 .init_machine = at2440evb_init, 211 .init_machine = at2440evb_init,
212 .init_irq = s3c24xx_init_irq, 212 .init_irq = s3c24xx_init_irq,
213 .timer = &s3c24xx_timer, 213 .init_time = s3c24xx_timer_init,
214 .restart = s3c244x_restart, 214 .restart = s3c244x_restart,
215MACHINE_END 215MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-bast.c b/arch/arm/mach-s3c24xx/mach-bast.c
index 6a30ce7e4aa7..526964c19dd8 100644
--- a/arch/arm/mach-s3c24xx/mach-bast.c
+++ b/arch/arm/mach-s3c24xx/mach-bast.c
@@ -612,6 +612,6 @@ MACHINE_START(BAST, "Simtec-BAST")
612 .map_io = bast_map_io, 612 .map_io = bast_map_io,
613 .init_irq = s3c24xx_init_irq, 613 .init_irq = s3c24xx_init_irq,
614 .init_machine = bast_init, 614 .init_machine = bast_init,
615 .timer = &s3c24xx_timer, 615 .init_time = s3c24xx_timer_init,
616 .restart = s3c2410_restart, 616 .restart = s3c2410_restart,
617MACHINE_END 617MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 973b87ca87f4..fb5d3b3b53db 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -595,6 +595,6 @@ MACHINE_START(NEO1973_GTA02, "GTA02")
595 .map_io = gta02_map_io, 595 .map_io = gta02_map_io,
596 .init_irq = s3c24xx_init_irq, 596 .init_irq = s3c24xx_init_irq,
597 .init_machine = gta02_machine_init, 597 .init_machine = gta02_machine_init,
598 .timer = &s3c24xx_timer, 598 .init_time = s3c24xx_timer_init,
599 .restart = s3c244x_restart, 599 .restart = s3c244x_restart,
600MACHINE_END 600MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c
index b23dd1b106e8..2eb09e27c13c 100644
--- a/arch/arm/mach-s3c24xx/mach-h1940.c
+++ b/arch/arm/mach-s3c24xx/mach-h1940.c
@@ -746,6 +746,6 @@ MACHINE_START(H1940, "IPAQ-H1940")
746 .reserve = h1940_reserve, 746 .reserve = h1940_reserve,
747 .init_irq = h1940_init_irq, 747 .init_irq = h1940_init_irq,
748 .init_machine = h1940_init, 748 .init_machine = h1940_init,
749 .timer = &s3c24xx_timer, 749 .init_time = s3c24xx_timer_init,
750 .restart = s3c2410_restart, 750 .restart = s3c2410_restart,
751MACHINE_END 751MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-jive.c b/arch/arm/mach-s3c24xx/mach-jive.c
index c9954e26b492..d7a172555238 100644
--- a/arch/arm/mach-s3c24xx/mach-jive.c
+++ b/arch/arm/mach-s3c24xx/mach-jive.c
@@ -661,6 +661,6 @@ MACHINE_START(JIVE, "JIVE")
661 .init_irq = s3c24xx_init_irq, 661 .init_irq = s3c24xx_init_irq,
662 .map_io = jive_map_io, 662 .map_io = jive_map_io,
663 .init_machine = jive_machine_init, 663 .init_machine = jive_machine_init,
664 .timer = &s3c24xx_timer, 664 .init_time = s3c24xx_timer_init,
665 .restart = s3c2412_restart, 665 .restart = s3c2412_restart,
666MACHINE_END 666MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c
index a31d5b83e5f7..2db09ade9b50 100644
--- a/arch/arm/mach-s3c24xx/mach-mini2440.c
+++ b/arch/arm/mach-s3c24xx/mach-mini2440.c
@@ -688,6 +688,6 @@ MACHINE_START(MINI2440, "MINI2440")
688 .map_io = mini2440_map_io, 688 .map_io = mini2440_map_io,
689 .init_machine = mini2440_init, 689 .init_machine = mini2440_init,
690 .init_irq = s3c24xx_init_irq, 690 .init_irq = s3c24xx_init_irq,
691 .timer = &s3c24xx_timer, 691 .init_time = s3c24xx_timer_init,
692 .restart = s3c244x_restart, 692 .restart = s3c244x_restart,
693MACHINE_END 693MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-n30.c b/arch/arm/mach-s3c24xx/mach-n30.c
index c53a9bfe1417..d9d04b240295 100644
--- a/arch/arm/mach-s3c24xx/mach-n30.c
+++ b/arch/arm/mach-s3c24xx/mach-n30.c
@@ -589,7 +589,7 @@ MACHINE_START(N30, "Acer-N30")
589 Ben Dooks <ben-linux@fluff.org> 589 Ben Dooks <ben-linux@fluff.org>
590 */ 590 */
591 .atag_offset = 0x100, 591 .atag_offset = 0x100,
592 .timer = &s3c24xx_timer, 592 .init_time = s3c24xx_timer_init,
593 .init_machine = n30_init, 593 .init_machine = n30_init,
594 .init_irq = s3c24xx_init_irq, 594 .init_irq = s3c24xx_init_irq,
595 .map_io = n30_map_io, 595 .map_io = n30_map_io,
@@ -600,7 +600,7 @@ MACHINE_START(N35, "Acer-N35")
600 /* Maintainer: Christer Weinigel <christer@weinigel.se> 600 /* Maintainer: Christer Weinigel <christer@weinigel.se>
601 */ 601 */
602 .atag_offset = 0x100, 602 .atag_offset = 0x100,
603 .timer = &s3c24xx_timer, 603 .init_time = s3c24xx_timer_init,
604 .init_machine = n30_init, 604 .init_machine = n30_init,
605 .init_irq = s3c24xx_init_irq, 605 .init_irq = s3c24xx_init_irq,
606 .map_io = n30_map_io, 606 .map_io = n30_map_io,
diff --git a/arch/arm/mach-s3c24xx/mach-nexcoder.c b/arch/arm/mach-s3c24xx/mach-nexcoder.c
index a2b92b0898e2..a454e2461860 100644
--- a/arch/arm/mach-s3c24xx/mach-nexcoder.c
+++ b/arch/arm/mach-s3c24xx/mach-nexcoder.c
@@ -153,6 +153,6 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
153 .map_io = nexcoder_map_io, 153 .map_io = nexcoder_map_io,
154 .init_machine = nexcoder_init, 154 .init_machine = nexcoder_init,
155 .init_irq = s3c24xx_init_irq, 155 .init_irq = s3c24xx_init_irq,
156 .timer = &s3c24xx_timer, 156 .init_time = s3c24xx_timer_init,
157 .restart = s3c244x_restart, 157 .restart = s3c244x_restart,
158MACHINE_END 158MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-osiris.c b/arch/arm/mach-s3c24xx/mach-osiris.c
index bb36d832bd3d..ba0f5b5ec19e 100644
--- a/arch/arm/mach-s3c24xx/mach-osiris.c
+++ b/arch/arm/mach-s3c24xx/mach-osiris.c
@@ -428,6 +428,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
428 .map_io = osiris_map_io, 428 .map_io = osiris_map_io,
429 .init_irq = s3c24xx_init_irq, 429 .init_irq = s3c24xx_init_irq,
430 .init_machine = osiris_init, 430 .init_machine = osiris_init,
431 .timer = &s3c24xx_timer, 431 .init_time = s3c24xx_timer_init,
432 .restart = s3c244x_restart, 432 .restart = s3c244x_restart,
433MACHINE_END 433MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-otom.c b/arch/arm/mach-s3c24xx/mach-otom.c
index bca39f0232b3..e0fdae93aa7b 100644
--- a/arch/arm/mach-s3c24xx/mach-otom.c
+++ b/arch/arm/mach-s3c24xx/mach-otom.c
@@ -118,6 +118,6 @@ MACHINE_START(OTOM, "Nex Vision - Otom 1.1")
118 .map_io = otom11_map_io, 118 .map_io = otom11_map_io,
119 .init_machine = otom11_init, 119 .init_machine = otom11_init,
120 .init_irq = s3c24xx_init_irq, 120 .init_irq = s3c24xx_init_irq,
121 .timer = &s3c24xx_timer, 121 .init_time = s3c24xx_timer_init,
122 .restart = s3c2410_restart, 122 .restart = s3c2410_restart,
123MACHINE_END 123MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-qt2410.c b/arch/arm/mach-s3c24xx/mach-qt2410.c
index 7b6ba13d7285..56175f0941b1 100644
--- a/arch/arm/mach-s3c24xx/mach-qt2410.c
+++ b/arch/arm/mach-s3c24xx/mach-qt2410.c
@@ -343,6 +343,6 @@ MACHINE_START(QT2410, "QT2410")
343 .map_io = qt2410_map_io, 343 .map_io = qt2410_map_io,
344 .init_irq = s3c24xx_init_irq, 344 .init_irq = s3c24xx_init_irq,
345 .init_machine = qt2410_machine_init, 345 .init_machine = qt2410_machine_init,
346 .timer = &s3c24xx_timer, 346 .init_time = s3c24xx_timer_init,
347 .restart = s3c2410_restart, 347 .restart = s3c2410_restart,
348MACHINE_END 348MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c
index 0606f2faaa5c..e14ec7105a6d 100644
--- a/arch/arm/mach-s3c24xx/mach-rx1950.c
+++ b/arch/arm/mach-s3c24xx/mach-rx1950.c
@@ -814,6 +814,6 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")
814 .reserve = rx1950_reserve, 814 .reserve = rx1950_reserve,
815 .init_irq = s3c24xx_init_irq, 815 .init_irq = s3c24xx_init_irq,
816 .init_machine = rx1950_init_machine, 816 .init_machine = rx1950_init_machine,
817 .timer = &s3c24xx_timer, 817 .init_time = s3c24xx_timer_init,
818 .restart = s3c244x_restart, 818 .restart = s3c244x_restart,
819MACHINE_END 819MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-rx3715.c b/arch/arm/mach-s3c24xx/mach-rx3715.c
index dacbb9a2122a..d00caa8de922 100644
--- a/arch/arm/mach-s3c24xx/mach-rx3715.c
+++ b/arch/arm/mach-s3c24xx/mach-rx3715.c
@@ -212,6 +212,6 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
212 .reserve = rx3715_reserve, 212 .reserve = rx3715_reserve,
213 .init_irq = rx3715_init_irq, 213 .init_irq = rx3715_init_irq,
214 .init_machine = rx3715_init_machine, 214 .init_machine = rx3715_init_machine,
215 .timer = &s3c24xx_timer, 215 .init_time = s3c24xx_timer_init,
216 .restart = s3c244x_restart, 216 .restart = s3c244x_restart,
217MACHINE_END 217MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2410.c b/arch/arm/mach-s3c24xx/mach-smdk2410.c
index 82796b97cb04..e184bfa9613a 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2410.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2410.c
@@ -117,6 +117,6 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
117 .map_io = smdk2410_map_io, 117 .map_io = smdk2410_map_io,
118 .init_irq = s3c24xx_init_irq, 118 .init_irq = s3c24xx_init_irq,
119 .init_machine = smdk2410_init, 119 .init_machine = smdk2410_init,
120 .timer = &s3c24xx_timer, 120 .init_time = s3c24xx_timer_init,
121 .restart = s3c2410_restart, 121 .restart = s3c2410_restart,
122MACHINE_END 122MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2413.c b/arch/arm/mach-s3c24xx/mach-smdk2413.c
index ce99fd8bbbc5..69f356e83790 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2413.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2413.c
@@ -133,7 +133,7 @@ MACHINE_START(S3C2413, "S3C2413")
133 .init_irq = s3c24xx_init_irq, 133 .init_irq = s3c24xx_init_irq,
134 .map_io = smdk2413_map_io, 134 .map_io = smdk2413_map_io,
135 .init_machine = smdk2413_machine_init, 135 .init_machine = smdk2413_machine_init,
136 .timer = &s3c24xx_timer, 136 .init_time = s3c24xx_timer_init,
137 .restart = s3c2412_restart, 137 .restart = s3c2412_restart,
138MACHINE_END 138MACHINE_END
139 139
@@ -145,7 +145,7 @@ MACHINE_START(SMDK2412, "SMDK2412")
145 .init_irq = s3c24xx_init_irq, 145 .init_irq = s3c24xx_init_irq,
146 .map_io = smdk2413_map_io, 146 .map_io = smdk2413_map_io,
147 .init_machine = smdk2413_machine_init, 147 .init_machine = smdk2413_machine_init,
148 .timer = &s3c24xx_timer, 148 .init_time = s3c24xx_timer_init,
149 .restart = s3c2412_restart, 149 .restart = s3c2412_restart,
150MACHINE_END 150MACHINE_END
151 151
@@ -157,6 +157,6 @@ MACHINE_START(SMDK2413, "SMDK2413")
157 .init_irq = s3c24xx_init_irq, 157 .init_irq = s3c24xx_init_irq,
158 .map_io = smdk2413_map_io, 158 .map_io = smdk2413_map_io,
159 .init_machine = smdk2413_machine_init, 159 .init_machine = smdk2413_machine_init,
160 .timer = &s3c24xx_timer, 160 .init_time = s3c24xx_timer_init,
161 .restart = s3c2412_restart, 161 .restart = s3c2412_restart,
162MACHINE_END 162MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2416.c b/arch/arm/mach-s3c24xx/mach-smdk2416.c
index f30d7fccbfee..fe160c7f4b0a 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2416.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2416.c
@@ -254,6 +254,6 @@ MACHINE_START(SMDK2416, "SMDK2416")
254 .init_irq = s3c24xx_init_irq, 254 .init_irq = s3c24xx_init_irq,
255 .map_io = smdk2416_map_io, 255 .map_io = smdk2416_map_io,
256 .init_machine = smdk2416_machine_init, 256 .init_machine = smdk2416_machine_init,
257 .timer = &s3c24xx_timer, 257 .init_time = s3c24xx_timer_init,
258 .restart = s3c2416_restart, 258 .restart = s3c2416_restart,
259MACHINE_END 259MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2440.c b/arch/arm/mach-s3c24xx/mach-smdk2440.c
index b7ff882c6ce6..a8fdafedc4c1 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2440.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2440.c
@@ -182,6 +182,6 @@ MACHINE_START(S3C2440, "SMDK2440")
182 .init_irq = s3c24xx_init_irq, 182 .init_irq = s3c24xx_init_irq,
183 .map_io = smdk2440_map_io, 183 .map_io = smdk2440_map_io,
184 .init_machine = smdk2440_machine_init, 184 .init_machine = smdk2440_machine_init,
185 .timer = &s3c24xx_timer, 185 .init_time = s3c24xx_timer_init,
186 .restart = s3c244x_restart, 186 .restart = s3c244x_restart,
187MACHINE_END 187MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2443.c b/arch/arm/mach-s3c24xx/mach-smdk2443.c
index 2568656f046f..7830d7004306 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2443.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2443.c
@@ -144,6 +144,6 @@ MACHINE_START(SMDK2443, "SMDK2443")
144 .init_irq = s3c24xx_init_irq, 144 .init_irq = s3c24xx_init_irq,
145 .map_io = smdk2443_map_io, 145 .map_io = smdk2443_map_io,
146 .init_machine = smdk2443_machine_init, 146 .init_machine = smdk2443_machine_init,
147 .timer = &s3c24xx_timer, 147 .init_time = s3c24xx_timer_init,
148 .restart = s3c2443_restart, 148 .restart = s3c2443_restart,
149MACHINE_END 149MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-tct_hammer.c b/arch/arm/mach-s3c24xx/mach-tct_hammer.c
index 495bf5cf52e9..24b3d79e7b2c 100644
--- a/arch/arm/mach-s3c24xx/mach-tct_hammer.c
+++ b/arch/arm/mach-s3c24xx/mach-tct_hammer.c
@@ -149,6 +149,6 @@ MACHINE_START(TCT_HAMMER, "TCT_HAMMER")
149 .map_io = tct_hammer_map_io, 149 .map_io = tct_hammer_map_io,
150 .init_irq = s3c24xx_init_irq, 150 .init_irq = s3c24xx_init_irq,
151 .init_machine = tct_hammer_init, 151 .init_machine = tct_hammer_init,
152 .timer = &s3c24xx_timer, 152 .init_time = s3c24xx_timer_init,
153 .restart = s3c2410_restart, 153 .restart = s3c2410_restart,
154MACHINE_END 154MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-vr1000.c b/arch/arm/mach-s3c24xx/mach-vr1000.c
index 14d5b12e388c..dda21a01e3cc 100644
--- a/arch/arm/mach-s3c24xx/mach-vr1000.c
+++ b/arch/arm/mach-s3c24xx/mach-vr1000.c
@@ -357,6 +357,6 @@ MACHINE_START(VR1000, "Thorcom-VR1000")
357 .map_io = vr1000_map_io, 357 .map_io = vr1000_map_io,
358 .init_machine = vr1000_init, 358 .init_machine = vr1000_init,
359 .init_irq = s3c24xx_init_irq, 359 .init_irq = s3c24xx_init_irq,
360 .timer = &s3c24xx_timer, 360 .init_time = s3c24xx_timer_init,
361 .restart = s3c2410_restart, 361 .restart = s3c2410_restart,
362MACHINE_END 362MACHINE_END
diff --git a/arch/arm/mach-s3c24xx/mach-vstms.c b/arch/arm/mach-s3c24xx/mach-vstms.c
index f1d44ae11833..7fe7d4f60419 100644
--- a/arch/arm/mach-s3c24xx/mach-vstms.c
+++ b/arch/arm/mach-s3c24xx/mach-vstms.c
@@ -161,6 +161,6 @@ MACHINE_START(VSTMS, "VSTMS")
161 .init_irq = s3c24xx_init_irq, 161 .init_irq = s3c24xx_init_irq,
162 .init_machine = vstms_init, 162 .init_machine = vstms_init,
163 .map_io = vstms_map_io, 163 .map_io = vstms_map_io,
164 .timer = &s3c24xx_timer, 164 .init_time = s3c24xx_timer_init,
165 .restart = s3c2412_restart, 165 .restart = s3c2412_restart,
166MACHINE_END 166MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c
index 99e82ac81b69..75cbc67f628e 100644
--- a/arch/arm/mach-s3c64xx/mach-anw6410.c
+++ b/arch/arm/mach-s3c64xx/mach-anw6410.c
@@ -234,6 +234,6 @@ MACHINE_START(ANW6410, "A&W6410")
234 .map_io = anw6410_map_io, 234 .map_io = anw6410_map_io,
235 .init_machine = anw6410_machine_init, 235 .init_machine = anw6410_machine_init,
236 .init_late = s3c64xx_init_late, 236 .init_late = s3c64xx_init_late,
237 .timer = &s3c24xx_timer, 237 .init_time = s3c24xx_timer_init,
238 .restart = s3c64xx_restart, 238 .restart = s3c64xx_restart,
239MACHINE_END 239MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index cdde249166b5..87aab127dd60 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -871,6 +871,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
871 .map_io = crag6410_map_io, 871 .map_io = crag6410_map_io,
872 .init_machine = crag6410_machine_init, 872 .init_machine = crag6410_machine_init,
873 .init_late = s3c64xx_init_late, 873 .init_late = s3c64xx_init_late,
874 .timer = &s3c24xx_timer, 874 .init_time = s3c24xx_timer_init,
875 .restart = s3c64xx_restart, 875 .restart = s3c64xx_restart,
876MACHINE_END 876MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c
index 2b144893ddc4..7e8605d98142 100644
--- a/arch/arm/mach-s3c64xx/mach-hmt.c
+++ b/arch/arm/mach-s3c64xx/mach-hmt.c
@@ -277,6 +277,6 @@ MACHINE_START(HMT, "Airgoo-HMT")
277 .map_io = hmt_map_io, 277 .map_io = hmt_map_io,
278 .init_machine = hmt_machine_init, 278 .init_machine = hmt_machine_init,
279 .init_late = s3c64xx_init_late, 279 .init_late = s3c64xx_init_late,
280 .timer = &s3c24xx_timer, 280 .init_time = s3c24xx_timer_init,
281 .restart = s3c64xx_restart, 281 .restart = s3c64xx_restart,
282MACHINE_END 282MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c
index 07c349cca333..4f8dc7dff92b 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -356,6 +356,6 @@ MACHINE_START(MINI6410, "MINI6410")
356 .map_io = mini6410_map_io, 356 .map_io = mini6410_map_io,
357 .init_machine = mini6410_machine_init, 357 .init_machine = mini6410_machine_init,
358 .init_late = s3c64xx_init_late, 358 .init_late = s3c64xx_init_late,
359 .timer = &s3c24xx_timer, 359 .init_time = s3c24xx_timer_init,
360 .restart = s3c64xx_restart, 360 .restart = s3c64xx_restart,
361MACHINE_END 361MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c
index e5f9a79b535d..cdd7f947376c 100644
--- a/arch/arm/mach-s3c64xx/mach-ncp.c
+++ b/arch/arm/mach-s3c64xx/mach-ncp.c
@@ -105,6 +105,6 @@ MACHINE_START(NCP, "NCP")
105 .map_io = ncp_map_io, 105 .map_io = ncp_map_io,
106 .init_machine = ncp_machine_init, 106 .init_machine = ncp_machine_init,
107 .init_late = s3c64xx_init_late, 107 .init_late = s3c64xx_init_late,
108 .timer = &s3c24xx_timer, 108 .init_time = s3c24xx_timer_init,
109 .restart = s3c64xx_restart, 109 .restart = s3c64xx_restart,
110MACHINE_END 110MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c
index 7476f7c722ab..b0f61982ef56 100644
--- a/arch/arm/mach-s3c64xx/mach-real6410.c
+++ b/arch/arm/mach-s3c64xx/mach-real6410.c
@@ -335,6 +335,6 @@ MACHINE_START(REAL6410, "REAL6410")
335 .map_io = real6410_map_io, 335 .map_io = real6410_map_io,
336 .init_machine = real6410_machine_init, 336 .init_machine = real6410_machine_init,
337 .init_late = s3c64xx_init_late, 337 .init_late = s3c64xx_init_late,
338 .timer = &s3c24xx_timer, 338 .init_time = s3c24xx_timer_init,
339 .restart = s3c64xx_restart, 339 .restart = s3c64xx_restart,
340MACHINE_END 340MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c
index 96d6da2b6b5f..7a737614717e 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq5.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq5.c
@@ -157,6 +157,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
157 .map_io = smartq_map_io, 157 .map_io = smartq_map_io,
158 .init_machine = smartq5_machine_init, 158 .init_machine = smartq5_machine_init,
159 .init_late = s3c64xx_init_late, 159 .init_late = s3c64xx_init_late,
160 .timer = &s3c24xx_timer, 160 .init_time = s3c24xx_timer_init,
161 .restart = s3c64xx_restart, 161 .restart = s3c64xx_restart,
162MACHINE_END 162MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c
index 7d1167bdc921..889d525325c8 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq7.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq7.c
@@ -173,6 +173,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
173 .map_io = smartq_map_io, 173 .map_io = smartq_map_io,
174 .init_machine = smartq7_machine_init, 174 .init_machine = smartq7_machine_init,
175 .init_late = s3c64xx_init_late, 175 .init_late = s3c64xx_init_late,
176 .timer = &s3c24xx_timer, 176 .init_time = s3c24xx_timer_init,
177 .restart = s3c64xx_restart, 177 .restart = s3c64xx_restart,
178MACHINE_END 178MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c
index a928fae5694e..e31fe5bb37b6 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6400.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c
@@ -94,6 +94,6 @@ MACHINE_START(SMDK6400, "SMDK6400")
94 .map_io = smdk6400_map_io, 94 .map_io = smdk6400_map_io,
95 .init_machine = smdk6400_machine_init, 95 .init_machine = smdk6400_machine_init,
96 .init_late = s3c64xx_init_late, 96 .init_late = s3c64xx_init_late,
97 .timer = &s3c24xx_timer, 97 .init_time = s3c24xx_timer_init,
98 .restart = s3c64xx_restart, 98 .restart = s3c64xx_restart,
99MACHINE_END 99MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 574a9eef588d..f1b87cd9cb0e 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -704,6 +704,6 @@ MACHINE_START(SMDK6410, "SMDK6410")
704 .map_io = smdk6410_map_io, 704 .map_io = smdk6410_map_io,
705 .init_machine = smdk6410_machine_init, 705 .init_machine = smdk6410_machine_init,
706 .init_late = s3c64xx_init_late, 706 .init_late = s3c64xx_init_late,
707 .timer = &s3c24xx_timer, 707 .init_time = s3c24xx_timer_init,
708 .restart = s3c64xx_restart, 708 .restart = s3c64xx_restart,
709MACHINE_END 709MACHINE_END
diff --git a/arch/arm/mach-s5p64x0/mach-smdk6440.c b/arch/arm/mach-s5p64x0/mach-smdk6440.c
index 1af823558c60..0a3146dc081a 100644
--- a/arch/arm/mach-s5p64x0/mach-smdk6440.c
+++ b/arch/arm/mach-s5p64x0/mach-smdk6440.c
@@ -275,6 +275,6 @@ MACHINE_START(SMDK6440, "SMDK6440")
275 .handle_irq = vic_handle_irq, 275 .handle_irq = vic_handle_irq,
276 .map_io = smdk6440_map_io, 276 .map_io = smdk6440_map_io,
277 .init_machine = smdk6440_machine_init, 277 .init_machine = smdk6440_machine_init,
278 .timer = &s5p_timer, 278 .init_time = s5p_timer_init,
279 .restart = s5p64x0_restart, 279 .restart = s5p64x0_restart,
280MACHINE_END 280MACHINE_END
diff --git a/arch/arm/mach-s5p64x0/mach-smdk6450.c b/arch/arm/mach-s5p64x0/mach-smdk6450.c
index 62526ccf6b70..36917f2ea25a 100644
--- a/arch/arm/mach-s5p64x0/mach-smdk6450.c
+++ b/arch/arm/mach-s5p64x0/mach-smdk6450.c
@@ -294,6 +294,6 @@ MACHINE_START(SMDK6450, "SMDK6450")
294 .handle_irq = vic_handle_irq, 294 .handle_irq = vic_handle_irq,
295 .map_io = smdk6450_map_io, 295 .map_io = smdk6450_map_io,
296 .init_machine = smdk6450_machine_init, 296 .init_machine = smdk6450_machine_init,
297 .timer = &s5p_timer, 297 .init_time = s5p_timer_init,
298 .restart = s5p64x0_restart, 298 .restart = s5p64x0_restart,
299MACHINE_END 299MACHINE_END
diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-s5pc100/mach-smdkc100.c
index 9abe95e806ab..39a9197d1746 100644
--- a/arch/arm/mach-s5pc100/mach-smdkc100.c
+++ b/arch/arm/mach-s5pc100/mach-smdkc100.c
@@ -257,6 +257,6 @@ MACHINE_START(SMDKC100, "SMDKC100")
257 .handle_irq = vic_handle_irq, 257 .handle_irq = vic_handle_irq,
258 .map_io = smdkc100_map_io, 258 .map_io = smdkc100_map_io,
259 .init_machine = smdkc100_machine_init, 259 .init_machine = smdkc100_machine_init,
260 .timer = &s3c24xx_timer, 260 .init_time = s3c24xx_timer_init,
261 .restart = s5pc100_restart, 261 .restart = s5pc100_restart,
262MACHINE_END 262MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c
index ee9fa5c2ef2c..1fb44a5ebb83 100644
--- a/arch/arm/mach-s5pv210/mach-aquila.c
+++ b/arch/arm/mach-s5pv210/mach-aquila.c
@@ -688,6 +688,6 @@ MACHINE_START(AQUILA, "Aquila")
688 .handle_irq = vic_handle_irq, 688 .handle_irq = vic_handle_irq,
689 .map_io = aquila_map_io, 689 .map_io = aquila_map_io,
690 .init_machine = aquila_machine_init, 690 .init_machine = aquila_machine_init,
691 .timer = &s5p_timer, 691 .init_time = s5p_timer_init,
692 .restart = s5pv210_restart, 692 .restart = s5pv210_restart,
693MACHINE_END 693MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c
index c72b31078c99..ababdca2b3e4 100644
--- a/arch/arm/mach-s5pv210/mach-goni.c
+++ b/arch/arm/mach-s5pv210/mach-goni.c
@@ -975,7 +975,7 @@ MACHINE_START(GONI, "GONI")
975 .handle_irq = vic_handle_irq, 975 .handle_irq = vic_handle_irq,
976 .map_io = goni_map_io, 976 .map_io = goni_map_io,
977 .init_machine = goni_machine_init, 977 .init_machine = goni_machine_init,
978 .timer = &s5p_timer, 978 .init_time = s5p_timer_init,
979 .reserve = &goni_reserve, 979 .reserve = &goni_reserve,
980 .restart = s5pv210_restart, 980 .restart = s5pv210_restart,
981MACHINE_END 981MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c
index f1f3bd37ecda..acfb0ebce13b 100644
--- a/arch/arm/mach-s5pv210/mach-smdkc110.c
+++ b/arch/arm/mach-s5pv210/mach-smdkc110.c
@@ -155,7 +155,7 @@ MACHINE_START(SMDKC110, "SMDKC110")
155 .handle_irq = vic_handle_irq, 155 .handle_irq = vic_handle_irq,
156 .map_io = smdkc110_map_io, 156 .map_io = smdkc110_map_io,
157 .init_machine = smdkc110_machine_init, 157 .init_machine = smdkc110_machine_init,
158 .timer = &s5p_timer, 158 .init_time = s5p_timer_init,
159 .restart = s5pv210_restart, 159 .restart = s5pv210_restart,
160 .reserve = &smdkc110_reserve, 160 .reserve = &smdkc110_reserve,
161MACHINE_END 161MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c
index 6bc8404bf678..e1d820f3b426 100644
--- a/arch/arm/mach-s5pv210/mach-smdkv210.c
+++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
@@ -331,7 +331,7 @@ MACHINE_START(SMDKV210, "SMDKV210")
331 .handle_irq = vic_handle_irq, 331 .handle_irq = vic_handle_irq,
332 .map_io = smdkv210_map_io, 332 .map_io = smdkv210_map_io,
333 .init_machine = smdkv210_machine_init, 333 .init_machine = smdkv210_machine_init,
334 .timer = &s5p_timer, 334 .init_time = s5p_timer_init,
335 .restart = s5pv210_restart, 335 .restart = s5pv210_restart,
336 .reserve = &smdkv210_reserve, 336 .reserve = &smdkv210_reserve,
337MACHINE_END 337MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-torbreck.c b/arch/arm/mach-s5pv210/mach-torbreck.c
index 18785cb5e1ef..1e6fc6eccdf3 100644
--- a/arch/arm/mach-s5pv210/mach-torbreck.c
+++ b/arch/arm/mach-s5pv210/mach-torbreck.c
@@ -132,6 +132,6 @@ MACHINE_START(TORBRECK, "TORBRECK")
132 .handle_irq = vic_handle_irq, 132 .handle_irq = vic_handle_irq,
133 .map_io = torbreck_map_io, 133 .map_io = torbreck_map_io,
134 .init_machine = torbreck_machine_init, 134 .init_machine = torbreck_machine_init,
135 .timer = &s5p_timer, 135 .init_time = s5p_timer_init,
136 .restart = s5pv210_restart, 136 .restart = s5pv210_restart,
137MACHINE_END 137MACHINE_END
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
index 9a23739f7026..b38d2525d5db 100644
--- a/arch/arm/mach-sa1100/assabet.c
+++ b/arch/arm/mach-sa1100/assabet.c
@@ -621,7 +621,7 @@ MACHINE_START(ASSABET, "Intel-Assabet")
621 .map_io = assabet_map_io, 621 .map_io = assabet_map_io,
622 .nr_irqs = SA1100_NR_IRQS, 622 .nr_irqs = SA1100_NR_IRQS,
623 .init_irq = sa1100_init_irq, 623 .init_irq = sa1100_init_irq,
624 .timer = &sa1100_timer, 624 .init_time = sa1100_timer_init,
625 .init_machine = assabet_init, 625 .init_machine = assabet_init,
626 .init_late = sa11x0_init_late, 626 .init_late = sa11x0_init_late,
627#ifdef CONFIG_SA1111 627#ifdef CONFIG_SA1111
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c
index b2dadf3ea3df..63361b6d04e9 100644
--- a/arch/arm/mach-sa1100/badge4.c
+++ b/arch/arm/mach-sa1100/badge4.c
@@ -336,7 +336,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
336 .nr_irqs = SA1100_NR_IRQS, 336 .nr_irqs = SA1100_NR_IRQS,
337 .init_irq = sa1100_init_irq, 337 .init_irq = sa1100_init_irq,
338 .init_late = sa11x0_init_late, 338 .init_late = sa11x0_init_late,
339 .timer = &sa1100_timer, 339 .init_time = sa1100_timer_init,
340#ifdef CONFIG_SA1111 340#ifdef CONFIG_SA1111
341 .dma_zone_size = SZ_1M, 341 .dma_zone_size = SZ_1M,
342#endif 342#endif
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c
index 304bca4a07c0..2d25ececb415 100644
--- a/arch/arm/mach-sa1100/cerf.c
+++ b/arch/arm/mach-sa1100/cerf.c
@@ -174,7 +174,7 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
174 .map_io = cerf_map_io, 174 .map_io = cerf_map_io,
175 .nr_irqs = SA1100_NR_IRQS, 175 .nr_irqs = SA1100_NR_IRQS,
176 .init_irq = cerf_init_irq, 176 .init_irq = cerf_init_irq,
177 .timer = &sa1100_timer, 177 .init_time = sa1100_timer_init,
178 .init_machine = cerf_init, 178 .init_machine = cerf_init,
179 .init_late = sa11x0_init_late, 179 .init_late = sa11x0_init_late,
180 .restart = sa11x0_restart, 180 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
index 45f424f5fca6..612a45689770 100644
--- a/arch/arm/mach-sa1100/collie.c
+++ b/arch/arm/mach-sa1100/collie.c
@@ -399,7 +399,7 @@ MACHINE_START(COLLIE, "Sharp-Collie")
399 .map_io = collie_map_io, 399 .map_io = collie_map_io,
400 .nr_irqs = SA1100_NR_IRQS, 400 .nr_irqs = SA1100_NR_IRQS,
401 .init_irq = sa1100_init_irq, 401 .init_irq = sa1100_init_irq,
402 .timer = &sa1100_timer, 402 .init_time = sa1100_timer_init,
403 .init_machine = collie_init, 403 .init_machine = collie_init,
404 .init_late = sa11x0_init_late, 404 .init_late = sa11x0_init_late,
405 .restart = sa11x0_restart, 405 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
index a5b7c13da3e3..2abc6a1f6e86 100644
--- a/arch/arm/mach-sa1100/generic.h
+++ b/arch/arm/mach-sa1100/generic.h
@@ -4,9 +4,7 @@
4 * Author: Nicolas Pitre 4 * Author: Nicolas Pitre
5 */ 5 */
6 6
7struct sys_timer; 7extern void sa1100_timer_init(void);
8
9extern struct sys_timer sa1100_timer;
10extern void __init sa1100_map_io(void); 8extern void __init sa1100_map_io(void);
11extern void __init sa1100_init_irq(void); 9extern void __init sa1100_init_irq(void);
12extern void __init sa1100_init_gpio(void); 10extern void __init sa1100_init_gpio(void);
diff --git a/arch/arm/mach-sa1100/h3100.c b/arch/arm/mach-sa1100/h3100.c
index e1571eab08ae..b8f2b151539b 100644
--- a/arch/arm/mach-sa1100/h3100.c
+++ b/arch/arm/mach-sa1100/h3100.c
@@ -108,7 +108,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
108 .map_io = h3100_map_io, 108 .map_io = h3100_map_io,
109 .nr_irqs = SA1100_NR_IRQS, 109 .nr_irqs = SA1100_NR_IRQS,
110 .init_irq = sa1100_init_irq, 110 .init_irq = sa1100_init_irq,
111 .timer = &sa1100_timer, 111 .init_time = sa1100_timer_init,
112 .init_machine = h3100_mach_init, 112 .init_machine = h3100_mach_init,
113 .init_late = sa11x0_init_late, 113 .init_late = sa11x0_init_late,
114 .restart = sa11x0_restart, 114 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index ba7a2901ab88..b8dc5bd22623 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -158,7 +158,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
158 .map_io = h3600_map_io, 158 .map_io = h3600_map_io,
159 .nr_irqs = SA1100_NR_IRQS, 159 .nr_irqs = SA1100_NR_IRQS,
160 .init_irq = sa1100_init_irq, 160 .init_irq = sa1100_init_irq,
161 .timer = &sa1100_timer, 161 .init_time = sa1100_timer_init,
162 .init_machine = h3600_mach_init, 162 .init_machine = h3600_mach_init,
163 .init_late = sa11x0_init_late, 163 .init_late = sa11x0_init_late,
164 .restart = sa11x0_restart, 164 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c
index d005939c41fc..643d5f2d9af9 100644
--- a/arch/arm/mach-sa1100/hackkit.c
+++ b/arch/arm/mach-sa1100/hackkit.c
@@ -229,7 +229,7 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
229 .map_io = hackkit_map_io, 229 .map_io = hackkit_map_io,
230 .nr_irqs = SA1100_NR_IRQS, 230 .nr_irqs = SA1100_NR_IRQS,
231 .init_irq = sa1100_init_irq, 231 .init_irq = sa1100_init_irq,
232 .timer = &sa1100_timer, 232 .init_time = sa1100_timer_init,
233 .init_machine = hackkit_init, 233 .init_machine = hackkit_init,
234 .init_late = sa11x0_init_late, 234 .init_late = sa11x0_init_late,
235 .restart = sa11x0_restart, 235 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c
index 35cfc428b4d4..c0b1f5bafae4 100644
--- a/arch/arm/mach-sa1100/jornada720.c
+++ b/arch/arm/mach-sa1100/jornada720.c
@@ -346,7 +346,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
346 .map_io = jornada720_map_io, 346 .map_io = jornada720_map_io,
347 .nr_irqs = SA1100_NR_IRQS, 347 .nr_irqs = SA1100_NR_IRQS,
348 .init_irq = sa1100_init_irq, 348 .init_irq = sa1100_init_irq,
349 .timer = &sa1100_timer, 349 .init_time = sa1100_timer_init,
350 .init_machine = jornada720_mach_init, 350 .init_machine = jornada720_mach_init,
351 .init_late = sa11x0_init_late, 351 .init_late = sa11x0_init_late,
352#ifdef CONFIG_SA1111 352#ifdef CONFIG_SA1111
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c
index f69f78fc3ddd..a89917653884 100644
--- a/arch/arm/mach-sa1100/lart.c
+++ b/arch/arm/mach-sa1100/lart.c
@@ -174,6 +174,6 @@ MACHINE_START(LART, "LART")
174 .init_irq = sa1100_init_irq, 174 .init_irq = sa1100_init_irq,
175 .init_machine = lart_init, 175 .init_machine = lart_init,
176 .init_late = sa11x0_init_late, 176 .init_late = sa11x0_init_late,
177 .timer = &sa1100_timer, 177 .init_time = sa1100_timer_init,
178 .restart = sa11x0_restart, 178 .restart = sa11x0_restart,
179MACHINE_END 179MACHINE_END
diff --git a/arch/arm/mach-sa1100/nanoengine.c b/arch/arm/mach-sa1100/nanoengine.c
index 102e08f7b109..f1cb3784d525 100644
--- a/arch/arm/mach-sa1100/nanoengine.c
+++ b/arch/arm/mach-sa1100/nanoengine.c
@@ -110,7 +110,7 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
110 .map_io = nanoengine_map_io, 110 .map_io = nanoengine_map_io,
111 .nr_irqs = SA1100_NR_IRQS, 111 .nr_irqs = SA1100_NR_IRQS,
112 .init_irq = sa1100_init_irq, 112 .init_irq = sa1100_init_irq,
113 .timer = &sa1100_timer, 113 .init_time = sa1100_timer_init,
114 .init_machine = nanoengine_init, 114 .init_machine = nanoengine_init,
115 .init_late = sa11x0_init_late, 115 .init_late = sa11x0_init_late,
116 .restart = sa11x0_restart, 116 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c
index c51bb63f90fb..091261878eff 100644
--- a/arch/arm/mach-sa1100/pleb.c
+++ b/arch/arm/mach-sa1100/pleb.c
@@ -133,7 +133,7 @@ MACHINE_START(PLEB, "PLEB")
133 .map_io = pleb_map_io, 133 .map_io = pleb_map_io,
134 .nr_irqs = SA1100_NR_IRQS, 134 .nr_irqs = SA1100_NR_IRQS,
135 .init_irq = sa1100_init_irq, 135 .init_irq = sa1100_init_irq,
136 .timer = &sa1100_timer, 136 .init_time = sa1100_timer_init,
137 .init_machine = pleb_init, 137 .init_machine = pleb_init,
138 .init_late = sa11x0_init_late, 138 .init_late = sa11x0_init_late,
139 .restart = sa11x0_restart, 139 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c
index 6460d25fbb88..c8866bce7386 100644
--- a/arch/arm/mach-sa1100/shannon.c
+++ b/arch/arm/mach-sa1100/shannon.c
@@ -102,7 +102,7 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
102 .map_io = shannon_map_io, 102 .map_io = shannon_map_io,
103 .nr_irqs = SA1100_NR_IRQS, 103 .nr_irqs = SA1100_NR_IRQS,
104 .init_irq = sa1100_init_irq, 104 .init_irq = sa1100_init_irq,
105 .timer = &sa1100_timer, 105 .init_time = sa1100_timer_init,
106 .init_machine = shannon_init, 106 .init_machine = shannon_init,
107 .init_late = sa11x0_init_late, 107 .init_late = sa11x0_init_late,
108 .restart = sa11x0_restart, 108 .restart = sa11x0_restart,
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c
index 6d65f65fcb23..bcbc94540e45 100644
--- a/arch/arm/mach-sa1100/simpad.c
+++ b/arch/arm/mach-sa1100/simpad.c
@@ -396,6 +396,6 @@ MACHINE_START(SIMPAD, "Simpad")
396 .nr_irqs = SA1100_NR_IRQS, 396 .nr_irqs = SA1100_NR_IRQS,
397 .init_irq = sa1100_init_irq, 397 .init_irq = sa1100_init_irq,
398 .init_late = sa11x0_init_late, 398 .init_late = sa11x0_init_late,
399 .timer = &sa1100_timer, 399 .init_time = sa1100_timer_init,
400 .restart = sa11x0_restart, 400 .restart = sa11x0_restart,
401MACHINE_END 401MACHINE_END
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 80702c9ecc77..934db6385cd6 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -69,12 +69,45 @@ sa1100_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
69 } 69 }
70} 70}
71 71
72#ifdef CONFIG_PM
73unsigned long osmr[4], oier;
74
75static void sa1100_timer_suspend(struct clock_event_device *cedev)
76{
77 osmr[0] = readl_relaxed(OSMR0);
78 osmr[1] = readl_relaxed(OSMR1);
79 osmr[2] = readl_relaxed(OSMR2);
80 osmr[3] = readl_relaxed(OSMR3);
81 oier = readl_relaxed(OIER);
82}
83
84static void sa1100_timer_resume(struct clock_event_device *cedev)
85{
86 writel_relaxed(0x0f, OSSR);
87 writel_relaxed(osmr[0], OSMR0);
88 writel_relaxed(osmr[1], OSMR1);
89 writel_relaxed(osmr[2], OSMR2);
90 writel_relaxed(osmr[3], OSMR3);
91 writel_relaxed(oier, OIER);
92
93 /*
94 * OSMR0 is the system timer: make sure OSCR is sufficiently behind
95 */
96 writel_relaxed(OSMR0 - LATCH, OSCR);
97}
98#else
99#define sa1100_timer_suspend NULL
100#define sa1100_timer_resume NULL
101#endif
102
72static struct clock_event_device ckevt_sa1100_osmr0 = { 103static struct clock_event_device ckevt_sa1100_osmr0 = {
73 .name = "osmr0", 104 .name = "osmr0",
74 .features = CLOCK_EVT_FEAT_ONESHOT, 105 .features = CLOCK_EVT_FEAT_ONESHOT,
75 .rating = 200, 106 .rating = 200,
76 .set_next_event = sa1100_osmr0_set_next_event, 107 .set_next_event = sa1100_osmr0_set_next_event,
77 .set_mode = sa1100_osmr0_set_mode, 108 .set_mode = sa1100_osmr0_set_mode,
109 .suspend = sa1100_timer_suspend,
110 .resume = sa1100_timer_resume,
78}; 111};
79 112
80static struct irqaction sa1100_timer_irq = { 113static struct irqaction sa1100_timer_irq = {
@@ -84,7 +117,7 @@ static struct irqaction sa1100_timer_irq = {
84 .dev_id = &ckevt_sa1100_osmr0, 117 .dev_id = &ckevt_sa1100_osmr0,
85}; 118};
86 119
87static void __init sa1100_timer_init(void) 120void __init sa1100_timer_init(void)
88{ 121{
89 writel_relaxed(0, OIER); 122 writel_relaxed(0, OIER);
90 writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR); 123 writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
@@ -104,40 +137,3 @@ static void __init sa1100_timer_init(void)
104 clocksource_mmio_readl_up); 137 clocksource_mmio_readl_up);
105 clockevents_register_device(&ckevt_sa1100_osmr0); 138 clockevents_register_device(&ckevt_sa1100_osmr0);
106} 139}
107
108#ifdef CONFIG_PM
109unsigned long osmr[4], oier;
110
111static void sa1100_timer_suspend(void)
112{
113 osmr[0] = readl_relaxed(OSMR0);
114 osmr[1] = readl_relaxed(OSMR1);
115 osmr[2] = readl_relaxed(OSMR2);
116 osmr[3] = readl_relaxed(OSMR3);
117 oier = readl_relaxed(OIER);
118}
119
120static void sa1100_timer_resume(void)
121{
122 writel_relaxed(0x0f, OSSR);
123 writel_relaxed(osmr[0], OSMR0);
124 writel_relaxed(osmr[1], OSMR1);
125 writel_relaxed(osmr[2], OSMR2);
126 writel_relaxed(osmr[3], OSMR3);
127 writel_relaxed(oier, OIER);
128
129 /*
130 * OSMR0 is the system timer: make sure OSCR is sufficiently behind
131 */
132 writel_relaxed(OSMR0 - LATCH, OSCR);
133}
134#else
135#define sa1100_timer_suspend NULL
136#define sa1100_timer_resume NULL
137#endif
138
139struct sys_timer sa1100_timer = {
140 .init = sa1100_timer_init,
141 .suspend = sa1100_timer_suspend,
142 .resume = sa1100_timer_resume,
143};
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c
index 9ad2e9737fb5..b63dec848195 100644
--- a/arch/arm/mach-shark/core.c
+++ b/arch/arm/mach-shark/core.c
@@ -128,10 +128,6 @@ static void __init shark_timer_init(void)
128 setup_irq(IRQ_TIMER, &shark_timer_irq); 128 setup_irq(IRQ_TIMER, &shark_timer_irq);
129} 129}
130 130
131static struct sys_timer shark_timer = {
132 .init = shark_timer_init,
133};
134
135static void shark_init_early(void) 131static void shark_init_early(void)
136{ 132{
137 disable_hlt(); 133 disable_hlt();
@@ -142,7 +138,7 @@ MACHINE_START(SHARK, "Shark")
142 .atag_offset = 0x3000, 138 .atag_offset = 0x3000,
143 .init_early = shark_init_early, 139 .init_early = shark_init_early,
144 .init_irq = shark_init_irq, 140 .init_irq = shark_init_irq,
145 .timer = &shark_timer, 141 .init_time = shark_timer_init,
146 .dma_zone_size = SZ_4M, 142 .dma_zone_size = SZ_4M,
147 .restart = shark_restart, 143 .restart = shark_restart,
148MACHINE_END 144MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c
index 032d10817e79..d81a66362b7c 100644
--- a/arch/arm/mach-shmobile/board-ag5evm.c
+++ b/arch/arm/mach-shmobile/board-ag5evm.c
@@ -671,5 +671,5 @@ MACHINE_START(AG5EVM, "ag5evm")
671 .handle_irq = gic_handle_irq, 671 .handle_irq = gic_handle_irq,
672 .init_machine = ag5evm_init, 672 .init_machine = ag5evm_init,
673 .init_late = shmobile_init_late, 673 .init_late = shmobile_init_late,
674 .timer = &shmobile_timer, 674 .init_time = sh73a0_earlytimer_init,
675MACHINE_END 675MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
index 99ef190d0909..c1d4ab630214 100644
--- a/arch/arm/mach-shmobile/board-ap4evb.c
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -1350,5 +1350,5 @@ MACHINE_START(AP4EVB, "ap4evb")
1350 .handle_irq = shmobile_handle_irq_intc, 1350 .handle_irq = shmobile_handle_irq_intc,
1351 .init_machine = ap4evb_init, 1351 .init_machine = ap4evb_init,
1352 .init_late = sh7372_pm_init_late, 1352 .init_late = sh7372_pm_init_late,
1353 .timer = &shmobile_timer, 1353 .init_time = sh7372_earlytimer_init,
1354MACHINE_END 1354MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c
index 5353adf6b828..e7912447ad50 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva.c
@@ -1192,9 +1192,6 @@ static void __init eva_earlytimer_init(void)
1192static void __init eva_add_early_devices(void) 1192static void __init eva_add_early_devices(void)
1193{ 1193{
1194 r8a7740_add_early_devices(); 1194 r8a7740_add_early_devices();
1195
1196 /* override timer setup with board-specific code */
1197 shmobile_timer.init = eva_earlytimer_init;
1198} 1195}
1199 1196
1200#define RESCNT2 IOMEM(0xe6188020) 1197#define RESCNT2 IOMEM(0xe6188020)
@@ -1216,7 +1213,7 @@ DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva")
1216 .handle_irq = shmobile_handle_irq_intc, 1213 .handle_irq = shmobile_handle_irq_intc,
1217 .init_machine = eva_init, 1214 .init_machine = eva_init,
1218 .init_late = shmobile_init_late, 1215 .init_late = shmobile_init_late,
1219 .timer = &shmobile_timer, 1216 .init_time = eva_earlytimer_init,
1220 .dt_compat = eva_boards_compat_dt, 1217 .dt_compat = eva_boards_compat_dt,
1221 .restart = eva_restart, 1218 .restart = eva_restart,
1222MACHINE_END 1219MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c
index cb8c994e1430..331b7ce4edd8 100644
--- a/arch/arm/mach-shmobile/board-bonito.c
+++ b/arch/arm/mach-shmobile/board-bonito.c
@@ -499,9 +499,6 @@ static void __init bonito_earlytimer_init(void)
499static void __init bonito_add_early_devices(void) 499static void __init bonito_add_early_devices(void)
500{ 500{
501 r8a7740_add_early_devices(); 501 r8a7740_add_early_devices();
502
503 /* override timer setup with board-specific code */
504 shmobile_timer.init = bonito_earlytimer_init;
505} 502}
506 503
507MACHINE_START(BONITO, "bonito") 504MACHINE_START(BONITO, "bonito")
@@ -511,5 +508,5 @@ MACHINE_START(BONITO, "bonito")
511 .handle_irq = shmobile_handle_irq_intc, 508 .handle_irq = shmobile_handle_irq_intc,
512 .init_machine = bonito_init, 509 .init_machine = bonito_init,
513 .init_late = shmobile_init_late, 510 .init_late = shmobile_init_late,
514 .timer = &shmobile_timer, 511 .init_time = bonito_earlytimer_init,
515MACHINE_END 512MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c
index bf88f9a8b7ac..2f24994f2ef8 100644
--- a/arch/arm/mach-shmobile/board-kota2.c
+++ b/arch/arm/mach-shmobile/board-kota2.c
@@ -553,5 +553,5 @@ MACHINE_START(KOTA2, "kota2")
553 .handle_irq = gic_handle_irq, 553 .handle_irq = gic_handle_irq,
554 .init_machine = kota2_init, 554 .init_machine = kota2_init,
555 .init_late = shmobile_init_late, 555 .init_late = shmobile_init_late,
556 .timer = &shmobile_timer, 556 .init_time = sh73a0_earlytimer_init,
557MACHINE_END 557MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-kzm9d.c b/arch/arm/mach-shmobile/board-kzm9d.c
index b52bc0d1273f..59be864f5992 100644
--- a/arch/arm/mach-shmobile/board-kzm9d.c
+++ b/arch/arm/mach-shmobile/board-kzm9d.c
@@ -92,6 +92,6 @@ DT_MACHINE_START(KZM9D_DT, "kzm9d")
92 .handle_irq = gic_handle_irq, 92 .handle_irq = gic_handle_irq,
93 .init_machine = kzm9d_add_standard_devices, 93 .init_machine = kzm9d_add_standard_devices,
94 .init_late = shmobile_init_late, 94 .init_late = shmobile_init_late,
95 .timer = &shmobile_timer, 95 .init_time = shmobile_timer_init,
96 .dt_compat = kzm9d_boards_compat_dt, 96 .dt_compat = kzm9d_boards_compat_dt,
97MACHINE_END 97MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c
index c02448d6847f..adb23ef51121 100644
--- a/arch/arm/mach-shmobile/board-kzm9g.c
+++ b/arch/arm/mach-shmobile/board-kzm9g.c
@@ -795,7 +795,7 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g")
795 .handle_irq = gic_handle_irq, 795 .handle_irq = gic_handle_irq,
796 .init_machine = kzm_init, 796 .init_machine = kzm_init,
797 .init_late = shmobile_init_late, 797 .init_late = shmobile_init_late,
798 .timer = &shmobile_timer, 798 .init_time = sh73a0_earlytimer_init,
799 .restart = kzm9g_restart, 799 .restart = kzm9g_restart,
800 .dt_compat = kzm9g_boards_compat_dt, 800 .dt_compat = kzm9g_boards_compat_dt,
801MACHINE_END 801MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 2fed62f66045..fe4917f2c1a2 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -1593,6 +1593,6 @@ DT_MACHINE_START(MACKEREL_DT, "mackerel")
1593 .handle_irq = shmobile_handle_irq_intc, 1593 .handle_irq = shmobile_handle_irq_intc,
1594 .init_machine = mackerel_init, 1594 .init_machine = mackerel_init,
1595 .init_late = sh7372_pm_init_late, 1595 .init_late = sh7372_pm_init_late,
1596 .timer = &shmobile_timer, 1596 .init_time = sh7372_earlytimer_init,
1597 .dt_compat = mackerel_boards_compat_dt, 1597 .dt_compat = mackerel_boards_compat_dt,
1598MACHINE_END 1598MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index 449f9289567d..ca45a0c50afe 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -385,5 +385,5 @@ MACHINE_START(MARZEN, "marzen")
385 .handle_irq = gic_handle_irq, 385 .handle_irq = gic_handle_irq,
386 .init_machine = marzen_init, 386 .init_machine = marzen_init,
387 .init_late = marzen_init_late, 387 .init_late = marzen_init_late,
388 .timer = &shmobile_timer, 388 .init_time = r8a7779_earlytimer_init,
389MACHINE_END 389MACHINE_END
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h
index dfeca79e9e96..a57439eec11a 100644
--- a/arch/arm/mach-shmobile/include/mach/common.h
+++ b/arch/arm/mach-shmobile/include/mach/common.h
@@ -2,7 +2,7 @@
2#define __ARCH_MACH_COMMON_H 2#define __ARCH_MACH_COMMON_H
3 3
4extern void shmobile_earlytimer_init(void); 4extern void shmobile_earlytimer_init(void);
5extern struct sys_timer shmobile_timer; 5extern void shmobile_timer_init(void);
6extern void shmobile_setup_delay(unsigned int max_cpu_core_mhz, 6extern void shmobile_setup_delay(unsigned int max_cpu_core_mhz,
7 unsigned int mult, unsigned int div); 7 unsigned int mult, unsigned int div);
8struct twd_local_timer; 8struct twd_local_timer;
@@ -20,6 +20,7 @@ extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv);
20 20
21extern void sh7372_init_irq(void); 21extern void sh7372_init_irq(void);
22extern void sh7372_map_io(void); 22extern void sh7372_map_io(void);
23extern void sh7372_earlytimer_init(void);
23extern void sh7372_add_early_devices(void); 24extern void sh7372_add_early_devices(void);
24extern void sh7372_add_standard_devices(void); 25extern void sh7372_add_standard_devices(void);
25extern void sh7372_clock_init(void); 26extern void sh7372_clock_init(void);
@@ -32,6 +33,7 @@ extern struct clk sh7372_extal2_clk;
32 33
33extern void sh73a0_init_irq(void); 34extern void sh73a0_init_irq(void);
34extern void sh73a0_map_io(void); 35extern void sh73a0_map_io(void);
36extern void sh73a0_earlytimer_init(void);
35extern void sh73a0_add_early_devices(void); 37extern void sh73a0_add_early_devices(void);
36extern void sh73a0_add_standard_devices(void); 38extern void sh73a0_add_standard_devices(void);
37extern void sh73a0_clock_init(void); 39extern void sh73a0_clock_init(void);
@@ -50,6 +52,7 @@ extern void r8a7740_pinmux_init(void);
50 52
51extern void r8a7779_init_irq(void); 53extern void r8a7779_init_irq(void);
52extern void r8a7779_map_io(void); 54extern void r8a7779_map_io(void);
55extern void r8a7779_earlytimer_init(void);
53extern void r8a7779_add_early_devices(void); 56extern void r8a7779_add_early_devices(void);
54extern void r8a7779_add_standard_devices(void); 57extern void r8a7779_add_standard_devices(void);
55extern void r8a7779_clock_init(void); 58extern void r8a7779_clock_init(void);
diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
index a47beeb18283..ea61cb657ac3 100644
--- a/arch/arm/mach-shmobile/setup-emev2.c
+++ b/arch/arm/mach-shmobile/setup-emev2.c
@@ -467,7 +467,7 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
467 .init_irq = emev2_init_irq_dt, 467 .init_irq = emev2_init_irq_dt,
468 .handle_irq = gic_handle_irq, 468 .handle_irq = gic_handle_irq,
469 .init_machine = emev2_add_standard_devices_dt, 469 .init_machine = emev2_add_standard_devices_dt,
470 .timer = &shmobile_timer, 470 .init_time = shmobile_timer_init,
471 .dt_compat = emev2_boards_compat_dt, 471 .dt_compat = emev2_boards_compat_dt,
472MACHINE_END 472MACHINE_END
473 473
diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
index 095222469d03..03c69f9979aa 100644
--- a/arch/arm/mach-shmobile/setup-r8a7740.c
+++ b/arch/arm/mach-shmobile/setup-r8a7740.c
@@ -705,12 +705,6 @@ void __init r8a7740_add_standard_devices(void)
705 rmobile_add_device_to_domain("A3SP", &i2c1_device); 705 rmobile_add_device_to_domain("A3SP", &i2c1_device);
706} 706}
707 707
708static void __init r8a7740_earlytimer_init(void)
709{
710 r8a7740_clock_init(0);
711 shmobile_earlytimer_init();
712}
713
714void __init r8a7740_add_early_devices(void) 708void __init r8a7740_add_early_devices(void)
715{ 709{
716 early_platform_add_devices(r8a7740_early_devices, 710 early_platform_add_devices(r8a7740_early_devices,
@@ -718,9 +712,6 @@ void __init r8a7740_add_early_devices(void)
718 712
719 /* setup early console here as well */ 713 /* setup early console here as well */
720 shmobile_setup_console(); 714 shmobile_setup_console();
721
722 /* override timer setup with soc-specific code */
723 shmobile_timer.init = r8a7740_earlytimer_init;
724} 715}
725 716
726#ifdef CONFIG_USE_OF 717#ifdef CONFIG_USE_OF
@@ -763,7 +754,7 @@ DT_MACHINE_START(R8A7740_DT, "Generic R8A7740 (Flattened Device Tree)")
763 .init_irq = r8a7740_init_irq, 754 .init_irq = r8a7740_init_irq,
764 .handle_irq = shmobile_handle_irq_intc, 755 .handle_irq = shmobile_handle_irq_intc,
765 .init_machine = r8a7740_add_standard_devices_dt, 756 .init_machine = r8a7740_add_standard_devices_dt,
766 .timer = &shmobile_timer, 757 .init_time = shmobile_timer_init,
767 .dt_compat = r8a7740_boards_compat_dt, 758 .dt_compat = r8a7740_boards_compat_dt,
768MACHINE_END 759MACHINE_END
769 760
diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c
index 7a1ad4f38539..a181ced09e45 100644
--- a/arch/arm/mach-shmobile/setup-r8a7779.c
+++ b/arch/arm/mach-shmobile/setup-r8a7779.c
@@ -339,7 +339,7 @@ void __init r8a7779_add_standard_devices(void)
339/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ 339/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
340void __init __weak r8a7779_register_twd(void) { } 340void __init __weak r8a7779_register_twd(void) { }
341 341
342static void __init r8a7779_earlytimer_init(void) 342void __init r8a7779_earlytimer_init(void)
343{ 343{
344 r8a7779_clock_init(); 344 r8a7779_clock_init();
345 shmobile_earlytimer_init(); 345 shmobile_earlytimer_init();
@@ -366,7 +366,4 @@ void __init r8a7779_add_early_devices(void)
366 * As a final step pass earlyprint=sh-sci.2,115200 on the kernel 366 * As a final step pass earlyprint=sh-sci.2,115200 on the kernel
367 * command line in case of the marzen board. 367 * command line in case of the marzen board.
368 */ 368 */
369
370 /* override timer setup with soc-specific code */
371 shmobile_timer.init = r8a7779_earlytimer_init;
372} 369}
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
index c917882424a7..191ae72e21ba 100644
--- a/arch/arm/mach-shmobile/setup-sh7372.c
+++ b/arch/arm/mach-shmobile/setup-sh7372.c
@@ -1054,7 +1054,7 @@ void __init sh7372_add_standard_devices(void)
1054 ARRAY_SIZE(domain_devices)); 1054 ARRAY_SIZE(domain_devices));
1055} 1055}
1056 1056
1057static void __init sh7372_earlytimer_init(void) 1057void __init sh7372_earlytimer_init(void)
1058{ 1058{
1059 sh7372_clock_init(); 1059 sh7372_clock_init();
1060 shmobile_earlytimer_init(); 1060 shmobile_earlytimer_init();
@@ -1067,9 +1067,6 @@ void __init sh7372_add_early_devices(void)
1067 1067
1068 /* setup early console here as well */ 1068 /* setup early console here as well */
1069 shmobile_setup_console(); 1069 shmobile_setup_console();
1070
1071 /* override timer setup with soc-specific code */
1072 shmobile_timer.init = sh7372_earlytimer_init;
1073} 1070}
1074 1071
1075#ifdef CONFIG_USE_OF 1072#ifdef CONFIG_USE_OF
@@ -1113,7 +1110,7 @@ DT_MACHINE_START(SH7372_DT, "Generic SH7372 (Flattened Device Tree)")
1113 .init_irq = sh7372_init_irq, 1110 .init_irq = sh7372_init_irq,
1114 .handle_irq = shmobile_handle_irq_intc, 1111 .handle_irq = shmobile_handle_irq_intc,
1115 .init_machine = sh7372_add_standard_devices_dt, 1112 .init_machine = sh7372_add_standard_devices_dt,
1116 .timer = &shmobile_timer, 1113 .init_time = shmobile_timer_init,
1117 .dt_compat = sh7372_boards_compat_dt, 1114 .dt_compat = sh7372_boards_compat_dt,
1118MACHINE_END 1115MACHINE_END
1119 1116
diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c
index db99a4ade80c..8c2d6424f470 100644
--- a/arch/arm/mach-shmobile/setup-sh73a0.c
+++ b/arch/arm/mach-shmobile/setup-sh73a0.c
@@ -796,7 +796,7 @@ void __init sh73a0_add_standard_devices(void)
796/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ 796/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
797void __init __weak sh73a0_register_twd(void) { } 797void __init __weak sh73a0_register_twd(void) { }
798 798
799static void __init sh73a0_earlytimer_init(void) 799void __init sh73a0_earlytimer_init(void)
800{ 800{
801 sh73a0_clock_init(); 801 sh73a0_clock_init();
802 shmobile_earlytimer_init(); 802 shmobile_earlytimer_init();
@@ -810,7 +810,4 @@ void __init sh73a0_add_early_devices(void)
810 810
811 /* setup early console here as well */ 811 /* setup early console here as well */
812 shmobile_setup_console(); 812 shmobile_setup_console();
813
814 /* override timer setup with soc-specific code */
815 shmobile_timer.init = sh73a0_earlytimer_init;
816} 813}
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c
index a68919727e24..fdbe54a11555 100644
--- a/arch/arm/mach-shmobile/timer.c
+++ b/arch/arm/mach-shmobile/timer.c
@@ -60,10 +60,6 @@ void __init shmobile_earlytimer_init(void)
60 late_time_init = shmobile_late_time_init; 60 late_time_init = shmobile_late_time_init;
61} 61}
62 62
63static void __init shmobile_timer_init(void) 63void __init shmobile_timer_init(void)
64{ 64{
65} 65}
66
67struct sys_timer shmobile_timer = {
68 .init = shmobile_timer_init,
69};
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
index 6732924a5fee..b54baea5f809 100644
--- a/arch/arm/mach-socfpga/socfpga.c
+++ b/arch/arm/mach-socfpga/socfpga.c
@@ -107,7 +107,7 @@ DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA")
107 .map_io = socfpga_map_io, 107 .map_io = socfpga_map_io,
108 .init_irq = gic_init_irq, 108 .init_irq = gic_init_irq,
109 .handle_irq = gic_handle_irq, 109 .handle_irq = gic_handle_irq,
110 .timer = &dw_apb_timer, 110 .init_time = dw_apb_timer_init,
111 .init_machine = socfpga_cyclone5_init, 111 .init_machine = socfpga_cyclone5_init,
112 .restart = socfpga_cyclone5_restart, 112 .restart = socfpga_cyclone5_restart,
113 .dt_compat = altera_dt_match, 113 .dt_compat = altera_dt_match,
diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear13xx/include/mach/generic.h
index c33f4d9361bd..35e8a0074639 100644
--- a/arch/arm/mach-spear13xx/include/mach/generic.h
+++ b/arch/arm/mach-spear13xx/include/mach/generic.h
@@ -18,7 +18,7 @@
18#include <asm/mach/time.h> 18#include <asm/mach/time.h>
19 19
20/* Add spear13xx structure declarations here */ 20/* Add spear13xx structure declarations here */
21extern struct sys_timer spear13xx_timer; 21extern void spear13xx_timer_init(void);
22extern struct pl022_ssp_controller pl022_plat_data; 22extern struct pl022_ssp_controller pl022_plat_data;
23extern struct dw_dma_platform_data dmac_plat_data; 23extern struct dw_dma_platform_data dmac_plat_data;
24extern struct dw_dma_slave cf_dma_priv; 24extern struct dw_dma_slave cf_dma_priv;
diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear13xx/spear1310.c
index 02f4724bb0d4..e77d05d48082 100644
--- a/arch/arm/mach-spear13xx/spear1310.c
+++ b/arch/arm/mach-spear13xx/spear1310.c
@@ -92,7 +92,7 @@ DT_MACHINE_START(SPEAR1310_DT, "ST SPEAr1310 SoC with Flattened Device Tree")
92 .map_io = spear1310_map_io, 92 .map_io = spear1310_map_io,
93 .init_irq = spear13xx_dt_init_irq, 93 .init_irq = spear13xx_dt_init_irq,
94 .handle_irq = gic_handle_irq, 94 .handle_irq = gic_handle_irq,
95 .timer = &spear13xx_timer, 95 .init_time = spear13xx_timer_init,
96 .init_machine = spear1310_dt_init, 96 .init_machine = spear1310_dt_init,
97 .restart = spear_restart, 97 .restart = spear_restart,
98 .dt_compat = spear1310_dt_board_compat, 98 .dt_compat = spear1310_dt_board_compat,
diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear13xx/spear1340.c
index 081014fb314a..ebc254779069 100644
--- a/arch/arm/mach-spear13xx/spear1340.c
+++ b/arch/arm/mach-spear13xx/spear1340.c
@@ -186,7 +186,7 @@ DT_MACHINE_START(SPEAR1340_DT, "ST SPEAr1340 SoC with Flattened Device Tree")
186 .map_io = spear13xx_map_io, 186 .map_io = spear13xx_map_io,
187 .init_irq = spear13xx_dt_init_irq, 187 .init_irq = spear13xx_dt_init_irq,
188 .handle_irq = gic_handle_irq, 188 .handle_irq = gic_handle_irq,
189 .timer = &spear13xx_timer, 189 .init_time = spear13xx_timer_init,
190 .init_machine = spear1340_dt_init, 190 .init_machine = spear1340_dt_init,
191 .restart = spear_restart, 191 .restart = spear_restart,
192 .dt_compat = spear1340_dt_board_compat, 192 .dt_compat = spear1340_dt_board_compat,
diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear13xx/spear13xx.c
index c4af775a8451..7f7acf775f07 100644
--- a/arch/arm/mach-spear13xx/spear13xx.c
+++ b/arch/arm/mach-spear13xx/spear13xx.c
@@ -153,7 +153,7 @@ static void __init spear13xx_clk_init(void)
153 pr_err("%s: Unknown machine\n", __func__); 153 pr_err("%s: Unknown machine\n", __func__);
154} 154}
155 155
156static void __init spear13xx_timer_init(void) 156void __init spear13xx_timer_init(void)
157{ 157{
158 char pclk_name[] = "osc_24m_clk"; 158 char pclk_name[] = "osc_24m_clk";
159 struct clk *gpt_clk, *pclk; 159 struct clk *gpt_clk, *pclk;
@@ -183,10 +183,6 @@ static void __init spear13xx_timer_init(void)
183 twd_local_timer_of_register(); 183 twd_local_timer_of_register();
184} 184}
185 185
186struct sys_timer spear13xx_timer = {
187 .init = spear13xx_timer_init,
188};
189
190static const struct of_device_id gic_of_match[] __initconst = { 186static const struct of_device_id gic_of_match[] __initconst = {
191 { .compatible = "arm,cortex-a9-gic", .data = gic_of_init }, 187 { .compatible = "arm,cortex-a9-gic", .data = gic_of_init },
192 { /* Sentinel */ } 188 { /* Sentinel */ }
diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h
index ce19113ca791..46b8f7e4d380 100644
--- a/arch/arm/mach-spear3xx/include/mach/generic.h
+++ b/arch/arm/mach-spear3xx/include/mach/generic.h
@@ -22,7 +22,7 @@
22#include <asm/mach/map.h> 22#include <asm/mach/map.h>
23 23
24/* Add spear3xx family device structure declarations here */ 24/* Add spear3xx family device structure declarations here */
25extern struct sys_timer spear3xx_timer; 25extern void spear3xx_timer_init(void);
26extern struct pl022_ssp_controller pl022_plat_data; 26extern struct pl022_ssp_controller pl022_plat_data;
27extern struct pl08x_platform_data pl080_plat_data; 27extern struct pl08x_platform_data pl080_plat_data;
28 28
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear3xx/spear300.c
index a69cbfdb07ee..2630efa93f5e 100644
--- a/arch/arm/mach-spear3xx/spear300.c
+++ b/arch/arm/mach-spear3xx/spear300.c
@@ -214,7 +214,7 @@ DT_MACHINE_START(SPEAR300_DT, "ST SPEAr300 SoC with Flattened Device Tree")
214 .map_io = spear300_map_io, 214 .map_io = spear300_map_io,
215 .init_irq = spear3xx_dt_init_irq, 215 .init_irq = spear3xx_dt_init_irq,
216 .handle_irq = vic_handle_irq, 216 .handle_irq = vic_handle_irq,
217 .timer = &spear3xx_timer, 217 .init_time = spear3xx_timer_init,
218 .init_machine = spear300_dt_init, 218 .init_machine = spear300_dt_init,
219 .restart = spear_restart, 219 .restart = spear_restart,
220 .dt_compat = spear300_dt_board_compat, 220 .dt_compat = spear300_dt_board_compat,
diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear3xx/spear310.c
index b963ebb10b56..b6147eaebcde 100644
--- a/arch/arm/mach-spear3xx/spear310.c
+++ b/arch/arm/mach-spear3xx/spear310.c
@@ -256,7 +256,7 @@ DT_MACHINE_START(SPEAR310_DT, "ST SPEAr310 SoC with Flattened Device Tree")
256 .map_io = spear310_map_io, 256 .map_io = spear310_map_io,
257 .init_irq = spear3xx_dt_init_irq, 257 .init_irq = spear3xx_dt_init_irq,
258 .handle_irq = vic_handle_irq, 258 .handle_irq = vic_handle_irq,
259 .timer = &spear3xx_timer, 259 .init_time = spear3xx_timer_init,
260 .init_machine = spear310_dt_init, 260 .init_machine = spear310_dt_init,
261 .restart = spear_restart, 261 .restart = spear_restart,
262 .dt_compat = spear310_dt_board_compat, 262 .dt_compat = spear310_dt_board_compat,
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear3xx/spear320.c
index 66e3a0c33e75..53160f713afe 100644
--- a/arch/arm/mach-spear3xx/spear320.c
+++ b/arch/arm/mach-spear3xx/spear320.c
@@ -270,7 +270,7 @@ DT_MACHINE_START(SPEAR320_DT, "ST SPEAr320 SoC with Flattened Device Tree")
270 .map_io = spear320_map_io, 270 .map_io = spear320_map_io,
271 .init_irq = spear3xx_dt_init_irq, 271 .init_irq = spear3xx_dt_init_irq,
272 .handle_irq = vic_handle_irq, 272 .handle_irq = vic_handle_irq,
273 .timer = &spear3xx_timer, 273 .init_time = spear3xx_timer_init,
274 .init_machine = spear320_dt_init, 274 .init_machine = spear320_dt_init,
275 .restart = spear_restart, 275 .restart = spear_restart,
276 .dt_compat = spear320_dt_board_compat, 276 .dt_compat = spear320_dt_board_compat,
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c
index 38fe95db31a7..89f4c58908e3 100644
--- a/arch/arm/mach-spear3xx/spear3xx.c
+++ b/arch/arm/mach-spear3xx/spear3xx.c
@@ -87,7 +87,7 @@ void __init spear3xx_map_io(void)
87 iotable_init(spear3xx_io_desc, ARRAY_SIZE(spear3xx_io_desc)); 87 iotable_init(spear3xx_io_desc, ARRAY_SIZE(spear3xx_io_desc));
88} 88}
89 89
90static void __init spear3xx_timer_init(void) 90void __init spear3xx_timer_init(void)
91{ 91{
92 char pclk_name[] = "pll3_clk"; 92 char pclk_name[] = "pll3_clk";
93 struct clk *gpt_clk, *pclk; 93 struct clk *gpt_clk, *pclk;
@@ -116,10 +116,6 @@ static void __init spear3xx_timer_init(void)
116 spear_setup_of_timer(); 116 spear_setup_of_timer();
117} 117}
118 118
119struct sys_timer spear3xx_timer = {
120 .init = spear3xx_timer_init,
121};
122
123static const struct of_device_id vic_of_match[] __initconst = { 119static const struct of_device_id vic_of_match[] __initconst = {
124 { .compatible = "arm,pl190-vic", .data = vic_of_init, }, 120 { .compatible = "arm,pl190-vic", .data = vic_of_init, },
125 { .compatible = "st,spear300-shirq", .data = spear300_shirq_of_init, }, 121 { .compatible = "st,spear300-shirq", .data = spear300_shirq_of_init, },
diff --git a/arch/arm/mach-spear6xx/spear6xx.c b/arch/arm/mach-spear6xx/spear6xx.c
index 5a5a52db252b..1f85bc07c6cb 100644
--- a/arch/arm/mach-spear6xx/spear6xx.c
+++ b/arch/arm/mach-spear6xx/spear6xx.c
@@ -374,7 +374,7 @@ void __init spear6xx_map_io(void)
374 iotable_init(spear6xx_io_desc, ARRAY_SIZE(spear6xx_io_desc)); 374 iotable_init(spear6xx_io_desc, ARRAY_SIZE(spear6xx_io_desc));
375} 375}
376 376
377static void __init spear6xx_timer_init(void) 377void __init spear6xx_timer_init(void)
378{ 378{
379 char pclk_name[] = "pll3_clk"; 379 char pclk_name[] = "pll3_clk";
380 struct clk *gpt_clk, *pclk; 380 struct clk *gpt_clk, *pclk;
@@ -403,10 +403,6 @@ static void __init spear6xx_timer_init(void)
403 spear_setup_of_timer(); 403 spear_setup_of_timer();
404} 404}
405 405
406struct sys_timer spear6xx_timer = {
407 .init = spear6xx_timer_init,
408};
409
410/* Add auxdata to pass platform data */ 406/* Add auxdata to pass platform data */
411struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = { 407struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = {
412 OF_DEV_AUXDATA("arm,pl080", SPEAR6XX_ICM3_DMA_BASE, NULL, 408 OF_DEV_AUXDATA("arm,pl080", SPEAR6XX_ICM3_DMA_BASE, NULL,
@@ -439,7 +435,7 @@ DT_MACHINE_START(SPEAR600_DT, "ST SPEAr600 (Flattened Device Tree)")
439 .map_io = spear6xx_map_io, 435 .map_io = spear6xx_map_io,
440 .init_irq = spear6xx_dt_init_irq, 436 .init_irq = spear6xx_dt_init_irq,
441 .handle_irq = vic_handle_irq, 437 .handle_irq = vic_handle_irq,
442 .timer = &spear6xx_timer, 438 .init_time = spear6xx_timer_init,
443 .init_machine = spear600_dt_init, 439 .init_machine = spear600_dt_init,
444 .restart = spear_restart, 440 .restart = spear_restart,
445 .dt_compat = spear600_dt_board_compat, 441 .dt_compat = spear600_dt_board_compat,
diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c
index 734d9cc87f2e..3b9956aabf5a 100644
--- a/arch/arm/mach-tegra/board-dt-tegra20.c
+++ b/arch/arm/mach-tegra/board-dt-tegra20.c
@@ -203,7 +203,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)")
203 .init_early = tegra20_init_early, 203 .init_early = tegra20_init_early,
204 .init_irq = tegra_dt_init_irq, 204 .init_irq = tegra_dt_init_irq,
205 .handle_irq = gic_handle_irq, 205 .handle_irq = gic_handle_irq,
206 .timer = &tegra_sys_timer, 206 .init_time = tegra_init_timer,
207 .init_machine = tegra_dt_init, 207 .init_machine = tegra_dt_init,
208 .init_late = tegra_dt_init_late, 208 .init_late = tegra_dt_init_late,
209 .restart = tegra_assert_system_reset, 209 .restart = tegra_assert_system_reset,
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
index 6497d1236b08..381b2f25f0b4 100644
--- a/arch/arm/mach-tegra/board-dt-tegra30.c
+++ b/arch/arm/mach-tegra/board-dt-tegra30.c
@@ -113,7 +113,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
113 .init_early = tegra30_init_early, 113 .init_early = tegra30_init_early,
114 .init_irq = tegra_dt_init_irq, 114 .init_irq = tegra_dt_init_irq,
115 .handle_irq = gic_handle_irq, 115 .handle_irq = gic_handle_irq,
116 .timer = &tegra_sys_timer, 116 .init_time = tegra_init_timer,
117 .init_machine = tegra30_dt_init, 117 .init_machine = tegra30_dt_init,
118 .init_late = tegra_init_late, 118 .init_late = tegra_init_late,
119 .restart = tegra_assert_system_reset, 119 .restart = tegra_assert_system_reset,
diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h
index 91fbe733a21e..744cdd246f6a 100644
--- a/arch/arm/mach-tegra/board.h
+++ b/arch/arm/mach-tegra/board.h
@@ -55,5 +55,5 @@ static inline int harmony_pcie_init(void) { return 0; }
55 55
56void __init tegra_paz00_wifikill_init(void); 56void __init tegra_paz00_wifikill_init(void);
57 57
58extern struct sys_timer tegra_sys_timer; 58extern void tegra_init_timer(void);
59#endif 59#endif
diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c
index e4863f3e9ee7..b0036e519a15 100644
--- a/arch/arm/mach-tegra/timer.c
+++ b/arch/arm/mach-tegra/timer.c
@@ -168,7 +168,7 @@ static const struct of_device_id rtc_match[] __initconst = {
168 {} 168 {}
169}; 169};
170 170
171static void __init tegra_init_timer(void) 171void __init tegra_init_timer(void)
172{ 172{
173 struct device_node *np; 173 struct device_node *np;
174 struct clk *clk; 174 struct clk *clk;
@@ -273,10 +273,6 @@ static void __init tegra_init_timer(void)
273 register_persistent_clock(NULL, tegra_read_persistent_clock); 273 register_persistent_clock(NULL, tegra_read_persistent_clock);
274} 274}
275 275
276struct sys_timer tegra_sys_timer = {
277 .init = tegra_init_timer,
278};
279
280#ifdef CONFIG_PM 276#ifdef CONFIG_PM
281static u32 usec_config; 277static u32 usec_config;
282 278
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c
index 4ce77cdc31cc..100a8b764dad 100644
--- a/arch/arm/mach-u300/core.c
+++ b/arch/arm/mach-u300/core.c
@@ -1780,7 +1780,7 @@ MACHINE_START(U300, "Ericsson AB U335 S335/B335 Prototype Board")
1780 .nr_irqs = 0, 1780 .nr_irqs = 0,
1781 .init_irq = u300_init_irq, 1781 .init_irq = u300_init_irq,
1782 .handle_irq = vic_handle_irq, 1782 .handle_irq = vic_handle_irq,
1783 .timer = &u300_timer, 1783 .init_time = u300_timer_init,
1784 .init_machine = u300_init_machine, 1784 .init_machine = u300_init_machine,
1785 .restart = u300_restart, 1785 .restart = u300_restart,
1786MACHINE_END 1786MACHINE_END
diff --git a/arch/arm/mach-u300/timer.c b/arch/arm/mach-u300/timer.c
index 1da10e20e996..d9e73209c9b8 100644
--- a/arch/arm/mach-u300/timer.c
+++ b/arch/arm/mach-u300/timer.c
@@ -349,7 +349,7 @@ static u32 notrace u300_read_sched_clock(void)
349/* 349/*
350 * This sets up the system timers, clock source and clock event. 350 * This sets up the system timers, clock source and clock event.
351 */ 351 */
352static void __init u300_timer_init(void) 352void __init u300_timer_init(void)
353{ 353{
354 struct clk *clk; 354 struct clk *clk;
355 unsigned long rate; 355 unsigned long rate;
@@ -413,11 +413,3 @@ static void __init u300_timer_init(void)
413 * used by hrtimers! 413 * used by hrtimers!
414 */ 414 */
415} 415}
416
417/*
418 * Very simple system timer that only register the clock event and
419 * clock source.
420 */
421struct sys_timer u300_timer = {
422 .init = u300_timer_init,
423};
diff --git a/arch/arm/mach-u300/timer.h b/arch/arm/mach-u300/timer.h
index b5e9791762e0..d34287bc34f5 100644
--- a/arch/arm/mach-u300/timer.h
+++ b/arch/arm/mach-u300/timer.h
@@ -1 +1 @@
extern struct sys_timer u300_timer; extern void u300_timer_init(void);
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index d453522edb0d..e1dfa24b4fb9 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -751,7 +751,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
751 .map_io = u8500_map_io, 751 .map_io = u8500_map_io,
752 .init_irq = ux500_init_irq, 752 .init_irq = ux500_init_irq,
753 /* we re-use nomadik timer here */ 753 /* we re-use nomadik timer here */
754 .timer = &ux500_timer, 754 .init_time = ux500_timer_init,
755 .handle_irq = gic_handle_irq, 755 .handle_irq = gic_handle_irq,
756 .init_machine = mop500_init_machine, 756 .init_machine = mop500_init_machine,
757 .init_late = ux500_init_late, 757 .init_late = ux500_init_late,
@@ -761,7 +761,7 @@ MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520")
761 .atag_offset = 0x100, 761 .atag_offset = 0x100,
762 .map_io = u8500_map_io, 762 .map_io = u8500_map_io,
763 .init_irq = ux500_init_irq, 763 .init_irq = ux500_init_irq,
764 .timer = &ux500_timer, 764 .init_time = ux500_timer_init,
765 .handle_irq = gic_handle_irq, 765 .handle_irq = gic_handle_irq,
766 .init_machine = mop500_init_machine, 766 .init_machine = mop500_init_machine,
767 .init_late = ux500_init_late, 767 .init_late = ux500_init_late,
@@ -772,7 +772,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
772 .smp = smp_ops(ux500_smp_ops), 772 .smp = smp_ops(ux500_smp_ops),
773 .map_io = u8500_map_io, 773 .map_io = u8500_map_io,
774 .init_irq = ux500_init_irq, 774 .init_irq = ux500_init_irq,
775 .timer = &ux500_timer, 775 .init_time = ux500_timer_init,
776 .handle_irq = gic_handle_irq, 776 .handle_irq = gic_handle_irq,
777 .init_machine = hrefv60_init_machine, 777 .init_machine = hrefv60_init_machine,
778 .init_late = ux500_init_late, 778 .init_late = ux500_init_late,
@@ -784,7 +784,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
784 .map_io = u8500_map_io, 784 .map_io = u8500_map_io,
785 .init_irq = ux500_init_irq, 785 .init_irq = ux500_init_irq,
786 /* we re-use nomadik timer here */ 786 /* we re-use nomadik timer here */
787 .timer = &ux500_timer, 787 .init_time = ux500_timer_init,
788 .handle_irq = gic_handle_irq, 788 .handle_irq = gic_handle_irq,
789 .init_machine = snowball_init_machine, 789 .init_machine = snowball_init_machine,
790 .init_late = NULL, 790 .init_late = NULL,
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index db0bb75e2c76..7875d3c85df1 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -340,7 +340,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")
340 .map_io = u8500_map_io, 340 .map_io = u8500_map_io,
341 .init_irq = ux500_init_irq, 341 .init_irq = ux500_init_irq,
342 /* we re-use nomadik timer here */ 342 /* we re-use nomadik timer here */
343 .timer = &ux500_timer, 343 .init_time = ux500_timer_init,
344 .handle_irq = gic_handle_irq, 344 .handle_irq = gic_handle_irq,
345 .init_machine = u8500_init_machine, 345 .init_machine = u8500_init_machine,
346 .init_late = NULL, 346 .init_late = NULL,
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h
index 6be4c4d2ab88..bddce2b49372 100644
--- a/arch/arm/mach-ux500/include/mach/setup.h
+++ b/arch/arm/mach-ux500/include/mach/setup.h
@@ -28,8 +28,7 @@ extern struct device *ux500_soc_device_init(const char *soc_id);
28struct amba_device; 28struct amba_device;
29extern void __init amba_add_devices(struct amba_device *devs[], int num); 29extern void __init amba_add_devices(struct amba_device *devs[], int num);
30 30
31struct sys_timer; 31extern void ux500_timer_init(void);
32extern struct sys_timer ux500_timer;
33 32
34#define __IO_DEV_DESC(x, sz) { \ 33#define __IO_DEV_DESC(x, sz) { \
35 .virtual = IO_ADDRESS(x), \ 34 .virtual = IO_ADDRESS(x), \
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index 875309acb022..aa2a78acb59e 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -46,7 +46,7 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {
46 { }, 46 { },
47}; 47};
48 48
49static void __init ux500_timer_init(void) 49void __init ux500_timer_init(void)
50{ 50{
51 void __iomem *mtu_timer_base; 51 void __iomem *mtu_timer_base;
52 void __iomem *prcmu_timer_base; 52 void __iomem *prcmu_timer_base;
@@ -99,14 +99,3 @@ dt_fail:
99 clksrc_dbx500_prcmu_init(prcmu_timer_base); 99 clksrc_dbx500_prcmu_init(prcmu_timer_base);
100 ux500_twd_init(); 100 ux500_twd_init();
101} 101}
102
103static void ux500_timer_reset(void)
104{
105 nmdk_clkevt_reset();
106 nmdk_clksrc_reset();
107}
108
109struct sys_timer ux500_timer = {
110 .init = ux500_timer_init,
111 .resume = ux500_timer_reset,
112};
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 5d5929450366..d5ddc0c77f5b 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -770,7 +770,7 @@ void __init versatile_init(void)
770/* 770/*
771 * Set up timer interrupt, and return the current time in seconds. 771 * Set up timer interrupt, and return the current time in seconds.
772 */ 772 */
773static void __init versatile_timer_init(void) 773void __init versatile_timer_init(void)
774{ 774{
775 u32 val; 775 u32 val;
776 776
@@ -797,8 +797,3 @@ static void __init versatile_timer_init(void)
797 sp804_clocksource_init(TIMER3_VA_BASE, "timer3"); 797 sp804_clocksource_init(TIMER3_VA_BASE, "timer3");
798 sp804_clockevents_init(TIMER0_VA_BASE, IRQ_TIMERINT0_1, "timer0"); 798 sp804_clockevents_init(TIMER0_VA_BASE, IRQ_TIMERINT0_1, "timer0");
799} 799}
800
801struct sys_timer versatile_timer = {
802 .init = versatile_timer_init,
803};
804
diff --git a/arch/arm/mach-versatile/core.h b/arch/arm/mach-versatile/core.h
index 683e60776a85..5c1b87d1da6b 100644
--- a/arch/arm/mach-versatile/core.h
+++ b/arch/arm/mach-versatile/core.h
@@ -29,7 +29,7 @@ extern void __init versatile_init(void);
29extern void __init versatile_init_early(void); 29extern void __init versatile_init_early(void);
30extern void __init versatile_init_irq(void); 30extern void __init versatile_init_irq(void);
31extern void __init versatile_map_io(void); 31extern void __init versatile_map_io(void);
32extern struct sys_timer versatile_timer; 32extern void versatile_timer_init(void);
33extern void versatile_restart(char, const char *); 33extern void versatile_restart(char, const char *);
34extern unsigned int mmc_status(struct device *dev); 34extern unsigned int mmc_status(struct device *dev);
35#ifdef CONFIG_OF 35#ifdef CONFIG_OF
diff --git a/arch/arm/mach-versatile/versatile_ab.c b/arch/arm/mach-versatile/versatile_ab.c
index 98f65493177a..187c1da2c4bb 100644
--- a/arch/arm/mach-versatile/versatile_ab.c
+++ b/arch/arm/mach-versatile/versatile_ab.c
@@ -40,7 +40,7 @@ MACHINE_START(VERSATILE_AB, "ARM-Versatile AB")
40 .init_early = versatile_init_early, 40 .init_early = versatile_init_early,
41 .init_irq = versatile_init_irq, 41 .init_irq = versatile_init_irq,
42 .handle_irq = vic_handle_irq, 42 .handle_irq = vic_handle_irq,
43 .timer = &versatile_timer, 43 .init_time = versatile_timer_init,
44 .init_machine = versatile_init, 44 .init_machine = versatile_init,
45 .restart = versatile_restart, 45 .restart = versatile_restart,
46MACHINE_END 46MACHINE_END
diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c
index ae5ad3c8f3dd..ccf9f8a92067 100644
--- a/arch/arm/mach-versatile/versatile_dt.c
+++ b/arch/arm/mach-versatile/versatile_dt.c
@@ -47,7 +47,7 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)")
47 .init_early = versatile_init_early, 47 .init_early = versatile_init_early,
48 .init_irq = versatile_init_irq, 48 .init_irq = versatile_init_irq,
49 .handle_irq = vic_handle_irq, 49 .handle_irq = vic_handle_irq,
50 .timer = &versatile_timer, 50 .init_time = versatile_timer_init,
51 .init_machine = versatile_dt_init, 51 .init_machine = versatile_dt_init,
52 .dt_compat = versatile_dt_match, 52 .dt_compat = versatile_dt_match,
53 .restart = versatile_restart, 53 .restart = versatile_restart,
diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c
index 19738331bd3d..1cabc0aa569d 100644
--- a/arch/arm/mach-versatile/versatile_pb.c
+++ b/arch/arm/mach-versatile/versatile_pb.c
@@ -108,7 +108,7 @@ MACHINE_START(VERSATILE_PB, "ARM-Versatile PB")
108 .init_early = versatile_init_early, 108 .init_early = versatile_init_early,
109 .init_irq = versatile_init_irq, 109 .init_irq = versatile_init_irq,
110 .handle_irq = vic_handle_irq, 110 .handle_irq = vic_handle_irq,
111 .timer = &versatile_timer, 111 .init_time = versatile_timer_init,
112 .init_machine = versatile_pb_init, 112 .init_machine = versatile_pb_init,
113 .restart = versatile_restart, 113 .restart = versatile_restart,
114MACHINE_END 114MACHINE_END
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
index 011661a6c5cb..08bd548ef144 100644
--- a/arch/arm/mach-vexpress/v2m.c
+++ b/arch/arm/mach-vexpress/v2m.c
@@ -291,10 +291,6 @@ static void __init v2m_timer_init(void)
291 v2m_sp804_init(ioremap(V2M_TIMER01, SZ_4K), IRQ_V2M_TIMER0); 291 v2m_sp804_init(ioremap(V2M_TIMER01, SZ_4K), IRQ_V2M_TIMER0);
292} 292}
293 293
294static struct sys_timer v2m_timer = {
295 .init = v2m_timer_init,
296};
297
298static void __init v2m_init_early(void) 294static void __init v2m_init_early(void)
299{ 295{
300 if (ct_desc->init_early) 296 if (ct_desc->init_early)
@@ -376,7 +372,7 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")
376 .map_io = v2m_map_io, 372 .map_io = v2m_map_io,
377 .init_early = v2m_init_early, 373 .init_early = v2m_init_early,
378 .init_irq = v2m_init_irq, 374 .init_irq = v2m_init_irq,
379 .timer = &v2m_timer, 375 .init_time = v2m_timer_init,
380 .handle_irq = gic_handle_irq, 376 .handle_irq = gic_handle_irq,
381 .init_machine = v2m_init, 377 .init_machine = v2m_init,
382 .restart = vexpress_restart, 378 .restart = vexpress_restart,
@@ -468,10 +464,6 @@ static void __init v2m_dt_timer_init(void)
468 24000000); 464 24000000);
469} 465}
470 466
471static struct sys_timer v2m_dt_timer = {
472 .init = v2m_dt_timer_init,
473};
474
475static const struct of_device_id v2m_dt_bus_match[] __initconst = { 467static const struct of_device_id v2m_dt_bus_match[] __initconst = {
476 { .compatible = "simple-bus", }, 468 { .compatible = "simple-bus", },
477 { .compatible = "arm,amba-bus", }, 469 { .compatible = "arm,amba-bus", },
@@ -498,7 +490,7 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")
498 .map_io = v2m_dt_map_io, 490 .map_io = v2m_dt_map_io,
499 .init_early = v2m_dt_init_early, 491 .init_early = v2m_dt_init_early,
500 .init_irq = v2m_dt_init_irq, 492 .init_irq = v2m_dt_init_irq,
501 .timer = &v2m_dt_timer, 493 .init_time = v2m_dt_timer_init,
502 .init_machine = v2m_dt_init, 494 .init_machine = v2m_dt_init,
503 .handle_irq = gic_handle_irq, 495 .handle_irq = gic_handle_irq,
504 .restart = vexpress_restart, 496 .restart = vexpress_restart,
diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c
index 3c66d48ea082..d5b9c6689c9d 100644
--- a/arch/arm/mach-vt8500/vt8500.c
+++ b/arch/arm/mach-vt8500/vt8500.c
@@ -175,10 +175,6 @@ static void __init vt8500_init_irq(void)
175 of_irq_init(vt8500_irq_match); 175 of_irq_init(vt8500_irq_match);
176}; 176};
177 177
178static struct sys_timer vt8500_timer = {
179 .init = vt8500_timer_init,
180};
181
182static const char * const vt8500_dt_compat[] = { 178static const char * const vt8500_dt_compat[] = {
183 "via,vt8500", 179 "via,vt8500",
184 "wm,wm8650", 180 "wm,wm8650",
@@ -189,7 +185,7 @@ DT_MACHINE_START(WMT_DT, "VIA/Wondermedia SoC (Device Tree Support)")
189 .dt_compat = vt8500_dt_compat, 185 .dt_compat = vt8500_dt_compat,
190 .map_io = vt8500_map_io, 186 .map_io = vt8500_map_io,
191 .init_irq = vt8500_init_irq, 187 .init_irq = vt8500_init_irq,
192 .timer = &vt8500_timer, 188 .init_time = vt8500_timer_init,
193 .init_machine = vt8500_init, 189 .init_machine = vt8500_init,
194 .restart = vt8500_restart, 190 .restart = vt8500_restart,
195 .handle_irq = vt8500_handle_irq, 191 .handle_irq = vt8500_handle_irq,
diff --git a/arch/arm/mach-w90x900/mach-nuc910evb.c b/arch/arm/mach-w90x900/mach-nuc910evb.c
index b4243e4f1565..92f1c978f35e 100644
--- a/arch/arm/mach-w90x900/mach-nuc910evb.c
+++ b/arch/arm/mach-w90x900/mach-nuc910evb.c
@@ -37,6 +37,6 @@ MACHINE_START(W90P910EVB, "W90P910EVB")
37 .map_io = nuc910evb_map_io, 37 .map_io = nuc910evb_map_io,
38 .init_irq = nuc900_init_irq, 38 .init_irq = nuc900_init_irq,
39 .init_machine = nuc910evb_init, 39 .init_machine = nuc910evb_init,
40 .timer = &nuc900_timer, 40 .init_time = nuc900_timer_init,
41 .restart = nuc9xx_restart, 41 .restart = nuc9xx_restart,
42MACHINE_END 42MACHINE_END
diff --git a/arch/arm/mach-w90x900/mach-nuc950evb.c b/arch/arm/mach-w90x900/mach-nuc950evb.c
index 500fe5932ce9..26f7189056e3 100644
--- a/arch/arm/mach-w90x900/mach-nuc950evb.c
+++ b/arch/arm/mach-w90x900/mach-nuc950evb.c
@@ -40,6 +40,6 @@ MACHINE_START(W90P950EVB, "W90P950EVB")
40 .map_io = nuc950evb_map_io, 40 .map_io = nuc950evb_map_io,
41 .init_irq = nuc900_init_irq, 41 .init_irq = nuc900_init_irq,
42 .init_machine = nuc950evb_init, 42 .init_machine = nuc950evb_init,
43 .timer = &nuc900_timer, 43 .init_time = nuc900_timer_init,
44 .restart = nuc9xx_restart, 44 .restart = nuc9xx_restart,
45MACHINE_END 45MACHINE_END
diff --git a/arch/arm/mach-w90x900/mach-nuc960evb.c b/arch/arm/mach-w90x900/mach-nuc960evb.c
index cbb3adc3db10..9b4e73fe10e5 100644
--- a/arch/arm/mach-w90x900/mach-nuc960evb.c
+++ b/arch/arm/mach-w90x900/mach-nuc960evb.c
@@ -37,6 +37,6 @@ MACHINE_START(W90N960EVB, "W90N960EVB")
37 .map_io = nuc960evb_map_io, 37 .map_io = nuc960evb_map_io,
38 .init_irq = nuc900_init_irq, 38 .init_irq = nuc900_init_irq,
39 .init_machine = nuc960evb_init, 39 .init_machine = nuc960evb_init,
40 .timer = &nuc900_timer, 40 .init_time = nuc900_timer_init,
41 .restart = nuc9xx_restart, 41 .restart = nuc9xx_restart,
42MACHINE_END 42MACHINE_END
diff --git a/arch/arm/mach-w90x900/nuc9xx.h b/arch/arm/mach-w90x900/nuc9xx.h
index 91acb4047793..88ef4b267089 100644
--- a/arch/arm/mach-w90x900/nuc9xx.h
+++ b/arch/arm/mach-w90x900/nuc9xx.h
@@ -15,10 +15,9 @@
15 * 15 *
16 */ 16 */
17struct map_desc; 17struct map_desc;
18struct sys_timer;
19 18
20/* core initialisation functions */ 19/* core initialisation functions */
21 20
22extern void nuc900_init_irq(void); 21extern void nuc900_init_irq(void);
23extern struct sys_timer nuc900_timer; 22extern void nuc900_timer_init(void);
24extern void nuc9xx_restart(char, const char *); 23extern void nuc9xx_restart(char, const char *);
diff --git a/arch/arm/mach-w90x900/time.c b/arch/arm/mach-w90x900/time.c
index fa27c498ac09..d9c3d6b801c7 100644
--- a/arch/arm/mach-w90x900/time.c
+++ b/arch/arm/mach-w90x900/time.c
@@ -167,12 +167,8 @@ static void __init nuc900_clocksource_init(void)
167 TDR_SHIFT, clocksource_mmio_readl_down); 167 TDR_SHIFT, clocksource_mmio_readl_down);
168} 168}
169 169
170static void __init nuc900_timer_init(void) 170void __init nuc900_timer_init(void)
171{ 171{
172 nuc900_clocksource_init(); 172 nuc900_clocksource_init();
173 nuc900_clockevents_init(); 173 nuc900_clockevents_init();
174} 174}
175
176struct sys_timer nuc900_timer = {
177 .init = nuc900_timer_init,
178};
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index e16d4bed0f7a..2ae4bce652b6 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -93,13 +93,6 @@ static void __init xilinx_zynq_timer_init(void)
93 xttcpss_timer_init(); 93 xttcpss_timer_init();
94} 94}
95 95
96/*
97 * Instantiate and initialize the system timer structure
98 */
99static struct sys_timer xttcpss_sys_timer = {
100 .init = xilinx_zynq_timer_init,
101};
102
103/** 96/**
104 * xilinx_map_io() - Create memory mappings needed for early I/O. 97 * xilinx_map_io() - Create memory mappings needed for early I/O.
105 */ 98 */
@@ -120,6 +113,6 @@ MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")
120 .init_irq = xilinx_irq_init, 113 .init_irq = xilinx_irq_init,
121 .handle_irq = gic_handle_irq, 114 .handle_irq = gic_handle_irq,
122 .init_machine = xilinx_init_machine, 115 .init_machine = xilinx_init_machine,
123 .timer = &xttcpss_sys_timer, 116 .init_time = xilinx_zynq_timer_init,
124 .dt_compat = xilinx_dt_match, 117 .dt_compat = xilinx_dt_match,
125MACHINE_END 118MACHINE_END
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h
index e0072ce8d6e9..e0667a1c137c 100644
--- a/arch/arm/plat-samsung/include/plat/cpu.h
+++ b/arch/arm/plat-samsung/include/plat/cpu.h
@@ -194,8 +194,7 @@ extern void s3c24xx_init_uartdevs(char *name,
194 194
195/* timer for 2410/2440 */ 195/* timer for 2410/2440 */
196 196
197struct sys_timer; 197extern void s3c24xx_timer_init(void);
198extern struct sys_timer s3c24xx_timer;
199 198
200extern struct syscore_ops s3c2410_pm_syscore_ops; 199extern struct syscore_ops s3c2410_pm_syscore_ops;
201extern struct syscore_ops s3c2412_pm_syscore_ops; 200extern struct syscore_ops s3c2412_pm_syscore_ops;
diff --git a/arch/arm/plat-samsung/include/plat/s5p-time.h b/arch/arm/plat-samsung/include/plat/s5p-time.h
index 3a70aebc9205..9c96f3586ce0 100644
--- a/arch/arm/plat-samsung/include/plat/s5p-time.h
+++ b/arch/arm/plat-samsung/include/plat/s5p-time.h
@@ -36,5 +36,5 @@ struct s5p_timer_source {
36 36
37extern void __init s5p_set_timer_source(enum s5p_timer_mode event, 37extern void __init s5p_set_timer_source(enum s5p_timer_mode event,
38 enum s5p_timer_mode source); 38 enum s5p_timer_mode source);
39extern struct sys_timer s5p_timer; 39extern void s5p_timer_init(void);
40#endif /* __ASM_PLAT_S5P_TIME_H */ 40#endif /* __ASM_PLAT_S5P_TIME_H */
diff --git a/arch/arm/plat-samsung/s5p-time.c b/arch/arm/plat-samsung/s5p-time.c
index 028b6e877eb9..dabede46c0ec 100644
--- a/arch/arm/plat-samsung/s5p-time.c
+++ b/arch/arm/plat-samsung/s5p-time.c
@@ -393,13 +393,9 @@ static void __init s5p_timer_resources(void)
393 clk_enable(tin_source); 393 clk_enable(tin_source);
394} 394}
395 395
396static void __init s5p_timer_init(void) 396void __init s5p_timer_init(void)
397{ 397{
398 s5p_timer_resources(); 398 s5p_timer_resources();
399 s5p_clockevent_init(); 399 s5p_clockevent_init();
400 s5p_clocksource_init(); 400 s5p_clocksource_init();
401} 401}
402
403struct sys_timer s5p_timer = {
404 .init = s5p_timer_init,
405};
diff --git a/arch/arm/plat-samsung/time.c b/arch/arm/plat-samsung/time.c
index 60552e22f22e..73defd00c3e4 100644
--- a/arch/arm/plat-samsung/time.c
+++ b/arch/arm/plat-samsung/time.c
@@ -27,6 +27,7 @@
27#include <linux/clk.h> 27#include <linux/clk.h>
28#include <linux/io.h> 28#include <linux/io.h>
29#include <linux/platform_device.h> 29#include <linux/platform_device.h>
30#include <linux/syscore_ops.h>
30 31
31#include <asm/mach-types.h> 32#include <asm/mach-types.h>
32 33
@@ -95,7 +96,7 @@ static inline unsigned long timer_ticks_to_usec(unsigned long ticks)
95 * IRQs are disabled before entering here from do_gettimeofday() 96 * IRQs are disabled before entering here from do_gettimeofday()
96 */ 97 */
97 98
98static unsigned long s3c2410_gettimeoffset (void) 99static u32 s3c2410_gettimeoffset(void)
99{ 100{
100 unsigned long tdone; 101 unsigned long tdone;
101 unsigned long tval; 102 unsigned long tval;
@@ -120,7 +121,7 @@ static unsigned long s3c2410_gettimeoffset (void)
120 tdone += timer_startval; 121 tdone += timer_startval;
121 } 122 }
122 123
123 return timer_ticks_to_usec(tdone); 124 return timer_ticks_to_usec(tdone) * 1000;
124} 125}
125 126
126 127
@@ -271,15 +272,16 @@ static void __init s3c2410_timer_resources(void)
271 clk_enable(tin); 272 clk_enable(tin);
272} 273}
273 274
274static void __init s3c2410_timer_init(void) 275static struct syscore_ops s3c24xx_syscore_ops = {
276 .resume = s3c2410_timer_setup,
277};
278
279void __init s3c24xx_timer_init(void)
275{ 280{
281 arch_gettimeoffset = s3c2410_gettimeoffset;
282
276 s3c2410_timer_resources(); 283 s3c2410_timer_resources();
277 s3c2410_timer_setup(); 284 s3c2410_timer_setup();
278 setup_irq(IRQ_TIMER4, &s3c2410_timer_irq); 285 setup_irq(IRQ_TIMER4, &s3c2410_timer_irq);
286 register_syscore_ops(&s3c24xx_syscore_ops);
279} 287}
280
281struct sys_timer s3c24xx_timer = {
282 .init = s3c2410_timer_init,
283 .offset = s3c2410_gettimeoffset,
284 .resume = s3c2410_timer_setup
285};
diff --git a/arch/blackfin/kernel/time.c b/arch/blackfin/kernel/time.c
index 2310b249675f..3126b920a4a5 100644
--- a/arch/blackfin/kernel/time.c
+++ b/arch/blackfin/kernel/time.c
@@ -85,7 +85,7 @@ time_sched_init(irqreturn_t(*timer_routine) (int, void *))
85/* 85/*
86 * Should return useconds since last timer tick 86 * Should return useconds since last timer tick
87 */ 87 */
88u32 arch_gettimeoffset(void) 88static u32 blackfin_gettimeoffset(void)
89{ 89{
90 unsigned long offset; 90 unsigned long offset;
91 unsigned long clocks_per_jiffy; 91 unsigned long clocks_per_jiffy;
@@ -141,6 +141,10 @@ void read_persistent_clock(struct timespec *ts)
141 141
142void __init time_init(void) 142void __init time_init(void)
143{ 143{
144#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
145 arch_gettimeoffset = blackfin_gettimeoffset;
146#endif
147
144#ifdef CONFIG_RTC_DRV_BFIN 148#ifdef CONFIG_RTC_DRV_BFIN
145 /* [#2663] hack to filter junk RTC values that would cause 149 /* [#2663] hack to filter junk RTC values that would cause
146 * userspace to have to deal with time values greater than 150 * userspace to have to deal with time values greater than
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c
index bcffcb6a9415..fce7c541d70d 100644
--- a/arch/cris/arch-v10/kernel/time.c
+++ b/arch/cris/arch-v10/kernel/time.c
@@ -55,9 +55,9 @@ unsigned long get_ns_in_jiffie(void)
55 return ns; 55 return ns;
56} 56}
57 57
58unsigned long do_slow_gettimeoffset(void) 58static u32 cris_v10_gettimeoffset(void)
59{ 59{
60 unsigned long count; 60 u32 count;
61 61
62 /* The timer interrupt comes from Etrax timer 0. In order to get 62 /* The timer interrupt comes from Etrax timer 0. In order to get
63 * better precision, we check the current value. It might have 63 * better precision, we check the current value. It might have
@@ -65,8 +65,8 @@ unsigned long do_slow_gettimeoffset(void)
65 */ 65 */
66 count = *R_TIMER0_DATA; 66 count = *R_TIMER0_DATA;
67 67
68 /* Convert timer value to usec */ 68 /* Convert timer value to nsec */
69 return (TIMER0_DIV - count) * ((NSEC_PER_SEC/1000)/HZ)/TIMER0_DIV; 69 return (TIMER0_DIV - count) * (NSEC_PER_SEC/HZ)/TIMER0_DIV;
70} 70}
71 71
72/* Excerpt from the Etrax100 HSDD about the built-in watchdog: 72/* Excerpt from the Etrax100 HSDD about the built-in watchdog:
@@ -191,6 +191,8 @@ static struct irqaction irq2 = {
191void __init 191void __init
192time_init(void) 192time_init(void)
193{ 193{
194 arch_gettimeoffset = cris_v10_gettimeoffset;
195
194 /* probe for the RTC and read it if it exists 196 /* probe for the RTC and read it if it exists
195 * Before the RTC can be probed the loops_per_usec variable needs 197 * Before the RTC can be probed the loops_per_usec variable needs
196 * to be initialized to make usleep work. A better value for 198 * to be initialized to make usleep work. A better value for
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c
index 277ffc459e4b..fe6acdabbc8d 100644
--- a/arch/cris/kernel/time.c
+++ b/arch/cris/kernel/time.c
@@ -39,17 +39,6 @@
39extern unsigned long loops_per_jiffy; /* init/main.c */ 39extern unsigned long loops_per_jiffy; /* init/main.c */
40unsigned long loops_per_usec; 40unsigned long loops_per_usec;
41 41
42
43#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
44extern unsigned long do_slow_gettimeoffset(void);
45static unsigned long (*do_gettimeoffset)(void) = do_slow_gettimeoffset;
46
47u32 arch_gettimeoffset(void)
48{
49 return do_gettimeoffset() * 1000;
50}
51#endif
52
53int set_rtc_mmss(unsigned long nowtime) 42int set_rtc_mmss(unsigned long nowtime)
54{ 43{
55 D(printk(KERN_DEBUG "set_rtc_mmss(%lu)\n", nowtime)); 44 D(printk(KERN_DEBUG "set_rtc_mmss(%lu)\n", nowtime));
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index 84dd04048db9..1a15f81ea1bd 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -57,7 +57,7 @@ extern void smp_local_timer_interrupt(void);
57 57
58static unsigned long latch; 58static unsigned long latch;
59 59
60u32 arch_gettimeoffset(void) 60static u32 m32r_gettimeoffset(void)
61{ 61{
62 unsigned long elapsed_time = 0; /* [us] */ 62 unsigned long elapsed_time = 0; /* [us] */
63 63
@@ -165,6 +165,8 @@ void read_persistent_clock(struct timespec *ts)
165 165
166void __init time_init(void) 166void __init time_init(void)
167{ 167{
168 arch_gettimeoffset = m32r_gettimeoffset;
169
168#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \ 170#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \
169 || defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \ 171 || defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \
170 || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) 172 || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104)
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index ee01b7a38e58..b819390e29cd 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -95,7 +95,7 @@ static void amiga_sched_init(irq_handler_t handler);
95static void amiga_get_model(char *model); 95static void amiga_get_model(char *model);
96static void amiga_get_hardware_list(struct seq_file *m); 96static void amiga_get_hardware_list(struct seq_file *m);
97/* amiga specific timer functions */ 97/* amiga specific timer functions */
98static unsigned long amiga_gettimeoffset(void); 98static u32 amiga_gettimeoffset(void);
99extern void amiga_mksound(unsigned int count, unsigned int ticks); 99extern void amiga_mksound(unsigned int count, unsigned int ticks);
100static void amiga_reset(void); 100static void amiga_reset(void);
101extern void amiga_init_sound(void); 101extern void amiga_init_sound(void);
@@ -377,7 +377,7 @@ void __init config_amiga(void)
377 mach_init_IRQ = amiga_init_IRQ; 377 mach_init_IRQ = amiga_init_IRQ;
378 mach_get_model = amiga_get_model; 378 mach_get_model = amiga_get_model;
379 mach_get_hardware_list = amiga_get_hardware_list; 379 mach_get_hardware_list = amiga_get_hardware_list;
380 mach_gettimeoffset = amiga_gettimeoffset; 380 arch_gettimeoffset = amiga_gettimeoffset;
381 381
382 /* 382 /*
383 * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI 383 * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI
@@ -482,10 +482,10 @@ static void __init amiga_sched_init(irq_handler_t timer_routine)
482#define TICK_SIZE 10000 482#define TICK_SIZE 10000
483 483
484/* This is always executed with interrupts disabled. */ 484/* This is always executed with interrupts disabled. */
485static unsigned long amiga_gettimeoffset(void) 485static u32 amiga_gettimeoffset(void)
486{ 486{
487 unsigned short hi, lo, hi2; 487 unsigned short hi, lo, hi2;
488 unsigned long ticks, offset = 0; 488 u32 ticks, offset = 0;
489 489
490 /* read CIA B timer A current value */ 490 /* read CIA B timer A current value */
491 hi = ciab.tahi; 491 hi = ciab.tahi;
@@ -507,7 +507,7 @@ static unsigned long amiga_gettimeoffset(void)
507 ticks = jiffy_ticks - ticks; 507 ticks = jiffy_ticks - ticks;
508 ticks = (10000 * ticks) / jiffy_ticks; 508 ticks = (10000 * ticks) / jiffy_ticks;
509 509
510 return ticks + offset; 510 return (ticks + offset) * 1000;
511} 511}
512 512
513static void amiga_reset(void) __noreturn; 513static void amiga_reset(void) __noreturn;
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c
index f5565d6eeb8e..3ea56b90e718 100644
--- a/arch/m68k/apollo/config.c
+++ b/arch/m68k/apollo/config.c
@@ -26,7 +26,7 @@ u_long apollo_model;
26 26
27extern void dn_sched_init(irq_handler_t handler); 27extern void dn_sched_init(irq_handler_t handler);
28extern void dn_init_IRQ(void); 28extern void dn_init_IRQ(void);
29extern unsigned long dn_gettimeoffset(void); 29extern u32 dn_gettimeoffset(void);
30extern int dn_dummy_hwclk(int, struct rtc_time *); 30extern int dn_dummy_hwclk(int, struct rtc_time *);
31extern int dn_dummy_set_clock_mmss(unsigned long); 31extern int dn_dummy_set_clock_mmss(unsigned long);
32extern void dn_dummy_reset(void); 32extern void dn_dummy_reset(void);
@@ -151,7 +151,7 @@ void __init config_apollo(void)
151 151
152 mach_sched_init=dn_sched_init; /* */ 152 mach_sched_init=dn_sched_init; /* */
153 mach_init_IRQ=dn_init_IRQ; 153 mach_init_IRQ=dn_init_IRQ;
154 mach_gettimeoffset = dn_gettimeoffset; 154 arch_gettimeoffset = dn_gettimeoffset;
155 mach_max_dma_address = 0xffffffff; 155 mach_max_dma_address = 0xffffffff;
156 mach_hwclk = dn_dummy_hwclk; /* */ 156 mach_hwclk = dn_dummy_hwclk; /* */
157 mach_set_clock_mmss = dn_dummy_set_clock_mmss; /* */ 157 mach_set_clock_mmss = dn_dummy_set_clock_mmss; /* */
@@ -203,10 +203,9 @@ void dn_sched_init(irq_handler_t timer_routine)
203 pr_err("Couldn't register timer interrupt\n"); 203 pr_err("Couldn't register timer interrupt\n");
204} 204}
205 205
206unsigned long dn_gettimeoffset(void) { 206u32 dn_gettimeoffset(void)
207 207{
208 return 0xdeadbeef; 208 return 0xdeadbeef;
209
210} 209}
211 210
212int dn_dummy_hwclk(int op, struct rtc_time *t) { 211int dn_dummy_hwclk(int op, struct rtc_time *t) {
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
index d8eb32747ac5..037c11c99331 100644
--- a/arch/m68k/atari/config.c
+++ b/arch/m68k/atari/config.c
@@ -74,7 +74,7 @@ static void atari_heartbeat(int on);
74 74
75/* atari specific timer functions (in time.c) */ 75/* atari specific timer functions (in time.c) */
76extern void atari_sched_init(irq_handler_t); 76extern void atari_sched_init(irq_handler_t);
77extern unsigned long atari_gettimeoffset (void); 77extern u32 atari_gettimeoffset(void);
78extern int atari_mste_hwclk (int, struct rtc_time *); 78extern int atari_mste_hwclk (int, struct rtc_time *);
79extern int atari_tt_hwclk (int, struct rtc_time *); 79extern int atari_tt_hwclk (int, struct rtc_time *);
80extern int atari_mste_set_clock_mmss (unsigned long); 80extern int atari_mste_set_clock_mmss (unsigned long);
@@ -204,7 +204,7 @@ void __init config_atari(void)
204 mach_init_IRQ = atari_init_IRQ; 204 mach_init_IRQ = atari_init_IRQ;
205 mach_get_model = atari_get_model; 205 mach_get_model = atari_get_model;
206 mach_get_hardware_list = atari_get_hardware_list; 206 mach_get_hardware_list = atari_get_hardware_list;
207 mach_gettimeoffset = atari_gettimeoffset; 207 arch_gettimeoffset = atari_gettimeoffset;
208 mach_reset = atari_reset; 208 mach_reset = atari_reset;
209 mach_max_dma_address = 0xffffff; 209 mach_max_dma_address = 0xffffff;
210#if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) 210#if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c
index c0cc68a2c829..da8f981c36d6 100644
--- a/arch/m68k/atari/time.c
+++ b/arch/m68k/atari/time.c
@@ -42,9 +42,9 @@ atari_sched_init(irq_handler_t timer_routine)
42#define TICK_SIZE 10000 42#define TICK_SIZE 10000
43 43
44/* This is always executed with interrupts disabled. */ 44/* This is always executed with interrupts disabled. */
45unsigned long atari_gettimeoffset (void) 45u32 atari_gettimeoffset(void)
46{ 46{
47 unsigned long ticks, offset = 0; 47 u32 ticks, offset = 0;
48 48
49 /* read MFP timer C current value */ 49 /* read MFP timer C current value */
50 ticks = st_mfp.tim_dt_c; 50 ticks = st_mfp.tim_dt_c;
@@ -57,7 +57,7 @@ unsigned long atari_gettimeoffset (void)
57 ticks = INT_TICKS - ticks; 57 ticks = INT_TICKS - ticks;
58 ticks = ticks * 10000L / INT_TICKS; 58 ticks = ticks * 10000L / INT_TICKS;
59 59
60 return ticks + offset; 60 return (ticks + offset) * 1000;
61} 61}
62 62
63 63
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c
index 0bf850a20ea2..8943aa4c18e6 100644
--- a/arch/m68k/bvme6000/config.c
+++ b/arch/m68k/bvme6000/config.c
@@ -38,7 +38,7 @@
38 38
39static void bvme6000_get_model(char *model); 39static void bvme6000_get_model(char *model);
40extern void bvme6000_sched_init(irq_handler_t handler); 40extern void bvme6000_sched_init(irq_handler_t handler);
41extern unsigned long bvme6000_gettimeoffset (void); 41extern u32 bvme6000_gettimeoffset(void);
42extern int bvme6000_hwclk (int, struct rtc_time *); 42extern int bvme6000_hwclk (int, struct rtc_time *);
43extern int bvme6000_set_clock_mmss (unsigned long); 43extern int bvme6000_set_clock_mmss (unsigned long);
44extern void bvme6000_reset (void); 44extern void bvme6000_reset (void);
@@ -110,7 +110,7 @@ void __init config_bvme6000(void)
110 mach_max_dma_address = 0xffffffff; 110 mach_max_dma_address = 0xffffffff;
111 mach_sched_init = bvme6000_sched_init; 111 mach_sched_init = bvme6000_sched_init;
112 mach_init_IRQ = bvme6000_init_IRQ; 112 mach_init_IRQ = bvme6000_init_IRQ;
113 mach_gettimeoffset = bvme6000_gettimeoffset; 113 arch_gettimeoffset = bvme6000_gettimeoffset;
114 mach_hwclk = bvme6000_hwclk; 114 mach_hwclk = bvme6000_hwclk;
115 mach_set_clock_mmss = bvme6000_set_clock_mmss; 115 mach_set_clock_mmss = bvme6000_set_clock_mmss;
116 mach_reset = bvme6000_reset; 116 mach_reset = bvme6000_reset;
@@ -216,13 +216,13 @@ void bvme6000_sched_init (irq_handler_t timer_routine)
216 * results... 216 * results...
217 */ 217 */
218 218
219unsigned long bvme6000_gettimeoffset (void) 219u32 bvme6000_gettimeoffset(void)
220{ 220{
221 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; 221 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
222 volatile PitRegsPtr pit = (PitRegsPtr)BVME_PIT_BASE; 222 volatile PitRegsPtr pit = (PitRegsPtr)BVME_PIT_BASE;
223 unsigned char msr = rtc->msr & 0xc0; 223 unsigned char msr = rtc->msr & 0xc0;
224 unsigned char t1int, t1op; 224 unsigned char t1int, t1op;
225 unsigned long v = 800000, ov; 225 u32 v = 800000, ov;
226 226
227 rtc->msr = 0; /* Ensure timer registers accessible */ 227 rtc->msr = 0; /* Ensure timer registers accessible */
228 228
@@ -246,7 +246,7 @@ unsigned long bvme6000_gettimeoffset (void)
246 v += 10000; /* Int pending, + 10ms */ 246 v += 10000; /* Int pending, + 10ms */
247 rtc->msr = msr; 247 rtc->msr = msr;
248 248
249 return v; 249 return v * 1000;
250} 250}
251 251
252/* 252/*
diff --git a/arch/m68k/hp300/config.c b/arch/m68k/hp300/config.c
index bf16af1edacf..b7609f791522 100644
--- a/arch/m68k/hp300/config.c
+++ b/arch/m68k/hp300/config.c
@@ -251,7 +251,7 @@ void __init config_hp300(void)
251 mach_sched_init = hp300_sched_init; 251 mach_sched_init = hp300_sched_init;
252 mach_init_IRQ = hp300_init_IRQ; 252 mach_init_IRQ = hp300_init_IRQ;
253 mach_get_model = hp300_get_model; 253 mach_get_model = hp300_get_model;
254 mach_gettimeoffset = hp300_gettimeoffset; 254 arch_gettimeoffset = hp300_gettimeoffset;
255 mach_hwclk = hp300_hwclk; 255 mach_hwclk = hp300_hwclk;
256 mach_get_ss = hp300_get_ss; 256 mach_get_ss = hp300_get_ss;
257 mach_reset = hp300_reset; 257 mach_reset = hp300_reset;
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c
index 29a71be9fa5b..749543b425a4 100644
--- a/arch/m68k/hp300/time.c
+++ b/arch/m68k/hp300/time.c
@@ -46,7 +46,7 @@ static irqreturn_t hp300_tick(int irq, void *dev_id)
46 return vector(irq, NULL); 46 return vector(irq, NULL);
47} 47}
48 48
49unsigned long hp300_gettimeoffset(void) 49u32 hp300_gettimeoffset(void)
50{ 50{
51 /* Read current timer 1 value */ 51 /* Read current timer 1 value */
52 unsigned char lsb, msb1, msb2; 52 unsigned char lsb, msb1, msb2;
@@ -59,7 +59,7 @@ unsigned long hp300_gettimeoffset(void)
59 /* A carry happened while we were reading. Read it again */ 59 /* A carry happened while we were reading. Read it again */
60 lsb = in_8(CLOCKBASE + 7); 60 lsb = in_8(CLOCKBASE + 7);
61 ticks = INTVAL - ((msb2 << 8) | lsb); 61 ticks = INTVAL - ((msb2 << 8) | lsb);
62 return (USECS_PER_JIFFY * ticks) / INTVAL; 62 return ((USECS_PER_JIFFY * ticks) / INTVAL) * 1000;
63} 63}
64 64
65void __init hp300_sched_init(irq_handler_t vector) 65void __init hp300_sched_init(irq_handler_t vector)
diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h
index 7b98242960de..f5583ec4033d 100644
--- a/arch/m68k/hp300/time.h
+++ b/arch/m68k/hp300/time.h
@@ -1,2 +1,2 @@
1extern void hp300_sched_init(irq_handler_t vector); 1extern void hp300_sched_init(irq_handler_t vector);
2extern unsigned long hp300_gettimeoffset(void); 2extern u32 hp300_gettimeoffset(void);
diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h
index 825c1c813196..953ca21da8ee 100644
--- a/arch/m68k/include/asm/machdep.h
+++ b/arch/m68k/include/asm/machdep.h
@@ -3,6 +3,7 @@
3 3
4#include <linux/seq_file.h> 4#include <linux/seq_file.h>
5#include <linux/interrupt.h> 5#include <linux/interrupt.h>
6#include <linux/time.h>
6 7
7struct pt_regs; 8struct pt_regs;
8struct mktime; 9struct mktime;
@@ -16,7 +17,6 @@ extern void (*mach_init_IRQ) (void);
16extern void (*mach_get_model) (char *model); 17extern void (*mach_get_model) (char *model);
17extern void (*mach_get_hardware_list) (struct seq_file *m); 18extern void (*mach_get_hardware_list) (struct seq_file *m);
18/* machine dependent timer functions */ 19/* machine dependent timer functions */
19extern unsigned long (*mach_gettimeoffset)(void);
20extern int (*mach_hwclk)(int, struct rtc_time*); 20extern int (*mach_hwclk)(int, struct rtc_time*);
21extern unsigned int (*mach_get_ss)(void); 21extern unsigned int (*mach_get_ss)(void);
22extern int (*mach_get_rtc_pll)(struct rtc_pll_info *); 22extern int (*mach_get_rtc_pll)(struct rtc_pll_info *);
diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c
index d872ce4807c9..80cfbe56ea32 100644
--- a/arch/m68k/kernel/setup_mm.c
+++ b/arch/m68k/kernel/setup_mm.c
@@ -84,7 +84,6 @@ void (*mach_init_IRQ) (void) __initdata = NULL;
84void (*mach_get_model) (char *model); 84void (*mach_get_model) (char *model);
85void (*mach_get_hardware_list) (struct seq_file *m); 85void (*mach_get_hardware_list) (struct seq_file *m);
86/* machine dependent timer functions */ 86/* machine dependent timer functions */
87unsigned long (*mach_gettimeoffset) (void);
88int (*mach_hwclk) (int, struct rtc_time*); 87int (*mach_hwclk) (int, struct rtc_time*);
89EXPORT_SYMBOL(mach_hwclk); 88EXPORT_SYMBOL(mach_hwclk);
90int (*mach_set_clock_mmss) (unsigned long); 89int (*mach_set_clock_mmss) (unsigned long);
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 5d0bcaad2e55..bea6bcf8f9b8 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -80,18 +80,8 @@ void read_persistent_clock(struct timespec *ts)
80 } 80 }
81} 81}
82 82
83void __init time_init(void)
84{
85 mach_sched_init(timer_interrupt);
86}
87
88#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET 83#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
89 84
90u32 arch_gettimeoffset(void)
91{
92 return mach_gettimeoffset() * 1000;
93}
94
95static int __init rtc_init(void) 85static int __init rtc_init(void)
96{ 86{
97 struct platform_device *pdev; 87 struct platform_device *pdev;
@@ -106,3 +96,8 @@ static int __init rtc_init(void)
106module_init(rtc_init); 96module_init(rtc_init);
107 97
108#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */ 98#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */
99
100void __init time_init(void)
101{
102 mach_sched_init(timer_interrupt);
103}
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
index d9f62e0f46c0..afb95d5fb26b 100644
--- a/arch/m68k/mac/config.c
+++ b/arch/m68k/mac/config.c
@@ -52,7 +52,7 @@ struct mac_booter_data mac_bi_data;
52static unsigned long mac_orig_videoaddr; 52static unsigned long mac_orig_videoaddr;
53 53
54/* Mac specific timer functions */ 54/* Mac specific timer functions */
55extern unsigned long mac_gettimeoffset(void); 55extern u32 mac_gettimeoffset(void);
56extern int mac_hwclk(int, struct rtc_time *); 56extern int mac_hwclk(int, struct rtc_time *);
57extern int mac_set_clock_mmss(unsigned long); 57extern int mac_set_clock_mmss(unsigned long);
58extern void iop_preinit(void); 58extern void iop_preinit(void);
@@ -177,7 +177,7 @@ void __init config_mac(void)
177 mach_sched_init = mac_sched_init; 177 mach_sched_init = mac_sched_init;
178 mach_init_IRQ = mac_init_IRQ; 178 mach_init_IRQ = mac_init_IRQ;
179 mach_get_model = mac_get_model; 179 mach_get_model = mac_get_model;
180 mach_gettimeoffset = mac_gettimeoffset; 180 arch_gettimeoffset = mac_gettimeoffset;
181 mach_hwclk = mac_hwclk; 181 mach_hwclk = mac_hwclk;
182 mach_set_clock_mmss = mac_set_clock_mmss; 182 mach_set_clock_mmss = mac_set_clock_mmss;
183 mach_reset = mac_reset; 183 mach_reset = mac_reset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index 2d85662715fb..5d1458bb871b 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -327,7 +327,7 @@ void via_debug_dump(void)
327 * TBI: get time offset between scheduling timer ticks 327 * TBI: get time offset between scheduling timer ticks
328 */ 328 */
329 329
330unsigned long mac_gettimeoffset (void) 330u32 mac_gettimeoffset(void)
331{ 331{
332 unsigned long ticks, offset = 0; 332 unsigned long ticks, offset = 0;
333 333
@@ -341,7 +341,7 @@ unsigned long mac_gettimeoffset (void)
341 ticks = MAC_CLOCK_TICK - ticks; 341 ticks = MAC_CLOCK_TICK - ticks;
342 ticks = ticks * 10000L / MAC_CLOCK_TICK; 342 ticks = ticks * 10000L / MAC_CLOCK_TICK;
343 343
344 return ticks + offset; 344 return (ticks + offset) * 1000;
345} 345}
346 346
347/* 347/*
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c
index a41c09149e23..1c6262803b94 100644
--- a/arch/m68k/mvme147/config.c
+++ b/arch/m68k/mvme147/config.c
@@ -37,7 +37,7 @@
37 37
38static void mvme147_get_model(char *model); 38static void mvme147_get_model(char *model);
39extern void mvme147_sched_init(irq_handler_t handler); 39extern void mvme147_sched_init(irq_handler_t handler);
40extern unsigned long mvme147_gettimeoffset (void); 40extern u32 mvme147_gettimeoffset(void);
41extern int mvme147_hwclk (int, struct rtc_time *); 41extern int mvme147_hwclk (int, struct rtc_time *);
42extern int mvme147_set_clock_mmss (unsigned long); 42extern int mvme147_set_clock_mmss (unsigned long);
43extern void mvme147_reset (void); 43extern void mvme147_reset (void);
@@ -88,7 +88,7 @@ void __init config_mvme147(void)
88 mach_max_dma_address = 0x01000000; 88 mach_max_dma_address = 0x01000000;
89 mach_sched_init = mvme147_sched_init; 89 mach_sched_init = mvme147_sched_init;
90 mach_init_IRQ = mvme147_init_IRQ; 90 mach_init_IRQ = mvme147_init_IRQ;
91 mach_gettimeoffset = mvme147_gettimeoffset; 91 arch_gettimeoffset = mvme147_gettimeoffset;
92 mach_hwclk = mvme147_hwclk; 92 mach_hwclk = mvme147_hwclk;
93 mach_set_clock_mmss = mvme147_set_clock_mmss; 93 mach_set_clock_mmss = mvme147_set_clock_mmss;
94 mach_reset = mvme147_reset; 94 mach_reset = mvme147_reset;
@@ -127,7 +127,7 @@ void mvme147_sched_init (irq_handler_t timer_routine)
127 127
128/* This is always executed with interrupts disabled. */ 128/* This is always executed with interrupts disabled. */
129/* XXX There are race hazards in this code XXX */ 129/* XXX There are race hazards in this code XXX */
130unsigned long mvme147_gettimeoffset (void) 130u32 mvme147_gettimeoffset(void)
131{ 131{
132 volatile unsigned short *cp = (volatile unsigned short *)0xfffe1012; 132 volatile unsigned short *cp = (volatile unsigned short *)0xfffe1012;
133 unsigned short n; 133 unsigned short n;
@@ -137,7 +137,7 @@ unsigned long mvme147_gettimeoffset (void)
137 n = *cp; 137 n = *cp;
138 138
139 n -= PCC_TIMER_PRELOAD; 139 n -= PCC_TIMER_PRELOAD;
140 return (unsigned long)n * 25 / 4; 140 return ((unsigned long)n * 25 / 4) * 1000;
141} 141}
142 142
143static int bcd2int (unsigned char b) 143static int bcd2int (unsigned char b)
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c
index b6d7d8a7a3dd..080a342458a1 100644
--- a/arch/m68k/mvme16x/config.c
+++ b/arch/m68k/mvme16x/config.c
@@ -43,7 +43,7 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
43 43
44static void mvme16x_get_model(char *model); 44static void mvme16x_get_model(char *model);
45extern void mvme16x_sched_init(irq_handler_t handler); 45extern void mvme16x_sched_init(irq_handler_t handler);
46extern unsigned long mvme16x_gettimeoffset (void); 46extern u32 mvme16x_gettimeoffset(void);
47extern int mvme16x_hwclk (int, struct rtc_time *); 47extern int mvme16x_hwclk (int, struct rtc_time *);
48extern int mvme16x_set_clock_mmss (unsigned long); 48extern int mvme16x_set_clock_mmss (unsigned long);
49extern void mvme16x_reset (void); 49extern void mvme16x_reset (void);
@@ -289,7 +289,7 @@ void __init config_mvme16x(void)
289 mach_max_dma_address = 0xffffffff; 289 mach_max_dma_address = 0xffffffff;
290 mach_sched_init = mvme16x_sched_init; 290 mach_sched_init = mvme16x_sched_init;
291 mach_init_IRQ = mvme16x_init_IRQ; 291 mach_init_IRQ = mvme16x_init_IRQ;
292 mach_gettimeoffset = mvme16x_gettimeoffset; 292 arch_gettimeoffset = mvme16x_gettimeoffset;
293 mach_hwclk = mvme16x_hwclk; 293 mach_hwclk = mvme16x_hwclk;
294 mach_set_clock_mmss = mvme16x_set_clock_mmss; 294 mach_set_clock_mmss = mvme16x_set_clock_mmss;
295 mach_reset = mvme16x_reset; 295 mach_reset = mvme16x_reset;
@@ -405,9 +405,9 @@ void mvme16x_sched_init (irq_handler_t timer_routine)
405 405
406 406
407/* This is always executed with interrupts disabled. */ 407/* This is always executed with interrupts disabled. */
408unsigned long mvme16x_gettimeoffset (void) 408u32 mvme16x_gettimeoffset(void)
409{ 409{
410 return (*(volatile unsigned long *)0xfff42008); 410 return (*(volatile u32 *)0xfff42008) * 1000;
411} 411}
412 412
413int bcd2int (unsigned char b) 413int bcd2int (unsigned char b)
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c
index 1adb5b7b0d1a..658542b914fc 100644
--- a/arch/m68k/q40/config.c
+++ b/arch/m68k/q40/config.c
@@ -40,7 +40,7 @@ extern void q40_init_IRQ(void);
40static void q40_get_model(char *model); 40static void q40_get_model(char *model);
41extern void q40_sched_init(irq_handler_t handler); 41extern void q40_sched_init(irq_handler_t handler);
42 42
43static unsigned long q40_gettimeoffset(void); 43static u32 q40_gettimeoffset(void);
44static int q40_hwclk(int, struct rtc_time *); 44static int q40_hwclk(int, struct rtc_time *);
45static unsigned int q40_get_ss(void); 45static unsigned int q40_get_ss(void);
46static int q40_set_clock_mmss(unsigned long); 46static int q40_set_clock_mmss(unsigned long);
@@ -170,7 +170,7 @@ void __init config_q40(void)
170 mach_sched_init = q40_sched_init; 170 mach_sched_init = q40_sched_init;
171 171
172 mach_init_IRQ = q40_init_IRQ; 172 mach_init_IRQ = q40_init_IRQ;
173 mach_gettimeoffset = q40_gettimeoffset; 173 arch_gettimeoffset = q40_gettimeoffset;
174 mach_hwclk = q40_hwclk; 174 mach_hwclk = q40_hwclk;
175 mach_get_ss = q40_get_ss; 175 mach_get_ss = q40_get_ss;
176 mach_get_rtc_pll = q40_get_rtc_pll; 176 mach_get_rtc_pll = q40_get_rtc_pll;
@@ -204,9 +204,9 @@ int q40_parse_bootinfo(const struct bi_record *rec)
204} 204}
205 205
206 206
207static unsigned long q40_gettimeoffset(void) 207static u32 q40_gettimeoffset(void)
208{ 208{
209 return 5000 * (ql_ticks != 0); 209 return 5000 * (ql_ticks != 0) * 1000;
210} 210}
211 211
212 212
diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c
index 2ca25bd01a96..f59ec58083f8 100644
--- a/arch/m68k/sun3/config.c
+++ b/arch/m68k/sun3/config.c
@@ -36,7 +36,7 @@
36 36
37char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; 37char sun3_reserved_pmeg[SUN3_PMEGS_NUM];
38 38
39extern unsigned long sun3_gettimeoffset(void); 39extern u32 sun3_gettimeoffset(void);
40static void sun3_sched_init(irq_handler_t handler); 40static void sun3_sched_init(irq_handler_t handler);
41extern void sun3_get_model (char* model); 41extern void sun3_get_model (char* model);
42extern int sun3_hwclk(int set, struct rtc_time *t); 42extern int sun3_hwclk(int set, struct rtc_time *t);
@@ -141,7 +141,7 @@ void __init config_sun3(void)
141 mach_sched_init = sun3_sched_init; 141 mach_sched_init = sun3_sched_init;
142 mach_init_IRQ = sun3_init_IRQ; 142 mach_init_IRQ = sun3_init_IRQ;
143 mach_reset = sun3_reboot; 143 mach_reset = sun3_reboot;
144 mach_gettimeoffset = sun3_gettimeoffset; 144 arch_gettimeoffset = sun3_gettimeoffset;
145 mach_get_model = sun3_get_model; 145 mach_get_model = sun3_get_model;
146 mach_hwclk = sun3_hwclk; 146 mach_hwclk = sun3_hwclk;
147 mach_halt = sun3_halt; 147 mach_halt = sun3_halt;
diff --git a/arch/m68k/sun3/intersil.c b/arch/m68k/sun3/intersil.c
index 94fe8016f1f0..889829e11f1d 100644
--- a/arch/m68k/sun3/intersil.c
+++ b/arch/m68k/sun3/intersil.c
@@ -23,9 +23,9 @@
23#define START_VAL (INTERSIL_RUN | INTERSIL_INT_ENABLE | INTERSIL_24H_MODE) 23#define START_VAL (INTERSIL_RUN | INTERSIL_INT_ENABLE | INTERSIL_24H_MODE)
24 24
25/* does this need to be implemented? */ 25/* does this need to be implemented? */
26unsigned long sun3_gettimeoffset(void) 26u32 sun3_gettimeoffset(void)
27{ 27{
28 return 1; 28 return 1000;
29} 29}
30 30
31 31
diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c
index dd306c84d36d..0532d64d191e 100644
--- a/arch/m68k/sun3x/config.c
+++ b/arch/m68k/sun3x/config.c
@@ -48,7 +48,7 @@ void __init config_sun3x(void)
48 mach_sched_init = sun3x_sched_init; 48 mach_sched_init = sun3x_sched_init;
49 mach_init_IRQ = sun3_init_IRQ; 49 mach_init_IRQ = sun3_init_IRQ;
50 50
51 mach_gettimeoffset = sun3x_gettimeoffset; 51 arch_gettimeoffset = sun3x_gettimeoffset;
52 mach_reset = sun3x_reboot; 52 mach_reset = sun3x_reboot;
53 53
54 mach_hwclk = sun3x_hwclk; 54 mach_hwclk = sun3x_hwclk;
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c
index 1d0a72480409..c8eb08add6b0 100644
--- a/arch/m68k/sun3x/time.c
+++ b/arch/m68k/sun3x/time.c
@@ -71,7 +71,7 @@ int sun3x_hwclk(int set, struct rtc_time *t)
71 return 0; 71 return 0;
72} 72}
73/* Not much we can do here */ 73/* Not much we can do here */
74unsigned long sun3x_gettimeoffset (void) 74u32 sun3x_gettimeoffset(void)
75{ 75{
76 return 0L; 76 return 0L;
77} 77}
diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h
index 6909e1297534..a4f9126be7e2 100644
--- a/arch/m68k/sun3x/time.h
+++ b/arch/m68k/sun3x/time.h
@@ -2,7 +2,7 @@
2#define SUN3X_TIME_H 2#define SUN3X_TIME_H
3 3
4extern int sun3x_hwclk(int set, struct rtc_time *t); 4extern int sun3x_hwclk(int set, struct rtc_time *t);
5unsigned long sun3x_gettimeoffset (void); 5u32 sun3x_gettimeoffset(void);
6void sun3x_sched_init(irq_handler_t vector); 6void sun3x_sched_init(irq_handler_t vector);
7 7
8struct mostek_dt { 8struct mostek_dt {