]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'restart' into for-next
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 11 Dec 2011 09:58:42 +0000 (09:58 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 11 Dec 2011 09:58:42 +0000 (09:58 +0000)
454 files changed:
arch/arm/include/asm/hardware/iop3xx.h
arch/arm/include/asm/system.h
arch/arm/kernel/process.c
arch/arm/mach-at91/at91cap9.c
arch/arm/mach-at91/at91rm9200.c
arch/arm/mach-at91/at91sam9260.c
arch/arm/mach-at91/at91sam9261.c
arch/arm/mach-at91/at91sam9263.c
arch/arm/mach-at91/at91sam9_alt_reset.S
arch/arm/mach-at91/at91sam9g45.c
arch/arm/mach-at91/at91sam9rl.c
arch/arm/mach-at91/generic.h
arch/arm/mach-at91/include/mach/system.h
arch/arm/mach-bcmring/arch.c
arch/arm/mach-bcmring/include/mach/system.h
arch/arm/mach-clps711x/autcpu12.c
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/ceiva.c
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/common.c
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/include/mach/system.h
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-cns3xxx/cns3420vb.c
arch/arm/mach-cns3xxx/core.h
arch/arm/mach-cns3xxx/include/mach/system.h
arch/arm/mach-cns3xxx/pm.c
arch/arm/mach-davinci/board-da830-evm.c
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-dm355-evm.c
arch/arm/mach-davinci/board-dm355-leopard.c
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-davinci/board-dm646x-evm.c
arch/arm/mach-davinci/board-mityomapl138.c
arch/arm/mach-davinci/board-neuros-osd2.c
arch/arm/mach-davinci/board-omapl138-hawk.c
arch/arm/mach-davinci/board-sffsdr.c
arch/arm/mach-davinci/board-tnetv107x-evm.c
arch/arm/mach-davinci/common.c
arch/arm/mach-davinci/da830.c
arch/arm/mach-davinci/da850.c
arch/arm/mach-davinci/devices-da8xx.c
arch/arm/mach-davinci/devices.c
arch/arm/mach-davinci/dm355.c
arch/arm/mach-davinci/dm365.c
arch/arm/mach-davinci/dm644x.c
arch/arm/mach-davinci/dm646x.c
arch/arm/mach-davinci/include/mach/common.h
arch/arm/mach-davinci/include/mach/da8xx.h
arch/arm/mach-davinci/include/mach/system.h
arch/arm/mach-davinci/include/mach/tnetv107x.h
arch/arm/mach-davinci/tnetv107x.c
arch/arm/mach-dove/cm-a510.c
arch/arm/mach-dove/common.c
arch/arm/mach-dove/common.h
arch/arm/mach-dove/dove-db-setup.c
arch/arm/mach-dove/include/mach/system.h
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/include/mach/system.h
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/include/mach/platform.h
arch/arm/mach-ep93xx/include/mach/system.h
arch/arm/mach-ep93xx/micro9.c
arch/arm/mach-ep93xx/simone.c
arch/arm/mach-ep93xx/snappercl15.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/vision_ep9307.c
arch/arm/mach-footbridge/cats-hw.c
arch/arm/mach-footbridge/common.c
arch/arm/mach-footbridge/common.h
arch/arm/mach-footbridge/ebsa285.c
arch/arm/mach-footbridge/include/mach/system.h
arch/arm/mach-footbridge/netwinder-hw.c
arch/arm/mach-footbridge/personal.c
arch/arm/mach-gemini/include/mach/system.h
arch/arm/mach-h720x/common.c
arch/arm/mach-h720x/common.h
arch/arm/mach-h720x/h7201-eval.c
arch/arm/mach-h720x/h7202-eval.c
arch/arm/mach-h720x/include/mach/system.h
arch/arm/mach-highbank/core.h
arch/arm/mach-highbank/highbank.c
arch/arm/mach-highbank/include/mach/system.h
arch/arm/mach-highbank/system.c
arch/arm/mach-imx/clock-imx6q.c
arch/arm/mach-imx/mach-apf9328.c
arch/arm/mach-imx/mach-armadillo5x0.c
arch/arm/mach-imx/mach-bug.c
arch/arm/mach-imx/mach-cpuimx27.c
arch/arm/mach-imx/mach-cpuimx35.c
arch/arm/mach-imx/mach-eukrea_cpuimx25.c
arch/arm/mach-imx/mach-imx27_visstrim_m10.c
arch/arm/mach-imx/mach-imx27ipcam.c
arch/arm/mach-imx/mach-imx27lite.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-imx/mach-kzm_arm11_01.c
arch/arm/mach-imx/mach-mx1ads.c
arch/arm/mach-imx/mach-mx21ads.c
arch/arm/mach-imx/mach-mx25_3ds.c
arch/arm/mach-imx/mach-mx27_3ds.c
arch/arm/mach-imx/mach-mx27ads.c
arch/arm/mach-imx/mach-mx31_3ds.c
arch/arm/mach-imx/mach-mx31ads.c
arch/arm/mach-imx/mach-mx31lilly.c
arch/arm/mach-imx/mach-mx31lite.c
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-imx/mach-mx35_3ds.c
arch/arm/mach-imx/mach-mxt_td60.c
arch/arm/mach-imx/mach-pca100.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mach-pcm038.c
arch/arm/mach-imx/mach-pcm043.c
arch/arm/mach-imx/mach-qong.c
arch/arm/mach-imx/mach-scb9328.c
arch/arm/mach-imx/mach-vpr200.c
arch/arm/mach-imx/src.c
arch/arm/mach-integrator/common.h
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/include/mach/system.h
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-iop13xx/include/mach/iop13xx.h
arch/arm/mach-iop13xx/include/mach/system.h
arch/arm/mach-iop13xx/iq81340mc.c
arch/arm/mach-iop13xx/iq81340sc.c
arch/arm/mach-iop13xx/setup.c
arch/arm/mach-iop32x/em7210.c
arch/arm/mach-iop32x/glantank.c
arch/arm/mach-iop32x/include/mach/system.h
arch/arm/mach-iop32x/iq31244.c
arch/arm/mach-iop32x/iq80321.c
arch/arm/mach-iop32x/n2100.c
arch/arm/mach-iop33x/include/mach/system.h
arch/arm/mach-iop33x/iq80331.c
arch/arm/mach-iop33x/iq80332.c
arch/arm/mach-ixp2000/core.c
arch/arm/mach-ixp2000/enp2611.c
arch/arm/mach-ixp2000/include/mach/platform.h
arch/arm/mach-ixp2000/include/mach/system.h
arch/arm/mach-ixp2000/ixdp2400.c
arch/arm/mach-ixp2000/ixdp2800.c
arch/arm/mach-ixp2000/ixdp2x01.c
arch/arm/mach-ixp23xx/core.c
arch/arm/mach-ixp23xx/espresso.c
arch/arm/mach-ixp23xx/include/mach/platform.h
arch/arm/mach-ixp23xx/include/mach/system.h
arch/arm/mach-ixp23xx/ixdp2351.c
arch/arm/mach-ixp23xx/roadrunner.c
arch/arm/mach-ixp4xx/avila-setup.c
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/coyote-setup.c
arch/arm/mach-ixp4xx/dsmg600-setup.c
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/gateway7001-setup.c
arch/arm/mach-ixp4xx/goramo_mlr.c
arch/arm/mach-ixp4xx/gtwx5715-setup.c
arch/arm/mach-ixp4xx/include/mach/platform.h
arch/arm/mach-ixp4xx/include/mach/system.h
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/arm/mach-ixp4xx/omixp-setup.c
arch/arm/mach-ixp4xx/vulcan-setup.c
arch/arm/mach-ixp4xx/wg302v2-setup.c
arch/arm/mach-kirkwood/common.c
arch/arm/mach-kirkwood/common.h
arch/arm/mach-kirkwood/d2net_v2-setup.c
arch/arm/mach-kirkwood/db88f6281-bp-setup.c
arch/arm/mach-kirkwood/dockstar-setup.c
arch/arm/mach-kirkwood/guruplug-setup.c
arch/arm/mach-kirkwood/include/mach/system.h
arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
arch/arm/mach-kirkwood/netspace_v2-setup.c
arch/arm/mach-kirkwood/netxbig_v2-setup.c
arch/arm/mach-kirkwood/openrd-setup.c
arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
arch/arm/mach-kirkwood/rd88f6281-setup.c
arch/arm/mach-kirkwood/sheevaplug-setup.c
arch/arm/mach-kirkwood/t5325-setup.c
arch/arm/mach-kirkwood/ts219-setup.c
arch/arm/mach-kirkwood/ts41x-setup.c
arch/arm/mach-ks8695/board-acs5k.c
arch/arm/mach-ks8695/board-dsm320.c
arch/arm/mach-ks8695/board-micrel.c
arch/arm/mach-ks8695/generic.h
arch/arm/mach-ks8695/include/mach/system.h
arch/arm/mach-ks8695/time.c
arch/arm/mach-lpc32xx/common.c
arch/arm/mach-lpc32xx/common.h
arch/arm/mach-lpc32xx/include/mach/system.h
arch/arm/mach-lpc32xx/phy3250.c
arch/arm/mach-mmp/aspenite.c
arch/arm/mach-mmp/avengers_lite.c
arch/arm/mach-mmp/brownstone.c
arch/arm/mach-mmp/common.c
arch/arm/mach-mmp/common.h
arch/arm/mach-mmp/flint.c
arch/arm/mach-mmp/gplugd.c
arch/arm/mach-mmp/include/mach/pxa168.h
arch/arm/mach-mmp/include/mach/system.h
arch/arm/mach-mmp/jasper.c
arch/arm/mach-mmp/pxa168.c
arch/arm/mach-mmp/tavorevb.c
arch/arm/mach-mmp/teton_bga.c
arch/arm/mach-mmp/ttc_dkb.c
arch/arm/mach-msm/include/mach/system.h
arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
arch/arm/mach-mv78xx0/common.c
arch/arm/mach-mv78xx0/common.h
arch/arm/mach-mv78xx0/db78x00-bp-setup.c
arch/arm/mach-mv78xx0/include/mach/system.h
arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
arch/arm/mach-mx5/board-cpuimx51.c
arch/arm/mach-mx5/board-cpuimx51sd.c
arch/arm/mach-mx5/board-mx50_rdp.c
arch/arm/mach-mx5/board-mx51_3ds.c
arch/arm/mach-mx5/board-mx51_babbage.c
arch/arm/mach-mx5/board-mx51_efikamx.c
arch/arm/mach-mx5/board-mx51_efikasb.c
arch/arm/mach-mx5/board-mx53_ard.c
arch/arm/mach-mx5/board-mx53_evk.c
arch/arm/mach-mx5/board-mx53_loco.c
arch/arm/mach-mx5/board-mx53_smd.c
arch/arm/mach-mx5/imx51-dt.c
arch/arm/mach-mx5/imx53-dt.c
arch/arm/mach-mxs/include/mach/common.h
arch/arm/mach-mxs/include/mach/system.h
arch/arm/mach-mxs/mach-m28evk.c
arch/arm/mach-mxs/mach-mx23evk.c
arch/arm/mach-mxs/mach-mx28evk.c
arch/arm/mach-mxs/mach-stmp378x_devb.c
arch/arm/mach-mxs/mach-tx28.c
arch/arm/mach-mxs/system.c
arch/arm/mach-netx/generic.c
arch/arm/mach-netx/generic.h
arch/arm/mach-netx/include/mach/system.h
arch/arm/mach-netx/nxdb500.c
arch/arm/mach-netx/nxdkn.c
arch/arm/mach-netx/nxeb500hmi.c
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-nomadik/cpu-8815.c
arch/arm/mach-nomadik/cpu-8815.h [new file with mode: 0644]
arch/arm/mach-nomadik/include/mach/setup.h
arch/arm/mach-nomadik/include/mach/system.h
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-generic.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-htcherald.c
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmtt.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/common.h
arch/arm/mach-omap1/reset.c
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-3630sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-am3517crane.c
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-apollon.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-cm-t3517.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-omap2/board-n8x0.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3logic.c
arch/arm/mach-omap2/board-omap3pandora.c
arch/arm/mach-omap2/board-omap3stalker.c
arch/arm/mach-omap2/board-omap3touchbook.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-rm680.c
arch/arm/mach-omap2/board-rx51.c
arch/arm/mach-omap2/board-ti8168evm.c
arch/arm/mach-omap2/board-zoom.c
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/prcm.c
arch/arm/mach-orion5x/common.c
arch/arm/mach-orion5x/common.h
arch/arm/mach-orion5x/d2net-setup.c
arch/arm/mach-orion5x/db88f5281-setup.c
arch/arm/mach-orion5x/dns323-setup.c
arch/arm/mach-orion5x/edmini_v2-setup.c
arch/arm/mach-orion5x/include/mach/system.h
arch/arm/mach-orion5x/kurobox_pro-setup.c
arch/arm/mach-orion5x/ls-chl-setup.c
arch/arm/mach-orion5x/ls_hgl-setup.c
arch/arm/mach-orion5x/lsmini-setup.c
arch/arm/mach-orion5x/mss2-setup.c
arch/arm/mach-orion5x/mv2120-setup.c
arch/arm/mach-orion5x/net2big-setup.c
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
arch/arm/mach-orion5x/rd88f5182-setup.c
arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
arch/arm/mach-orion5x/terastation_pro2-setup.c
arch/arm/mach-orion5x/ts209-setup.c
arch/arm/mach-orion5x/ts409-setup.c
arch/arm/mach-orion5x/ts78xx-setup.c
arch/arm/mach-orion5x/wnr854t-setup.c
arch/arm/mach-orion5x/wrt350n-v2-setup.c
arch/arm/mach-picoxcell/include/mach/system.h
arch/arm/mach-pnx4008/core.c
arch/arm/mach-pnx4008/include/mach/system.h
arch/arm/mach-prima2/common.h
arch/arm/mach-prima2/include/mach/system.h
arch/arm/mach-prima2/prima2.c
arch/arm/mach-prima2/rstc.c
arch/arm/mach-pxa/balloon3.c
arch/arm/mach-pxa/capc7117.c
arch/arm/mach-pxa/cm-x2xx.c
arch/arm/mach-pxa/cm-x300.c
arch/arm/mach-pxa/colibri-pxa270.c
arch/arm/mach-pxa/colibri-pxa300.c
arch/arm/mach-pxa/colibri-pxa320.c
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/csb726.c
arch/arm/mach-pxa/em-x270.c
arch/arm/mach-pxa/eseries.c
arch/arm/mach-pxa/ezx.c
arch/arm/mach-pxa/generic.h
arch/arm/mach-pxa/gumstix.c
arch/arm/mach-pxa/h5000.c
arch/arm/mach-pxa/himalaya.c
arch/arm/mach-pxa/hx4700.c
arch/arm/mach-pxa/icontrol.c
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/include/mach/system.h
arch/arm/mach-pxa/littleton.c
arch/arm/mach-pxa/lpd270.c
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/magician.c
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mioa701.c
arch/arm/mach-pxa/mp900.c
arch/arm/mach-pxa/palmld.c
arch/arm/mach-pxa/palmt5.c
arch/arm/mach-pxa/palmtc.c
arch/arm/mach-pxa/palmte2.c
arch/arm/mach-pxa/palmtreo.c
arch/arm/mach-pxa/palmtx.c
arch/arm/mach-pxa/palmz72.c
arch/arm/mach-pxa/pcm027.c
arch/arm/mach-pxa/poodle.c
arch/arm/mach-pxa/raumfeld.c
arch/arm/mach-pxa/reset.c
arch/arm/mach-pxa/saar.c
arch/arm/mach-pxa/saarb.c
arch/arm/mach-pxa/spitz.c
arch/arm/mach-pxa/stargate2.c
arch/arm/mach-pxa/tavorevb.c
arch/arm/mach-pxa/tavorevb3.c
arch/arm/mach-pxa/tosa.c
arch/arm/mach-pxa/trizeps4.c
arch/arm/mach-pxa/viper.c
arch/arm/mach-pxa/vpac270.c
arch/arm/mach-pxa/xcep.c
arch/arm/mach-pxa/z2.c
arch/arm/mach-pxa/zeus.c
arch/arm/mach-pxa/zylonite.c
arch/arm/mach-realview/core.h
arch/arm/mach-realview/include/mach/system.h
arch/arm/mach-realview/realview_eb.c
arch/arm/mach-realview/realview_pb1176.c
arch/arm/mach-realview/realview_pb11mp.c
arch/arm/mach-realview/realview_pba8.c
arch/arm/mach-realview/realview_pbx.c
arch/arm/mach-rpc/include/mach/system.h
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-s3c2410/include/mach/system-reset.h
arch/arm/mach-s3c64xx/include/mach/system.h
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/generic.h
arch/arm/mach-sa1100/h3100.c
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/include/mach/system.h
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-shark/core.c
arch/arm/mach-shark/include/mach/system.h
arch/arm/mach-shmobile/include/mach/system.h
arch/arm/mach-spear3xx/include/mach/generic.h
arch/arm/mach-spear3xx/spear300_evb.c
arch/arm/mach-spear3xx/spear310_evb.c
arch/arm/mach-spear3xx/spear320_evb.c
arch/arm/mach-spear6xx/include/mach/generic.h
arch/arm/mach-spear6xx/spear600_evb.c
arch/arm/mach-tegra/board-dt.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-seaboard.c
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/common.c
arch/arm/mach-tegra/include/mach/system.h
arch/arm/mach-u300/core.c
arch/arm/mach-u300/include/mach/platform.h
arch/arm/mach-u300/include/mach/system.h
arch/arm/mach-u300/u300.c
arch/arm/mach-ux500/include/mach/system.h
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/core.h
arch/arm/mach-versatile/include/mach/system.h
arch/arm/mach-versatile/versatile_ab.c
arch/arm/mach-versatile/versatile_dt.c
arch/arm/mach-versatile/versatile_pb.c
arch/arm/mach-vexpress/include/mach/system.h
arch/arm/mach-vexpress/v2m.c
arch/arm/mach-vt8500/include/mach/system.h
arch/arm/mach-w90x900/cpu.c
arch/arm/mach-w90x900/include/mach/system.h
arch/arm/mach-w90x900/mach-nuc910evb.c
arch/arm/mach-w90x900/mach-nuc950evb.c
arch/arm/mach-w90x900/mach-nuc960evb.c
arch/arm/mach-w90x900/nuc9xx.h
arch/arm/mach-zynq/include/mach/system.h
arch/arm/plat-iop/Makefile
arch/arm/plat-iop/restart.c [new file with mode: 0644]
arch/arm/plat-mxc/include/mach/common.h
arch/arm/plat-mxc/include/mach/system.h
arch/arm/plat-mxc/system.c
arch/arm/plat-omap/include/plat/system.h
arch/arm/plat-s3c24xx/cpu.c
arch/arm/plat-samsung/include/plat/system-reset.h
arch/arm/plat-spear/Makefile
arch/arm/plat-spear/include/plat/system.h
arch/arm/plat-spear/restart.c [new file with mode: 0644]
arch/arm/plat-tcc/include/mach/system.h

index 5daea2961d48b42f34102697149ab505ea558b1e..077c32326c638755d5e195e1a5a9b09edfff2538 100644 (file)
@@ -234,6 +234,7 @@ extern int iop3xx_get_init_atu(void);
 void iop3xx_map_io(void);
 void iop_init_cp6_handler(void);
 void iop_init_time(unsigned long tickrate);
+void iop3xx_restart(char, const char *);
 
 static inline u32 read_tmr0(void)
 {
index 53785828744ca687be6a6aec35176289d1a2cbe4..e4c96cc6ec0cf470e214a00e72008925379c74bb 100644 (file)
@@ -108,7 +108,6 @@ extern void __show_regs(struct pt_regs *);
 extern int __pure cpu_architecture(void);
 extern void cpu_init(void);
 
-void arm_machine_restart(char mode, const char *cmd);
 void soft_restart(unsigned long);
 extern void (*arm_pm_restart)(char str, const char *cmd);
 
index eeb3e16c60465616067d7681a47b35f8752c4d78..17859ce4e7be3326902b6b828fab9a6ec4d1c190 100644 (file)
@@ -117,14 +117,8 @@ void soft_restart(unsigned long addr)
        cpu_reset(addr);
 }
 
-void arm_machine_restart(char mode, const char *cmd)
+static void null_restart(char mode, const char *cmd)
 {
-       /* Disable interrupts first */
-       local_irq_disable();
-       local_fiq_disable();
-
-       /* Call the architecture specific reboot code. */
-       arch_reset(mode, cmd);
 }
 
 /*
@@ -133,7 +127,7 @@ void arm_machine_restart(char mode, const char *cmd)
 void (*pm_power_off)(void);
 EXPORT_SYMBOL(pm_power_off);
 
-void (*arm_pm_restart)(char str, const char *cmd) = arm_machine_restart;
+void (*arm_pm_restart)(char str, const char *cmd) = null_restart;
 EXPORT_SYMBOL_GPL(arm_pm_restart);
 
 static void do_nothing(void *unused)
index ecdd54dd68c6c0139d10ca50595283bcf94545d7..29373397d2df83c6766a5ee87c098ec55c3892df 100644 (file)
@@ -313,7 +313,7 @@ static struct at91_gpio_bank at91cap9_gpio[] = {
        }
 };
 
-static void at91cap9_reset(void)
+static void at91cap9_restart(char mode, const char *cmd)
 {
        at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
 }
@@ -335,7 +335,7 @@ static void __init at91cap9_map_io(void)
 
 static void __init at91cap9_initialize(void)
 {
-       at91_arch_reset = at91cap9_reset;
+       arm_pm_restart = at91cap9_restart;
        pm_power_off = at91cap9_poweroff;
        at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1);
 
index 713d3bdbd28447a7280adb746f4acc13af602cfd..430a9fdc3dbf5e04662802c17f6cba825d1a16da 100644 (file)
@@ -288,7 +288,7 @@ static struct at91_gpio_bank at91rm9200_gpio[] = {
        }
 };
 
-static void at91rm9200_reset(void)
+static void at91rm9200_restart(char mode, const char *cmd)
 {
        /*
         * Perform a hardware reset with the use of the Watchdog timer.
@@ -309,7 +309,7 @@ static void __init at91rm9200_map_io(void)
 
 static void __init at91rm9200_initialize(void)
 {
-       at91_arch_reset = at91rm9200_reset;
+       arm_pm_restart = at91rm9200_restart;
        at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1)
                        | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3)
                        | (1 << AT91RM9200_ID_IRQ4) | (1 << AT91RM9200_ID_IRQ5)
index b84a9f642f5953a5ff527d3b593b1a628b61232b..ec9e23dbce0f9a996489ca97ad2c3f4b3f002b3b 100644 (file)
@@ -327,7 +327,7 @@ static void __init at91sam9260_map_io(void)
 
 static void __init at91sam9260_initialize(void)
 {
-       at91_arch_reset = at91sam9_alt_reset;
+       arm_pm_restart = at91sam9_alt_restart;
        pm_power_off = at91sam9260_poweroff;
        at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1)
                        | (1 << AT91SAM9260_ID_IRQ2);
index 658a5185abfd44cf4671c5d5fa7c6f44b4fc229e..19ac7c0729a0bc2d38b1ac9a2dbce81c299f5604 100644 (file)
@@ -287,7 +287,7 @@ static void __init at91sam9261_map_io(void)
 
 static void __init at91sam9261_initialize(void)
 {
-       at91_arch_reset = at91sam9_alt_reset;
+       arm_pm_restart = at91sam9_alt_restart;
        pm_power_off = at91sam9261_poweroff;
        at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
                        | (1 << AT91SAM9261_ID_IRQ2);
index f83fbb0ee0c58e9bdaab924071bedaf148096bb2..50d016310031aefd557da1323d82549edc9db595 100644 (file)
@@ -305,7 +305,7 @@ static void __init at91sam9263_map_io(void)
 
 static void __init at91sam9263_initialize(void)
 {
-       at91_arch_reset = at91sam9_alt_reset;
+       arm_pm_restart = at91sam9_alt_restart;
        pm_power_off = at91sam9263_poweroff;
        at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1);
 
index e0256deb91fbfd7acc478e29609831fcfdf39c12..d3f931c5942e9078bcb31803e50a6fefed398c8b 100644 (file)
  */
 
 #include <linux/linkage.h>
-#include <asm/system.h>
 #include <mach/hardware.h>
 #include <mach/at91sam9_sdramc.h>
 #include <mach/at91_rstc.h>
 
                        .arm
 
-                       .globl  at91sam9_alt_reset
+                       .globl  at91sam9_alt_restart
 
-at91sam9_alt_reset:    mrc     p15, 0, r0, c1, c0, 0
-                       orr     r0, r0, #CR_I
-                       mcr     p15, 0, r0, c1, c0, 0           @ enable I-cache
-
-                       ldr     r0, .at91_va_base_sdramc        @ preload constants
+at91sam9_alt_restart:  ldr     r0, .at91_va_base_sdramc        @ preload constants
                        ldr     r1, .at91_va_base_rstc_cr
 
                        mov     r2, #1
index 318b0407ea041fa8d8dae59c106d8427ea48b8ec..ff21f7a60c63dfa0e32bbfb3e999783109925e9f 100644 (file)
@@ -317,7 +317,7 @@ static struct at91_gpio_bank at91sam9g45_gpio[] = {
        }
 };
 
-static void at91sam9g45_reset(void)
+static void at91sam9g45_restart(char mode, const char *cmd)
 {
        at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
 }
@@ -340,7 +340,7 @@ static void __init at91sam9g45_map_io(void)
 
 static void __init at91sam9g45_initialize(void)
 {
-       at91_arch_reset = at91sam9g45_reset;
+       arm_pm_restart = at91sam9g45_restart;
        pm_power_off = at91sam9g45_poweroff;
        at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0);
 
index a238105d2c11dabb385c7f8bbbcfa20be87b2982..61cbb46f5b0eed6b8bd5a8269efa657696b1e3c2 100644 (file)
@@ -292,7 +292,7 @@ static void __init at91sam9rl_map_io(void)
 
 static void __init at91sam9rl_initialize(void)
 {
-       at91_arch_reset = at91sam9_alt_reset;
+       arm_pm_restart = at91sam9_alt_restart;
        pm_power_off = at91sam9rl_poweroff;
        at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0);
 
index 938b34f577419b9dba43f466c3d59dfe4b73fe69..7f4503bc4cbb10f89da3b3bf025829ebaa9319b5 100644 (file)
@@ -57,7 +57,7 @@ extern void at91_irq_suspend(void);
 extern void at91_irq_resume(void);
 
 /* reset */
-extern void at91sam9_alt_reset(void);
+extern void at91sam9_alt_restart(char, const char *);
 
  /* GPIO */
 #define AT91RM9200_PQFP                3       /* AT91RM9200 PQFP package has 3 banks */
@@ -71,5 +71,4 @@ struct at91_gpio_bank {
 extern void __init at91_gpio_init(struct at91_gpio_bank *, int nr_banks);
 extern void __init at91_gpio_irq_setup(void);
 
-extern void (*at91_arch_reset)(void);
 extern int at91_extern_irq;
index 36af14bc13bbbbc88aad80487b6d3cc85b924f0b..cbd64f3bcecde0aa3cfeed86277bba1870acc063 100644 (file)
@@ -47,13 +47,4 @@ static inline void arch_idle(void)
 #endif
 }
 
-void (*at91_arch_reset)(void);
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /* call the CPU-specific reset function */
-       if (at91_arch_reset)
-               (at91_arch_reset)();
-}
-
 #endif
index 31a143592c81deeb481b53293c2d6dc7c57f2e0d..9e5e7552498c362c7880b76d3e820640cddfc555 100644 (file)
@@ -49,7 +49,29 @@ HW_DECLARE_SPINLOCK(gpio)
 #endif
 
 /* sysctl */
-int bcmring_arch_warm_reboot;  /* do a warm reboot on hard reset */
+static int bcmring_arch_warm_reboot;   /* do a warm reboot on hard reset */
+
+static void bcmring_restart(char mode, const char *cmd)
+{
+       printk("arch_reset:%c %x\n", mode, bcmring_arch_warm_reboot);
+
+       if (mode == 'h') {
+               /* Reboot configured in proc entry */
+               if (bcmring_arch_warm_reboot) {
+                       printk("warm reset\n");
+                       /* Issue Warm reset (do not reset ethernet switch, keep alive) */
+                       chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_WARM);
+               } else {
+                       /* Force reset of everything */
+                       printk("force reset\n");
+                       chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_SOFT);
+               }
+       } else {
+               /* Force reset of everything */
+               printk("force reset\n");
+               chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_SOFT);
+       }
+}
 
 static struct ctl_table_header *bcmring_sysctl_header;
 
@@ -173,4 +195,5 @@ MACHINE_START(BCMRING, "BCMRING")
        .init_irq = bcmring_init_irq,
        .timer = &bcmring_timer,
        .init_machine = bcmring_init_machine
+       .restart = bcmring_restart,
 MACHINE_END
index 38b37060d42683a9f09d9340ad001914410b4e25..cb78250db64983fe8ed2bca3c76d7941a4726a93 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/csp/chipcHw_inline.h>
-
-extern int bcmring_arch_warm_reboot;
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       printk("arch_reset:%c %x\n", mode, bcmring_arch_warm_reboot);
-
-       if (mode == 'h') {
-               /* Reboot configured in proc entry */
-               if (bcmring_arch_warm_reboot) {
-                       printk("warm reset\n");
-                       /* Issue Warm reset (do not reset ethernet switch, keep alive) */
-                       chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_WARM);
-               } else {
-                       /* Force reset of everything */
-                       printk("force reset\n");
-                       chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_SOFT);
-               }
-       } else {
-               /* Force reset of everything */
-               printk("force reset\n");
-               chipcHw_reset(chipcHw_REG_SOFT_RESET_CHIP_SOFT);
-       }
-}
-
 #endif
index 0276091b7f86d406cd2bd382921fbac1d6e7a48b..3fb79a1d0bde3e94f9804d9d0a4f47e1e490a937 100644 (file)
@@ -68,5 +68,6 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
        .map_io         = autcpu12_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
 
index 25b3bfd0e85aa56679973b6cbfd1024b3817051b..c314f49d6ef66dd7eda503654f5ed67899ffe9a2 100644 (file)
@@ -59,4 +59,5 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
        .map_io         = cdb89712_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
index 1df9ec67aa9228fcdfa02276650d9c156c94af74..a70147e347ac99516990871761e1c8d72c69aba5 100644 (file)
@@ -60,4 +60,5 @@ MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame")
        .map_io         = ceiva_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
index 80496c09ac59efd63746560cf17a994dde5bfaec..dbc7842639dccb6f48c9481184caff452a33779e 100644 (file)
@@ -41,5 +41,6 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
        .map_io         = clps711x_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
 
index ced2a4e406f470286742c0d3e1f8a11e12d2dd0d..ab1711b9b4d6324f039dfc12a63802b53937daf9 100644 (file)
@@ -220,3 +220,8 @@ struct sys_timer clps711x_timer = {
        .init           = clps711x_timer_init,
        .offset         = clps711x_gettimeoffset,
 };
+
+void clps711x_restart(char mode, const char *cmd)
+{
+       soft_restart(0);
+}
index 9721f6111dc0bb567546288a612123014c005087..5fad0b4f40ad1ab9635c20fe65437b52de23632f 100644 (file)
@@ -62,4 +62,5 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
        .reserve        = edb7211_reserve,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
index d99256687298dae6f79014eb7d5477c43352291d..3a3f0b702cb4777c50b399b861e81f5b3db1aa8b 100644 (file)
@@ -78,4 +78,5 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
        .map_io         = clps711x_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
index 6c119937d398726f55cdd5d0e2cba57f7db000c4..23d6ef8c84daa5a7de5dc35a56e848217bfe2b8b 100644 (file)
@@ -32,9 +32,4 @@ static inline void arch_idle(void)
        mov     r0, r0");
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       soft_restart(0);
-}
-
 #endif
index 6ecea95f38b2f92b90753fbf3dca19cd30af0a53..42ee8f33eafbaf7421c6db5b5dd0630971fc660b 100644 (file)
@@ -93,6 +93,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
        .map_io         = p720t_map_io,
        .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
+       .restart        = clps711x_restart,
 MACHINE_END
 
 static int p720t_hw_init(void)
index 594852fe24cc1dfe517e904e383cc677c73a819e..2c5fb4c7e509b8786fb1ba0d45cb974bc373f4d2 100644 (file)
@@ -204,4 +204,5 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
        .timer          = &cns3xxx_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = cns3420_init,
+       .restart        = cns3xxx_restart,
 MACHINE_END
index fcd225343c61c6b18535edcd2ce0230db8e65348..4894b8c17151330ff956ae490608728b629b4e12 100644 (file)
@@ -22,5 +22,6 @@ static inline void cns3xxx_l2x0_init(void) {}
 void __init cns3xxx_map_io(void);
 void __init cns3xxx_init_irq(void);
 void cns3xxx_power_off(void);
+void cns3xxx_restart(char, const char *);
 
 #endif /* __CNS3XXX_CORE_H */
index 4f16c9b79f784e970e1e467b8dafbeb7f7feef61..9e56b7dc133a35448ea2fc0a1a29446b33bfb3b4 100644 (file)
@@ -11,7 +11,6 @@
 #ifndef __MACH_SYSTEM_H
 #define __MACH_SYSTEM_H
 
-#include <linux/io.h>
 #include <asm/proc-fns.h>
 
 static inline void arch_idle(void)
@@ -23,6 +22,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-void arch_reset(char mode, const char *cmd);
-
 #endif
index 0c04678615ceade16015442eeefada0ae1623c7d..36458080332ad36ce92bb232bc00fd876f9aa58b 100644 (file)
@@ -11,9 +11,9 @@
 #include <linux/io.h>
 #include <linux/delay.h>
 #include <linux/atomic.h>
-#include <mach/system.h>
 #include <mach/cns3xxx.h>
 #include <mach/pm.h>
+#include "core.h"
 
 void cns3xxx_pwr_clk_en(unsigned int block)
 {
@@ -89,7 +89,7 @@ void cns3xxx_pwr_soft_rst(unsigned int block)
 }
 EXPORT_SYMBOL(cns3xxx_pwr_soft_rst);
 
-void arch_reset(char mode, const char *cmd)
+void cns3xxx_restart(char mode, const char *cmd)
 {
        /*
         * To reset, we hit the on-board reset register
index 11c3db985285880ac7a2f22b13b51ff677fcae46..dc1afe5be20cc3d305c178faaec0bfd1633e4e3f 100644 (file)
@@ -682,4 +682,5 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
        .timer          = &davinci_timer,
        .init_machine   = da830_evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = da8xx_restart,
 MACHINE_END
index 1d7d2499522674f94143771e84aa26f323869ac7..7f09460184a30b83ab3860ab8cbe9837fff984ce 100644 (file)
@@ -1411,4 +1411,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
        .timer          = &davinci_timer,
        .init_machine   = da850_evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = da8xx_restart,
 MACHINE_END
index 4e0e707c313d7b9e51f87acbece9b3e0af3a97f3..275341f159fb6ee6cc0ddef2ca04bf14349eb913 100644 (file)
@@ -357,4 +357,5 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
        .timer        = &davinci_timer,
        .init_machine = dm355_evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
index ff2d2413279a26482411dcbb8728266b93e8bbe4..e99db28181ae8ad518a08dfafbb57fa6de4d09f0 100644 (file)
@@ -276,4 +276,5 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
        .timer        = &davinci_timer,
        .init_machine = dm355_leopard_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
index 1918ae711428b3d5b9cf2556c212bfc156f90664..4eff4996f8000795ad0eb8131ac3b99b52956d70 100644 (file)
@@ -618,5 +618,6 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
        .timer          = &davinci_timer,
        .init_machine   = dm365_evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
 
index 0cf8abf78d33d878acd1dbf3480e7d92403e2c66..a64b49cfedcad5f495ac2e360751e045036ca2cd 100644 (file)
@@ -719,4 +719,5 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
        .timer        = &davinci_timer,
        .init_machine = davinci_evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
index e574d7f837a850e4ddd5efb02f102c47d4e10cd9..9d66fd37d42854fc97e7d326ad388f8156485866 100644 (file)
@@ -799,6 +799,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
        .timer        = &davinci_timer,
        .init_machine = evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
 
 MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
@@ -808,5 +809,6 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
        .timer        = &davinci_timer,
        .init_machine = evm_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
 
index 3cfff555e8f22a842eb75f3614d5e5605eaf642b..672d820e2aa4c73d93fe128cd233d99ae2fa8eaa 100644 (file)
@@ -573,4 +573,5 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
        .timer          = &davinci_timer,
        .init_machine   = mityomapl138_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = da8xx_restart,
 MACHINE_END
index e5f231aefee428bfd26cde4b4b05d7de45627992..6c4a16415d476f58fbdadb88308cb803a9019956 100644 (file)
@@ -278,4 +278,5 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
        .timer          = &davinci_timer,
        .init_machine = davinci_ntosd2_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
index c6701e4a795c3da5ebe3a14f1d2e770e8a6231aa..e7c0c7c534937132929cf4cdd760fb4c63f4118b 100644 (file)
@@ -344,4 +344,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
        .timer          = &davinci_timer,
        .init_machine   = omapl138_hawk_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = da8xx_restart,
 MACHINE_END
index 5dd4da9d23083e83010725df9a83bee61e9f2b06..0b136a831c59563100312646d0b1b1324e8c4e20 100644 (file)
@@ -157,4 +157,5 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
        .timer        = &davinci_timer,
        .init_machine = davinci_sffsdr_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = davinci_restart,
 MACHINE_END
index f69e40a29e0256005801d46756529dadb3e1d5db..5f14e30b00d896a79c83ded76929543c956fb93f 100644 (file)
@@ -283,4 +283,5 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")
        .timer          = &davinci_timer,
        .init_machine   = tnetv107x_evm_board_init,
        .dma_zone_size  = SZ_128M,
+       .restart        = tnetv107x_restart,
 MACHINE_END
index 865ffe5899ac4eb2864176542a150c3ca2524a87..cb9b2e47510c8de2118bd80364f4b60b4308e07b 100644 (file)
@@ -97,9 +97,6 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info)
        local_flush_tlb_all();
        flush_cache_all();
 
-       if (!davinci_soc_info.reset)
-               davinci_soc_info.reset = davinci_watchdog_reset;
-
        /*
         * We want to check CPU revision early for cpu_is_xxxx() macros.
         * IO space mapping must be initialized before we can do that.
index a6bf5dcaef1341863d614412fe3bc29275f44a47..deee5c2da7546b987be46b596b00bef4bbf04d1f 100644 (file)
@@ -1201,7 +1201,6 @@ static struct davinci_soc_info davinci_soc_info_da830 = {
        .gpio_irq               = IRQ_DA8XX_GPIO0,
        .serial_dev             = &da8xx_serial_device,
        .emac_pdata             = &da8xx_emac_pdata,
-       .reset_device           = &da8xx_wdt_device,
 };
 
 void __init da830_init(void)
index b047f87022785477ffafc8336bfd438f27e51ae9..0ed7fdb64efbf5211a8e5b8fc19bc5cf56fc3b97 100644 (file)
@@ -1121,7 +1121,6 @@ static struct davinci_soc_info davinci_soc_info_da850 = {
        .emac_pdata             = &da8xx_emac_pdata,
        .sram_dma               = DA8XX_ARM_RAM_BASE,
        .sram_len               = SZ_8K,
-       .reset_device           = &da8xx_wdt_device,
 };
 
 void __init da850_init(void)
index 68def71888685b0277b1dacab25bd5bfaef1c09e..42dbf3dc11abe780592cb07ddc72651e5a30c259 100644 (file)
@@ -363,6 +363,11 @@ struct platform_device da8xx_wdt_device = {
        .resource       = da8xx_watchdog_resources,
 };
 
+void da8xx_restart(char mode, const char *cmd)
+{
+       davinci_watchdog_reset(&da8xx_wdt_device);
+}
+
 int __init da8xx_register_watchdog(void)
 {
        return platform_device_register(&da8xx_wdt_device);
index 806a2f02b9808abf870ac9b9b0e1c77d99e60bb4..50c0156b42628db2402967054430dcce027004bf 100644 (file)
@@ -291,6 +291,11 @@ struct platform_device davinci_wdt_device = {
        .resource       = wdt_resources,
 };
 
+void davinci_restart(char mode, const char *cmd)
+{
+       davinci_watchdog_reset(&davinci_wdt_device);
+}
+
 static void davinci_init_wdt(void)
 {
        platform_device_register(&davinci_wdt_device);
index fe520d4167a2c34d3cc794ed3e836049bc926594..19667cfc5de0ec9ed10829a97ba225f7d2143037 100644 (file)
@@ -853,7 +853,6 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
        .serial_dev             = &dm355_serial_device,
        .sram_dma               = 0x00010000,
        .sram_len               = SZ_32K,
-       .reset_device           = &davinci_wdt_device,
 };
 
 void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata)
index 679e168dce34e55f4c711d12c01eab4300174bac..f15b435cc655c79003607cde11e599938cb05129 100644 (file)
@@ -1083,7 +1083,6 @@ static struct davinci_soc_info davinci_soc_info_dm365 = {
        .emac_pdata             = &dm365_emac_pdata,
        .sram_dma               = 0x00010000,
        .sram_len               = SZ_32K,
-       .reset_device           = &davinci_wdt_device,
 };
 
 void __init dm365_init_asp(struct snd_platform_data *pdata)
index 3470983aa343c6a9d30a0b50cdcd3570cd6882e0..0800f9cf33bbb0e2c0bf03dd1ce8fb4e34cb8d30 100644 (file)
@@ -767,7 +767,6 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
        .emac_pdata             = &dm644x_emac_pdata,
        .sram_dma               = 0x00008000,
        .sram_len               = SZ_16K,
-       .reset_device           = &davinci_wdt_device,
 };
 
 void __init dm644x_init_asp(struct snd_platform_data *pdata)
index 0b68ed534f8e6d3d0a16effc5cc4811a8f94f85d..f8e07dca568cb7dbeba8f16d2d0d5212dbdc7a54 100644 (file)
@@ -855,7 +855,6 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
        .emac_pdata             = &dm646x_emac_pdata,
        .sram_dma               = 0x10010000,
        .sram_len               = SZ_32K,
-       .reset_device           = &davinci_wdt_device,
 };
 
 void __init dm646x_init_mcasp0(struct snd_platform_data *pdata)
index a57cba21e21e1e150a949971deda4f46f38c50d7..5cd39a4e0c966d4823d2c438edf8376216f35ae6 100644 (file)
@@ -77,14 +77,13 @@ struct davinci_soc_info {
        struct emac_platform_data       *emac_pdata;
        dma_addr_t                      sram_dma;
        unsigned                        sram_len;
-       struct platform_device          *reset_device;
-       void                            (*reset)(struct platform_device *);
 };
 
 extern struct davinci_soc_info davinci_soc_info;
 
 extern void davinci_common_init(struct davinci_soc_info *soc_info);
 extern void davinci_init_ide(void);
+void davinci_restart(char mode, const char *cmd);
 
 /* standard place to map on-chip SRAMs; they *may* support DMA */
 #define SRAM_VIRT      0xfffe0000
index eaca7d8b9d68fb61c75f5da8dd7d6e787da8ef8c..ee3461d7ec1b9e1302f3bab314ee656200468d6e 100644 (file)
@@ -91,6 +91,7 @@ int da8xx_register_cpuidle(void);
 void __iomem * __init da8xx_get_mem_ctlr(void);
 int da850_register_pm(struct platform_device *pdev);
 int __init da850_register_sata(unsigned long refclkpn);
+void da8xx_restart(char mode, const char *cmd);
 
 extern struct platform_device da8xx_serial_device;
 extern struct emac_platform_data da8xx_emac_pdata;
index e65629c20769047ec4900d89f3bee1e09ac552fc..fcb7a015aba56e443eb9bea995aa60a063150c1e 100644 (file)
@@ -18,10 +18,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (davinci_soc_info.reset)
-               davinci_soc_info.reset(davinci_soc_info.reset_device);
-}
-
 #endif /* __ASM_ARCH_SYSTEM_H */
index 89c1fdc63c0b3924379798a7cc9552fa40d899ef..83e5926f3c46966f29b01c227d343a64dc12a7da 100644 (file)
@@ -54,6 +54,7 @@ extern struct platform_device tnetv107x_serial_device;
 extern void __init tnetv107x_init(void);
 extern void __init tnetv107x_devices_init(struct tnetv107x_device_info *);
 extern void __init tnetv107x_irq_init(void);
+void tnetv107x_restart(char mode, const char *cmd);
 
 #endif
 
index 409bb869c7c766c071bf9838375b2df1410b14f3..dc1a209b9b66624fdfa8f748e237b682e3cec18a 100644 (file)
@@ -730,6 +730,11 @@ static void tnetv107x_watchdog_reset(struct platform_device *pdev)
        __raw_writel(1, &regs->kick);
 }
 
+void tnetv107x_restart(char mode, const char *cmd)
+{
+       tnetv107x_watchdog_reset(&tnetv107x_wdt_device);
+}
+
 static struct davinci_soc_info tnetv107x_soc_info = {
        .io_desc                = io_desc,
        .io_desc_num            = ARRAY_SIZE(io_desc),
@@ -752,8 +757,6 @@ static struct davinci_soc_info tnetv107x_soc_info = {
        .gpio_num               = TNETV107X_N_GPIO,
        .timer_info             = &timer_info,
        .serial_dev             = &tnetv107x_serial_device,
-       .reset                  = tnetv107x_watchdog_reset,
-       .reset_device           = &tnetv107x_wdt_device,
 };
 
 void __init tnetv107x_init(void)
index c8a406f7e946f70908061b0040361a122a6c8775..792b4e2e24f1e6d719f43376f9590a3fae813359 100644 (file)
@@ -93,4 +93,5 @@ MACHINE_START(CM_A510, "Compulab CM-A510 Board")
        .init_early     = dove_init_early,
        .init_irq       = dove_init_irq,
        .timer          = &dove_timer,
+       .restart        = dove_restart,
 MACHINE_END
index a9e0dae86a26f52cccd241a686ae7555b83b48cd..13bb236cd0cdd63dc15c0093d06ca6eabdef8775 100644 (file)
@@ -292,3 +292,19 @@ void __init dove_init(void)
        dove_xor0_init();
        dove_xor1_init();
 }
+
+void dove_restart(char mode, const char *cmd)
+{
+       /*
+        * Enable soft reset to assert RSTOUTn.
+        */
+       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
+
+       /*
+        * Assert soft reset.
+        */
+       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
+
+       while (1)
+               ;
+}
index 6a2046e4470678215675c46b165a30d8a38f664d..42027305c107984f9efde233a1b4a18f6c0cc4c5 100644 (file)
@@ -39,5 +39,6 @@ void dove_spi1_init(void);
 void dove_i2c_init(void);
 void dove_sdio0_init(void);
 void dove_sdio1_init(void);
+void dove_restart(char, const char *);
 
 #endif
index 11ea34e4fc7657838d63bbc8d20d916eb0c83be0..ea77ae430b2d018f034f536471c306cf2a68db1b 100644 (file)
@@ -100,4 +100,5 @@ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
        .init_early     = dove_init_early,
        .init_irq       = dove_init_irq,
        .timer          = &dove_timer,
+       .restart        = dove_restart,
 MACHINE_END
index 356afda56853b1667ba3e61d9d79a8eb8bae64ff..3027954f616246befe1245b9d634eaea8053bb9d 100644 (file)
@@ -9,28 +9,9 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/bridge-regs.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Enable soft reset to assert RSTOUTn.
-        */
-       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
-
-       /*
-        * Assert soft reset.
-        */
-       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
-
-       while (1)
-               ;
-}
-
-
 #endif
index ce3ed244c4b0319afb3f2ecb0a64fe4cf84e564f..294aad07f7a05eaabcfe9b6fb7ac8d48ca1cfe10 100644 (file)
@@ -278,6 +278,11 @@ static int __init ebsa110_init(void)
 
 arch_initcall(ebsa110_init);
 
+static void ebsa110_restart(char mode, const char *cmd)
+{
+       soft_restart(0x80000000);
+}
+
 MACHINE_START(EBSA110, "EBSA110")
        /* Maintainer: Russell King */
        .atag_offset    = 0x400,
@@ -287,4 +292,5 @@ MACHINE_START(EBSA110, "EBSA110")
        .map_io         = ebsa110_map_io,
        .init_irq       = ebsa110_init_irq,
        .timer          = &ebsa110_timer,
+       .restart        = ebsa110_restart,
 MACHINE_END
index 0d5df72a03f6bb622d4a6b0aa90e07763c7ee462..2e4af65edb6fc0e7efd5336ebb8db59d01c693b4 100644 (file)
@@ -34,6 +34,4 @@ static inline void arch_idle(void)
        asm volatile ("mcr p15, 0, ip, c15, c1, 2" : : : "cc");
 }
 
-#define arch_reset(mode, cmd)  soft_restart(0x80000000)
-
 #endif
index d9b0ea2ba4d80c6769fe6b822c759307a2bd1585..681e939407d4bc907dfb99f528992c12bb462eec 100644 (file)
@@ -40,4 +40,5 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = adssphere_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index 2432a6b7dcac79b8f83e8261198835e45d1cd02f..24203f9a67967df314a6d3776d6ac581a8d22fb3 100644 (file)
@@ -906,3 +906,15 @@ void __init ep93xx_init_devices(void)
        platform_device_register(&ep93xx_ohci_device);
        platform_device_register(&ep93xx_leds);
 }
+
+void ep93xx_restart(char mode, const char *cmd)
+{
+       /*
+        * Set then clear the SWRST bit to initiate a software reset
+        */
+       ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_SWRST);
+       ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_SWRST);
+
+       while (1)
+               ;
+}
index 9bbae0835f27925037498db672836100d2490c60..d115653edca3e3cd9632fcfb14ebb616dad7a985 100644 (file)
@@ -254,6 +254,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -266,6 +267,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -278,6 +280,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -290,6 +293,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -302,6 +306,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -314,6 +319,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -326,6 +332,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -338,5 +345,6 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
index 1dd32a7c5f151767037a6f365232589ec1d909ca..af46970dc58e78c2a484c4db0351c1eb8f94ab4b 100644 (file)
@@ -40,4 +40,5 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = gesbc9312_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index 50660455b1d8bbaca6f221e8a8f7aa1710816057..d4c934931f9d4cbf85c580355a0115f154ca241e 100644 (file)
@@ -66,4 +66,6 @@ void ep93xx_register_ac97(void);
 void ep93xx_init_devices(void);
 extern struct sys_timer ep93xx_timer;
 
+void ep93xx_restart(char, const char *);
+
 #endif
index bdf6c4f1feef9418cf5bc58f8ee70f8cd4949222..b5bec7cb9b52384f8eb499202f0e13f5b65b0abf 100644 (file)
@@ -1,22 +1,7 @@
 /*
  * arch/arm/mach-ep93xx/include/mach/system.h
  */
-
-#include <mach/hardware.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Set then clear the SWRST bit to initiate a software reset
-        */
-       ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_SWRST);
-       ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_SWRST);
-
-       while (1)
-               ;
-}
index a6dae6c2e3c1f96b749eb8526fccfbd7cf4b04d7..7b98084f0c97bf14e8830a30b3dd18b10d5a3163 100644 (file)
@@ -84,6 +84,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -96,6 +97,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -108,6 +110,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
@@ -120,5 +123,6 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
 #endif
index 40121ba8e711f76359d8017ded27d127aa1843b1..f4e553eca21c7d7c4cfdfd406489a34623945592 100644 (file)
@@ -84,4 +84,5 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = simone_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index ec7c63ff01e22e4e62f7e678069778bcd828fac9..fd846331ddff9119023c2a726adae50a16578f6f 100644 (file)
@@ -181,4 +181,5 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = snappercl15_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index 760384e6407de90adc04fd78781df2ef2ba7da67..79f8ecf07a190a082ac4da524ef185faea62715a 100644 (file)
@@ -251,4 +251,5 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = ts72xx_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index d96e4dbec6a8c6fc28a32c0b1e239db1437323f0..03dd4012043eb29a39b7abcf9e0d8bee92c77562 100644 (file)
@@ -361,4 +361,5 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")
        .init_irq       = ep93xx_init_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = vision_init_machine,
+       .restart        = ep93xx_restart,
 MACHINE_END
index 60b6774e1eaa069c3e49dd357eb22d1502cad9f3..25b453601accc98e403f061b66762df8be65389f 100644 (file)
@@ -91,4 +91,5 @@ MACHINE_START(CATS, "Chalice-CATS")
        .map_io         = footbridge_map_io,
        .init_irq       = footbridge_init_irq,
        .timer          = &isa_timer,
+       .restart        = footbridge_restart,
 MACHINE_END
index 38a44f9b9da255affb155c4503e4641a5974b42a..41978ee4f9d0424639422adaa82789f0064c0776 100644 (file)
@@ -199,6 +199,33 @@ void __init footbridge_map_io(void)
                iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
 }
 
+void footbridge_restart(char mode, const char *cmd)
+{
+       if (mode == 's') {
+               /* Jump into the ROM */
+               soft_restart(0x41000000);
+       } else {
+               /*
+                * Force the watchdog to do a CPU reset.
+                *
+                * After making sure that the watchdog is disabled
+                * (so we can change the timer registers) we first
+                * enable the timer to autoreload itself.  Next, the
+                * timer interval is set really short and any
+                * current interrupt request is cleared (so we can
+                * see an edge transition).  Finally, TIMER4 is
+                * enabled as the watchdog.
+                */
+               *CSR_SA110_CNTL &= ~(1 << 13);
+               *CSR_TIMER4_CNTL = TIMER_CNTL_ENABLE |
+                                  TIMER_CNTL_AUTORELOAD |
+                                  TIMER_CNTL_DIV16;
+               *CSR_TIMER4_LOAD = 0x2;
+               *CSR_TIMER4_CLR  = 0;
+               *CSR_SA110_CNTL |= (1 << 13);
+       }
+}
+
 #ifdef CONFIG_FOOTBRIDGE_ADDIN
 
 static inline unsigned long fb_bus_sdram_offset(void)
index b05e662d21ad8162ec21542849116efb05fda0a2..c9767b892cb2135676e9dd1a82f3af2610c77965 100644 (file)
@@ -8,3 +8,4 @@ extern void footbridge_map_io(void);
 extern void footbridge_init_irq(void);
 
 extern void isa_init_irq(unsigned int irq);
+extern void footbridge_restart(char, const char *);
index 012210cf7d16876c24f7e1dccd8bce07ab1b1d27..27716a7e5fc16c88eab0bbf2bb4ad9a9f7b1df00 100644 (file)
@@ -21,5 +21,6 @@ MACHINE_START(EBSA285, "EBSA285")
        .map_io         = footbridge_map_io,
        .init_irq       = footbridge_init_irq,
        .timer          = &footbridge_timer,
+       .restart        = footbridge_restart,
 MACHINE_END
 
index 249f895910fbaa2decbcd61dd49049e40e44386e..a174a5841bc24a89b68b669ded11bfee985808c1 100644 (file)
@@ -7,63 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/io.h>
-#include <asm/hardware/dec21285.h>
-#include <mach/hardware.h>
-#include <asm/leds.h>
-#include <asm/mach-types.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (mode == 's') {
-               /*
-                * Jump into the ROM
-                */
-               soft_restart(0x41000000);
-       } else {
-               if (machine_is_netwinder()) {
-                       /* open up the SuperIO chip
-                        */
-                       outb(0x87, 0x370);
-                       outb(0x87, 0x370);
-
-                       /* aux function group 1 (logical device 7)
-                        */
-                       outb(0x07, 0x370);
-                       outb(0x07, 0x371);
-
-                       /* set GP16 for WD-TIMER output
-                        */
-                       outb(0xe6, 0x370);
-                       outb(0x00, 0x371);
-
-                       /* set a RED LED and toggle WD_TIMER for rebooting
-                        */
-                       outb(0xc4, 0x338);
-               } else {
-                       /* 
-                        * Force the watchdog to do a CPU reset.
-                        *
-                        * After making sure that the watchdog is disabled
-                        * (so we can change the timer registers) we first
-                        * enable the timer to autoreload itself.  Next, the
-                        * timer interval is set really short and any
-                        * current interrupt request is cleared (so we can
-                        * see an edge transition).  Finally, TIMER4 is
-                        * enabled as the watchdog.
-                        */
-                       *CSR_SA110_CNTL &= ~(1 << 13);
-                       *CSR_TIMER4_CNTL = TIMER_CNTL_ENABLE |
-                                          TIMER_CNTL_AUTORELOAD |
-                                          TIMER_CNTL_DIV16;
-                       *CSR_TIMER4_LOAD = 0x2;
-                       *CSR_TIMER4_CLR  = 0;
-                       *CSR_SA110_CNTL |= (1 << 13);
-               }
-       }
-}
index 0d3846f3b60d737205f9a8f6ead5c5275399cf88..80a1c5cc9071bb345fb19c5c19d6881695f808a2 100644 (file)
@@ -645,6 +645,32 @@ fixup_netwinder(struct tag *tags, char **cmdline, struct meminfo *mi)
 #endif
 }
 
+static void netwinder_restart(char mode, const char *cmd)
+{
+       if (mode == 's') {
+               /* Jump into the ROM */
+               soft_restart(0x41000000);
+       } else {
+               local_irq_disable();
+               local_fiq_disable();
+
+               /* open up the SuperIO chip */
+               outb(0x87, 0x370);
+               outb(0x87, 0x370);
+
+               /* aux function group 1 (logical device 7) */
+               outb(0x07, 0x370);
+               outb(0x07, 0x371);
+
+               /* set GP16 for WD-TIMER output */
+               outb(0xe6, 0x370);
+               outb(0x00, 0x371);
+
+               /* set a RED LED and toggle WD_TIMER for rebooting */
+               outb(0xc4, 0x338);
+       }
+}
+
 MACHINE_START(NETWINDER, "Rebel-NetWinder")
        /* Maintainer: Russell King/Rebel.com */
        .atag_offset    = 0x100,
@@ -656,4 +682,5 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")
        .map_io         = footbridge_map_io,
        .init_irq       = footbridge_init_irq,
        .timer          = &isa_timer,
+       .restart        = netwinder_restart,
 MACHINE_END
index f41dba39b32744575481f5821a3d95099d15b18c..e1e9990fa95724388877fa5b1f317b45251c9246 100644 (file)
@@ -19,5 +19,6 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
        .map_io         = footbridge_map_io,
        .init_irq       = footbridge_init_irq,
        .timer          = &footbridge_timer,
+       .restart        = footbridge_restart,
 MACHINE_END
 
index 4d9c1f872472a8e89abf73e8f1633990598d95ee..5e68cd41fd4ccc48fcffd836ad2534d2c1fc0ed4 100644 (file)
@@ -28,6 +28,7 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
+#error Fix me up
 static inline void arch_reset(char mode, const char *cmd)
 {
        __raw_writel(RESET_GLOBAL | RESET_CPU1,
index 51d4e44ab9734bad131efb0f4c11c399b729eedc..f8a2f6bb548358a08bce3596beaf83eb0bffa37f 100644 (file)
@@ -242,3 +242,8 @@ void __init h720x_map_io(void)
 {
        iotable_init(h720x_io_desc,ARRAY_SIZE(h720x_io_desc));
 }
+
+void h720x_restart(char mode, const char *cmd)
+{
+       CPU_REG (PMU_BASE, PMU_STAT) |= PMU_WARMRESET;
+}
index 7dd5fa604efc503affc28c4e53de1763365b3b9a..2489537d33ddb5722e1772283e670da0cb0ff9ab 100644 (file)
@@ -16,6 +16,7 @@
 extern unsigned long h720x_gettimeoffset(void);
 extern void __init h720x_init_irq(void);
 extern void __init h720x_map_io(void);
+extern void h720x_restart(char, const char *);
 
 #ifdef CONFIG_ARCH_H7202
 extern struct sys_timer h7202_timer;
index 9886f19805f41301aa4769856a679dc0dae12c4d..5fdb20c855e234cb824e1473f9be4a2ce35cff2e 100644 (file)
@@ -34,4 +34,5 @@ MACHINE_START(H7201, "Hynix GMS30C7201")
        .init_irq       = h720x_init_irq,
        .timer          = &h7201_timer,
        .dma_zone_size  = SZ_256M,
+       .restart        = h720x_restart,
 MACHINE_END
index 284a134819e1072db3dd47012d63ba7360f9a447..169673036c593220df36a0e7ac4b895516654522 100644 (file)
@@ -77,4 +77,5 @@ MACHINE_START(H7202, "Hynix HMS30C7202")
        .timer          = &h7202_timer,
        .init_machine   = init_eval_h7202,
        .dma_zone_size  = SZ_256M,
+       .restart        = h720x_restart,
 MACHINE_END
index a708d24ee46d67a80d2129860c7c91e20029cfea..16ac46e239aa270820f9f535fe0ec1bdefd98536 100644 (file)
@@ -24,10 +24,4 @@ static void arch_idle(void)
        nop();
 }
 
-
-static __inline__ void arch_reset(char mode, const char *cmd)
-{
-       CPU_REG (PMU_BASE, PMU_STAT) |= PMU_WARMRESET;
-}
-
 #endif
index 7e33fc94cd1e6ff81c134662a467c72fdf47aabc..d8e2d0be64ac365dc665b1e7e1a52c4549973f77 100644 (file)
@@ -1,5 +1,6 @@
 extern void highbank_set_cpu_jump(int cpu, void *jump_addr);
 extern void highbank_clocks_init(void);
+extern void highbank_restart(char, const char *);
 extern void __iomem *scu_base_addr;
 #ifdef CONFIG_DEBUG_HIGHBANK_UART
 extern void highbank_lluart_map_io(void);
index 7266dd510f1a4ed9dd495c3268f6430a776b3dc4..804c4a55f8038c75cbf0731168ee6d0d36de004a 100644 (file)
@@ -147,4 +147,5 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
        .handle_irq     = gic_handle_irq,
        .init_machine   = highbank_init,
        .dt_compat      = highbank_match,
+       .restart        = highbank_restart,
 MACHINE_END
index 7e8192296cae97d88642f128b320172d39055299..b1d8b5fbe3735e3f87337804a6371248863faa1f 100644 (file)
@@ -21,6 +21,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-extern void arch_reset(char mode, const char *cmd);
-
 #endif
index 53f0c4c5ef1c7dc0ea5744da0efba832a1f21296..82c27230d4a93e657ca4c4a4e1e79439c422bbae 100644 (file)
@@ -20,7 +20,7 @@
 #include "core.h"
 #include "sysregs.h"
 
-void arch_reset(char mode, const char *cmd)
+void highbank_restart(char mode, const char *cmd)
 {
        if (mode == 'h')
                hignbank_set_pwr_hard_reset();
index 039a7abb165a35f4afc10ae08dbb7cc62f1121f7..9273c2a24b540a12646c406ac82dedb6c27ca28b 100644 (file)
@@ -1931,14 +1931,12 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
                val |= 0x1 << BP_CLPCR_LPM;
                val &= ~BM_CLPCR_VSTBY;
                val &= ~BM_CLPCR_SBYOS;
-               val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
                break;
        case STOP_POWER_OFF:
                val |= 0x2 << BP_CLPCR_LPM;
                val |= 0x3 << BP_CLPCR_STBY_COUNT;
                val |= BM_CLPCR_VSTBY;
                val |= BM_CLPCR_SBYOS;
-               val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
                break;
        default:
                return -EINVAL;
index 1e486e67dabbfa598a010d616fe59101d8a9406e..146a4f073464019fe913184074ce4b4593405c22 100644 (file)
@@ -139,4 +139,5 @@ MACHINE_START(APF9328, "Armadeus APF9328")
        .handle_irq   = imx1_handle_irq,
        .timer        = &apf9328_timer,
        .init_machine = apf9328_init,
+       .restart        = mxc_restart,
 MACHINE_END
index c9a9cf67755e7fa3c1666e1aebb81f52dbbcca0b..e4f426a09899175a948134e006d84a2edcc5c3ae 100644 (file)
@@ -561,4 +561,5 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")
        .handle_irq = imx31_handle_irq,
        .timer = &armadillo5x0_timer,
        .init_machine = armadillo5x0_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 313f62ddc1ef058ec80340bc7980aa61fc9f2af3..9a9897749dd61b5b06b7a5d2037a72044acbc76f 100644 (file)
@@ -65,4 +65,5 @@ MACHINE_START(BUG, "BugLabs BUGBase")
        .handle_irq = imx31_handle_irq,
        .timer = &bug_timer,
        .init_machine = bug_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index edb373052576a86e7a3301a26f09536a771530b6..d085aea087095e4750e104a54aaee02c7312b0cf 100644 (file)
@@ -318,4 +318,5 @@ MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27")
        .handle_irq = imx27_handle_irq,
        .timer = &eukrea_cpuimx27_timer,
        .init_machine = eukrea_cpuimx27_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 66af2e8f7e576dffd5372862653d397d22811069..012e120509e087f6669bd56c3321ffca0187c84b 100644 (file)
@@ -201,4 +201,5 @@ MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")
        .handle_irq = imx35_handle_irq,
        .timer = &eukrea_cpuimx35_timer,
        .init_machine = eukrea_cpuimx35_init,
+       .restart        = mxc_restart,
 MACHINE_END
index ab8fbcc472b5e1e6a1ddb19e6361d96ad3620110..76a97a598b9e9b69f29c69d2d2cebfe27be970bf 100644 (file)
@@ -170,4 +170,5 @@ MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")
        .handle_irq = imx25_handle_irq,
        .timer = &eukrea_cpuimx25_timer,
        .init_machine = eukrea_cpuimx25_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 38eb9e45110b2d3e5bdb8f96f5d89627e17ddbe7..c2766ae02b4f049f6bfa6ecf79a312226e35a909 100644 (file)
@@ -282,4 +282,5 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
        .handle_irq = imx27_handle_irq,
        .timer = &visstrim_m10_timer,
        .init_machine = visstrim_m10_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 7052155d0557b735fe93982f6ab7bc65a023647c..c9d350c5dcc83a590ea36774887eb7fd8461e72b 100644 (file)
@@ -78,4 +78,5 @@ MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")
        .handle_irq = imx27_handle_irq,
        .timer = &mx27ipcam_timer,
        .init_machine = mx27ipcam_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 8d6a63521f17b9f19f5dbcc956487d081aa70aad..1f45b9189229787343ca9465b4c2d3d0425c6758 100644 (file)
@@ -84,4 +84,5 @@ MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")
        .handle_irq = imx27_handle_irq,
        .timer = &mx27lite_timer,
        .init_machine = mx27lite_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 9cd860a27af5f797cff2b9e5ceaf1798e09e8777..70a395ee36cf488224764a515d6fe1ec661a3c26 100644 (file)
  * http://www.gnu.org/copyleft/gpl.html
  */
 
+#include <linux/delay.h>
 #include <linux/init.h>
+#include <linux/io.h>
 #include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <mach/common.h>
 #include <mach/hardware.h>
 
+void imx6q_restart(char mode, const char *cmd)
+{
+       struct device_node *np;
+       void __iomem *wdog_base;
+
+       np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-wdt");
+       wdog_base = of_iomap(np, 0);
+       if (!wdog_base)
+               goto soft;
+
+       imx_src_prepare_restart();
+
+       /* enable wdog */
+       writew_relaxed(1 << 2, wdog_base);
+       /* write twice to ensure the request will not get ignored */
+       writew_relaxed(1 << 2, wdog_base);
+
+       /* wait for reset to assert ... */
+       mdelay(500);
+
+       pr_err("Watchdog reset failed to assert reset\n");
+
+       /* delay to allow the serial port to show the message */
+       mdelay(50);
+
+soft:
+       /* we'll take a jump through zero as a poor second */
+       soft_restart(0);
+}
+
 static void __init imx6q_init_machine(void)
 {
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
@@ -82,4 +115,5 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")
        .timer          = &imx6q_timer,
        .init_machine   = imx6q_init_machine,
        .dt_compat      = imx6q_dt_compat,
+       .restart        = imx6q_restart,
 MACHINE_END
index 5f37f89e40fac9f7aba14d1b50f5792b4f50b6e6..fc78e8071cd178de28ada44104b9faf182b5bdf9 100644 (file)
@@ -279,4 +279,5 @@ MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")
        .handle_irq = imx31_handle_irq,
        .timer = &kzm_timer,
        .init_machine = kzm_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index fc49785e7340a9adb9964794f16114ff96b5c125..97046088ff1a81c21ef3061b27d859537b0a19fe 100644 (file)
@@ -147,6 +147,7 @@ MACHINE_START(MX1ADS, "Freescale MX1ADS")
        .handle_irq = imx1_handle_irq,
        .timer = &mx1ads_timer,
        .init_machine = mx1ads_init,
+       .restart        = mxc_restart,
 MACHINE_END
 
 MACHINE_START(MXLADS, "Freescale MXLADS")
@@ -157,4 +158,5 @@ MACHINE_START(MXLADS, "Freescale MXLADS")
        .handle_irq = imx1_handle_irq,
        .timer = &mx1ads_timer,
        .init_machine = mx1ads_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 25f84028d055078cd284aa48c844b3697e3dab78..8d9f95514b1f1410997b7ecadfcc3918b9b5f613 100644 (file)
@@ -312,4 +312,5 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
        .handle_irq = imx21_handle_irq,
        .timer = &mx21ads_timer,
        .init_machine = mx21ads_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 88dccf1222437ef6959d5d094a512b7ce9294eb2..f26734298aa629d52c94faea8f7e7ea2a0694230 100644 (file)
@@ -270,4 +270,5 @@ MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)")
        .handle_irq = imx25_handle_irq,
        .timer = &mx25pdk_timer,
        .init_machine = mx25pdk_init,
+       .restart        = mxc_restart,
 MACHINE_END
index ba232d79fa81a2f87e2402fa03d203243f25f44e..18f35816706a1e77771d2a57992bee32a006c694 100644 (file)
@@ -425,4 +425,5 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
        .handle_irq = imx27_handle_irq,
        .timer = &mx27pdk_timer,
        .init_machine = mx27pdk_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 74dd5731eb61547e8e0e79bccaeb9f4849cada7e..0228d2e07fe05ed641b6f24988b0730b9eae86ed 100644 (file)
@@ -351,4 +351,5 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")
        .handle_irq = imx27_handle_irq,
        .timer = &mx27ads_timer,
        .init_machine = mx27ads_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index b8c54b840185edc2bd4fd7b344e22bdc29187bd8..2b565c381347a4760e6cfbbec756473256410929 100644 (file)
@@ -770,4 +770,5 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
        .timer = &mx31_3ds_timer,
        .init_machine = mx31_3ds_init,
        .reserve = mx31_3ds_reserve,
+       .restart        = mxc_restart,
 MACHINE_END
index 9cc1a49053bb347053fed66d6817b3b2d4f2f32f..4917aab0e2539609a57bbcdc94bf8b24fccb37aa 100644 (file)
@@ -542,4 +542,5 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
        .handle_irq = imx31_handle_irq,
        .timer = &mx31ads_timer,
        .init_machine = mx31ads_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 102ec99357ccb99bec5e83551d3d0f1303b6a25f..02401bbd6d53e7ef014507f2029212fb74f34b1d 100644 (file)
@@ -303,4 +303,5 @@ MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
        .handle_irq = imx31_handle_irq,
        .timer = &mx31lilly_timer,
        .init_machine = mx31lilly_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 5366d2de18fdc4b75047a435dc8d27e8f39f023e..ef80751712e70ca0165c7fa817f41f1f92c39589 100644 (file)
@@ -287,4 +287,5 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
        .handle_irq = imx31_handle_irq,
        .timer = &mx31lite_timer,
        .init_machine = mx31lite_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 93269150309cfd11571c9b84c770d31bf510bc31..b95981dacb2bcef2ff8138b59d32f58d85d3a394 100644 (file)
@@ -600,4 +600,5 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
        .handle_irq = imx31_handle_irq,
        .timer = &mx31moboard_timer,
        .init_machine = mx31moboard_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 7a462025a0f75a97db5a1253e7dd9ff5926bb4ef..0af6c9c5b3fdd443748d625db5529409074e124d 100644 (file)
@@ -224,4 +224,5 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")
        .handle_irq = imx35_handle_irq,
        .timer = &mx35pdk_timer,
        .init_machine = mx35_3ds_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 125c19643b0fc9b9d8f3f4d718e882ac7a0c32c8..8b3d3f07d894ab72f30d5d21de495c991a2ecca2 100644 (file)
@@ -274,4 +274,5 @@ MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60")
        .handle_irq = imx27_handle_irq,
        .timer = &mxt_td60_timer,
        .init_machine = mxt_td60_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 26072f4b02e37cfa0ea3c1315885cdcd892c6541..d3b9c6b5edde091d56f3196be79a5cf245410137 100644 (file)
@@ -442,4 +442,5 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")
        .handle_irq = imx27_handle_irq,
        .init_machine = pca100_init,
        .timer = &pca100_timer,
+       .restart        = mxc_restart,
 MACHINE_END
index efd6b536ef6a4187d413aaf167d218718c5e0957..d7e151669ed347591e1687de4c628156aa56820d 100644 (file)
@@ -696,4 +696,5 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
        .handle_irq = imx31_handle_irq,
        .timer = &pcm037_timer,
        .init_machine = pcm037_init,
+       .restart        = mxc_restart,
 MACHINE_END
index a17e9c7dfca0f4dfde76b49ba4639510b714fe7e..16f126da9f8f543abf7d175477778b5636bb0a55 100644 (file)
@@ -357,4 +357,5 @@ MACHINE_START(PCM038, "phyCORE-i.MX27")
        .handle_irq = imx27_handle_irq,
        .timer = &pcm038_timer,
        .init_machine = pcm038_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 7366c2ae3ea5ccf0c8b74024b96bb135822752ec..06dc106519aec6f8826b1589b3c765cad148bfc5 100644 (file)
@@ -425,4 +425,5 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")
        .handle_irq = imx35_handle_irq,
        .timer = &pcm043_timer,
        .init_machine = pcm043_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 4ff5faf102a8667d2ac7c71ce5a07a6a7c567b84..260621055b6be1edfe9ef4ce8eca2f391d3edb86 100644 (file)
@@ -273,4 +273,5 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
        .handle_irq = imx31_handle_irq,
        .timer = &qong_timer,
        .init_machine = qong_init,
+       .restart        = mxc_restart,
 MACHINE_END
index bb6e5b25d8d07905cf951f5c14ee1ff07ba88594..cb9ceae2f648dbd8f6a838c9c42ddb48b76dcea2 100644 (file)
@@ -144,4 +144,5 @@ MACHINE_START(SCB9328, "Synertronixx scb9328")
        .handle_irq = imx1_handle_irq,
        .timer = &scb9328_timer,
        .init_machine = scb9328_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 69092458f2d9a6ca519ff1747fa6bae26400df77..033257e553ef7177dae5672f40e3d842d26b7d51 100644 (file)
@@ -322,4 +322,5 @@ MACHINE_START(VPR200, "VPR200")
        .handle_irq = imx35_handle_irq,
        .timer = &vpr200_timer,
        .init_machine = vpr200_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index a8e33681b73251f498a7cfee463f20c3f6d0e1ff..4bde04f99e38ceda85fd4cb43f89bf2eb080ead7 100644 (file)
@@ -19,6 +19,7 @@
 
 #define SRC_SCR                                0x000
 #define SRC_GPR1                       0x020
+#define BP_SRC_SCR_WARM_RESET_ENABLE   0
 #define BP_SRC_SCR_CORE1_RST           14
 #define BP_SRC_SCR_CORE1_ENABLE                22
 
@@ -46,11 +47,33 @@ void imx_set_cpu_jump(int cpu, void *jump_addr)
                       src_base + SRC_GPR1 + cpu * 8);
 }
 
+void imx_src_prepare_restart(void)
+{
+       u32 val;
+
+       /* clear enable bits of secondary cores */
+       val = readl_relaxed(src_base + SRC_SCR);
+       val &= ~(0x7 << BP_SRC_SCR_CORE1_ENABLE);
+       writel_relaxed(val, src_base + SRC_SCR);
+
+       /* clear persistent entry register of primary core */
+       writel_relaxed(0, src_base + SRC_GPR1);
+}
+
 void __init imx_src_init(void)
 {
        struct device_node *np;
+       u32 val;
 
        np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-src");
        src_base = of_iomap(np, 0);
        WARN_ON(!src_base);
+
+       /*
+        * force warm reset sources to generate cold reset
+        * for a more reliable restart
+        */
+       val = readl_relaxed(src_base + SRC_SCR);
+       val &= ~(1 << BP_SRC_SCR_WARM_RESET_ENABLE);
+       writel_relaxed(val, src_base + SRC_SCR);
 }
index a08f9b0299dfa43090b564ca39f20cfdf4325a9c..899561d8db285c475459799b03b4dd7619c8273b 100644 (file)
@@ -1,2 +1,3 @@
 void integrator_init_early(void);
 void integrator_reserve(void);
+void integrator_restart(char, const char *);
index 4b38e13667acf0f316e8881305c065f939c5d2cb..0a3e0974398aeb678ebbc65c019b7ebbf362396a 100644 (file)
@@ -238,3 +238,11 @@ void __init integrator_reserve(void)
 {
        memblock_reserve(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
 }
+
+/*
+ * To reset, we hit the on-board reset register in the system FPGA
+ */
+void integrator_restart(char mode, const char *cmd)
+{
+       cm_control(CM_CTRL_RESET, CM_CTRL_RESET);
+}
index e1551b8dab77448687a8752df3f839ccb274f9d3..901514eba4a6fa353fc05e845fb25d1ffc9068cc 100644 (file)
@@ -21,8 +21,6 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/cm.h>
-
 static inline void arch_idle(void)
 {
        /*
@@ -32,13 +30,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * To reset, we hit the on-board reset register
-        * in the system FPGA
-        */
-       cm_control(CM_CTRL_RESET, CM_CTRL_RESET);
-}
-
 #endif
index a1769f35a86e35013f32cc5fc05d7da6abe3239c..21a1d6cbef40c43dad90ff3fc9da70d550f78fe9 100644 (file)
@@ -472,4 +472,5 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")
        .init_irq       = ap_init_irq,
        .timer          = &ap_timer,
        .init_machine   = ap_init,
+       .restart        = integrator_restart,
 MACHINE_END
index 5de49c33e4d4eb70129614b7aeff6fa4afaa7ad6..3a730d447c9a1f6365d560f94d9553190bf9ef9f 100644 (file)
@@ -499,4 +499,5 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
        .init_irq       = intcp_init_irq,
        .timer          = &cp_timer,
        .init_machine   = intcp_init,
+       .restart        = integrator_restart,
 MACHINE_END
index 52b7fab7ef60555f58dd916fafb54891580394d3..07e9ff7adafb4dd5c79f2b6ba83fb785ed03186d 100644 (file)
@@ -10,6 +10,7 @@ void iop13xx_map_io(void);
 void iop13xx_platform_init(void);
 void iop13xx_add_tpmi_devices(void);
 void iop13xx_init_irq(void);
+void iop13xx_restart(char, const char *);
 
 /* CPUID CP6 R0 Page 0 */
 static inline int iop13xx_cpu_id(void)
index d0c66ef450a7398e08ee4fd5cd70c0f7a571c25f..1f31ed3f8ae2b3ec29c0563d0f01352e920471d2 100644 (file)
@@ -7,21 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <mach/iop13xx.h>
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Reset the internal bus (warning both cores are reset)
-        */
-       write_wdtcr(IOP_WDTCR_EN_ARM);
-       write_wdtcr(IOP_WDTCR_EN);
-       write_wdtsr(IOP13XX_WDTSR_WRITE_EN | IOP13XX_WDTCR_IB_RESET);
-       write_wdtcr(0x1000);
-
-       for(;;);
-}
index 4cf2cc477eae88f142d5549bb4a758be705c6563..abaee883358874f4bbaf5c5bf1c7a6a90bf6bf2a 100644 (file)
@@ -96,4 +96,5 @@ MACHINE_START(IQ81340MC, "Intel IQ81340MC")
        .init_irq       = iop13xx_init_irq,
        .timer          = &iq81340mc_timer,
        .init_machine   = iq81340mc_init,
+       .restart        = iop13xx_restart,
 MACHINE_END
index cd9e27499a1ebd04572e9d5fdf631db013a870d7..690916a09dc6bed10561272d8e300f5838bbb76b 100644 (file)
@@ -98,4 +98,5 @@ MACHINE_START(IQ81340SC, "Intel IQ81340SC")
        .init_irq       = iop13xx_init_irq,
        .timer          = &iq81340sc_timer,
        .init_machine   = iq81340sc_init,
+       .restart        = iop13xx_restart,
 MACHINE_END
index a5b989728b9e9e45bf35980283ed8a790e4ed588..daabb1fa6c2c3b19db0d570fbda1d84b03f9b3c4 100644 (file)
@@ -606,3 +606,14 @@ static int __init iop13xx_init_adma_setup(char *str)
 __setup("iop13xx_init_adma", iop13xx_init_adma_setup);
 __setup("iop13xx_init_uart", iop13xx_init_uart_setup);
 __setup("iop13xx_init_i2c", iop13xx_init_i2c_setup);
+
+void iop13xx_restart(char mode, const char *cmd)
+{
+       /*
+        * Reset the internal bus (warning both cores are reset)
+        */
+       write_wdtcr(IOP_WDTCR_EN_ARM);
+       write_wdtcr(IOP_WDTCR_EN);
+       write_wdtsr(IOP13XX_WDTSR_WRITE_EN | IOP13XX_WDTCR_IB_RESET);
+       write_wdtcr(0x1000);
+}
index 4325055d4e197cfd807d9f4b278b3476de83255f..24069e03fdc1d632154b3bf489461fbfde5621d2 100644 (file)
@@ -208,4 +208,5 @@ MACHINE_START(EM7210, "Lanner EM7210")
        .init_irq       = iop32x_init_irq,
        .timer          = &em7210_timer,
        .init_machine   = em7210_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index 0edc880205778a22eabc6850a37a4770a7e46a54..204e1d1cd7666f679742d8ace9d113c3bce34b11 100644 (file)
@@ -212,4 +212,5 @@ MACHINE_START(GLANTANK, "GLAN Tank")
        .init_irq       = iop32x_init_irq,
        .timer          = &glantank_timer,
        .init_machine   = glantank_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index b4f83e5973b297df59cd36df8ef2daff62366d9e..4a88727bca98eaae5bdcb06b2593b66dd711a1ae 100644 (file)
@@ -7,26 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <asm/mach-types.h>
-#include <asm/hardware/iop3xx.h>
-#include <mach/n2100.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (machine_is_n2100()) {
-               gpio_line_set(N2100_HARDWARE_RESET, GPIO_LOW);
-               gpio_line_config(N2100_HARDWARE_RESET, GPIO_OUT);
-               while (1)
-                       ;
-       }
-
-       *IOP3XX_PCSR = 0x30;
-
-       /* Jump into ROM at address 0 */
-       soft_restart(0);
-}
index 9e7aaccfeba0d6e1a0390d12bf6e7980733eeb6f..3eb642af1cdc261c1a43cb613b987078ed3b3823 100644 (file)
@@ -318,6 +318,7 @@ MACHINE_START(IQ31244, "Intel IQ31244")
        .init_irq       = iop32x_init_irq,
        .timer          = &iq31244_timer,
        .init_machine   = iq31244_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
 
 /* There should have been an ep80219 machine identifier from the beginning.
@@ -332,4 +333,5 @@ MACHINE_START(EP80219, "Intel EP80219")
        .init_irq       = iop32x_init_irq,
        .timer          = &iq31244_timer,
        .init_machine   = iq31244_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index 53ea86f649dde55333a78c5f1481d062bdb93285..2ec724b58a2c109545600acb824e68b59563679e 100644 (file)
@@ -191,4 +191,5 @@ MACHINE_START(IQ80321, "Intel IQ80321")
        .init_irq       = iop32x_init_irq,
        .timer          = &iq80321_timer,
        .init_machine   = iq80321_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index d7269279968c5522cfbc7e176329ef53d0f15dd6..6b6d55912444a4e6498465b87102b39bbb557722 100644 (file)
@@ -291,6 +291,14 @@ static void n2100_power_off(void)
                ;
 }
 
+static void n2100_restart(char mode, const char *cmd)
+{
+       gpio_line_set(N2100_HARDWARE_RESET, GPIO_LOW);
+       gpio_line_config(N2100_HARDWARE_RESET, GPIO_OUT);
+       while (1)
+               ;
+}
+
 
 static struct timer_list power_button_poll_timer;
 
@@ -332,4 +340,5 @@ MACHINE_START(N2100, "Thecus N2100")
        .init_irq       = iop32x_init_irq,
        .timer          = &n2100_timer,
        .init_machine   = n2100_init_machine,
+       .restart        = n2100_restart,
 MACHINE_END
index 86d1b20dd692e879d08a395e03e9a7b07d7a4664..4f98e765397ce76f55b0740316931ada44cc3a95 100644 (file)
@@ -7,17 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <asm/hardware/iop3xx.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       *IOP3XX_PCSR = 0x30;
-
-       /* Jump into ROM at address 0 */
-       soft_restart(0);
-}
index 9e14ccc56f8e405050f33851c864091be0f72906..abce934f38166069e535b37c921bf7e8c6925dab 100644 (file)
@@ -146,4 +146,5 @@ MACHINE_START(IQ80331, "Intel IQ80331")
        .init_irq       = iop33x_init_irq,
        .timer          = &iq80331_timer,
        .init_machine   = iq80331_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index 09c899a2523f7a16b5dbbe8d857f3096722c5de6..7513559e25bbeed2c40b0ae2735731c164b37661 100644 (file)
@@ -146,4 +146,5 @@ MACHINE_START(IQ80332, "Intel IQ80332")
        .init_irq       = iop33x_init_irq,
        .timer          = &iq80332_timer,
        .init_machine   = iq80332_init_machine,
+       .restart        = iop3xx_restart,
 MACHINE_END
index 24f0fe35f4adfca63249cf5a099db5234298087b..81c45370a4e6f4c63b0854d0e41fa5ec79ec54f8 100644 (file)
@@ -515,3 +515,7 @@ void __init ixp2000_init_irq(void)
        }
 }
 
+void ixp2000_restart(char mode, const char *cmd)
+{
+       ixp2000_reg_wrb(IXP2000_RESET0, RSTALL);
+}
index af9994537e015386ef3cebcde1a808843f52c6cc..ee525416f0d20b0ca6a69b42cd9820c8b45a0731 100644 (file)
@@ -259,6 +259,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
        .init_irq       = ixp2000_init_irq,
        .timer          = &enp2611_timer,
        .init_machine   = enp2611_init_machine,
+       .restart        = ixp2000_restart,
 MACHINE_END
 
 
index 42182c79ed9070915673eae713fadde4c9bb9127..bb0f8dcf9ee1312442be8b88647957a8d9d7840d 100644 (file)
@@ -122,6 +122,7 @@ void ixp2000_map_io(void);
 void ixp2000_uart_init(void);
 void ixp2000_init_irq(void);
 void ixp2000_init_time(unsigned long);
+void ixp2000_restart(char, const char *);
 unsigned long ixp2000_gettimeoffset(void);
 
 struct pci_sys_data;
index 810df7b93982a7c59641bc80343d807dcd68726f..a7fb08b2b8e73bdf4af786a3dcc25f64b3c20e2f 100644 (file)
@@ -8,40 +8,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Reset flash banking register so that we are pointing at
-        * RedBoot bank.
-        */
-       if (machine_is_ixdp2401()) {
-               ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG,
-                                       ((0 >> IXDP2X01_FLASH_WINDOW_BITS)
-                                               | IXDP2X01_CPLD_FLASH_INTERN));
-               ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0xffffffff);
-       }
-
-       /*
-        * On IXDP2801 we need to write this magic sequence to the CPLD
-        * to cause a complete reset of the CPU and all external devices
-        * and move the flash bank register back to 0.
-        */
-       if (machine_is_ixdp2801() || machine_is_ixdp28x5()) {
-               unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;
-
-               reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);
-               ixp2000_reg_write(IXDP2X01_CPLD_RESET_REG, reset_reg);
-               ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0x80000000);
-       }
-
-       ixp2000_reg_wrb(IXP2000_RESET0, RSTALL);
-}
index f7dfd970014106dcb57d36811eb610d272d5a2fa..f53e911ec94a9f475d3d65842cdb22d66e0b0f67 100644 (file)
@@ -176,5 +176,6 @@ MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform")
        .init_irq       = ixdp2400_init_irq,
        .timer          = &ixdp2400_timer,
        .init_machine   = ixdp2x00_init_machine,
+       .restart        = ixp2000_restart,
 MACHINE_END
 
index d33bcac1ec92885b31bbea53b187ee94b1813102..a2e7c393e74fb198d3d3aad258c88bd17ce2cc08 100644 (file)
@@ -291,5 +291,6 @@ MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform")
        .init_irq       = ixdp2800_init_irq,
        .timer          = &ixdp2800_timer,
        .init_machine   = ixdp2x00_init_machine,
+       .restart        = ixp2000_restart,
 MACHINE_END
 
index 61a28676b5bef1965bf990c435a18506c611cac3..7632beadabf6ac7c9ac656ee9d853b0755e5eb60 100644 (file)
@@ -413,6 +413,35 @@ static void __init ixdp2x01_init_machine(void)
        ixdp2x01_uart_init();
 }
 
+static void ixdp2401_restart(char mode, const char *cmd)
+{
+       /*
+        * Reset flash banking register so that we are pointing at
+        * RedBoot bank.
+        */
+       ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG,
+                               ((0 >> IXDP2X01_FLASH_WINDOW_BITS)
+                                       | IXDP2X01_CPLD_FLASH_INTERN));
+       ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0xffffffff);
+
+       ixp2000_restart(mode, cmd);
+}
+
+static void ixdp280x_restart(char mode, const char *cmd)
+{
+       /*
+        * On IXDP2801 we need to write this magic sequence to the CPLD
+        * to cause a complete reset of the CPU and all external devices
+        * and move the flash bank register back to 0.
+        */
+       unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;
+
+       reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);
+       ixp2000_reg_write(IXDP2X01_CPLD_RESET_REG, reset_reg);
+       ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0x80000000);
+
+       ixp2000_restart(mode, cmd);
+}
 
 #ifdef CONFIG_ARCH_IXDP2401
 MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
@@ -422,6 +451,7 @@ MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
        .init_irq       = ixdp2x01_init_irq,
        .timer          = &ixdp2x01_timer,
        .init_machine   = ixdp2x01_init_machine,
+       .restart        = ixdp2401_restart,
 MACHINE_END
 #endif
 
@@ -433,6 +463,7 @@ MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
        .init_irq       = ixdp2x01_init_irq,
        .timer          = &ixdp2x01_timer,
        .init_machine   = ixdp2x01_init_machine,
+       .restart        = ixdp280x_restart,
 MACHINE_END
 
 /*
@@ -446,6 +477,7 @@ MACHINE_START(IXDP28X5, "Intel IXDP2805/2855 Development Platform")
        .init_irq       = ixdp2x01_init_irq,
        .timer          = &ixdp2x01_timer,
        .init_machine   = ixdp2x01_init_machine,
+       .restart        = ixdp280x_restart,
 MACHINE_END
 #endif
 
index a1bee33d183ea871f72d9ffaef8f4265c3a8b40f..0923bb905cc0ce917bf1df1a249c482bb3f27c10 100644 (file)
@@ -444,3 +444,9 @@ void __init ixp23xx_sys_init(void)
        *IXP23XX_EXP_UNIT_FUSE |= 0xf;
        platform_add_devices(ixp23xx_devices, ARRAY_SIZE(ixp23xx_devices));
 }
+
+void ixp23xx_restart(char mode, const char *cmd)
+{
+       /* Use on-chip reset capability */
+       *IXP23XX_RESET0 |= IXP23XX_RST_ALL;
+}
index 30dd31652e9d51f289fd208f1f3ad97ed25bd277..8f2487e1fc4e1a7e0a2fe5ba3abd554a7ea83810 100644 (file)
@@ -90,4 +90,5 @@ MACHINE_START(ESPRESSO, "IP Fabrics Double Espresso")
        .timer          = &ixp23xx_timer,
        .atag_offset    = 0x100,
        .init_machine   = espresso_init,
+       .restart        = ixp23xx_restart,
 MACHINE_END
index db9d9416e5e4edd2ca7eaa7b0c6011e1e0f52fc4..50de558e722e940ab1671cf0d96815841065ca03 100644 (file)
@@ -34,6 +34,7 @@ struct pci_sys_data;
 void ixp23xx_map_io(void);
 void ixp23xx_init_irq(void);
 void ixp23xx_sys_init(void);
+void ixp23xx_restart(char, const char *);
 int ixp23xx_pci_setup(int, struct pci_sys_data *);
 void ixp23xx_pci_preinit(void);
 struct pci_bus *ixp23xx_pci_scan_bus(int, struct pci_sys_data*);
index 8920ff2dff1f7c8ea0ed57274fa3188c370f153d..277dda7334b93492cffb8c718ca1a0ee1ca83b09 100644 (file)
@@ -7,10 +7,6 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
 static inline void arch_idle(void)
 {
 #if 0
@@ -18,16 +14,3 @@ static inline void arch_idle(void)
                cpu_do_idle();
 #endif
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /* First try machine specific support */
-       if (machine_is_ixdp2351()) {
-               *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_MAGIC;
-               (void) *IXDP2351_CPLD_RESET1_REG;
-               *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_ENABLE;
-       }
-
-       /* Use on-chip reset capability */
-       *IXP23XX_RESET0 |= IXP23XX_RST_ALL;
-}
index b3a57e0f3419dca561be776f112a39316129a90d..5d5dd3e8d0693fda41ed7667b2476b890b375678 100644 (file)
@@ -326,6 +326,17 @@ static void __init ixdp2351_init(void)
        ixp23xx_sys_init();
 }
 
+static void ixdp2351_restart(char mode, const char *cmd)
+{
+       /* First try machine specific support */
+
+       *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_MAGIC;
+       (void) *IXDP2351_CPLD_RESET1_REG;
+       *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_ENABLE;
+
+       ixp23xx_restart(mode, cmd);
+}
+
 MACHINE_START(IXDP2351, "Intel IXDP2351 Development Platform")
        /* Maintainer: MontaVista Software, Inc. */
        .map_io         = ixdp2351_map_io,
@@ -333,4 +344,5 @@ MACHINE_START(IXDP2351, "Intel IXDP2351 Development Platform")
        .timer          = &ixp23xx_timer,
        .atag_offset    = 0x100,
        .init_machine   = ixdp2351_init,
+       .restart        = ixdp2351_restart,
 MACHINE_END
index 8f4dcbba90250e7b5c3d8b9e95c13cc09d111767..377283fc658cd8944ffa19def4ab370f02b7c0c9 100644 (file)
@@ -177,4 +177,5 @@ MACHINE_START(ROADRUNNER, "ADI Engineering RoadRunner Development Platform")
        .timer          = &ixp23xx_timer,
        .atag_offset    = 0x100,
        .init_machine   = roadrunner_init,
+       .restart        = ixp23xx_restart,
 MACHINE_END
index 37609a22c4501ad6ed9fc5a5c5ba28018cbdfefc..a7277ad470a50ffdf8248f1b574b9961dccea0ca 100644 (file)
@@ -172,6 +172,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 
  /*
@@ -190,6 +191,7 @@ MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
index b86a0055ab969694dc931be487a33aaef4368a4c..04aa12103bcec1f9e7e68a19208d2da873f4be26 100644 (file)
@@ -501,3 +501,23 @@ static void __init ixp4xx_clockevent_init(void)
 
        clockevents_register_device(&clockevent_ixp4xx);
 }
+
+void ixp4xx_restart(char mode, const char *cmd)
+{
+       if ( 1 && mode == 's') {
+               /* Jump into ROM at address 0 */
+               soft_restart(0);
+       } else {
+               /* Use on-chip reset capability */
+
+               /* set the "key" register to enable access to
+                * "timer" and "enable" registers
+                */
+               *IXP4XX_OSWK = IXP4XX_WDT_KEY;
+
+               /* write 0 to the timer register for an immediate reset */
+               *IXP4XX_OSWT = 0;
+
+               *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE;
+       }
+}
index 81dfec31842b8b025914f6300485d8fb430f8fe0..a74f86ce8bcc8252576215455998b79fb7b5d1a6 100644 (file)
@@ -117,6 +117,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
@@ -132,6 +133,7 @@ MACHINE_START(IXDPG425, "Intel IXDPG425")
        .timer          = &ixp4xx_timer,
        .atag_offset    = 0x100,
        .init_machine   = coyote_init,
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
index 8837fbca27ce7e06a47f50c5d05537986d7c3bb8..67be177b336aa0ebd04315f31bc659d66c8c65f8 100644 (file)
@@ -286,4 +286,5 @@ MACHINE_START(DSMG600, "D-Link DSM-G600 RevA")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
index 2887c3578c17531c6017b0cf085ca277a52a4612..6d5818285af8efd970d363aff1cee67003d7d281 100644 (file)
@@ -277,5 +277,6 @@ MACHINE_START(FSG, "Freecom FSG-3")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 
index d69d1b053bb73bcdf9e8a88f939c313555ac0c06..7ecf9b28f1c0a3d0d8c2f288e94cf2a18bf6ee14 100644 (file)
@@ -104,5 +104,6 @@ MACHINE_START(GATEWAY7001, "Gateway 7001 AP")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
index bf6678d1a929867750da6f73f9e4506911bb7076..c0e3d69a8aeccf23e7372693c01284b9d43e6917 100644 (file)
@@ -504,4 +504,5 @@ MACHINE_START(GORAMO_MLR, "MultiLink")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
index aa029fc19140b133f8cec8cdca9ab61bcb917d99..a23f8939145836b280a8fbd53d35b4dce0f45ad1 100644 (file)
@@ -172,6 +172,7 @@ MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 
 
index e824c02c825aa8c1885206d5f5a8bcf758041776..df9250bbf13d90c1b198338ae61be5366b0041c8 100644 (file)
@@ -125,6 +125,7 @@ extern void ixp4xx_init_irq(void);
 extern void ixp4xx_sys_init(void);
 extern void ixp4xx_timer_init(void);
 extern struct sys_timer ixp4xx_timer;
+extern void ixp4xx_restart(char, const char *);
 extern void ixp4xx_pci_preinit(void);
 struct pci_sys_data;
 extern int ixp4xx_setup(int nr, struct pci_sys_data *sys);
index 24337d9d275bbebbf722e3b194a1f0e3b65070f2..140a9bef4466f2f44e5831aa70751959a3954a24 100644 (file)
@@ -8,9 +8,6 @@
  * published by the Free Software Foundation.
  *
  */
-
-#include <mach/hardware.h>
-
 static inline void arch_idle(void)
 {
        /* ixp4xx does not implement the XScale PWRMODE register,
@@ -20,25 +17,3 @@ static inline void arch_idle(void)
        cpu_do_idle();
 #endif
 }
-
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if ( 1 && mode == 's') {
-               /* Jump into ROM at address 0 */
-               soft_restart(0);
-       } else {
-               /* Use on-chip reset capability */
-
-               /* set the "key" register to enable access to
-                * "timer" and "enable" registers
-                */
-               *IXP4XX_OSWK = IXP4XX_WDT_KEY;
-
-               /* write 0 to the timer register for an immediate reset */
-               *IXP4XX_OSWT = 0;
-
-               *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE;
-       }
-}
-
index f235f829dfa65979c992e261d4780dfb80bc0b4d..8a38b39999f836b5ffb7c3f430ce8f489eb7b8a5 100644 (file)
@@ -261,6 +261,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
index de716fa1aab64e713edc822200b814fcb2445264..1010eb7b0083c6a0f33a63fe373d9567c9ea5b7a 100644 (file)
@@ -321,4 +321,5 @@ MACHINE_START(NAS100D, "Iomega NAS 100d")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
index ac81ccb26bfea8b63902f83041b66137fb11896f..aa355c360d5720e4665999f4acfa11e9495d2467 100644 (file)
@@ -307,4 +307,5 @@ MACHINE_START(NSLU2, "Linksys NSLU2")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
index 3b6a81a696fc8696b095be92c28f0629d3c79a3b..0940869fcfdd33f487c629806b65862433a2c5c4 100644 (file)
@@ -246,6 +246,7 @@ MACHINE_START(DEVIXP, "Omicron DEVIXP")
        .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
        .init_machine   = omixp_init,
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
@@ -259,6 +260,7 @@ MACHINE_START(MICCPT, "Omicron MICCPT")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
 
@@ -269,5 +271,6 @@ MACHINE_START(MIC256, "Omicron MIC256")
        .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
        .init_machine   = omixp_init,
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
index 27e469ef45238081d50fecf86e30c54002a0abb4..9dec20683291f4eb3c4ee4874b6046bd70788c38 100644 (file)
@@ -244,4 +244,5 @@ MACHINE_START(ARCOM_VULCAN, "Arcom/Eurotech Vulcan")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
index b14144b967a783c49b1bafc56384edb6986dd086..5ac0f0a0fd8cea97f30046de24fffcebb190a784 100644 (file)
@@ -105,5 +105,6 @@ MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2")
 #if defined(CONFIG_PCI)
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = ixp4xx_restart,
 MACHINE_END
 #endif
index f3248cfbe51d058f79812d5247125fc98c2c2af6..0bff4a916231fbc9509ab9608e18eb585f8e8c1e 100644 (file)
@@ -534,3 +534,19 @@ static int __init kirkwood_clock_gate(void)
        return 0;
 }
 late_initcall(kirkwood_clock_gate);
+
+void kirkwood_restart(char mode, const char *cmd)
+{
+       /*
+        * Enable soft reset to assert RSTOUTn.
+        */
+       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
+
+       /*
+        * Assert soft reset.
+        */
+       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
+
+       while (1)
+               ;
+}
index b9b0f0968a36ac035d8d74a4cd5594d91522fe82..1529280246d6e8cd03da68d143f6d10280cfa734 100644 (file)
@@ -50,6 +50,7 @@ void kirkwood_uart1_init(void);
 void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay);
 void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *));
 void kirkwood_audio_init(void);
+void kirkwood_restart(char, const char *);
 
 extern int kirkwood_tclk;
 extern struct sys_timer kirkwood_timer;
index f457e07a65f099bec0a3401ea6445a8b1bd0dd3b..6e1bac929ab5dd5b64903c4b7f587ac338ac2f0e 100644 (file)
@@ -227,4 +227,5 @@ MACHINE_START(D2NET_V2, "LaCie d2 Network v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index ff4c21c1f923ebfcb110fd61a097b955f4b49b15..d933593795985749fce168849dd04b8edf917506 100644 (file)
@@ -103,4 +103,5 @@ MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index e4d199b2b1e8f866bc4ae88feefb5f2a43154509..61d9a552a054e93e73ef9c9fc5dc8670e7a126f1 100644 (file)
@@ -108,4 +108,5 @@ MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 6c40f784b5169d8029888ba49e7bf593f9adf485..bdaed3867d13ae062c11473ee95a8ac220d1e044 100644 (file)
@@ -127,4 +127,5 @@ MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 7568e95d279baeed920f8226ec2e73e703089118..5fddde002b5e01d535abc38ab84119ce61fe5bce 100644 (file)
@@ -9,28 +9,9 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/bridge-regs.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Enable soft reset to assert RSTOUTn.
-        */
-       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
-
-       /*
-        * Assert soft reset.
-        */
-       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
-
-       while (1)
-               ;
-}
-
-
 #endif
index 9a1e917352f77e2679469d9016c51930008d337c..85f6169c24846178570cb1cc079a12dd209fd9b3 100644 (file)
@@ -169,4 +169,5 @@ MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 8849bcc7328e7db1bbb7c8a5e9f6e7b5c0885883..e6bba01bae387139c9e54d6acf0a285c6f1a94b2 100644 (file)
@@ -264,6 +264,7 @@ MACHINE_START(NETSPACE_V2, "LaCie Network Space v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -275,6 +276,7 @@ MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -286,5 +288,6 @@ MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
index 1ba12c4dff8f31276b11b51e5cd8480cfa6c76be..31ae8de34e9361936ec6cb92597e3c41661d0c94 100644 (file)
@@ -405,6 +405,7 @@ MACHINE_START(NET2BIG_V2, "LaCie 2Big Network v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -416,5 +417,6 @@ MACHINE_START(NET5BIG_V2, "LaCie 5Big Network v2")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
index 5660ca6c3d888ec6384e74c6b9eac7aee4439971..01f8c8992880450d1a69d861d718d63434133977 100644 (file)
@@ -220,6 +220,7 @@ MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -232,6 +233,7 @@ MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -244,5 +246,6 @@ MACHINE_START(OPENRD_ULTIMATE, "Marvell OpenRD Ultimate Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
index 6663869773abaa7d27825462739ecb1012cb5e52..fd2c9c8b6831a1d0ae808bef994e691a9a38c721 100644 (file)
@@ -85,4 +85,5 @@ MACHINE_START(RD88F6192_NAS, "Marvell RD-88F6192-NAS Development Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 66b3c05e37a6f7f6413d39ca322e644b8e6de7eb..ef922079348b8ea0a3769dbf839d710776eaba84 100644 (file)
@@ -121,4 +121,5 @@ MACHINE_START(RD88F6281, "Marvell RD-88F6281 Reference Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 046eeb6b9f5491b86ab764c75559344cb66005fe..4ea70e5f7137587e8cbac4e0211f8ee3d370b6f5 100644 (file)
@@ -144,6 +144,7 @@ MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
 
@@ -155,5 +156,6 @@ MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
 #endif
index ea104fb5ec3d9317fd01d3e62462f2b6e019966f..966b2b3bb8136a6e0ecb4b1a41190f10f379ba19 100644 (file)
@@ -207,4 +207,5 @@ MACHINE_START(T5325, "HP t5325 Thin Client")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index 262c034836d47b493d185a8ac681c6637cc68e5a..73e2b6ca95642e31222ff9e9628c75c952a1eceb 100644 (file)
@@ -138,4 +138,5 @@ MACHINE_START(TS219, "QNAP TS-119/TS-219")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index b68f5b4a9ec87696c4283a55dc7e87f199599d27..5bbca26804425b0f8858a3cfed59973619fab348 100644 (file)
@@ -182,4 +182,5 @@ MACHINE_START(TS41X, "QNAP TS-41x")
        .init_early     = kirkwood_init_early,
        .init_irq       = kirkwood_init_irq,
        .timer          = &kirkwood_timer,
+       .restart        = kirkwood_restart,
 MACHINE_END
index a91f99d265aa8a5897efba886869fed32da44363..255502ddd87924b444a27ba9f669d463f73ba251 100644 (file)
@@ -228,4 +228,5 @@ MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board")
        .init_irq       = ks8695_init_irq,
        .init_machine   = acs5k_init,
        .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
 MACHINE_END
index d24bcef2e2dd782d336d8283fe94a636fc456019..e0d36cef2c56faea7e215ce680aeda29140742eb 100644 (file)
@@ -126,4 +126,5 @@ MACHINE_START(DSM320, "D-Link DSM-320 Wireless Media Player")
        .init_irq       = ks8695_init_irq,
        .init_machine   = dsm320_init,
        .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
 MACHINE_END
index 16c95657f8fd4548aad5027ee4d66cb597edf481..a8270725b76d271773cffce4886886671f2964a3 100644 (file)
@@ -58,4 +58,5 @@ MACHINE_START(KS8695, "KS8695 Centaur Development Board")
        .init_irq       = ks8695_init_irq,
        .init_machine   = micrel_init,
        .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
 MACHINE_END
index 2fbfab8d5faeff91308ecc9fe880927b55ccd59b..f8bdb11a9c33c342d73d0bece21382b6ec544556 100644 (file)
@@ -12,4 +12,5 @@
 
 extern __init void ks8695_map_io(void);
 extern __init void ks8695_init_irq(void);
+extern void ks8695_restart(char, const char *);
 extern struct sys_timer ks8695_timer;
index ceb19c90aa529509cf7c392392113c5397447f9b..59fe992395bf920f1c01bb0dd7cd970f51267552 100644 (file)
@@ -14,9 +14,6 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/regs-timer.h>
-
 static void arch_idle(void)
 {
        /*
@@ -27,22 +24,4 @@ static void arch_idle(void)
 
 }
 
-static void arch_reset(char mode, const char *cmd)
-{
-       unsigned int reg;
-
-       if (mode == 's')
-               soft_restart(0);
-
-       /* disable timer0 */
-       reg = __raw_readl(KS8695_TMR_VA + KS8695_TMCON);
-       __raw_writel(reg & ~TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
-
-       /* enable watchdog mode */
-       __raw_writel((10 << 8) | T0TC_WATCHDOG, KS8695_TMR_VA + KS8695_T0TC);
-
-       /* re-enable timer0 */
-       __raw_writel(reg | TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
-}
-
 #endif
index 69c072c2c0f9a28c1fc466a786216f4ad62b24e8..37dfcd5bd2ad9178213bac8ad27b080cd37dc03d 100644 (file)
@@ -109,3 +109,21 @@ struct sys_timer ks8695_timer = {
        .offset         = ks8695_gettimeoffset,
        .resume         = ks8695_timer_setup,
 };
+
+void ks8695_restart(char mode, const char *cmd)
+{
+       unsigned int reg;
+
+       if (mode == 's')
+               soft_restart(0);
+
+       /* disable timer0 */
+       reg = __raw_readl(KS8695_TMR_VA + KS8695_TMCON);
+       __raw_writel(reg & ~TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
+
+       /* enable watchdog mode */
+       __raw_writel((10 << 8) | T0TC_WATCHDOG, KS8695_TMR_VA + KS8695_T0TC);
+
+       /* re-enable timer0 */
+       __raw_writel(reg | TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
+}
index 205b2dbb565bb91c00593b848c1aec2adfda74cf..369b152896cd7d7c4311a5766ded9428b2e74c87 100644 (file)
@@ -164,7 +164,7 @@ int clk_is_sysclk_mainosc(void)
 /*
  * System reset via the watchdog timer
  */
-void lpc32xx_watchdog_reset(void)
+static void lpc32xx_watchdog_reset(void)
 {
        /* Make sure WDT clocks are enabled */
        __raw_writel(LPC32XX_CLKPWR_PWMCLK_WDOG_EN,
@@ -311,3 +311,21 @@ void __init lpc32xx_map_io(void)
 {
        iotable_init(lpc32xx_io_desc, ARRAY_SIZE(lpc32xx_io_desc));
 }
+
+void lpc23xx_restart(char mode, const char *cmd)
+{
+       switch (mode) {
+       case 's':
+       case 'h':
+               lpc32xx_watchdog_reset();
+               break;
+
+       default:
+               /* Do nothing */
+               break;
+       }
+
+       /* Wait for watchdog to reset system */
+       while (1)
+               ;
+}
index 5583f52662bda8164dec061b60d57476b9c761e4..4b4e700343c14f89ecefb18af80810d031ba5a2d 100644 (file)
@@ -39,6 +39,8 @@ extern void __init lpc32xx_init_irq(void);
 extern void __init lpc32xx_map_io(void);
 extern void __init lpc32xx_serial_init(void);
 extern void __init lpc32xx_gpio_init(void);
+extern void lpc23xx_restart(char, const char *);
+
 
 /*
  * Structure used for setting up and querying the PLLS
index d47f3b1c24b8c217ffa725f7a92ad1743d7df6e0..bf176c9915201d24054bdd9d33791b0db7a1af6e 100644 (file)
@@ -24,26 +24,4 @@ static void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       extern void lpc32xx_watchdog_reset(void);
-
-       switch (mode) {
-       case 's':
-       case 'h':
-               printk(KERN_CRIT "RESET: Rebooting system\n");
-
-               lpc32xx_watchdog_reset();
-               break;
-
-       default:
-               /* Do nothing */
-               break;
-       }
-
-       /* Wait for watchdog to reset system */
-       while (1)
-               ;
-}
-
 #endif
index 6d2f0d1b9373243d586ae4ef3a33452f48766a5d..ecb94114c81bdf495f17d940d5287800304527e6 100644 (file)
@@ -388,4 +388,5 @@ MACHINE_START(PHY3250, "Phytec 3250 board with the LPC3250 Microcontroller")
        .init_irq       = lpc32xx_init_irq,
        .timer          = &lpc32xx_timer,
        .init_machine   = phy3250_board_init,
+       .restart        = lpc23xx_restart,
 MACHINE_END
index 7a60bbbce7a43523c888f04a9ae8444fb95c1993..3e6dfab59ef68a120310188971d37df3a61e7c71 100644 (file)
@@ -243,6 +243,7 @@ MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")
        .init_irq       = pxa168_init_irq,
        .timer          = &pxa168_timer,
        .init_machine   = common_init,
+       .restart        = pxa168_restart,
 MACHINE_END
 
 MACHINE_START(ZYLONITE2, "PXA168-based Zylonite2 Development Platform")
@@ -251,4 +252,5 @@ MACHINE_START(ZYLONITE2, "PXA168-based Zylonite2 Development Platform")
        .init_irq       = pxa168_init_irq,
        .timer          = &pxa168_timer,
        .init_machine   = common_init,
+       .restart        = pxa168_restart,
 MACHINE_END
index 39f0878d64a0c39ba026c2be0f20755576d75045..8de3dc6131a48e91efe66000005ddc0ab864d206 100644 (file)
@@ -45,4 +45,5 @@ MACHINE_START(AVENGERS_LITE, "PXA168 Avengers lite Development Platform")
        .init_irq       = pxa168_init_irq,
        .timer          = &pxa168_timer,
        .init_machine   = avengers_lite_init,
+       .restart        = pxa168_restart,
 MACHINE_END
index 983cfb15fbde99bc0b394b56a779cc4708f6be9c..e16f04b39b15f6c2abb3049719f81afbee9edd91 100644 (file)
@@ -219,4 +219,5 @@ MACHINE_START(BROWNSTONE, "Brownstone Development Platform")
        .init_irq       = mmp2_init_irq,
        .timer          = &mmp2_timer,
        .init_machine   = brownstone_init,
+       .restart        = mmp_restart,
 MACHINE_END
index 5720674739f093f16b08e91d585fc0b8fe3c3e55..062b5b93c50e9eb2e8398f600de29d120a905289 100644 (file)
@@ -45,3 +45,8 @@ void __init mmp_map_io(void)
        /* this is early, initialize mmp_chip_id here */
        mmp_chip_id = __raw_readl(MMP_CHIPID);
 }
+
+void mmp_restart(char mode, const char *cmd)
+{
+       soft_restart(0);
+}
index ec8d65ded25cb7a6dd908f1d950da7366d38618a..1c9d6c1ea97a792159df74f66b9f7a3835bdca06 100644 (file)
@@ -6,3 +6,4 @@ extern void timer_init(int irq);
 
 extern void __init icu_init_irq(void);
 extern void __init mmp_map_io(void);
+extern void mmp_restart(char, const char *);
index c4fd806b15b42ad282533587e54a8378eb514c3d..5a6a27a6cfd075cfe3c50ba5b669a4daf9d9a5ff 100644 (file)
@@ -121,4 +121,5 @@ MACHINE_START(FLINT, "Flint Development Platform")
        .init_irq       = mmp2_init_irq,
        .timer          = &mmp2_timer,
        .init_machine   = flint_init,
+       .restart        = mmp_restart,
 MACHINE_END
index 4665767a4f79ee918ec1fd24053d296ce13d0806..1e3abbe37cac01b584e3a5857302092e62d4f4d3 100644 (file)
@@ -194,4 +194,5 @@ MACHINE_START(GPLUGD, "PXA168-based GuruPlug Display (gplugD) Platform")
        .init_irq       = pxa168_init_irq,
        .timer          = &pxa168_timer,
        .init_machine   = gplugd_init,
+       .restart        = pxa168_restart,
 MACHINE_END
index 7fb568d2845b0da8f86c2614b6072b9526b3ee5e..a677aa732c2641d080e235a9abbfbb269852dcbe 100644 (file)
@@ -5,6 +5,7 @@ struct sys_timer;
 
 extern struct sys_timer pxa168_timer;
 extern void __init pxa168_init_irq(void);
+extern void pxa168_restart(char, const char *);
 extern void pxa168_clear_keypad_wakeup(void);
 
 #include <linux/i2c.h>
index cb0637933a85b89051f0b48e09051adcd0fb1306..1d001eab81e11654ecbe0116daaec0d87c56699d 100644 (file)
@@ -9,18 +9,8 @@
 #ifndef __ASM_MACH_SYSTEM_H
 #define __ASM_MACH_SYSTEM_H
 
-#include <mach/cputype.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (cpu_is_pxa168())
-               soft_restart(0xffff0000);
-       else
-               soft_restart(0);
-}
 #endif /* __ASM_MACH_SYSTEM_H */
index 8bfac66126234df28995cbc630311cebbf482818..96cf5c8fe47dcb3b0529ead1538281d584f47e13 100644 (file)
@@ -175,4 +175,5 @@ MACHINE_START(MARVELL_JASPER, "Jasper Development Platform")
        .init_irq       = mmp2_init_irq,
        .timer          = &mmp2_timer,
        .init_machine   = jasper_init,
+       .restart        = mmp_restart,
 MACHINE_END
index 76ca15c00e4589602a5123e278a9960c07095c2a..13f23867a86ad3733f6258708893a2c2f9c2022f 100644 (file)
@@ -214,3 +214,8 @@ int __init pxa168_add_usb_host(struct pxa168_usb_pdata *pdata)
        pxa168_device_usb_host.dev.platform_data = pdata;
        return platform_device_register(&pxa168_device_usb_host);
 }
+
+void pxa168_restart(char mode, const char *cmd)
+{
+       soft_restart(0xffff0000);
+}
index eb5be879fd8cd76748d109546c77d34eb9914116..257a21283ec18afd6e51e82285f5d23a0fb9a859 100644 (file)
@@ -103,4 +103,5 @@ MACHINE_START(TAVOREVB, "PXA910 Evaluation Board (aka TavorEVB)")
        .init_irq       = pxa910_init_irq,
        .timer          = &pxa910_timer,
        .init_machine   = tavorevb_init,
+       .restart        = mmp_restart,
 MACHINE_END
index bbe4727b96ccb26f068b61f4096dd01b2d07fc5d..8ac22a62bf1a119cc4aeb2b44c7656a3e80019d1 100644 (file)
@@ -86,4 +86,5 @@ MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform")
        .init_irq       = pxa168_init_irq,
        .timer          = &pxa168_timer,
        .init_machine   = teton_bga_init,
+       .restart        = pxa168_restart,
 MACHINE_END
index 176515a7698935ee136842563b1c025e39a22651..f026588255766cf33916f5bbdfb8bf5f9d89ddb7 100644 (file)
@@ -159,4 +159,5 @@ MACHINE_START(TTC_DKB, "PXA910-based TTC_DKB Development Platform")
        .init_irq       = pxa910_init_irq,
        .timer          = &pxa910_timer,
        .init_machine   = ttc_dkb_init,
+       .restart        = mmp_restart,
 MACHINE_END
index d2e83f42ba1654f79f5953b1e65b0cbefc174785..311db2b35da0e025c4b808c381a1d2a4928035a5 100644 (file)
  * GNU General Public License for more details.
  *
  */
-
-#include <mach/hardware.h>
-
 void arch_idle(void);
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       for (;;) ;  /* depends on IPC w/ other core */
-}
-
 /* low level hardware reset hook -- for example, hitting the
  * PSHOLD line on the PMIC to hard reset the system
  */
index 0e94268d6e6f71895f3e965638bfd1975e4c9350..ee74ec97c141b8fd45e05936832cea12689e65e8 100644 (file)
@@ -151,4 +151,5 @@ MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
        .init_early     = mv78xx0_init_early,
        .init_irq       = mv78xx0_init_irq,
        .timer          = &mv78xx0_timer,
+       .restart        = mv78xx0_restart,
 MACHINE_END
index 23d3980ef59d561e8a4c9055170266dcb3b45faa..5b9632b011698ca944354f8e5dc0ff0621f6ebad 100644 (file)
@@ -401,3 +401,19 @@ void __init mv78xx0_init(void)
        feroceon_l2_init(is_l2_writethrough());
 #endif
 }
+
+void mv78xx0_restart(char mode, const char *cmd)
+{
+       /*
+        * Enable soft reset to assert RSTOUTn.
+        */
+       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
+
+       /*
+        * Assert soft reset.
+        */
+       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
+
+       while (1)
+               ;
+}
index 632e63d65e7a1f1e5d4c4ea7ae72c611e57a7d52..07d5f8f6be7dc6986aaa4f0deac25bf03a1e29dd 100644 (file)
@@ -46,6 +46,7 @@ void mv78xx0_uart1_init(void);
 void mv78xx0_uart2_init(void);
 void mv78xx0_uart3_init(void);
 void mv78xx0_i2c_init(void);
+void mv78xx0_restart(char, const char *);
 
 extern struct sys_timer mv78xx0_timer;
 
index 50b85ae2da5208f5d2e57034703617a32e1cfe61..4d6d48bf51ef4e4b71a324db873a30e60b5d2009 100644 (file)
@@ -99,4 +99,5 @@ MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")
        .init_early     = mv78xx0_init_early,
        .init_irq       = mv78xx0_init_irq,
        .timer          = &mv78xx0_timer,
+       .restart        = mv78xx0_restart,
 MACHINE_END
index 66e7ce4e90bd260fd037930633e71db9a52a6b02..8c3a5387cec7644743c7789aea2fddda0bd6971c 100644 (file)
@@ -9,28 +9,9 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/bridge-regs.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Enable soft reset to assert RSTOUTn.
-        */
-       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
-
-       /*
-        * Assert soft reset.
-        */
-       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
-
-       while (1)
-               ;
-}
-
-
 #endif
index e85222e535788c4b88e221ea5f748e03eb816587..9a882706e1387fbe998fec18c09bd9210892af1c 100644 (file)
@@ -84,4 +84,5 @@ MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")
        .init_early     = mv78xx0_init_early,
        .init_irq       = mv78xx0_init_irq,
        .timer          = &mv78xx0_timer,
+       .restart        = mv78xx0_restart,
 MACHINE_END
index 1fc110348040b0a94c61b009e3546c686f33596c..944025da83336d88f5c697ac917a16f3ed706d72 100644 (file)
@@ -297,4 +297,5 @@ MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
        .handle_irq = imx51_handle_irq,
        .timer = &mxc_timer,
        .init_machine = eukrea_cpuimx51_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 52a11c1898e6aeb31a8f5ca3c81ed9f875a8003d..9fbe923c8b087ab68d5e48a58570397824651d28 100644 (file)
@@ -335,4 +335,5 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
        .handle_irq = imx51_handle_irq,
        .timer = &mxc_timer,
        .init_machine = eukrea_cpuimx51sd_init,
+       .restart        = mxc_restart,
 MACHINE_END
index fc3621d90bded70a8bd93e48a0356c05b0893e83..42b66e8d9615be75b2a4e4a3238ef04cedef360c 100644 (file)
@@ -222,4 +222,5 @@ MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform")
        .handle_irq = imx50_handle_irq,
        .timer = &mx50_rdp_timer,
        .init_machine = mx50_rdp_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 05783906db2bd5fdb262b20d100774c03b568c3c..83eab4176ca48668f1f7295698c3ca6b4aaa4502 100644 (file)
@@ -175,4 +175,5 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_3ds_timer,
        .init_machine = mx51_3ds_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 5c837603ff0fc3b6a173ab677bdfda2a75bec09b..68cdfda675faa3f46e964524f2a30c3b32ee052d 100644 (file)
@@ -426,4 +426,5 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_babbage_timer,
        .init_machine = mx51_babbage_init,
+       .restart        = mxc_restart,
 MACHINE_END
index a9e48662cf75e928fe2fe60c040130801a8c44d4..3a5ed2dd885af8326e42d63ba44e1a6a4caee39b 100644 (file)
@@ -182,7 +182,7 @@ static const struct gpio_keys_platform_data mx51_efikamx_powerkey_data __initcon
        .nbuttons = ARRAY_SIZE(mx51_efikamx_powerkey),
 };
 
-void mx51_efikamx_reset(void)
+static void mx51_efikamx_restart(char mode, const char *cmd)
 {
        if (system_rev == 0x11)
                gpio_direction_output(EFIKAMX_RESET1_1, 0);
@@ -292,4 +292,5 @@ MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_efikamx_timer,
        .init_machine = mx51_efikamx_init,
+       .restart = mx51_efikamx_restart,
 MACHINE_END
index 38c4a3e28d3cd9c836f3c83d0a346fe6bd119b4d..ea5f65b0381ae995ee7558793f4eba0e56e0697e 100644 (file)
@@ -287,4 +287,5 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika Smartbook")
        .handle_irq = imx51_handle_irq,
        .init_machine =  efikasb_board_init,
        .timer = &mx51_efikasb_timer,
+       .restart        = mxc_restart,
 MACHINE_END
index 0d7f0fffb23a865585faa28b4c40a2afbd5b3029..5f224f1c3eb638f6076e62b342956c4e2eaebe6d 100644 (file)
@@ -257,4 +257,5 @@ MACHINE_START(MX53_ARD, "Freescale MX53 ARD Board")
        .handle_irq = imx53_handle_irq,
        .timer = &mx53_ard_timer,
        .init_machine = mx53_ard_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 6bea31ab8f8581ee637a7f9a998157cd982a1b1b..c2d27cf7670ffc43904d7c6547bf4e68e2d14800 100644 (file)
@@ -175,4 +175,5 @@ MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
        .handle_irq = imx53_handle_irq,
        .timer = &mx53_evk_timer,
        .init_machine = mx53_evk_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 7678f7734db631ab5163bc1144520311e2666e18..62f4aa38a6cdd56b4fb4e7dbdc22a96c52a225a5 100644 (file)
@@ -317,4 +317,5 @@ MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")
        .handle_irq = imx53_handle_irq,
        .timer = &mx53_loco_timer,
        .init_machine = mx53_loco_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index 59c0845eb4a6321badc4f6b1f58943e64c68a33e..2a78e6266f61da68ff6d8b43a2d0c1523e909c33 100644 (file)
@@ -164,4 +164,5 @@ MACHINE_START(MX53_SMD, "Freescale MX53 SMD Board")
        .handle_irq = imx53_handle_irq,
        .timer = &mx53_smd_timer,
        .init_machine = mx53_smd_board_init,
+       .restart        = mxc_restart,
 MACHINE_END
index ccc61585659bdb17d55bb91bfc1cbb2ebf6cca1c..edf2c4c3726fb325287aeb048b48e4ab8c6a4efe 100644 (file)
@@ -113,4 +113,5 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
        .timer          = &imx51_timer,
        .init_machine   = imx51_dt_init,
        .dt_compat      = imx51_dt_board_compat,
+       .restart        = mxc_restart,
 MACHINE_END
index ccaa0b81b7683f86b7750ca852f6b8b67d80eabd..106070a823f8f5be3b9737c0db2bf1a67e4cc860 100644 (file)
@@ -123,4 +123,5 @@ DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
        .timer          = &imx53_timer,
        .init_machine   = imx53_dt_init,
        .dt_compat      = imx53_dt_board_compat,
+       .restart        = mxc_restart,
 MACHINE_END
index 635bb5d9a20ade988bfa61667b9513c985a47bb9..1388485414c9f37174c575791d9aac6bc9ad79e4 100644 (file)
@@ -16,6 +16,7 @@ struct clk;
 extern const u32 *mxs_get_ocotp(void);
 extern int mxs_reset_block(void __iomem *);
 extern void mxs_timer_init(struct clk *, int);
+extern void mxs_restart(char, const char *);
 
 extern int mx23_register_gpios(void);
 extern int mx23_clocks_init(void);
index 0e428239b4333c7d7f5bf7c00db380b5c604ab5b..e7ad1bb29423e7cfcadf4ceac8554b5308f438b8 100644 (file)
@@ -22,6 +22,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-void arch_reset(char mode, const char *cmd);
-
 #endif /* __MACH_MXS_SYSTEM_H__ */
index 3b1681e4f49a1ae633e5ac4b3d31137f2f92b014..7799cd91a341b9301946d8f98ebc9c943b3e6596 100644 (file)
@@ -363,4 +363,5 @@ MACHINE_START(M28EVK, "DENX M28 EVK")
        .init_irq       = mx28_init_irq,
        .init_machine   = m28evk_init,
        .timer          = &m28evk_timer,
+       .restart        = mxs_restart,
 MACHINE_END
index c325fbe4e4c6aa4873afd4b38b30017041ea9c91..5ea1c57d2606dce6a7c94bc270a53b41ea4232ef 100644 (file)
@@ -184,4 +184,5 @@ MACHINE_START(MX23EVK, "Freescale MX23 EVK")
        .init_irq       = mx23_init_irq,
        .timer          = &mx23evk_timer,
        .init_machine   = mx23evk_init,
+       .restart        = mxs_restart,
 MACHINE_END
index 064ec5abaa557f7c6679bf4fe965c67f3fb6a022..d0cc37fd23a4ba16f31df3091217973ef1e78013 100644 (file)
@@ -501,4 +501,5 @@ MACHINE_START(MX28EVK, "Freescale MX28 EVK")
        .init_irq       = mx28_init_irq,
        .timer          = &mx28evk_timer,
        .init_machine   = mx28evk_init,
+       .restart        = mxs_restart,
 MACHINE_END
index 177e53123a02e5b67f617e5031c047354703103c..857e857672c4b1484483f7822e9726a8da56635f 100644 (file)
@@ -117,4 +117,5 @@ MACHINE_START(STMP378X, "STMP378X")
        .init_irq       = mx23_init_irq,
        .init_machine   = stmp378x_dvb_init,
        .timer          = &stmp378x_dvb_timer,
+       .restart        = mxs_restart,
 MACHINE_END
index 9a1f0e7a338eff1a5992b9e7db7ebc7a6ed3ea5b..2c0862e655ee9022f5a4b39276d9286c66f8047a 100644 (file)
@@ -178,4 +178,5 @@ MACHINE_START(TX28, "Ka-Ro electronics TX28 module")
        .init_irq = mx28_init_irq,
        .timer = &tx28_timer,
        .init_machine = tx28_stk5v3_init,
+       .restart        = mxs_restart,
 MACHINE_END
index cab88364e7c1475be90503c5aaa6c000ebeaea73..b936633b7682c87d9a75ffd354cdd975c1e62517 100644 (file)
@@ -42,7 +42,7 @@ static void __iomem *mxs_clkctrl_reset_addr;
 /*
  * Reset the system. It is called by machine_restart().
  */
-void arch_reset(char mode, const char *cmd)
+void mxs_restart(char mode, const char *cmd)
 {
        /* reset the chip */
        __mxs_setl(MXS_CLKCTRL_RESET_CHIP, mxs_clkctrl_reset_addr);
index 00023b5cf12b640f01291ba4f56b0e87941831cd..59e67979f197bb4908efc1e617911183cc6c5b3d 100644 (file)
@@ -187,3 +187,8 @@ static int __init netx_init(void)
 
 subsys_initcall(netx_init);
 
+void netx_restart(char mode, const char *cmd)
+{
+       writel(NETX_SYSTEM_RES_CR_FIRMW_RES_EN | NETX_SYSTEM_RES_CR_FIRMW_RES,
+              NETX_SYSTEM_RES_CR);
+}
index ede2d35341c325b4cace6b14ca0e77b8581ce64f..9b915119b8d6e7bb939baf0094d09689e2b2c048 100644 (file)
@@ -19,6 +19,7 @@
 
 extern void __init netx_map_io(void);
 extern void __init netx_init_irq(void);
+extern void netx_restart(char, const char *);
 
 struct sys_timer;
 extern struct sys_timer netx_timer;
index dc7b4bc003c58182357ce5ce0aff477c82a0de63..b38fa36d58c417cbdcc36a1f36aa0a81b4264fc5 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include "netx-regs.h"
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       writel(NETX_SYSTEM_RES_CR_FIRMW_RES_EN | NETX_SYSTEM_RES_CR_FIRMW_RES,
-              NETX_SYSTEM_RES_CR);
-}
-
 #endif
 
index ef8cf3574a0259756ac89284bb74eff300757c36..180ea899a48afcf76586f24cf1a68cca5438f098 100644 (file)
@@ -207,4 +207,5 @@ MACHINE_START(NXDB500, "Hilscher nxdb500")
        .handle_irq     = vic_handle_irq,
        .timer          = &netx_timer,
        .init_machine   = nxdb500_init,
+       .restart        = netx_restart,
 MACHINE_END
index 588558bdd800c160429300220e69ddcc16d69cc3..58009e29b20e722d5f9759d148d3a26e1b3fbcc4 100644 (file)
@@ -100,4 +100,5 @@ MACHINE_START(NXDKN, "Hilscher nxdkn")
        .handle_irq     = vic_handle_irq,
        .timer          = &netx_timer,
        .init_machine   = nxdkn_init,
+       .restart        = netx_restart,
 MACHINE_END
index cfcbb50386487f450ed3de4546327df2980a4349..122e99826ef6fd0869a80f2935352c081a000ec1 100644 (file)
@@ -184,4 +184,5 @@ MACHINE_START(NXEB500HMI, "Hilscher nxeb500hmi")
        .handle_irq     = vic_handle_irq,
        .timer          = &netx_timer,
        .init_machine   = nxeb500hmi_init,
+       .restart        = netx_restart,
 MACHINE_END
index f98259c050eea48acd4b480ba1058ed339ed656c..7c878bf0034094fbbc8e31a933f9d091b4ae95f0 100644 (file)
@@ -35,6 +35,8 @@
 #include <mach/nand.h>
 #include <mach/fsmc.h>
 
+#include "cpu-8815.h"
+
 /* Initial value for SRC control register: all timers use MXTAL/8 source */
 #define SRC_CR_INIT_MASK       0x00007fff
 #define SRC_CR_INIT_VAL                0x2aaa8000
@@ -284,4 +286,5 @@ MACHINE_START(NOMADIK, "NHK8815")
        .handle_irq     = vic_handle_irq,
        .timer          = &nomadik_timer,
        .init_machine   = nhk8815_platform_init,
+       .restart        = cpu8815_restart,
 MACHINE_END
index dc67717db6f078db7975adc873bf6efe2a64eaef..65df7b4fdd3ede7326d3ef0b747e642a269fe99e 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/device.h>
 #include <linux/amba/bus.h>
 #include <linux/platform_device.h>
+#include <linux/io.h>
 
 #include <plat/gpio-nomadik.h>
 #include <mach/hardware.h>
@@ -32,6 +33,7 @@
 #include <asm/hardware/cache-l2x0.h>
 
 #include "clock.h"
+#include "cpu-8815.h"
 
 #define __MEM_4K_RESOURCE(x) \
        .res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM}
@@ -164,3 +166,13 @@ void __init cpu8815_init_irq(void)
 #endif
         return;
 }
+
+void cpu8815_restart(char mode, const char *cmd)
+{
+       void __iomem *src_rstsr = io_p2v(NOMADIK_SRC_BASE + 0x18);
+
+       /* FIXME: use egpio when implemented */
+
+       /* Write anything to Reset status register */
+       writel(1, src_rstsr);
+}
diff --git a/arch/arm/mach-nomadik/cpu-8815.h b/arch/arm/mach-nomadik/cpu-8815.h
new file mode 100644 (file)
index 0000000..71c21e8
--- /dev/null
@@ -0,0 +1,4 @@
+extern void cpu8815_map_io(void);
+extern void cpu8815_platform_init(void);
+extern void cpu8815_init_irq(void);
+extern void cpu8815_restart(char, const char *);
index b7897edf1f3577cac64769b6a31f8d869dd6bcaf..bcaeaf41c053d7c16a42edf5f045ec29f20d7e8a 100644 (file)
@@ -12,9 +12,6 @@
 
 #ifdef CONFIG_NOMADIK_8815
 
-extern void cpu8815_map_io(void);
-extern void cpu8815_platform_init(void);
-extern void cpu8815_init_irq(void);
 extern void nmdk_timer_init(void);
 
 #endif /* NOMADIK_8815 */
index 7119f688116eecfc51dbcbf2fbcbe47a4324b6a3..25e198b8976cd874a03a74cbbac811400eddd428 100644 (file)
@@ -20,9 +20,6 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/hardware.h>
-
 static inline void arch_idle(void)
 {
        /*
@@ -32,14 +29,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       void __iomem *src_rstsr = io_p2v(NOMADIK_SRC_BASE + 0x18);
-
-       /* FIXME: use egpio when implemented */
-
-       /* Write anything to Reset status register */
-       writel(1, src_rstsr);
-}
-
 #endif
index af7911963c0dc53429b33eb039aaec9d80152453..88909cc0b25407eada87f91b651525fa35cf30fe 100644 (file)
@@ -386,6 +386,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
        .init_irq       = omap1_init_irq,
        .init_machine   = ams_delta_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
 
 EXPORT_SYMBOL(ams_delta_latch1_write);
index b9c4c0f933ee924bdcb612e526635d4f16285b3b..0b9464b4121286c930b2f1c6af835386cdc306f4 100644 (file)
@@ -390,4 +390,5 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_fsample_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 7f41d7a504a59aee51183311683034eca1b02988..9a5fe581bc1c8c0e22264edbe5b8dd17b9215780 100644 (file)
@@ -89,4 +89,5 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_generic_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 7933b97698f81ccdb76873223473ae8a9cc60ed8..00ad6b22d60a287e488295859b7995a5af87a4b1 100644 (file)
@@ -456,4 +456,5 @@ MACHINE_START(OMAP_H2, "TI-H2")
        .init_irq       = omap1_init_irq,
        .init_machine   = h2_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 04be2f83ca09c227911ed65fd0e4d3d60c8c4559..4a7f25149703a6cdd9384d376fa792f6eadfd094 100644 (file)
@@ -444,4 +444,5 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
        .init_irq       = omap1_init_irq,
        .init_machine   = h3_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 46fcfeb1f11ec1fcca5493087b024c2e19ac9014..731cc3db7ab377c1ee556d63fb37e5039ad3f20d 100644 (file)
@@ -610,4 +610,5 @@ MACHINE_START(HERALD, "HTC Herald")
        .init_irq       = omap1_init_irq,
        .init_machine   = htcherald_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index f99d11de1531844272b088e10cb04bf15f3b695d..309369ea6978e59367e7e884875706b52f85478d 100644 (file)
@@ -460,4 +460,5 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
        .init_irq       = omap1_init_irq,
        .init_machine   = innovator_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index c64342388ec3315d68061194343ea26c92c356b4..f9efc036ba96d3cfbbe669e397aa5dfb5be7eeb3 100644 (file)
@@ -259,4 +259,5 @@ MACHINE_START(NOKIA770, "Nokia 770")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_nokia770_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index a409dfcc5b18524e43f34b5a9444eca2b85c4934..675de06557aab60bb8c16345d9ada9dcc32d720a 100644 (file)
@@ -578,4 +578,5 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
        .init_irq       = omap1_init_irq,
        .init_machine   = osk_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 105292d39484136547a09d457388176150bb223a..81fa27f88369e00f05601c2d44c696e34b4ddeef 100644 (file)
@@ -270,4 +270,5 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmte_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 387a9006358d00989a50390ac185202cc7df56be..81cb82178388ed63743baf8470af756f1978a1cd 100644 (file)
@@ -317,4 +317,5 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmtt_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index df6d15e68aad08529a064141eeb7156ad27aac2b..e881945ce8ec7a043db554c0470302f64a8378a0 100644 (file)
@@ -334,4 +334,5 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmz71_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 57ecd7e09831e6c23dc92ca09898c3121f89b2d9..c000bed7627633135bf0e2d5b39450e56b41ab51 100644 (file)
@@ -352,4 +352,5 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_perseus2_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 774ae39fd636706bdb9560630ee00cb18fc0d5b9..7bcd82ab0fd0a655d9b216b8770e1cb8b49bb836 100644 (file)
@@ -416,4 +416,5 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_sx1_init,
        .timer          = &omap1_timer,
+       .restart        = omap1_restart,
 MACHINE_END
index 7721c146d8d6ce0b60e1f37c8a9467acccdc7968..f83a502dc93c7a45866ccbbc9c30c9c82afb9130 100644 (file)
@@ -28,7 +28,6 @@
 #include <linux/export.h>
 
 #include <mach/hardware.h>
-#include <mach/system.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -221,7 +220,7 @@ void voiceblue_wdt_ping(void)
        gpio_set_value(0, wdt_gpio_state);
 }
 
-static void voiceblue_reset(char mode, const char *cmd)
+static void voiceblue_restart(char mode, const char *cmd)
 {
        /*
         * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
@@ -285,8 +284,6 @@ static void __init voiceblue_init(void)
         * (it is connected through invertor) */
        omap_writeb(0x00, OMAP_LPG1_LCR);
        omap_writeb(0x00, OMAP_LPG1_PMR);       /* Disable clock */
-
-       arch_reset = voiceblue_reset;
 }
 
 MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
@@ -298,4 +295,5 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
        .init_irq       = omap1_init_irq,
        .init_machine   = voiceblue_init,
        .timer          = &omap1_timer,
+       .restart        = voiceblue_restart,
 MACHINE_END
index 52c4eda97fa80c2ee69bf24e3ca4c49d7ab1eb51..a9a5146dd2d4d3877f021780ef02b323b3669c9a 100644 (file)
@@ -54,6 +54,7 @@ static inline void omap16xx_map_io(void)
 
 void omap1_init_early(void);
 void omap1_init_irq(void);
+void omap1_restart(char, const char *);
 
 extern struct sys_timer omap1_timer;
 extern bool omap_32k_timer_init(void);
index ad951ee692058d69c517f1df84fe2ba4a999086f..91d199b6497935acf85192494b6d2c116e43b694 100644 (file)
@@ -5,10 +5,9 @@
 #include <linux/io.h>
 
 #include <mach/hardware.h>
-#include <mach/system.h>
 #include <plat/prcm.h>
 
-void omap1_arch_reset(char mode, const char *cmd)
+void omap1_restart(char mode, const char *cmd)
 {
        /*
         * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
@@ -21,5 +20,3 @@ void omap1_arch_reset(char mode, const char *cmd)
 
        omap_writew(1, ARM_RSTCT1);
 }
-
-void (*arch_reset)(char, const char *) = omap1_arch_reset;
index d88143faca59c33d0d277c33a01954c40d75b473..7370983f809fc3994a8722970f2c6f7f1a85f08e 100644 (file)
@@ -304,4 +304,5 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_2430sdp_init,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 83126368ed99f2bf0d32679c0ec1e2cb265a5516..9996334cb6879f2fe6b7b770608a7db7cde8375f 100644 (file)
@@ -731,4 +731,5 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_3430sdp_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 7969dd904bd3a5ae9f3bca43cf8911018c1c965a..6ef350d1ae4f40a89a8b1bc54c6858780db1b2a8 100644 (file)
@@ -218,4 +218,5 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_sdp_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index ef2bbc09428a2e29b2786bbeb623ac307e1d1ed8..bad5d5a5ef7949fafdeb06ce4a2e95d686eeb29c 100644 (file)
@@ -987,4 +987,5 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
        .handle_irq     = gic_handle_irq,
        .init_machine   = omap_4430sdp_init,
        .timer          = &omap4_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 7e90f93263dba49e0470915b16cacaf0fe6b0e08..c3851e8de28bf78d94f4be19baa0ca869915cd95 100644 (file)
@@ -101,4 +101,5 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = am3517_crane_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 551cae8d9b8a08b036a135bc7be1f72176adbd75..f5a3a3f117394e0c713b9deff1419f9f02fba415 100644 (file)
@@ -494,4 +494,5 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = am3517_evm_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 5a66480feed099f0463209c05f194b280a69f5ac..ac773829941f487493f4ce0592dfa787592211a9 100644 (file)
@@ -357,4 +357,5 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_apollon_init,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 510b6a2ff0fa3c3675d81f54374e58bc89d41e62..1545102d1f9b2b5a8471785aadfe463f84185d30 100644 (file)
@@ -637,6 +637,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t35_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(CM_T3730, "Compulab CM-T3730")
@@ -648,4 +649,5 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t3730_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index efc5cedb1fbb86f51c20aeacaf5775eea772bd27..f36d694d21590e069aa390a66eb56024d113d8f7 100644 (file)
@@ -302,4 +302,5 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t3517_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index d81ea7fa75ef6f59425d1f44c05af46a6ea339d0..e873063f4fdaf4cac7fffe5d18ca718a79cb84fe 100644 (file)
@@ -663,4 +663,5 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = devkit8000_init,
        .timer          = &omap3_secure_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 63b54163b99365d32fcdaf3b489ca276b94c4d2f..f8c5b2cc7c9c228c14847b16ca3d9f98eaa35426 100644 (file)
@@ -106,6 +106,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
        .init_machine   = omap_generic_init,
        .timer          = &omap2_timer,
        .dt_compat      = omap242x_boards_compat,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 #endif
 
@@ -125,6 +126,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
        .init_machine   = omap_generic_init,
        .timer          = &omap2_timer,
        .dt_compat      = omap243x_boards_compat,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 #endif
 
@@ -143,6 +145,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
        .init_machine   = omap3_init,
        .timer          = &omap3_timer,
        .dt_compat      = omap3_boards_compat,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 #endif
 
@@ -161,5 +164,6 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
        .init_machine   = omap4_init,
        .timer          = &omap4_timer,
        .dt_compat      = omap4_boards_compat,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 #endif
index ec4018362e8ea3f9e8a1d937e9ca0b2f92ccaf59..54af800d143c0e261b4acd6548103c6b3c08634f 100644 (file)
@@ -399,4 +399,5 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_h4_init,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 5949f6ae3edf6038cdf1c4d46798924e09da2b92..a59ace0ed560a57cdf1009cd15d596b94d71c76d 100644 (file)
@@ -675,6 +675,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = igep_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(IGEP0030, "IGEP OMAP3 module")
@@ -686,4 +687,5 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = igep_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 13bde0e6693463a61610eba0749ad2315571e119..2d2a61f7dcbf8e3d799fee8054a39011d94ab603 100644 (file)
@@ -437,4 +437,5 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_ldp_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index bebd3d84365eec43e34eb5f786b1956c27e0a15b..cef2cf1c0b8d9affe9afdedcaa16376b1caab783 100644 (file)
@@ -692,6 +692,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(NOKIA_N810, "Nokia N810")
@@ -703,6 +704,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
@@ -714,4 +716,5 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
        .timer          = &omap2_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index c34f56588284bfe00deff8c0ca6d19d36245395d..7ffcd2839e7ba872d872e0a53476b2e95832c2a2 100644 (file)
@@ -562,4 +562,5 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_beagle_init,
        .timer          = &omap3_secure_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index f11bc444e7befeddacc57b6f24ceef9fff5f446f..003fe34c934311251452ba4af1efc20382dbbdb6 100644 (file)
@@ -684,4 +684,5 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_evm_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 5fa6bad9574ee812aeed2579e42c40942600b1eb..4198dd017d8fdfde7fd00b2a8a00d5f9d7e766fb 100644 (file)
@@ -211,6 +211,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3logic_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
@@ -221,4 +222,5 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3logic_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index ef315c585b752e7c0c845fac37bd6dbbb8bc52de..1644b73017fcafbdc0e7b87a503ac35f92e8f992 100644 (file)
@@ -609,4 +609,5 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3pandora_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index b21d70a2e4a7229efae9a754bb1ab37f63438efe..cb089a46f62f691cceec4c20f9f035111dded5a3 100644 (file)
@@ -457,4 +457,5 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
        .handle_irq             = omap3_intc_handle_irq,
        .init_machine           = omap3_stalker_init,
        .timer                  = &omap3_secure_timer,
+       .restart                = omap_prcm_restart,
 MACHINE_END
index 18cd340f9b7bfb232937404167ed53993676de89..a0b851aafccad1bc87d900d9474cfa689e8cf39d 100644 (file)
@@ -384,4 +384,5 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_touchbook_init,
        .timer          = &omap3_secure_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index b6f114436dbc74bb93d09300deef50db59b57c52..8b06c6a60d02767819f4cdb833f72f3f6471c580 100644 (file)
@@ -580,4 +580,5 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
        .handle_irq     = gic_handle_irq,
        .init_machine   = omap4_panda_init,
        .timer          = &omap4_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 60a61ea759bf4262b3fd7e529650bf91a0118157..52c0cef77165cb2cbc8a658d8fd63b260ec5662a 100644 (file)
@@ -565,4 +565,5 @@ MACHINE_START(OVERO, "Gumstix Overo")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = overo_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index a79d49e3fe09a2442ee59debb5ace8480a677a6c..8678b386c6a2ab8e7a0b664546f837eb9966d36f 100644 (file)
@@ -152,4 +152,5 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = rm680_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 4e3c0965edf3d0a39df68505d3bc3cd30af721ea..27f01f051dfff07135762b216621eabbc6bf1046 100644 (file)
@@ -130,4 +130,5 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = rx51_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 8402b39b28405bb86f5ceceb2177c4c3874ef2c4..74713e3993e5f4b8d43bc3d20adf84a88d1944b8 100644 (file)
@@ -48,4 +48,5 @@ MACHINE_START(TI8168EVM, "ti8168evm")
        .init_irq       = ti816x_init_irq,
        .timer          = &omap3_timer,
        .init_machine   = ti8168_evm_init,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 70e5b54a2115ec3adfbaa6746e619f28ccb8655a..5c20bcc57f2b951d50fe2bef11080b36e9729a36 100644 (file)
@@ -138,6 +138,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_zoom_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
 
 MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
@@ -149,4 +150,5 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_zoom_init,
        .timer          = &omap3_timer,
+       .restart        = omap_prcm_restart,
 MACHINE_END
index 012bac7d56a593c5234788dac459df27a4bb92cf..cda888a2e635189f5321218239193b8de6bb5001 100644 (file)
@@ -84,6 +84,7 @@ void omap3_init_early(void);  /* Do not use this one */
 void am35xx_init_early(void);
 void ti816x_init_early(void);
 void omap4430_init_early(void);
+void omap_prcm_restart(char, const char *);
 
 /*
  * IO bases for various OMAP processors
index c35e5cea9f8f076a993a09b8eae63897a89e0146..626acfad719001714136704cba55fe99150128cf 100644 (file)
@@ -25,7 +25,6 @@
 #include <linux/delay.h>
 #include <linux/export.h>
 
-#include <mach/system.h>
 #include "common.h"
 #include <plat/prcm.h>
 #include <plat/irqs.h>
@@ -59,7 +58,7 @@ u32 omap_prcm_get_reset_sources(void)
 EXPORT_SYMBOL(omap_prcm_get_reset_sources);
 
 /* Resets clock rates and reboots the system. Only called from system.h */
-static void omap_prcm_arch_reset(char mode, const char *cmd)
+void omap_prcm_restart(char mode, const char *cmd)
 {
        s16 prcm_offs = 0;
 
@@ -110,8 +109,6 @@ static void omap_prcm_arch_reset(char mode, const char *cmd)
        omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */
 }
 
-void (*arch_reset)(char, const char *) = omap_prcm_arch_reset;
-
 /**
  * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness
  * @reg: physical address of module IDLEST register
index 22ace0bf2f9239278bba364f21627a622a6dc80b..41127e80cc1e961369679e91dd8c1e87196baf98 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/mbus.h>
 #include <linux/mv643xx_i2c.h>
 #include <linux/ata_platform.h>
+#include <linux/delay.h>
 #include <net/dsa.h>
 #include <asm/page.h>
 #include <asm/setup.h>
@@ -304,6 +305,17 @@ void __init orion5x_init(void)
        orion5x_wdt_init();
 }
 
+void orion5x_restart(char mode, const char *cmd)
+{
+       /*
+        * Enable and issue soft reset
+        */
+       orion5x_setbits(RSTOUTn_MASK, (1 << 2));
+       orion5x_setbits(CPU_SOFT_RESET, 1);
+       mdelay(200);
+       orion5x_clrbits(CPU_SOFT_RESET, 1);
+}
+
 /*
  * Many orion-based systems have buggy bootloader implementations.
  * This is a common fixup for bogus memory tags.
index 909489f4d23eb257de4450369d282d5217d3e446..37ef18de61b7742bec93d8a4c4008e16cda5d7fd 100644 (file)
@@ -39,6 +39,7 @@ void orion5x_spi_init(void);
 void orion5x_uart0_init(void);
 void orion5x_uart1_init(void);
 void orion5x_xor_init(void);
+void orion5x_restart(char, const char *);
 
 /*
  * PCIe/PCI functions.
index 8c8300951f46d954bc732f10cd8635d975b14453..d75dcfa0f01c51bc05f11331d14ad28ba7a32118 100644 (file)
@@ -343,6 +343,7 @@ MACHINE_START(D2NET, "LaCie d2 Network")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 #endif
 
@@ -355,6 +356,7 @@ MACHINE_START(BIGDISK, "LaCie Big Disk Network")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 #endif
 
index 4b79a80d5e1f67154adc0544e484726e0d5f3686..a104d5a80e111fec985bc207f5c6419f3e0ef4ee 100644 (file)
@@ -364,4 +364,5 @@ MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
        .init_early     = orion5x_init_early,
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
+       .restart        = orion5x_restart,
 MACHINE_END
index 343f60e9639fe54a9f3cf59978ceb17730d6fcb6..91b0f47885977e80ba5109f6b4205ce4b30de3b8 100644 (file)
@@ -736,4 +736,5 @@ MACHINE_START(DNS323, "D-Link DNS-323")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 70a4e9265f06dc636a326e7628291078448c109a..355e962137c7cbee346142f7a66756c063bd4f19 100644 (file)
@@ -258,4 +258,5 @@ MACHINE_START(EDMINI_V2, "LaCie Ethernet Disk mini V2")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index a1d6e46ab0355fd5e6410ff4449bbcca28427d81..825a2650cefa7bd219aef05cd76cd01adcc195bf 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <mach/bridge-regs.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * Enable and issue soft reset
-        */
-       orion5x_setbits(RSTOUTn_MASK, (1 << 2));
-       orion5x_setbits(CPU_SOFT_RESET, 1);
-       mdelay(200);
-       orion5x_clrbits(CPU_SOFT_RESET, 1);
-}
-
-
 #endif
index d3cd3f63258a63dbd2e7354a239f188ee8f3de37..47587b83284299ae562ba20a5ff422c9668e5b86 100644 (file)
@@ -386,6 +386,7 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 #endif
 
@@ -399,5 +400,6 @@ MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 #endif
index 9503fff404e3c5078527ec000bcb1a7287538142..527213169db07348d57c27e336b984db53e5ec35 100644 (file)
@@ -140,7 +140,7 @@ static struct mv_sata_platform_data lschl_sata_data = {
 
 static void lschl_power_off(void)
 {
-       arm_machine_restart('h', NULL);
+       orion5x_restart('h', NULL);
 }
 
 /*****************************************************************************
@@ -325,4 +325,5 @@ MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index ed6d772f4a24a233e17a70b705b989c4fd4fcec5..9a8697b97dd7d75d023fafe413beb270d97f0dca 100644 (file)
@@ -186,7 +186,7 @@ static struct mv_sata_platform_data ls_hgl_sata_data = {
 
 static void ls_hgl_power_off(void)
 {
-       arm_machine_restart('h', NULL);
+       orion5x_restart('h', NULL);
 }
 
 
@@ -272,4 +272,5 @@ MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 743f7f1db181a43b7d40d89c139125335009931f..09c73659f467021631a3f769a58d5c2c9401d9e9 100644 (file)
@@ -186,7 +186,7 @@ static struct mv_sata_platform_data lsmini_sata_data = {
 
 static void lsmini_power_off(void)
 {
-       arm_machine_restart('h', NULL);
+       orion5x_restart('h', NULL);
 }
 
 
@@ -274,5 +274,6 @@ MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 #endif
index 6020e26b1c7164700081ecc81ff8bedadf15a884..65faaa34de61382c6f74e2a90f0070f69c2adf58 100644 (file)
@@ -267,5 +267,6 @@ MACHINE_START(MSS2, "Maxtor Shared Storage II")
        .init_early     = orion5x_init_early,
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
-       .fixup          = tag_fixup_mem32
+       .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 201ae3676289f53fed5acbdaedba1a9b6f08ca5a..c87fde4deecad440b12482e9789eeea11ea08915 100644 (file)
@@ -234,5 +234,6 @@ MACHINE_START(MV2120, "HP Media Vault mv2120")
        .init_early     = orion5x_init_early,
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
-       .fixup          = tag_fixup_mem32
+       .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 6197c79a2ecb7a38260eb6e437cab38f49e6aafb..0180c393c711a6267e75b59933a982605db9464b 100644 (file)
@@ -426,5 +426,6 @@ MACHINE_START(NET2BIG, "LaCie 2Big Network")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
 
index ebd6767d8e88d5e3d467198b599756776f282335..292038fc59fdd70f8b0db81c9f95a2d52cd0e116 100644 (file)
@@ -175,4 +175,5 @@ MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 05db2d336b0891655a04e5e430a8fd8c3dc25130..c44eabaabc1650d487f0a066a5ac1cdffebd23ab 100644 (file)
@@ -187,4 +187,5 @@ MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index e47fa0578ae3f8e4f25782cd07ff067835481adf..96438b6b2022294297f8fc23390546f877f2b139 100644 (file)
@@ -311,4 +311,5 @@ MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
        .init_early     = orion5x_init_early,
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
+       .restart        = orion5x_restart,
 MACHINE_END
index 64317251ec008c93d2890ec3c38e2a3c33a66a3e..2c5fab00d205c9414ba44483b9f896c9864e1509 100644 (file)
@@ -128,4 +128,5 @@ MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 29f1526f7b70671129cebe330ab8c8b7656cb764..632a861ef82bcf9e85336e87fafb27a0f68aba3a 100644 (file)
@@ -364,4 +364,5 @@ MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index fbf66ea8c77fec7696e1a1bf57e5840865a95963..5d6408745582b1341845a5b6ccb76f54e11ca8b9 100644 (file)
@@ -329,4 +329,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 0fbcc14e09d7d7c55bb397721c4c84d9eff90d70..4e6ff759cd3293df880f5fc1d2f2fbaf422e067c 100644 (file)
@@ -318,4 +318,5 @@ MACHINE_START(TS409, "QNAP TS-409")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index b35e2005a348e6fbc4c960d83e0d2d0d75cf889f..c96f37472edac0db7932d466935a4ba0f3d2b28d 100644 (file)
@@ -627,4 +627,5 @@ MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
        .init_early     = orion5x_init_early,
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
+       .restart        = orion5x_restart,
 MACHINE_END
index b8be7d8d0cf406a6690412b45074fc2fedd4c84f..078c03f7cd52a2d6c13413aae2490aae0377dc09 100644 (file)
@@ -179,4 +179,5 @@ MACHINE_START(WNR854T, "Netgear WNR854T")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index faf81a0393600a7742ac645edd29570ec0c06600..46a9778171ce8b9da2ee0eafaad67f467d1f21f7 100644 (file)
@@ -267,4 +267,5 @@ MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")
        .init_irq       = orion5x_init_irq,
        .timer          = &orion5x_timer,
        .fixup          = tag_fixup_mem32,
+       .restart        = orion5x_restart,
 MACHINE_END
index 67c589b0c1bcfc2acb52d8668bbd6c3079d06805..1a5d8cb57df4a2faba66c90a50ef4054443c45c2 100644 (file)
@@ -23,9 +23,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(int mode, const char *cmd)
-{
-       /* Watchdog reset to go here. */
-}
-
 #endif /* __ASM_ARCH_SYSTEM_H */
index cdb95e726f5c285f06fc63aa9d4191a1817fb476..4cfb40b2ec19f2b866da3e9e3b24b7a3451bcc66 100644 (file)
@@ -260,6 +260,11 @@ void __init pnx4008_map_io(void)
        iotable_init(pnx4008_io_desc, ARRAY_SIZE(pnx4008_io_desc));
 }
 
+static void pnx4008_restart(char mode, const char *cmd)
+{
+       soft_restart(0);
+}
+
 extern struct sys_timer pnx4008_timer;
 
 MACHINE_START(PNX4008, "Philips PNX4008")
@@ -269,4 +274,5 @@ MACHINE_START(PNX4008, "Philips PNX4008")
        .init_irq               = pnx4008_init_irq,
        .init_machine           = pnx4008_init,
        .timer                  = &pnx4008_timer,
+       .restart                = pnx4008_restart,
 MACHINE_END
index 5d6384a6128c661fbff12254954bbf1331bdf4ee..60cfe71880912d046b5206d707070fba3c43c7f5 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include <mach/platform.h>
-
 static void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       soft_restart(0);
-}
-
 #endif
index 83e5d2128118487d77a8c1215e1b4ee792a1645f..b28a930d4f8ad0e0cf2f54deec014d4233d00a16 100644 (file)
@@ -16,6 +16,7 @@ extern struct sys_timer sirfsoc_timer;
 
 extern void __init sirfsoc_of_irq_init(void);
 extern void __init sirfsoc_of_clk_init(void);
+extern void sirfsoc_restart(char, const char *);
 
 #ifndef CONFIG_DEBUG_LL
 static inline void sirfsoc_map_lluart(void)  {}
index 0dbd257ad16d06856bae63e5da8920ea647e5d86..2c7d2a9d0c927f32884b3115ac6ad590e30dc0c4 100644 (file)
@@ -9,21 +9,9 @@
 #ifndef __MACH_SYSTEM_H__
 #define __MACH_SYSTEM_H__
 
-#include <linux/bitops.h>
-#include <mach/hardware.h>
-
-#define SIRFSOC_SYS_RST_BIT  BIT(31)
-
-extern void __iomem *sirfsoc_rstc_base;
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       writel(SIRFSOC_SYS_RST_BIT, sirfsoc_rstc_base);
-}
-
 #endif
index ef555c041962983814be50c03d606b91bcd15b0d..8609aad5c569d248fdbd011273c799b94de06765 100644 (file)
@@ -39,4 +39,5 @@ MACHINE_START(PRIMA2_EVB, "prima2cb")
        .dma_zone_size  = SZ_256M,
        .init_machine   = sirfsoc_mach_init,
        .dt_compat      = prima2cb_dt_match,
+       .restart        = sirfsoc_restart,
 MACHINE_END
index 492cfa8d261073eac1d17498bee1af9123b77c00..762adb73ab7c9ece0de51b87f09cd6c5208f5576 100644 (file)
@@ -68,3 +68,10 @@ int sirfsoc_reset_device(struct device *dev)
 
        return 0;
 }
+
+#define SIRFSOC_SYS_RST_BIT  BIT(31)
+
+void sirfsoc_restart(char mode, const char *cmd)
+{
+       writel(SIRFSOC_SYS_RST_BIT, sirfsoc_rstc_base);
+}
index 4b81f59a4cbaf5aebbac8c1d55980d9b4dd45618..82514f5c38f1588c4bea4848749428079c858df8 100644 (file)
@@ -829,4 +829,5 @@ MACHINE_START(BALLOON3, "Balloon3")
        .timer          = &pxa_timer,
        .init_machine   = balloon3_init,
        .atag_offset    = 0x100,
+       .restart        = pxa_restart,
 MACHINE_END
index 4efc16d39c7985810d45b683fdab335a988ab9e3..c2f0be040d279a05d5164967c843677020c2b3c6 100644 (file)
@@ -153,5 +153,6 @@ MACHINE_START(CAPC7117,
        .init_irq = pxa3xx_init_irq,
        .handle_irq = pxa3xx_handle_irq,
        .timer = &pxa_timer,
-       .init_machine = capc7117_init
+       .init_machine = capc7117_init,
+       .restart        = pxa_restart,
 MACHINE_END
index f2e4190080cbd2b5584fe03c1ce6aeae705b94e7..ec170a552c2375cf17d35f44950ca42c80a1973f 100644 (file)
@@ -524,4 +524,5 @@ MACHINE_START(ARMCORE, "Compulab CM-X2XX")
 #ifdef CONFIG_PCI
        .dma_zone_size  = SZ_64M,
 #endif
+       .restart        = pxa_restart,
 MACHINE_END
index e096bba8fd57c231aaa0593c4b0efc19f2649e93..7236974da0b79e08477c75be0ee225c7021f620d 100644 (file)
@@ -858,4 +858,5 @@ MACHINE_START(CM_X300, "CM-X300 module")
        .timer          = &pxa_timer,
        .init_machine   = cm_x300_init,
        .fixup          = cm_x300_fixup,
+       .restart        = pxa_restart,
 MACHINE_END
index 05bfa1b1c001756b465731e5ac67fa0185ef79c5..6a685165c9f2fb9372e8810bab3afd25fb0967a6 100644 (file)
@@ -313,6 +313,7 @@ MACHINE_START(COLIBRI, "Toradex Colibri PXA270")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
 MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC")
@@ -322,5 +323,6 @@ MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
index c825e8bf2db14a922978ae1b6442b7185fd6800d..c01059a61f33a7cc0549a618050da2d3b8dc716b 100644 (file)
@@ -189,5 +189,6 @@ MACHINE_START(COLIBRI300, "Toradex Colibri PXA300")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
index d23b92b80488257db2ef2bf4af458fc4060feaf8..5028f2300d508f7b36360ec147ce219dcaf4f15c 100644 (file)
@@ -259,5 +259,6 @@ MACHINE_START(COLIBRI320, "Toradex Colibri PXA320")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
index 549468d088b9e0e34336ef0b50a3551258b8c366..9d4dc5970b9cd6e9f292f30354df595b55155301 100644 (file)
@@ -655,7 +655,7 @@ static void corgi_poweroff(void)
                /* Green LED off tells the bootloader to halt */
                gpio_set_value(CORGI_GPIO_LED_GREEN, 0);
 
-       arm_machine_restart('h', NULL);
+       pxa_restart('h', NULL);
 }
 
 static void corgi_restart(char mode, const char *cmd)
@@ -664,13 +664,12 @@ static void corgi_restart(char mode, const char *cmd)
                /* Green LED on tells the bootloader to reboot */
                gpio_set_value(CORGI_GPIO_LED_GREEN, 1);
 
-       arm_machine_restart('h', cmd);
+       pxa_restart('h', cmd);
 }
 
 static void __init corgi_init(void)
 {
        pm_power_off = corgi_poweroff;
-       arm_pm_restart = corgi_restart;
 
        /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
        PCFR |= PCFR_OPDE;
@@ -726,6 +725,7 @@ MACHINE_START(CORGI, "SHARP Corgi")
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
+       .restart        = corgi_restart,
 MACHINE_END
 #endif
 
@@ -737,6 +737,7 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd")
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
+       .restart        = corgi_restart,
 MACHINE_END
 #endif
 
@@ -748,6 +749,7 @@ MACHINE_START(HUSKY, "SHARP Husky")
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
+       .restart        = corgi_restart,
 MACHINE_END
 #endif
 
index 5e2cf39e9e4c5e8091028ab5576cffb711725797..fb5a51d834e5391c4cb407b4270009dcaf68b33c 100644 (file)
@@ -278,4 +278,5 @@ MACHINE_START(CSB726, "Cogent CSB726")
        .handle_irq       = pxa27x_handle_irq,
        .init_machine   = csb726_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
index 94acc0b01dd6791b06d469bb83963a56c2c60849..bd396ba67af7a815e5a17b411405549c36463d20 100644 (file)
@@ -1305,6 +1305,7 @@ MACHINE_START(EM_X270, "Compulab EM-X270")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = em_x270_init,
+       .restart        = pxa_restart,
 MACHINE_END
 
 MACHINE_START(EXEDA, "Compulab eXeda")
@@ -1314,4 +1315,5 @@ MACHINE_START(EXEDA, "Compulab eXeda")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = em_x270_init,
+       .restart        = pxa_restart,
 MACHINE_END
index d82b7aa3c096eaf09f6b99d83953efad07bb07b4..69473db977583c1f5b8793cad9275921efbb2c17 100644 (file)
@@ -196,6 +196,7 @@ MACHINE_START(E330, "Toshiba e330")
        .fixup          = eseries_fixup,
        .init_machine   = e330_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -246,6 +247,7 @@ MACHINE_START(E350, "Toshiba e350")
        .fixup          = eseries_fixup,
        .init_machine   = e350_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -369,6 +371,7 @@ MACHINE_START(E400, "Toshiba e400")
        .fixup          = eseries_fixup,
        .init_machine   = e400_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -558,6 +561,7 @@ MACHINE_START(E740, "Toshiba e740")
        .fixup          = eseries_fixup,
        .init_machine   = e740_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -750,6 +754,7 @@ MACHINE_START(E750, "Toshiba e750")
        .fixup          = eseries_fixup,
        .init_machine   = e750_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -955,5 +960,6 @@ MACHINE_START(E800, "Toshiba e800")
        .fixup          = eseries_fixup,
        .init_machine   = e800_init,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
index 8308eee5a92468d79873980bff22d69c3b8b6fda..15ab2533667d065dba6a51101e60c84c92db2b03 100644 (file)
@@ -804,6 +804,7 @@ MACHINE_START(EZX_A780, "Motorola EZX A780")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = a780_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -870,6 +871,7 @@ MACHINE_START(EZX_E680, "Motorola EZX E680")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = e680_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -936,6 +938,7 @@ MACHINE_START(EZX_A1200, "Motorola EZX A1200")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = a1200_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1127,6 +1130,7 @@ MACHINE_START(EZX_A910, "Motorola EZX A910")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = a910_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1193,6 +1197,7 @@ MACHINE_START(EZX_E6, "Motorola EZX E6")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = e6_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1233,5 +1238,6 @@ MACHINE_START(EZX_E2, "Motorola EZX E2")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = e2_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
index 92a2e85ab02cff7d91c182ec47628ff3087e5d65..0d729e6619dfb411c6b4a5e875cc4e75a1928731 100644 (file)
@@ -57,3 +57,5 @@ void __init pxa_set_ffuart_info(void *info);
 void __init pxa_set_btuart_info(void *info);
 void __init pxa_set_stuart_info(void *info);
 void __init pxa_set_hwuart_info(void *info);
+
+void pxa_restart(char, const char *);
index ffdd70dad327dd135f1a2d5fc36a3cde45f2f86b..ac3b1cef47519ed4c431cc2b576bfc76ebcda792 100644 (file)
@@ -239,4 +239,5 @@ MACHINE_START(GUMSTIX, "Gumstix")
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = gumstix_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 4b5e110640b1c39bf55aef1dfb8dd96086a518bc..fde6b4c873c40fba6fe1c0aad5d85d1f03272c8f 100644 (file)
@@ -209,4 +209,5 @@ MACHINE_START(H5400, "HP iPAQ H5000")
        .handle_irq = pxa25x_handle_irq,
        .timer = &pxa_timer,
        .init_machine = h5000_init,
+       .restart        = pxa_restart,
 MACHINE_END
index f2c324570844b189a3a16c286c0c705ecd344780..26d069a9f900117269936685f86a504fdb55f672 100644 (file)
@@ -164,4 +164,5 @@ MACHINE_START(HIMALAYA, "HTC Himalaya")
        .handle_irq = pxa25x_handle_irq,
        .init_machine = himalaya_init,
        .timer = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
index 6f6368ece9bda4288e9a99a48118db5caedae72a..ce16bdae96defcc141b595b0d383b53e27fabb5c 100644 (file)
@@ -845,4 +845,5 @@ MACHINE_START(H4700, "HP iPAQ HX4700")
        .handle_irq     = pxa27x_handle_irq,
        .init_machine = hx4700_init,
        .timer        = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
index f78d5db758daf920a732ed62543bf77ae788647d..e239b82c99d799cfd1cc50c6891195b78e77bfa8 100644 (file)
@@ -196,5 +196,6 @@ MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = icontrol_init
+       .init_machine   = icontrol_init,
+       .restart        = pxa_restart,
 MACHINE_END
index ddf20e5c376ed292a11b7945d5c35dc8ed3ca167..fbabd84e110c69977c306b1a30f43f0815dcd7ad 100644 (file)
@@ -199,4 +199,5 @@ MACHINE_START(PXA_IDP, "Vibren PXA255 IDP")
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = idp_init,
+       .restart        = pxa_restart,
 MACHINE_END
index d1fce8b6d1051d23b910bae6e7e5d8109ee0bdad..c5afacd3cc0b4067aac361514f85c88e14595ab4 100644 (file)
@@ -9,15 +9,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
-#include <asm/proc-fns.h>
-#include "hardware.h"
-#include "pxa2xx-regs.h"
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-
-void arch_reset(char mode, const char *cmd);
index 7b324ec6449f49553654d45b4aba900da01f23ed..c337c7eed514e31f4a0cee40afcd7c8fecc961a6 100644 (file)
@@ -445,4 +445,5 @@ MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleto
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = littleton_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 1dd530279e0b977f2726addff891d540c1fdbc46..6119c015f39304f829d606d7a3ab0531d3d97cd2 100644 (file)
@@ -505,4 +505,5 @@ MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = lpd270_init,
+       .restart        = pxa_restart,
 MACHINE_END
index c48ce6da9184f6d338e15ef729f8f043d66b8e77..4b7a528716528acc96580d92183bf264e4d1e461 100644 (file)
@@ -556,4 +556,5 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = lubbock_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 4b796c37af3ec5ab6ef15edebb1c8092b6f2ab50..4e6774fff422970764d3028f6e41530cbe515095 100644 (file)
@@ -760,4 +760,5 @@ MACHINE_START(MAGICIAN, "HTC Magician")
        .handle_irq = pxa27x_handle_irq,
        .init_machine = magician_init,
        .timer = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
index 0567d3965fda4dffb422125a7cf4351272f2daa8..ca14555d5e15f88312df7b14779874d98a1a12db 100644 (file)
@@ -622,4 +622,5 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = mainstone_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 4f47a760398ff379bddb73c24d47e48fc021c219..924a3b5f8da6307f9d2000a9e5d7f490215d5bc5 100644 (file)
@@ -696,13 +696,13 @@ static void mioa701_machine_exit(void);
 static void mioa701_poweroff(void)
 {
        mioa701_machine_exit();
-       arm_machine_restart('s', NULL);
+       pxa_restart('s', NULL);
 }
 
 static void mioa701_restart(char c, const char *cmd)
 {
        mioa701_machine_exit();
-       arm_machine_restart('s', cmd);
+       pxa_restart('s', cmd);
 }
 
 static struct gpio global_gpios[] = {
@@ -734,7 +734,6 @@ static void __init mioa701_machine_init(void)
        pxa_set_udc_info(&mioa701_udc_info);
        pxa_set_ac97_info(&mioa701_ac97_info);
        pm_power_off = mioa701_poweroff;
-       arm_pm_restart = mioa701_restart;
        platform_add_devices(devices, ARRAY_SIZE(devices));
        gsm_init();
 
@@ -758,4 +757,5 @@ MACHINE_START(MIOA701, "MIO A701")
        .handle_irq     = &pxa27x_handle_irq,
        .init_machine   = mioa701_machine_init,
        .timer          = &pxa_timer,
+       .restart        = mioa701_restart,
 MACHINE_END
index 4af5d513c38026ea0194d239df879a746f976654..169bf8f97af00028a76d314b2bb8efa2d6b19e93 100644 (file)
@@ -98,5 +98,6 @@ MACHINE_START(NEC_MP900, "MobilePro900/C")
        .init_irq       = pxa25x_init_irq,
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = mp900c_init,
+       .restart        = pxa_restart,
 MACHINE_END
 
index 3d4a2819cae181f4645bd249aa2ab5e7244e5ba4..1fa80f4f80c8484595c4f4a5a17cdaf931a9cc33 100644 (file)
@@ -347,5 +347,6 @@ MACHINE_START(PALMLD, "Palm LifeDrive")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmld_init
+       .init_machine   = palmld_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 99d6bcf1f9741463ffe53845ac518c61dd605896..5ba14316bd9c273b386e6267582dc93aa1131463 100644 (file)
@@ -208,5 +208,6 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmt5_init
+       .init_machine   = palmt5_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 2c24c67fd92b6d863fc2e534b6ad9f15b7daaaf7..29b51b40f09df49a60a2ab07d91122f0f840ed74 100644 (file)
@@ -542,5 +542,6 @@ MACHINE_START(PALMTC, "Palm Tungsten|C")
        .init_irq       = pxa25x_init_irq,
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmtc_init
+       .init_machine   = palmtc_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 9376da06404c7ea25c25101a44962a19ff4f3614..5ebf49acb8279d321a61596718980dc45dadfa11 100644 (file)
@@ -361,5 +361,6 @@ MACHINE_START(PALMTE2, "Palm Tungsten|E2")
        .init_irq       = pxa25x_init_irq,
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmte2_init
+       .init_machine   = palmte2_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 94e9708b349da5f0be7cfa4fec34f2f24e445475..ec8249156c0846b1d6129b6c55ab7a431d23d2a4 100644 (file)
@@ -452,6 +452,7 @@ MACHINE_START(TREO680, "Palm Treo 680")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = treo680_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -464,5 +465,6 @@ MACHINE_START(CENTRO, "Palm Centro 685")
        .handle_irq       = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = centro_init,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
index 4e3e45927e95336cf9d2fb4c4185f7f94c90d26b..6170d76dfba8f395a41ff16c6c16ac28d1760970 100644 (file)
@@ -369,5 +369,6 @@ MACHINE_START(PALMTX, "Palm T|X")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmtx_init
+       .init_machine   = palmtx_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 68e18baf8e079986d1ca63459c809eaad13b668e..b2dff9d415ebf69eedba22393913e74075bb75ac 100644 (file)
@@ -404,5 +404,6 @@ MACHINE_START(PALMZ72, "Palm Zire72")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = palmz72_init
+       .init_machine   = palmz72_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 0b825a353537c783f1f6e4623b2923fa79842ec7..fe9054435b6f214c63b700fe61967d0ec2d32987 100644 (file)
@@ -265,4 +265,5 @@ MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = pcm027_init,
+       .restart        = pxa_restart,
 MACHINE_END
index afcb48a5792c19b613ca36195388ac84afea61d5..b260ce872d2d941a69d607e872b005977ae4d0b4 100644 (file)
@@ -417,7 +417,7 @@ static struct i2c_board_info __initdata poodle_i2c_devices[] = {
 
 static void poodle_poweroff(void)
 {
-       arm_machine_restart('h', NULL);
+       pxa_restart('h', NULL);
 }
 
 static void __init poodle_init(void)
@@ -466,4 +466,5 @@ MACHINE_START(POODLE, "SHARP Poodle")
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = poodle_init,
+       .restart        = pxa_restart,
 MACHINE_END
index f0c05f4d12ed5eb48715d8433665b20199bde3bd..4962b1676629323288ecd925b374107f61c46894 100644 (file)
@@ -1093,6 +1093,7 @@ MACHINE_START(RAUMFELD_RC, "Raumfeld Controller")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1104,6 +1105,7 @@ MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1115,5 +1117,6 @@ MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker")
        .init_irq       = pxa3xx_init_irq,
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
index b8bcda15da81024212f443a9403b1658f31f422a..c8497b00cdfe8bcb66f791c2907fbea345290571 100644 (file)
@@ -81,8 +81,11 @@ static void do_hw_reset(void)
        OSMR3 = OSCR + 368640;  /* ... in 100 ms */
 }
 
-void arch_reset(char mode, const char *cmd)
+void pxa_restart(char mode, const char *cmd)
 {
+       local_irq_disable();
+       local_fiq_disable();
+
        clear_reset_status(RESET_STATUS_ALL);
 
        switch (mode) {
index fc2c1e05af9c2f59b1138dd011ef43069806d24a..878707056e65fa550ddd388c1474d2e3a6baf652 100644 (file)
@@ -602,4 +602,5 @@ MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)")
        .handle_irq       = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = saar_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 3e999e308a2da66c86cee2eacbf4ee3f2eb82094..b6dbaca460c73fdd0b3aa457e6f87f20468555c6 100644 (file)
@@ -111,5 +111,6 @@ MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)")
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = saarb_init,
+       .restart        = pxa_restart,
 MACHINE_END
 
index 2f57d94de727ab9881a1c55677181baf5291a1db..a7f81a3fd132f2c973a52b7be65689299a326043 100644 (file)
@@ -926,7 +926,7 @@ static inline void spitz_i2c_init(void) {}
  ******************************************************************************/
 static void spitz_poweroff(void)
 {
-       arm_machine_restart('g', NULL);
+       pxa_restart('g', NULL);
 }
 
 static void spitz_restart(char mode, const char *cmd)
@@ -943,7 +943,6 @@ static void __init spitz_init(void)
 {
        init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0);
        pm_power_off = spitz_poweroff;
-       arm_pm_restart = spitz_restart;
 
        PMCR = 0x00;
 
@@ -989,6 +988,7 @@ MACHINE_START(SPITZ, "SHARP Spitz")
        .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .timer          = &pxa_timer,
+       .restart        = spitz_restart,
 MACHINE_END
 #endif
 
@@ -1001,6 +1001,7 @@ MACHINE_START(BORZOI, "SHARP Borzoi")
        .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .timer          = &pxa_timer,
+       .restart        = spitz_restart,
 MACHINE_END
 #endif
 
@@ -1013,5 +1014,6 @@ MACHINE_START(AKITA, "SHARP Akita")
        .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .timer          = &pxa_timer,
+       .restart        = spitz_restart,
 MACHINE_END
 #endif
index 4c9a48bef569b41c57948d43d3dd9d8de8e686b5..80d7f23ad0fde822c2f4a9b7e1262f24d2ea2645 100644 (file)
@@ -1005,6 +1005,7 @@ MACHINE_START(INTELMOTE2, "IMOTE 2")
        .timer          = &pxa_timer,
        .init_machine   = imote2_init,
        .atag_offset    = 0x100,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
 
@@ -1017,5 +1018,6 @@ MACHINE_START(STARGATE2, "Stargate 2")
        .timer = &pxa_timer,
        .init_machine = stargate2_init,
        .atag_offset = 0x100,
+       .restart        = pxa_restart,
 MACHINE_END
 #endif
index ad47bb98f30d88a57702462ea926880f05972071..4fa36a3e383c657ca65edc5adb02f003d56a553f 100644 (file)
@@ -495,4 +495,5 @@ MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)")
        .handle_irq       = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = tavorevb_init,
+       .restart        = pxa_restart,
 MACHINE_END
index fd569167302a6d57f4aaea6902782d8d16149166..8a22879f0bb050b836a7b44dd5b6c84d4c102105 100644 (file)
@@ -132,4 +132,5 @@ MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)")
        .handle_irq       = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = evb3_init,
+       .restart        = pxa_restart,
 MACHINE_END
index ef6453041cf13454b0baa4042993707616d7865a..dfe40f8705aad1e4c209eadc61667522a222bf01 100644 (file)
@@ -905,7 +905,7 @@ static struct platform_device *devices[] __initdata = {
 
 static void tosa_poweroff(void)
 {
-       arm_machine_restart('g', NULL);
+       pxa_restart('g', NULL);
 }
 
 static void tosa_restart(char mode, const char *cmd)
@@ -935,7 +935,6 @@ static void __init tosa_init(void)
        init_gpio_reset(TOSA_GPIO_ON_RESET, 0, 0);
 
        pm_power_off = tosa_poweroff;
-       arm_pm_restart = tosa_restart;
 
        PCFR |= PCFR_OPDE;
 
@@ -978,4 +977,5 @@ MACHINE_START(TOSA, "SHARP Tosa")
        .handle_irq       = pxa25x_handle_irq,
        .init_machine   = tosa_init,
        .timer          = &pxa_timer,
+       .restart        = tosa_restart,
 MACHINE_END
index 1aaed2b17e102ef90adb4add2065b472a5d7fb76..0f30af617d8f47924eb1591928aa9a87627f3405 100644 (file)
@@ -561,6 +561,7 @@ MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
 MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module")
@@ -571,4 +572,5 @@ MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
index 242ddae332d30b6dd34a8107d3315f6f03e188c0..afe2b749552363e64321aa4c660b3dbf5786bf53 100644 (file)
@@ -998,4 +998,5 @@ MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC")
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = viper_init,
+       .restart        = pxa_restart,
 MACHINE_END
index ca0c6615028c42aa0414cc2e76de4a0a29c83918..fed5fb08871490e58e6887b92c0e4fa404321053 100644 (file)
@@ -721,5 +721,6 @@ MACHINE_START(VPAC270, "Voipac PXA270")
        .init_irq       = pxa27x_init_irq,
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
-       .init_machine   = vpac270_init
+       .init_machine   = vpac270_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 70e1730ef282a9aadf9f3cf1887d5d369e02cbf4..4bbe9a36fe74df730ca419f4bfeeb6c3be6516dc 100644 (file)
@@ -185,5 +185,6 @@ MACHINE_START(XCEP, "Iskratel XCEP")
        .init_irq       = pxa25x_init_irq,
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
+       .restart        = pxa_restart,
 MACHINE_END
 
index ead32c90fec17380cce3dcda522e35812d631eb1..d75f66ab8c34845f22f0ac6be5485c664cf3ea34 100644 (file)
@@ -725,4 +725,5 @@ MACHINE_START(ZIPIT2, "Zipit Z2")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = z2_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 498b83b089f32034b7d3ba8c0cfcb6aa9bcade69..9db35a7fcfc063e27587f60015541f6dc125c9c4 100644 (file)
@@ -911,5 +911,6 @@ MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS")
        .handle_irq     = pxa27x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = zeus_init,
+       .restart        = pxa_restart,
 MACHINE_END
 
index 6c39c332841807325864e14c77cf0cfdc6bb2bc5..7678b1bf7903e81cf9a8b0e0443676a1681be1e9 100644 (file)
@@ -430,4 +430,5 @@ MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
        .handle_irq     = pxa3xx_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = zylonite_init,
+       .restart        = pxa_restart,
 MACHINE_END
index 47259c89a75eaba74ab3b248f115e3e9af1a065e..735b57aaf2d6030bf50d81eaadcb1c072307d69d 100644 (file)
@@ -65,6 +65,5 @@ extern int realview_usb_register(struct resource *res);
 extern void realview_init_early(void);
 extern void realview_fixup(struct tag *tags, char **from,
                           struct meminfo *meminfo);
-extern void (*realview_reset)(char);
 
 #endif
index 6657ff23116139184061b66c52064cb81565e737..471b671159ce3c742995ff0b27d60b7433ac7bf8 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include <mach/platform.h>
-
-void (*realview_reset)(char mode);
-
 static inline void arch_idle(void)
 {
        /*
@@ -36,15 +30,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /*
-        * To reset, we hit the on-board reset register
-        * in the system FPGA
-        */
-       if (realview_reset)
-               realview_reset(mode);
-       dsb();
-}
-
 #endif
index 1ca944aea7f8800cee56daa23bf545d4d6a5b595..f92a920cf507c1b411d3503daced441bcfe8b576 100644 (file)
@@ -415,7 +415,7 @@ static struct sys_timer realview_eb_timer = {
        .init           = realview_eb_timer_init,
 };
 
-static void realview_eb_reset(char mode)
+static void realview_eb_restart(char mode, const char *cmd)
 {
        void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
        void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
@@ -427,6 +427,7 @@ static void realview_eb_reset(char mode)
        __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
        if (core_tile_eb11mp())
                __raw_writel(0x0008, reset_ctrl);
+       dsb();
 }
 
 static void __init realview_eb_init(void)
@@ -458,7 +459,6 @@ static void __init realview_eb_init(void)
 #ifdef CONFIG_LEDS
        leds_event = realview_leds_event;
 #endif
-       realview_reset = realview_eb_reset;
 }
 
 MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
@@ -474,4 +474,5 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
 #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
 #endif
+       .restart        = realview_eb_restart,
 MACHINE_END
index bd8fec8b20d96b06db52f0525035320c8977afab..8ec37b29e0fa22bd0b048ab8a0a25c0f234c6f85 100644 (file)
@@ -336,12 +336,13 @@ static struct sys_timer realview_pb1176_timer = {
        .init           = realview_pb1176_timer_init,
 };
 
-static void realview_pb1176_reset(char mode)
+static void realview_pb1176_restart(char mode, const char *cmd)
 {
        void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
        void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
        __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
        __raw_writel(REALVIEW_PB1176_SYS_SOFT_RESET, reset_ctrl);
+       dsb();
 }
 
 static void realview_pb1176_fixup(struct tag *tags, char **from,
@@ -381,7 +382,6 @@ static void __init realview_pb1176_init(void)
 #ifdef CONFIG_LEDS
        leds_event = realview_leds_event;
 #endif
-       realview_reset = realview_pb1176_reset;
 }
 
 MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
@@ -397,4 +397,5 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
 #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
 #endif
+       .restart        = realview_pb1176_restart,
 MACHINE_END
index fa73ba81a44930c9b733db4540ee7f45f9478f3c..f035fda8b619d0000ac539d82b700742e944e707 100644 (file)
@@ -315,7 +315,7 @@ static struct sys_timer realview_pb11mp_timer = {
        .init           = realview_pb11mp_timer_init,
 };
 
-static void realview_pb11mp_reset(char mode)
+static void realview_pb11mp_restart(char mode, const char *cmd)
 {
        void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
        void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
@@ -327,6 +327,7 @@ static void realview_pb11mp_reset(char mode)
        __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
        __raw_writel(0x0000, reset_ctrl);
        __raw_writel(0x0004, reset_ctrl);
+       dsb();
 }
 
 static void __init realview_pb11mp_init(void)
@@ -355,7 +356,6 @@ static void __init realview_pb11mp_init(void)
 #ifdef CONFIG_LEDS
        leds_event = realview_leds_event;
 #endif
-       realview_reset = realview_pb11mp_reset;
 }
 
 MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
@@ -371,4 +371,5 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
 #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
 #endif
+       .restart        = realview_pb11mp_restart,
 MACHINE_END
index 6e5f2b9ddb7e384f11b3be17a8ad2a1a3488df95..0109c8b440ccd339eb458821119f064fce06b899 100644 (file)
@@ -271,7 +271,7 @@ static struct sys_timer realview_pba8_timer = {
        .init           = realview_pba8_timer_init,
 };
 
-static void realview_pba8_reset(char mode)
+static void realview_pba8_restart(char mode, const char *cmd)
 {
        void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
        void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
@@ -283,6 +283,7 @@ static void realview_pba8_reset(char mode)
        __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
        __raw_writel(0x0000, reset_ctrl);
        __raw_writel(0x0004, reset_ctrl);
+       dsb();
 }
 
 static void __init realview_pba8_init(void)
@@ -305,7 +306,6 @@ static void __init realview_pba8_init(void)
 #ifdef CONFIG_LEDS
        leds_event = realview_leds_event;
 #endif
-       realview_reset = realview_pba8_reset;
 }
 
 MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
@@ -321,4 +321,5 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
 #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
 #endif
+       .restart        = realview_pba8_restart,
 MACHINE_END
index 7aabc21af01cbda5e05aeaacb9bb537ecefae5a3..0194b3e26dc1146293dce362d5aed04e6b0f6df0 100644 (file)
@@ -339,7 +339,7 @@ static void realview_pbx_fixup(struct tag *tags, char **from,
 #endif
 }
 
-static void realview_pbx_reset(char mode)
+static void realview_pbx_restart(char mode, const char *cmd)
 {
        void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
        void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
@@ -351,6 +351,7 @@ static void realview_pbx_reset(char mode)
        __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
        __raw_writel(0x00F0, reset_ctrl);
        __raw_writel(0x00F4, reset_ctrl);
+       dsb();
 }
 
 static void __init realview_pbx_init(void)
@@ -388,7 +389,6 @@ static void __init realview_pbx_init(void)
 #ifdef CONFIG_LEDS
        leds_event = realview_leds_event;
 #endif
-       realview_reset = realview_pbx_reset;
 }
 
 MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
@@ -404,4 +404,5 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
 #ifdef CONFIG_ZONE_DMA
        .dma_zone_size  = SZ_256M,
 #endif
+       .restart        = realview_pbx_restart,
 MACHINE_END
index a354f4d092c8b55dcfe536d1950f9f79da4efb25..359bab94b6afa3463c069d2c528d690d9e678ae9 100644 (file)
@@ -7,21 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include <asm/hardware/iomd.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       iomd_writeb(0, IOMD_ROMCR0);
-
-       /*
-        * Jump into the ROM
-        */
-       soft_restart(0);
-}
index 8559598ab767ea8c1ef872e6f35a3bd0792bb398..3d44a59fc0df38e10bcf492f987c274e17c5da1e 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/elf.h>
 #include <asm/mach-types.h>
 #include <mach/hardware.h>
+#include <asm/hardware/iomd.h>
 #include <asm/page.h>
 #include <asm/domain.h>
 #include <asm/setup.h>
@@ -214,6 +215,16 @@ static int __init rpc_init(void)
 
 arch_initcall(rpc_init);
 
+static void rpc_restart(char mode, const char *cmd)
+{
+       iomd_writeb(0, IOMD_ROMCR0);
+
+       /*
+        * Jump into the ROM
+        */
+       soft_restart(0);
+}
+
 extern struct sys_timer ioc_timer;
 
 MACHINE_START(RISCPC, "Acorn-RiscPC")
@@ -224,4 +235,5 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
        .map_io         = rpc_map_io,
        .init_irq       = rpc_init_irq,
        .timer          = &ioc_timer,
+       .restart        = rpc_restart,
 MACHINE_END
index 913893d446502981e6e268b4dc5ac3e9536b3109..ec0cee7924a5ddb02b8fc45a0713be48ac9ce435 100644 (file)
@@ -15,6 +15,7 @@
 
 extern void (*s3c24xx_reset_hook)(void);
 
+#error Fix me up
 static void
 arch_reset(char mode, const char *cmd)
 {
index d8ca5786ba251ea158e6c79b5eee95f49f35943e..e19c58468174fa2505e1dce877b8234d668672b5 100644 (file)
@@ -18,6 +18,7 @@ static void arch_idle(void)
        /* nothing here yet */
 }
 
+#error Fix me up
 static void arch_reset(char mode, const char *cmd)
 {
        if (mode != 's')
index 3dd133f184153bb84f90e50cc1aa8eb39c43e5af..6b93e200bcaceecec1bdc18c27929480b860066b 100644 (file)
@@ -455,4 +455,5 @@ MACHINE_START(ASSABET, "Intel-Assabet")
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
 #endif
+       .restart        = sa11x0_restart,
 MACHINE_END
index bda83e1ab0780e0d9bc44b46bc0a8b4ffde2313b..b07a2c024cb78682d944d025e6fb7c26c349c097 100644 (file)
@@ -309,4 +309,5 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
 #endif
+       .restart        = sa11x0_restart,
 MACHINE_END
index 7f3da4b11ec90fd7caeff810d65ea3ffc010546e..11bb6d0b9be377b6c926f3e759a03a21d2e9ffff 100644 (file)
@@ -139,4 +139,5 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
        .init_irq       = cerf_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = cerf_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 2965cc9d424ee5dc9f504930052bec9ddcc0504f..b9060e236def9e90204fa2be99734ea3a4fc6417 100644 (file)
@@ -387,4 +387,5 @@ MACHINE_START(COLLIE, "Sharp-Collie")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = collie_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 5fa5ae1f39e1164f6745704ed23f7825f16c17b6..bb10ee2cb89f11f82c801d7f9c1d8ced11c1c3b7 100644 (file)
@@ -126,6 +126,17 @@ static void sa1100_power_off(void)
        PMCR = PMCR_SF;
 }
 
+void sa11x0_restart(char mode, const char *cmd)
+{
+       if (mode == 's') {
+               /* Jump into ROM at address 0 */
+               soft_restart(0);
+       } else {
+               /* Use on-chip reset capability */
+               RSRR = RSRR_SWR;
+       }
+}
+
 static void sa11x0_register_device(struct platform_device *dev, void *data)
 {
        int err;
index b7a9a601c2d1e18a407c6110976812e35ebf93a3..33268cf6be368e3feab4195d3e9222834ad53802 100644 (file)
@@ -10,6 +10,7 @@ extern struct sys_timer sa1100_timer;
 extern void __init sa1100_map_io(void);
 extern void __init sa1100_init_irq(void);
 extern void __init sa1100_init_gpio(void);
+extern void sa11x0_restart(char, const char *);
 
 #define SET_BANK(__nr,__start,__size) \
        mi->bank[__nr].start = (__start), \
index b30733a2b82e280e9b507d67721de96eb5799549..1e6b3c105ba660c82cf72f3718caf33be87b19a3 100644 (file)
@@ -89,5 +89,6 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3100_mach_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
 
index 6fd324d923895b8c3688b30d87b11506300fa500..6b58e7460ecf8cd384af16aabf4d4f9023373abf 100644 (file)
@@ -130,5 +130,6 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3600_mach_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
 
index 30f4a551b8e56027dba638c865387ca601bccc40..c01bb36db94099357770feee2deb3ecbac4f5c6f 100644 (file)
@@ -200,4 +200,5 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = hackkit_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 345d35b7450cfc956399337218e7939c01271d1c..e17b208f76d4522071a06b52bfe8e7665ec1ac1a 100644 (file)
@@ -3,20 +3,7 @@
  *
  * Copyright (c) 1999 Nicolas Pitre <nico@fluxnic.net>
  */
-#include <mach/hardware.h>
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (mode == 's') {
-               /* Jump into ROM at address 0 */
-               soft_restart(0);
-       } else {
-               /* Use on-chip reset capability */
-               RSRR = RSRR_SWR;
-       }
-}
index 77198fe02bc5ad2e8e4fc69bafe7881e21663c7a..ee121d6f048021489f014728924904990d07a858 100644 (file)
@@ -373,4 +373,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
 #endif
+       .restart        = sa11x0_restart,
 MACHINE_END
index 5bc59d0947ba40ecf2df0e3fa996c41fe38a0790..af4e2761f3dbf4a6254bfab53f98080334e5f387 100644 (file)
@@ -66,4 +66,5 @@ MACHINE_START(LART, "LART")
        .init_irq       = sa1100_init_irq,
        .init_machine   = lart_init,
        .timer          = &sa1100_timer,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 032f3881d145174cf00838fda285d893492a87dd..ed77f85b9951ee27befb33ff69ecb797655b2fa1 100644 (file)
@@ -116,4 +116,5 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = nanoengine_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 65161f2bea29132632a468328c0616c66e6f84b2..9307df053533201d1bb5b71d39e196069b24426d 100644 (file)
@@ -150,4 +150,5 @@ MACHINE_START(PLEB, "PLEB")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = pleb_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 1cccbf5b9e9abbefa1332f938ff7761230cbd03d..318b2b766a0b3ee7b8921c2904b65c0fdd551c8c 100644 (file)
@@ -87,4 +87,5 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = shannon_init,
+       .restart        = sa11x0_restart,
 MACHINE_END
index 4790f3f3d008b422d1d5be85a80d8ffae3a65eae..e17c04d6e32428af6aa7c8eb1fbc35ca6d7a02d8 100644 (file)
@@ -396,4 +396,5 @@ MACHINE_START(SIMPAD, "Simpad")
        .map_io         = simpad_map_io,
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
+       .restart        = sa11x0_restart,
 MACHINE_END
index f4b25d875f3dc13a52c673f25061e314d7a4aec6..a851c254ad6c8a79bc00204063021c1bcba2e118 100644 (file)
@@ -26,7 +26,7 @@
 #define ROMCARD_SIZE            0x08000000
 #define ROMCARD_START           0x10000000
 
-void arch_reset(char mode, const char *cmd)
+static void shark_restart(char mode, const char *cmd)
 {
         short temp;
         /* Reset the Machine via pc[3] of the sequoia chipset */
@@ -156,4 +156,5 @@ MACHINE_START(SHARK, "Shark")
        .init_irq       = shark_init_irq,
        .timer          = &shark_timer,
        .dma_zone_size  = SZ_4M,
+       .restart        = shark_restart,
 MACHINE_END
index 21c373b30bbc38079c36597d48bfee410ceaadf1..1b2f2c5050a82f350da71310afeda15fbffff8cd 100644 (file)
@@ -6,9 +6,6 @@
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-/* Found in arch/mach-shark/core.c */
-extern void arch_reset(char mode, const char *cmd);
-
 static inline void arch_idle(void)
 {
 }
index 956ac18ddbf9c58931503e9d0f5410179d3c81cd..3e9f823231cb634b8cc5d83fcbe73d0bfcb8059a 100644 (file)
@@ -6,6 +6,7 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
+#error Fix me up
 static inline void arch_reset(char mode, const char *cmd)
 {
        soft_restart(0);
index b8f31c3935f7c23eae979532ea337d5c9fddac50..14276e5a98d2e2081d5ba227ceac6d5f11b6d985 100644 (file)
@@ -42,6 +42,8 @@ void __init spear3xx_map_io(void);
 void __init spear3xx_init_irq(void);
 void __init spear3xx_init(void);
 
+void spear_restart(char, const char *);
+
 /* pad mux declarations */
 #define PMX_FIRDA_MASK         (1 << 14)
 #define PMX_I2C_MASK           (1 << 13)
index 61068ba67923536ce8604b96cc4a4b1d595bdd16..3462ab9d612231b5107cad2787ffd67c7fdc2632 100644 (file)
@@ -71,4 +71,5 @@ MACHINE_START(SPEAR300, "ST-SPEAR300-EVB")
        .handle_irq     =       vic_handle_irq,
        .timer          =       &spear3xx_timer,
        .init_machine   =       spear300_evb_init,
+       .restart        =       spear_restart,
 MACHINE_END
index 7903abe92bf6f9c6c2029c6693c5789f5b0698cd..f92c4993f65ae5477d69e11cb2a301cf9c7ab240 100644 (file)
@@ -77,4 +77,5 @@ MACHINE_START(SPEAR310, "ST-SPEAR310-EVB")
        .handle_irq     =       vic_handle_irq,
        .timer          =       &spear3xx_timer,
        .init_machine   =       spear310_evb_init,
+       .restart        =       spear_restart,
 MACHINE_END
index e9751f970933078d462f3382330b5516c642c6b5..105334ab70213e85a4f3c8f8909e5cb634879921 100644 (file)
@@ -75,4 +75,5 @@ MACHINE_START(SPEAR320, "ST-SPEAR320-EVB")
        .handle_irq     =       vic_handle_irq,
        .timer          =       &spear3xx_timer,
        .init_machine   =       spear320_evb_init,
+       .restart        =       spear_restart,
 MACHINE_END
index 183f0238c5e26c611a066ebc781fa29116590f58..116b99301cf59d059bd99f5a46fca045ab362c11 100644 (file)
@@ -41,6 +41,8 @@ void __init spear6xx_init(void);
 void __init spear600_init(void);
 void __init spear6xx_clk_init(void);
 
+void spear_restart(char, const char *);
+
 /* Add spear600 machine device structure declarations here */
 
 #endif /* __MACH_GENERIC_H */
index ff139ed0a61ede2037bd6fcd5f78821aa5c93311..c6e4254741cc71348696369e494ab79c86494060 100644 (file)
@@ -50,4 +50,5 @@ MACHINE_START(SPEAR600, "ST-SPEAR600-EVB")
        .handle_irq     =       vic_handle_irq,
        .timer          =       &spear6xx_timer,
        .init_machine   =       spear600_evb_init,
+       .restart        =       spear_restart,
 MACHINE_END
index f6f03ce340fcafd4a0f72dff707ad3764a6321e2..e417a8383dbbcb4feae0dfdd2f59d956d8faeaa3 100644 (file)
@@ -134,5 +134,6 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra (Flattened Device Tree)")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_dt_init,
+       .restart        = tegra_assert_system_reset,
        .dt_compat      = tegra_dt_board_compat,
 MACHINE_END
index fd190a8dc6654c7e8fb200d85d596ffd15c26f2b..70ee674131f9fee9d77a189c12fafbb0dbd3af65 100644 (file)
@@ -191,4 +191,5 @@ MACHINE_START(HARMONY, "harmony")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_harmony_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
index 0b7e1cfee70dacb03f9810a5f3ca90a316238737..33d6205ad307c07cafb34296444458c742e66419 100644 (file)
@@ -194,4 +194,5 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_paz00_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
index 7328379b1356b0fd8ac54d5f268bae71d7fdf11e..c1599eb8e0cb0acb791551f9b90a0d1f124da1e1 100644 (file)
@@ -288,6 +288,7 @@ MACHINE_START(SEABOARD, "seaboard")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_seaboard_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
 
 MACHINE_START(KAEN, "kaen")
@@ -298,6 +299,7 @@ MACHINE_START(KAEN, "kaen")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_kaen_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
 
 MACHINE_START(WARIO, "wario")
@@ -308,4 +310,5 @@ MACHINE_START(WARIO, "wario")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_wario_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
index 60a36a2e0be19696c9a53e96b1afaf716c93fee5..c242314a1db5e55e2a6552da18ef99497f100a7f 100644 (file)
@@ -180,4 +180,5 @@ MACHINE_START(TRIMSLICE, "trimslice")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_trimslice_init,
+       .restart        = tegra_assert_system_reset,
 MACHINE_END
index 690b888be506b0f1e841a19f96180966cce00c89..20f396d740fa40a9e5852741d338429ba5f37bb8 100644 (file)
@@ -31,8 +31,6 @@
 #include "clock.h"
 #include "fuse.h"
 
-void (*arch_reset)(char mode, const char *cmd) = tegra_assert_system_reset;
-
 void tegra_assert_system_reset(char mode, const char *cmd)
 {
        void __iomem *reset = IO_ADDRESS(TEGRA_CLK_RESET_BASE + 0x04);
index 027c4215d3132cf273de1eeadf49760a680a2afa..a312988bf6f8609a9bbeb590db5a4cfe8e8df30f 100644 (file)
 #ifndef __MACH_TEGRA_SYSTEM_H
 #define __MACH_TEGRA_SYSTEM_H
 
-#include <mach/iomap.h>
-
-extern void (*arch_reset)(char mode, const char *cmd);
-
 static inline void arch_idle(void)
 {
 }
index ac0791e924bc06666f4644358d94606b1295641d..697930761b3ec1f3b7cb8ce3a31a6557b91fe39a 100644 (file)
@@ -1888,3 +1888,23 @@ static int core_module_init(void)
        return mmc_init(&mmcsd_device);
 }
 module_init(core_module_init);
+
+/* Forward declare this function from the watchdog */
+void coh901327_watchdog_reset(void);
+
+void u300_restart(char mode, const char *cmd)
+{
+       switch (mode) {
+       case 's':
+       case 'h':
+#ifdef CONFIG_COH901327_WATCHDOG
+               coh901327_watchdog_reset();
+#endif
+               break;
+       default:
+               /* Do nothing */
+               break;
+       }
+       /* Wait for system do die/reset. */
+       while (1);
+}
index 77d9210a82e294f6c9d82e6ec535dd02ba382ddc..096333f32fc34eb791a61e8b593dc1933a231778 100644 (file)
@@ -14,6 +14,7 @@
 void u300_map_io(void);
 void u300_init_irq(void);
 void u300_init_devices(void);
+void u300_restart(char, const char *);
 extern struct sys_timer u300_timer;
 
 #endif
index 6b6fef7a438cde5bd1fa46084169167bb8b2031c..574d46e3829066fb67792b6e563e8c88e1a5d848 100644 (file)
@@ -8,33 +8,7 @@
  * System shutdown and reset functions.
  * Author: Linus Walleij <linus.walleij@stericsson.com>
  */
-#include <mach/hardware.h>
-#include <asm/io.h>
-#include <asm/hardware/vic.h>
-#include <asm/irq.h>
-
-/* Forward declare this function from the watchdog */
-void coh901327_watchdog_reset(void);
-
 static inline void arch_idle(void)
 {
        cpu_do_idle();
 }
-
-static void arch_reset(char mode, const char *cmd)
-{
-       switch (mode) {
-       case 's':
-       case 'h':
-               printk(KERN_CRIT "RESET: shutting down/rebooting system\n");
-#ifdef CONFIG_COH901327_WATCHDOG
-               coh901327_watchdog_reset();
-#endif
-               break;
-       default:
-               /* Do nothing */
-               break;
-       }
-       /* Wait for system do die/reset. */
-       while (1);
-}
index 4a4fd334eb6e5fb081ae81f99422ec9c1f440a0b..def45bda29327eb14eb97cd3712957814b0f9870 100644 (file)
@@ -53,4 +53,5 @@ MACHINE_START(U300, MACH_U300_STRING)
        .handle_irq     = vic_handle_irq,
        .timer          = &u300_timer,
        .init_machine   = u300_init_machine,
+       .restart        = u300_restart,
 MACHINE_END
index c0cd8006f1a2a197d59e139425ec20826d1b020f..258e5c919c243d176e6ddfdad78a6455d41f2c35 100644 (file)
@@ -17,9 +17,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /* yet to be implemented - TODO */
-}
-
 #endif
index 4d8dfc15f3e6d21fcc347cebb7a3f15d2866747f..cbcda61162d32182a915fa25890d76d981c1ba27 100644 (file)
@@ -740,6 +740,19 @@ static void versatile_leds_event(led_event_t ledevt)
 }
 #endif /* CONFIG_LEDS */
 
+void versatile_restart(char mode, const char *cmd)
+{
+       void __iomem *sys = __io_address(VERSATILE_SYS_BASE);
+       u32 val;
+
+       val = __raw_readl(sys + VERSATILE_SYS_RESETCTL_OFFSET);
+       val |= 0x105;
+
+       __raw_writel(0xa05f, sys + VERSATILE_SYS_LOCK_OFFSET);
+       __raw_writel(val, sys + VERSATILE_SYS_RESETCTL_OFFSET);
+       __raw_writel(0, sys + VERSATILE_SYS_LOCK_OFFSET);
+}
+
 /* Early initializations */
 void __init versatile_init_early(void)
 {
index e01422700ebb50a3621943276a054b1f74d5b6ed..2ef2f555f315c8326fd85b73b295c6511d502904 100644 (file)
@@ -30,6 +30,7 @@ extern void __init versatile_init_early(void);
 extern void __init versatile_init_irq(void);
 extern void __init versatile_map_io(void);
 extern struct sys_timer versatile_timer;
+extern void versatile_restart(char, const char *);
 extern unsigned int mmc_status(struct device *dev);
 #ifdef CONFIG_OF
 extern struct of_dev_auxdata versatile_auxdata_lookup[];
index 8ffc12a7cb25dd0f0273d8bc6d938d067821f646..f3fa347895f07b8a746899606bacdc0bb6af77b8 100644 (file)
 #ifndef __ASM_ARCH_SYSTEM_H
 #define __ASM_ARCH_SYSTEM_H
 
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include <mach/platform.h>
-
 static inline void arch_idle(void)
 {
        /*
@@ -34,16 +30,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       u32 val;
-
-       val = __raw_readl(IO_ADDRESS(VERSATILE_SYS_RESETCTL)) & ~0x7;
-       val |= 0x105;
-
-       __raw_writel(0xa05f, IO_ADDRESS(VERSATILE_SYS_LOCK));
-       __raw_writel(val, IO_ADDRESS(VERSATILE_SYS_RESETCTL));
-       __raw_writel(0, IO_ADDRESS(VERSATILE_SYS_LOCK));
-}
-
 #endif
index c83a1f379f7aba55d15adcf19e3caf2610760425..63b8dd2b9f4d297132605432af9c17363870d517 100644 (file)
@@ -43,4 +43,5 @@ MACHINE_START(VERSATILE_AB, "ARM-Versatile AB")
        .handle_irq     = vic_handle_irq,
        .timer          = &versatile_timer,
        .init_machine   = versatile_init,
+       .restart        = versatile_restart,
 MACHINE_END
index f4d1e0f072c8466c49955e11b182a79f7766cbf8..ae5ad3c8f3dd0184f0a4259986a9ee8131558703 100644 (file)
@@ -50,4 +50,5 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)")
        .timer          = &versatile_timer,
        .init_machine   = versatile_dt_init,
        .dt_compat      = versatile_dt_match,
+       .restart        = versatile_restart,
 MACHINE_END
index 4d31eeb6c10136023c272bd10d9a562517e190ba..7aab79b665e71ee8bc57899817e29c76db046ac7 100644 (file)
@@ -111,4 +111,5 @@ MACHINE_START(VERSATILE_PB, "ARM-Versatile PB")
        .handle_irq     = vic_handle_irq,
        .timer          = &versatile_timer,
        .init_machine   = versatile_pb_init,
+       .restart        = versatile_restart,
 MACHINE_END
index 899a4e628a4c0c9109e601e3ee84d63dd1ac985d..f653a8e265bdbfbf3d9804c0efb912823fcaf139 100644 (file)
@@ -30,8 +30,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-}
-
 #endif
index 7aa07a8ce2323ff65606070a09cce2a338edd747..6dd10e320ef68de0e16726cca8062bbc911cb6da 100644 (file)
@@ -438,7 +438,6 @@ static void __init v2m_init(void)
                amba_device_register(v2m_amba_devs[i], &iomem_resource);
 
        pm_power_off = v2m_power_off;
-       arm_pm_restart = v2m_restart;
 
        ct_desc->init_tile();
 }
@@ -451,4 +450,5 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")
        .timer          = &v2m_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = v2m_init,
+       .restart        = v2m_restart,
 MACHINE_END
index d6c757eaf26b2d9dd1312090654869a07f4d2c96..787bcd25c5b3c8691960da8b7fabaf8e46aab8f5 100644 (file)
@@ -12,6 +12,7 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
+#error Fix me up
 static inline void arch_reset(char mode, const char *cmd)
 {
        writel(1, VT8500_PMSR_VIRT);
index 0a235e502330ced25bb246da225778641bdcf3bb..604e1db266e8402d5f85c018c3870e15794c8bef 100644 (file)
 #include <mach/regs-serial.h>
 #include <mach/regs-clock.h>
 #include <mach/regs-ebi.h>
+#include <mach/regs-timer.h>
 
 #include "cpu.h"
 #include "clock.h"
+#include "nuc9xx.h"
 
 /* Initial IO mappings */
 
@@ -222,3 +224,17 @@ void __init nuc900_init_clocks(void)
        clkdev_add_table(nuc900_clkregs, ARRAY_SIZE(nuc900_clkregs));
 }
 
+#define        WTCR    (TMR_BA + 0x1C)
+#define        WTCLK   (1 << 10)
+#define        WTE     (1 << 7)
+#define        WTRE    (1 << 1)
+
+void nuc9xx_restart(char mode, const char *cmd)
+{
+       if (mode == 's') {
+               /* Jump into ROM at address 0 */
+               soft_restart(0);
+       } else {
+               __raw_writel(WTE | WTRE | WTCLK, WTCR);
+       }
+}
index 68875a1c16bed36402e1266d8437cbbce0252d85..2aaeb93116193fca2e6a6e9f5138bf1af24d0943 100644 (file)
  * (at your option) any later version.
  *
  */
-
-#include <linux/io.h>
-#include <asm/proc-fns.h>
-#include <mach/map.h>
-#include <mach/regs-timer.h>
-
-#define        WTCR    (TMR_BA + 0x1C)
-#define        WTCLK   (1 << 10)
-#define        WTE     (1 << 7)
-#define        WTRE    (1 << 1)
-
 static void arch_idle(void)
 {
 }
-
-static void arch_reset(char mode, const char *cmd)
-{
-       if (mode == 's') {
-               /* Jump into ROM at address 0 */
-               soft_restart(0);
-       } else {
-               __raw_writel(WTE | WTRE | WTCLK, WTCR);
-       }
-}
-
index 31c109018228a20435523c4af960a2a628f55416..b4243e4f1565b4614db0a1ba64f21a92bdb0bb22 100644 (file)
@@ -38,4 +38,5 @@ MACHINE_START(W90P910EVB, "W90P910EVB")
        .init_irq       = nuc900_init_irq,
        .init_machine   = nuc910evb_init,
        .timer          = &nuc900_timer,
+       .restart        = nuc9xx_restart,
 MACHINE_END
index 4062e55a57d8a8cf2d6baef38d774e3426074a4c..067d8f9166dc2a1131d0a647402fb0b546afa4a9 100644 (file)
@@ -41,4 +41,5 @@ MACHINE_START(W90P950EVB, "W90P950EVB")
        .init_irq       = nuc900_init_irq,
        .init_machine   = nuc950evb_init,
        .timer          = &nuc900_timer,
+       .restart        = nuc9xx_restart,
 MACHINE_END
index 0ab9995d5b58be532dff1488d10e06291f034ad9..cbb3adc3db1074471d96a112d8c7940fa51e2080 100644 (file)
@@ -38,4 +38,5 @@ MACHINE_START(W90N960EVB, "W90N960EVB")
        .init_irq       = nuc900_init_irq,
        .init_machine   = nuc960evb_init,
        .timer          = &nuc900_timer,
+       .restart        = nuc9xx_restart,
 MACHINE_END
index 847c4f3e044040e8907f6edda4237d9f8a8795f0..91acb404779326789f1ca0944422bc044715f667 100644 (file)
@@ -21,3 +21,4 @@ struct sys_timer;
 
 extern void nuc900_init_irq(void);
 extern struct sys_timer nuc900_timer;
+extern void nuc9xx_restart(char, const char *);
index 1b84d705c675e43ff584a467f46009aca57dc6c3..8e88e0b8d2babf415f452e08e7904b50f2d95cc1 100644 (file)
@@ -20,9 +20,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       /* Add architecture specific reset processing here */
-}
-
 #endif
index 90f7153a8d78bb0473a9a2d5a78f51145d888a2a..a99dc15a70f7955060bcc0ae5b7509efaa7922aa 100644 (file)
@@ -13,6 +13,7 @@ obj-$(CONFIG_ARCH_IOP32X) += time.o
 obj-$(CONFIG_ARCH_IOP32X) += cp6.o
 obj-$(CONFIG_ARCH_IOP32X) += adma.o
 obj-$(CONFIG_ARCH_IOP32X) += pmu.o
+obj-$(CONFIG_ARCH_IOP32X) += restart.o
 
 # IOP33X
 obj-$(CONFIG_ARCH_IOP33X) += gpio.o
@@ -23,6 +24,7 @@ obj-$(CONFIG_ARCH_IOP33X) += time.o
 obj-$(CONFIG_ARCH_IOP33X) += cp6.o
 obj-$(CONFIG_ARCH_IOP33X) += adma.o
 obj-$(CONFIG_ARCH_IOP33X) += pmu.o
+obj-$(CONFIG_ARCH_IOP33X) += restart.o
 
 # IOP13XX
 obj-$(CONFIG_ARCH_IOP13XX) += cp6.o
diff --git a/arch/arm/plat-iop/restart.c b/arch/arm/plat-iop/restart.c
new file mode 100644 (file)
index 0000000..6a85a0c
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * restart.c
+ *
+ * Copyright (C) 2001 MontaVista Software, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <asm/hardware/iop3xx.h>
+#include <mach/hardware.h>
+
+void iop3xx_restart(char mode, const char *cmd)
+{
+       *IOP3XX_PCSR = 0x30;
+
+       /* Jump into ROM at address 0 */
+       soft_restart(0);
+}
index 6698cae942f78e21072a8fea8719c181313a16fd..83cca9bcfc972729fd74fecc8ce1272189d04b6a 100644 (file)
@@ -71,8 +71,8 @@ extern int mx6q_clocks_init(void);
 extern struct platform_device *mxc_register_gpio(char *name, int id,
        resource_size_t iobase, resource_size_t iosize, int irq, int irq_high);
 extern void mxc_set_cpu_type(unsigned int type);
+extern void mxc_restart(char, const char *);
 extern void mxc_arch_reset_init(void __iomem *);
-extern void mx51_efikamx_reset(void);
 extern int mx53_revision(void);
 extern int mx53_display_revision(void);
 
@@ -121,6 +121,7 @@ static inline void imx_smp_prepare(void) {}
 extern void imx_enable_cpu(int cpu, bool enable);
 extern void imx_set_cpu_jump(int cpu, void *jump_addr);
 extern void imx_src_init(void);
+extern void imx_src_prepare_restart(void);
 extern void imx_gpc_init(void);
 extern void imx_gpc_pre_suspend(void);
 extern void imx_gpc_post_resume(void);
index b9895d250167cf6b384d5cb1320e00e855537019..13ad0df2e86065bf43cb8882fab90e4fed5b4957 100644 (file)
@@ -22,6 +22,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-void arch_reset(char mode, const char *cmd);
-
 #endif /* __ASM_ARCH_MXC_SYSTEM_H__ */
index 7e5c76ea4466a425a49ba8e64f450403f58733ab..3599bf2cfd4f7a351717bb3abdd2f54160d4d712 100644 (file)
@@ -37,17 +37,10 @@ static void __iomem *wdog_base;
 /*
  * Reset the system. It is called by machine_restart().
  */
-void arch_reset(char mode, const char *cmd)
+void mxc_restart(char mode, const char *cmd)
 {
        unsigned int wcr_enable;
 
-#ifdef CONFIG_MACH_MX51_EFIKAMX
-       if (machine_is_mx51_efikamx()) {
-               mx51_efikamx_reset();
-               return;
-       }
-#endif
-
        if (cpu_is_mx1()) {
                wcr_enable = (1 << 0);
        } else {
index c5fa9e92900947e3ca41be37c4edb397146aa069..8e5ebd74b129389b10cd02cc138765fc8ca8e8f9 100644 (file)
@@ -12,6 +12,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-extern void (*arch_reset)(char, const char *);
-
 #endif
index 3c6335307fb12afd53cf3b9bdbee6cc0983f1a86..1121df13e15f52de91d7d30ee41399950e60ee72 100644 (file)
@@ -192,27 +192,6 @@ static unsigned long s3c24xx_read_idcode_v4(void)
        return __raw_readl(S3C2410_GSTATUS1);
 }
 
-/* Hook for arm_pm_restart to ensure we execute the reset code
- * with the caches enabled. It seems at least the S3C2440 has a problem
- * resetting if there is bus activity interrupted by the reset.
- */
-static void s3c24xx_pm_restart(char mode, const char *cmd)
-{
-       if (mode != 's') {
-               unsigned long flags;
-
-               local_irq_save(flags);
-               __cpuc_flush_kern_all();
-               __cpuc_flush_user_all();
-
-               arch_reset(mode, cmd);
-               local_irq_restore(flags);
-       }
-
-       /* fallback, or unhandled */
-       arm_machine_restart(mode, cmd);
-}
-
 void __init s3c24xx_init_io(struct map_desc *mach_desc, int size)
 {
        /* initialise the io descriptors we need for initialisation */
@@ -226,7 +205,5 @@ void __init s3c24xx_init_io(struct map_desc *mach_desc, int size)
        }
        s3c24xx_init_cpu();
 
-       arm_pm_restart = s3c24xx_pm_restart;
-
        s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids));
 }
index a448e990964d4ab45d34afd8015cb4e7f021c9a6..19e0b72870d3f9204776be222584c019a829ffde 100644 (file)
@@ -16,6 +16,7 @@
 
 void (*s5p_reset_hook)(void);
 
+#error Fix me up
 static void arch_reset(char mode, const char *cmd)
 {
        /* SWRESET support in s5p_reset_hook() */
index b4f340b8f1f1eeedfd630c13dba27dfe7710d51d..e0f2e5b9530c8390c264f5eba165aa6571e7120f 100644 (file)
@@ -3,6 +3,6 @@
 #
 
 # Common support
-obj-y  := clock.o time.o
+obj-y  := clock.o restart.o time.o
 
 obj-$(CONFIG_ARCH_SPEAR3XX)    += shirq.o padmux.o
index 1171f228d7188782b7be28db8b9baf21903192b0..86c6f83b44cc15cd22e86afbc5a6d7788f923336 100644 (file)
 #ifndef __PLAT_SYSTEM_H
 #define __PLAT_SYSTEM_H
 
-#include <linux/io.h>
-#include <asm/hardware/sp810.h>
-#include <mach/hardware.h>
-
 static inline void arch_idle(void)
 {
        /*
@@ -27,15 +23,4 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
-static inline void arch_reset(char mode, const char *cmd)
-{
-       if (mode == 's') {
-               /* software reset, Jump into ROM at address 0 */
-               soft_restart(0);
-       } else {
-               /* hardware reset, Use on-chip reset capability */
-               sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE);
-       }
-}
-
 #endif /* __PLAT_SYSTEM_H */
diff --git a/arch/arm/plat-spear/restart.c b/arch/arm/plat-spear/restart.c
new file mode 100644 (file)
index 0000000..2b4e3d8
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * arch/arm/plat-spear/restart.c
+ *
+ * SPEAr platform specific restart functions
+ *
+ * Copyright (C) 2009 ST Microelectronics
+ * Viresh Kumar<viresh.kumar@st.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+#include <linux/io.h>
+#include <asm/hardware/sp810.h>
+#include <mach/hardware.h>
+#include <mach/generic.h>
+
+void spear_restart(char mode, const char *cmd)
+{
+       if (mode == 's') {
+               /* software reset, Jump into ROM at address 0 */
+               soft_restart(0);
+       } else {
+               /* hardware reset, Use on-chip reset capability */
+               sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE);
+       }
+}
index 909e6035d843da98309be68d50719ec8e1725823..c4fca0126e18f8b04afd909e47d0abdb7a121276 100644 (file)
@@ -23,6 +23,7 @@ static inline void arch_idle(void)
        cpu_do_idle();
 }
 
+#error Fix me up
 static inline void arch_reset(char mode, const char *cmd)
 {
        plat_tcc_reboot();