aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/arm/pxa/mfp.txt26
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt3
-rw-r--r--arch/arm/Kconfig107
-rw-r--r--arch/arm/Kconfig.debug391
-rw-r--r--arch/arm/configs/ep93xx_defconfig1
-rw-r--r--arch/arm/configs/lpc32xx_defconfig1
-rw-r--r--arch/arm/configs/multi_v7_defconfig3
-rw-r--r--arch/arm/configs/mv78xx0_defconfig4
-rw-r--r--arch/arm/configs/orion5x_defconfig4
-rw-r--r--arch/arm/configs/realview-smp_defconfig9
-rw-r--r--arch/arm/configs/realview_defconfig8
-rw-r--r--arch/arm/configs/s3c6400_defconfig2
-rw-r--r--arch/arm/configs/versatile_defconfig3
-rw-r--r--arch/arm/include/asm/cputype.h22
-rw-r--r--arch/arm/include/debug/dc21285.S (renamed from arch/arm/mach-footbridge/include/mach/debug-macro.S)0
-rw-r--r--arch/arm/kernel/devtree.c2
-rw-r--r--arch/arm/kernel/xscale-cp0.c7
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c4
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c2
-rw-r--r--arch/arm/mach-davinci/board-omapl138-hawk.c2
-rw-r--r--arch/arm/mach-davinci/clock.c2
-rw-r--r--arch/arm/mach-davinci/cp_intc.c2
-rw-r--r--arch/arm/mach-davinci/cp_intc.h (renamed from arch/arm/mach-davinci/include/mach/cp_intc.h)0
-rw-r--r--arch/arm/mach-davinci/cpuidle.c4
-rw-r--r--arch/arm/mach-davinci/cpuidle.h (renamed from arch/arm/mach-davinci/include/mach/cpuidle.h)0
-rw-r--r--arch/arm/mach-davinci/da830.c2
-rw-r--r--arch/arm/mach-davinci/da850.c2
-rw-r--r--arch/arm/mach-davinci/da8xx-dt.c2
-rw-r--r--arch/arm/mach-davinci/ddr2.h (renamed from arch/arm/mach-davinci/include/mach/ddr2.h)0
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c4
-rw-r--r--arch/arm/mach-davinci/dm355.c2
-rw-r--r--arch/arm/mach-davinci/dm365.c2
-rw-r--r--arch/arm/mach-davinci/dm644x.c2
-rw-r--r--arch/arm/mach-davinci/dm646x.c2
-rw-r--r--arch/arm/mach-davinci/pm.c2
-rw-r--r--arch/arm/mach-davinci/psc.c2
-rw-r--r--arch/arm/mach-davinci/psc.h (renamed from arch/arm/mach-davinci/include/mach/psc.h)0
-rw-r--r--arch/arm/mach-davinci/sleep.S4
-rw-r--r--arch/arm/mach-davinci/sram.c2
-rw-r--r--arch/arm/mach-davinci/sram.h (renamed from arch/arm/mach-davinci/include/mach/sram.h)0
-rw-r--r--arch/arm/mach-dove/cm-a510.c1
-rw-r--r--arch/arm/mach-dove/common.c43
-rw-r--r--arch/arm/mach-dove/dove-db-setup.c1
-rw-r--r--arch/arm/mach-dove/include/mach/dove.h2
-rw-r--r--arch/arm/mach-dove/include/mach/entry-macro.S33
-rw-r--r--arch/arm/mach-dove/include/mach/irqs.h2
-rw-r--r--arch/arm/mach-dove/include/mach/pm.h20
-rw-r--r--arch/arm/mach-dove/irq.c100
-rw-r--r--arch/arm/mach-integrator/Kconfig132
-rw-r--r--arch/arm/mach-iop13xx/include/mach/pci.h57
-rw-r--r--arch/arm/mach-iop13xx/iq81340mc.c2
-rw-r--r--arch/arm/mach-iop13xx/iq81340sc.c2
-rw-r--r--arch/arm/mach-iop13xx/irq.c2
-rw-r--r--arch/arm/mach-iop13xx/msi.h (renamed from arch/arm/mach-iop13xx/include/mach/msi.h)0
-rw-r--r--arch/arm/mach-iop13xx/pci.c2
-rw-r--r--arch/arm/mach-iop13xx/pci.h58
-rw-r--r--arch/arm/mach-ks8695/board-acs5k.c2
-rw-r--r--arch/arm/mach-ks8695/board-dsm320.c2
-rw-r--r--arch/arm/mach-ks8695/board-micrel.c2
-rw-r--r--arch/arm/mach-ks8695/board-og.c2
-rw-r--r--arch/arm/mach-ks8695/board-sg.c2
-rw-r--r--arch/arm/mach-ks8695/cpu.c2
-rw-r--r--arch/arm/mach-ks8695/devices.c6
-rw-r--r--arch/arm/mach-ks8695/devices.h (renamed from arch/arm/mach-ks8695/include/mach/devices.h)0
-rw-r--r--arch/arm/mach-ks8695/pci.c4
-rw-r--r--arch/arm/mach-ks8695/regs-hpna.h (renamed from arch/arm/mach-ks8695/include/mach/regs-hpna.h)0
-rw-r--r--arch/arm/mach-ks8695/regs-lan.h (renamed from arch/arm/mach-ks8695/include/mach/regs-lan.h)0
-rw-r--r--arch/arm/mach-ks8695/regs-mem.h (renamed from arch/arm/mach-ks8695/include/mach/regs-mem.h)0
-rw-r--r--arch/arm/mach-ks8695/regs-pci.h (renamed from arch/arm/mach-ks8695/include/mach/regs-pci.h)0
-rw-r--r--arch/arm/mach-ks8695/regs-sys.h (renamed from arch/arm/mach-ks8695/include/mach/regs-sys.h)0
-rw-r--r--arch/arm/mach-ks8695/regs-wan.h (renamed from arch/arm/mach-ks8695/include/mach/regs-wan.h)0
-rw-r--r--arch/arm/mach-mmp/Kconfig34
-rw-r--r--arch/arm/mach-mmp/Makefile1
-rw-r--r--arch/arm/mach-mmp/addr-map.h (renamed from arch/arm/mach-mmp/include/mach/addr-map.h)2
-rw-r--r--arch/arm/mach-mmp/aspenite.c8
-rw-r--r--arch/arm/mach-mmp/avengers_lite.c8
-rw-r--r--arch/arm/mach-mmp/brownstone.c8
-rw-r--r--arch/arm/mach-mmp/clock-mmp2.c6
-rw-r--r--arch/arm/mach-mmp/clock-pxa168.c6
-rw-r--r--arch/arm/mach-mmp/clock-pxa910.c6
-rw-r--r--arch/arm/mach-mmp/clock.c2
-rw-r--r--arch/arm/mach-mmp/clock.h2
-rw-r--r--arch/arm/mach-mmp/common.c4
-rw-r--r--arch/arm/mach-mmp/common.h3
-rw-r--r--arch/arm/mach-mmp/cputype.h (renamed from arch/arm/mach-mmp/include/mach/cputype.h)0
-rw-r--r--arch/arm/mach-mmp/devices.c13
-rw-r--r--arch/arm/mach-mmp/devices.h (renamed from arch/arm/mach-mmp/include/mach/devices.h)0
-rw-r--r--arch/arm/mach-mmp/flint.c8
-rw-r--r--arch/arm/mach-mmp/gplugd.c6
-rw-r--r--arch/arm/mach-mmp/include/mach/dma.h13
-rw-r--r--arch/arm/mach-mmp/include/mach/hardware.h4
-rw-r--r--arch/arm/mach-mmp/include/mach/regs-smc.h37
-rw-r--r--arch/arm/mach-mmp/include/mach/uncompress.h45
-rw-r--r--arch/arm/mach-mmp/irqs.h (renamed from arch/arm/mach-mmp/include/mach/irqs.h)0
-rw-r--r--arch/arm/mach-mmp/jasper.c8
-rw-r--r--arch/arm/mach-mmp/mfp-mmp2.h (renamed from arch/arm/mach-mmp/include/mach/mfp-mmp2.h)2
-rw-r--r--arch/arm/mach-mmp/mfp-pxa168.h (renamed from arch/arm/mach-mmp/include/mach/mfp-pxa168.h)2
-rw-r--r--arch/arm/mach-mmp/mfp-pxa910.h (renamed from arch/arm/mach-mmp/include/mach/mfp-pxa910.h)2
-rw-r--r--arch/arm/mach-mmp/mfp.h (renamed from arch/arm/mach-mmp/include/mach/mfp.h)0
-rw-r--r--arch/arm/mach-mmp/mmp2.c23
-rw-r--r--arch/arm/mach-mmp/mmp2.h (renamed from arch/arm/mach-mmp/include/mach/mmp2.h)3
-rw-r--r--arch/arm/mach-mmp/pm-mmp2.c12
-rw-r--r--arch/arm/mach-mmp/pm-mmp2.h (renamed from arch/arm/mach-mmp/include/mach/pm-mmp2.h)2
-rw-r--r--arch/arm/mach-mmp/pm-pxa910.c12
-rw-r--r--arch/arm/mach-mmp/pm-pxa910.h (renamed from arch/arm/mach-mmp/include/mach/pm-pxa910.h)0
-rw-r--r--arch/arm/mach-mmp/pxa168.c29
-rw-r--r--arch/arm/mach-mmp/pxa168.h (renamed from arch/arm/mach-mmp/include/mach/pxa168.h)5
-rw-r--r--arch/arm/mach-mmp/pxa910.c24
-rw-r--r--arch/arm/mach-mmp/pxa910.h (renamed from arch/arm/mach-mmp/include/mach/pxa910.h)3
-rw-r--r--arch/arm/mach-mmp/regs-apbc.h (renamed from arch/arm/mach-mmp/include/mach/regs-apbc.h)4
-rw-r--r--arch/arm/mach-mmp/regs-apmu.h (renamed from arch/arm/mach-mmp/include/mach/regs-apmu.h)4
-rw-r--r--arch/arm/mach-mmp/regs-icu.h (renamed from arch/arm/mach-mmp/include/mach/regs-icu.h)4
-rw-r--r--arch/arm/mach-mmp/regs-timers.h (renamed from arch/arm/mach-mmp/include/mach/regs-timers.h)4
-rw-r--r--arch/arm/mach-mmp/regs-usb.h (renamed from arch/arm/mach-mmp/include/mach/regs-usb.h)0
-rw-r--r--arch/arm/mach-mmp/tavorevb.c8
-rw-r--r--arch/arm/mach-mmp/teton_bga.c10
-rw-r--r--arch/arm/mach-mmp/teton_bga.h (renamed from arch/arm/mach-mmp/include/mach/teton_bga.h)2
-rw-r--r--arch/arm/mach-mmp/time.c11
-rw-r--r--arch/arm/mach-mmp/ttc_dkb.c10
-rw-r--r--arch/arm/mach-mv78xx0/Kconfig15
-rw-r--r--arch/arm/mach-mv78xx0/Makefile2
-rw-r--r--arch/arm/mach-mv78xx0/bridge-regs.h (renamed from arch/arm/mach-mv78xx0/include/mach/bridge-regs.h)4
-rw-r--r--arch/arm/mach-mv78xx0/buffalo-wxl-setup.c3
-rw-r--r--arch/arm/mach-mv78xx0/common.c4
-rw-r--r--arch/arm/mach-mv78xx0/db78x00-bp-setup.c3
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/entry-macro.S41
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/hardware.h14
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/uncompress.h46
-rw-r--r--arch/arm/mach-mv78xx0/irq.c35
-rw-r--r--arch/arm/mach-mv78xx0/irqs.h (renamed from arch/arm/mach-mv78xx0/include/mach/irqs.h)4
-rw-r--r--arch/arm/mach-mv78xx0/mpp.c2
-rw-r--r--arch/arm/mach-mv78xx0/mv78xx0.h (renamed from arch/arm/mach-mv78xx0/include/mach/mv78xx0.h)4
-rw-r--r--arch/arm/mach-mv78xx0/pcie.c2
-rw-r--r--arch/arm/mach-mv78xx0/rd78x00-masa-setup.c3
-rw-r--r--arch/arm/mach-netx/include/mach/param.h18
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c2
-rw-r--r--arch/arm/mach-omap1/board-fsample.c2
-rw-r--r--arch/arm/mach-omap1/board-h2.c2
-rw-r--r--arch/arm/mach-omap1/board-h3.c2
-rw-r--r--arch/arm/mach-omap1/board-innovator.c2
-rw-r--r--arch/arm/mach-omap1/board-osk.c2
-rw-r--r--arch/arm/mach-omap1/board-palmte.c2
-rw-r--r--arch/arm/mach-omap1/board-palmtt.c2
-rw-r--r--arch/arm/mach-omap1/board-palmz71.c2
-rw-r--r--arch/arm/mach-omap1/board-perseus2.c2
-rw-r--r--arch/arm/mach-omap1/board-sx1-mmc.c2
-rw-r--r--arch/arm/mach-omap1/board-sx1.c4
-rw-r--r--arch/arm/mach-omap1/board-sx1.h (renamed from arch/arm/mach-omap1/include/mach/board-sx1.h)0
-rw-r--r--arch/arm/mach-omap1/camera.h (renamed from arch/arm/mach-omap1/include/mach/camera.h)0
-rw-r--r--arch/arm/mach-omap1/devices.c2
-rw-r--r--arch/arm/mach-omap1/flash.c2
-rw-r--r--arch/arm/mach-omap1/flash.h (renamed from arch/arm/mach-omap1/include/mach/flash.h)0
-rw-r--r--arch/arm/mach-orion5x/Kconfig18
-rw-r--r--arch/arm/mach-orion5x/Makefile2
-rw-r--r--arch/arm/mach-orion5x/board-d2net.c2
-rw-r--r--arch/arm/mach-orion5x/board-dt.c4
-rw-r--r--arch/arm/mach-orion5x/board-mss2.c4
-rw-r--r--arch/arm/mach-orion5x/board-rd88f5182.c2
-rw-r--r--arch/arm/mach-orion5x/bridge-regs.h (renamed from arch/arm/mach-orion5x/include/mach/bridge-regs.h)4
-rw-r--r--arch/arm/mach-orion5x/common.c20
-rw-r--r--arch/arm/mach-orion5x/db88f5281-setup.c3
-rw-r--r--arch/arm/mach-orion5x/dns323-setup.c3
-rw-r--r--arch/arm/mach-orion5x/include/mach/entry-macro.S25
-rw-r--r--arch/arm/mach-orion5x/include/mach/hardware.h14
-rw-r--r--arch/arm/mach-orion5x/include/mach/uncompress.h48
-rw-r--r--arch/arm/mach-orion5x/irq.c13
-rw-r--r--arch/arm/mach-orion5x/irqs.h (renamed from arch/arm/mach-orion5x/include/mach/irqs.h)4
-rw-r--r--arch/arm/mach-orion5x/kurobox_pro-setup.c4
-rw-r--r--arch/arm/mach-orion5x/ls-chl-setup.c3
-rw-r--r--arch/arm/mach-orion5x/ls_hgl-setup.c3
-rw-r--r--arch/arm/mach-orion5x/mpp.c2
-rw-r--r--arch/arm/mach-orion5x/mv2120-setup.c3
-rw-r--r--arch/arm/mach-orion5x/net2big-setup.c3
-rw-r--r--arch/arm/mach-orion5x/orion5x.h (renamed from arch/arm/mach-orion5x/include/mach/orion5x.h)4
-rw-r--r--arch/arm/mach-orion5x/pci.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c3
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-ge-setup.c3
-rw-r--r--arch/arm/mach-orion5x/rd88f5182-setup.c3
-rw-r--r--arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c3
-rw-r--r--arch/arm/mach-orion5x/terastation_pro2-setup.c3
-rw-r--r--arch/arm/mach-orion5x/ts209-setup.c3
-rw-r--r--arch/arm/mach-orion5x/ts409-setup.c3
-rw-r--r--arch/arm/mach-orion5x/ts78xx-setup.c3
-rw-r--r--arch/arm/mach-orion5x/tsx09-common.c2
-rw-r--r--arch/arm/mach-orion5x/wnr854t-setup.c3
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c3
-rw-r--r--arch/arm/mach-pxa/am200epd.c4
-rw-r--r--arch/arm/mach-pxa/am300epd.c4
-rw-r--r--arch/arm/mach-pxa/balloon3.c6
-rw-r--r--arch/arm/mach-pxa/capc7117.c4
-rw-r--r--arch/arm/mach-pxa/cm-x255.c2
-rw-r--r--arch/arm/mach-pxa/cm-x270.c2
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c13
-rw-r--r--arch/arm/mach-pxa/cm-x300.c4
-rw-r--r--arch/arm/mach-pxa/colibri-evalboard.c6
-rw-r--r--arch/arm/mach-pxa/colibri-pxa270-income.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa270.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c8
-rw-r--r--arch/arm/mach-pxa/colibri-pxa3xx.c4
-rw-r--r--arch/arm/mach-pxa/colibri.h (renamed from arch/arm/mach-pxa/include/mach/colibri.h)0
-rw-r--r--arch/arm/mach-pxa/corgi.c6
-rw-r--r--arch/arm/mach-pxa/corgi_pm.c2
-rw-r--r--arch/arm/mach-pxa/csb726.c4
-rw-r--r--arch/arm/mach-pxa/csb726.h (renamed from arch/arm/mach-pxa/include/mach/csb726.h)2
-rw-r--r--arch/arm/mach-pxa/devices.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c4
-rw-r--r--arch/arm/mach-pxa/eseries-irq.h (renamed from arch/arm/mach-pxa/include/mach/eseries-irq.h)0
-rw-r--r--arch/arm/mach-pxa/eseries.c6
-rw-r--r--arch/arm/mach-pxa/ezx.c12
-rw-r--r--arch/arm/mach-pxa/gumstix.c6
-rw-r--r--arch/arm/mach-pxa/gumstix.h (renamed from arch/arm/mach-pxa/include/mach/gumstix.h)2
-rw-r--r--arch/arm/mach-pxa/h5000.c6
-rw-r--r--arch/arm/mach-pxa/h5000.h (renamed from arch/arm/mach-pxa/include/mach/h5000.h)2
-rw-r--r--arch/arm/mach-pxa/himalaya.c2
-rw-r--r--arch/arm/mach-pxa/hx4700.c2
-rw-r--r--arch/arm/mach-pxa/icontrol.c4
-rw-r--r--arch/arm/mach-pxa/idp.c4
-rw-r--r--arch/arm/mach-pxa/idp.h (renamed from arch/arm/mach-pxa/include/mach/idp.h)2
-rw-r--r--arch/arm/mach-pxa/littleton.c4
-rw-r--r--arch/arm/mach-pxa/littleton.h (renamed from arch/arm/mach-pxa/include/mach/littleton.h)0
-rw-r--r--arch/arm/mach-pxa/lpd270.c4
-rw-r--r--arch/arm/mach-pxa/lpd270.h (renamed from arch/arm/mach-pxa/include/mach/lpd270.h)0
-rw-r--r--arch/arm/mach-pxa/lubbock.c6
-rw-r--r--arch/arm/mach-pxa/magician.c6
-rw-r--r--arch/arm/mach-pxa/mainstone.c2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa25x.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa25x.h)2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa27x.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa27x.h)2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa2xx.c2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa2xx.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h)0
-rw-r--r--arch/arm/mach-pxa/mfp-pxa300.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa300.h)2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa320.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa320.h)2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa3xx.c2
-rw-r--r--arch/arm/mach-pxa/mfp-pxa3xx.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h)0
-rw-r--r--arch/arm/mach-pxa/mfp-pxa930.h (renamed from arch/arm/mach-pxa/include/mach/mfp-pxa930.h)2
-rw-r--r--arch/arm/mach-pxa/mioa701.c10
-rw-r--r--arch/arm/mach-pxa/mioa701.h (renamed from arch/arm/mach-pxa/include/mach/mioa701.h)0
-rw-r--r--arch/arm/mach-pxa/mp900.c2
-rw-r--r--arch/arm/mach-pxa/mxm8x10.c4
-rw-r--r--arch/arm/mach-pxa/mxm8x10.h (renamed from arch/arm/mach-pxa/include/mach/mxm8x10.h)0
-rw-r--r--arch/arm/mach-pxa/palm27x.c6
-rw-r--r--arch/arm/mach-pxa/palm27x.h (renamed from arch/arm/mach-pxa/include/mach/palm27x.h)0
-rw-r--r--arch/arm/mach-pxa/palmld.c4
-rw-r--r--arch/arm/mach-pxa/palmt5.c8
-rw-r--r--arch/arm/mach-pxa/palmt5.h (renamed from arch/arm/mach-pxa/include/mach/palmt5.h)2
-rw-r--r--arch/arm/mach-pxa/palmtc.c4
-rw-r--r--arch/arm/mach-pxa/palmte2.c6
-rw-r--r--arch/arm/mach-pxa/palmte2.h (renamed from arch/arm/mach-pxa/include/mach/palmte2.h)0
-rw-r--r--arch/arm/mach-pxa/palmtreo.c10
-rw-r--r--arch/arm/mach-pxa/palmtreo.h (renamed from arch/arm/mach-pxa/include/mach/palmtreo.h)0
-rw-r--r--arch/arm/mach-pxa/palmtx.c6
-rw-r--r--arch/arm/mach-pxa/palmz72.c10
-rw-r--r--arch/arm/mach-pxa/palmz72.h (renamed from arch/arm/mach-pxa/include/mach/palmz72.h)0
-rw-r--r--arch/arm/mach-pxa/pcm027.c4
-rw-r--r--arch/arm/mach-pxa/pcm027.h (renamed from arch/arm/mach-pxa/include/mach/pcm027.h)2
-rw-r--r--arch/arm/mach-pxa/pcm990-baseboard.c4
-rw-r--r--arch/arm/mach-pxa/pcm990_baseboard.h (renamed from arch/arm/mach-pxa/include/mach/pcm990_baseboard.h)4
-rw-r--r--arch/arm/mach-pxa/pm.c2
-rw-r--r--arch/arm/mach-pxa/pm.h (renamed from arch/arm/mach-pxa/include/mach/pm.h)0
-rw-r--r--arch/arm/mach-pxa/poodle.c4
-rw-r--r--arch/arm/mach-pxa/pxa25x.c4
-rw-r--r--arch/arm/mach-pxa/pxa25x.h (renamed from arch/arm/mach-pxa/include/mach/pxa25x.h)2
-rw-r--r--arch/arm/mach-pxa/pxa27x-udc.h (renamed from arch/arm/mach-pxa/include/mach/pxa27x-udc.h)0
-rw-r--r--arch/arm/mach-pxa/pxa27x.c4
-rw-r--r--arch/arm/mach-pxa/pxa27x.h (renamed from arch/arm/mach-pxa/include/mach/pxa27x.h)2
-rw-r--r--arch/arm/mach-pxa/pxa2xx.c2
-rw-r--r--arch/arm/mach-pxa/pxa300.c2
-rw-r--r--arch/arm/mach-pxa/pxa300.h (renamed from arch/arm/mach-pxa/include/mach/pxa300.h)4
-rw-r--r--arch/arm/mach-pxa/pxa320.c2
-rw-r--r--arch/arm/mach-pxa/pxa320.h (renamed from arch/arm/mach-pxa/include/mach/pxa320.h)4
-rw-r--r--arch/arm/mach-pxa/pxa3xx-ulpi.c2
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c2
-rw-r--r--arch/arm/mach-pxa/pxa3xx.h (renamed from arch/arm/mach-pxa/include/mach/pxa3xx.h)0
-rw-r--r--arch/arm/mach-pxa/pxa930.c2
-rw-r--r--arch/arm/mach-pxa/pxa930.h (renamed from arch/arm/mach-pxa/include/mach/pxa930.h)4
-rw-r--r--arch/arm/mach-pxa/raumfeld.c8
-rw-r--r--arch/arm/mach-pxa/regs-rtc.h (renamed from arch/arm/mach-pxa/include/mach/regs-rtc.h)0
-rw-r--r--arch/arm/mach-pxa/regs-u2d.h (renamed from arch/arm/mach-pxa/include/mach/regs-u2d.h)0
-rw-r--r--arch/arm/mach-pxa/saar.c2
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.c6
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.h (renamed from arch/arm/mach-pxa/include/mach/sharpsl_pm.h)0
-rw-r--r--arch/arm/mach-pxa/spitz.c6
-rw-r--r--arch/arm/mach-pxa/spitz_pm.c4
-rw-r--r--arch/arm/mach-pxa/stargate2.c6
-rw-r--r--arch/arm/mach-pxa/tavorevb.c2
-rw-r--r--arch/arm/mach-pxa/tosa-bt.c2
-rw-r--r--arch/arm/mach-pxa/tosa.c6
-rw-r--r--arch/arm/mach-pxa/tosa_bt.h (renamed from arch/arm/mach-pxa/include/mach/tosa_bt.h)0
-rw-r--r--arch/arm/mach-pxa/trizeps4.c2
-rw-r--r--arch/arm/mach-pxa/udc.h (renamed from arch/arm/mach-pxa/include/mach/udc.h)0
-rw-r--r--arch/arm/mach-pxa/viper.c4
-rw-r--r--arch/arm/mach-pxa/viper.h (renamed from arch/arm/mach-pxa/include/mach/viper.h)0
-rw-r--r--arch/arm/mach-pxa/vpac270.c6
-rw-r--r--arch/arm/mach-pxa/xcep.c2
-rw-r--r--arch/arm/mach-pxa/z2.c6
-rw-r--r--arch/arm/mach-pxa/zeus.c10
-rw-r--r--arch/arm/mach-pxa/zeus.h (renamed from arch/arm/mach-pxa/include/mach/zeus.h)0
-rw-r--r--arch/arm/mach-pxa/zylonite.c4
-rw-r--r--arch/arm/mach-pxa/zylonite.h (renamed from arch/arm/mach-pxa/include/mach/zylonite.h)0
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa300.c4
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa320.c4
-rw-r--r--arch/arm/mach-realview/Kconfig66
-rw-r--r--arch/arm/mach-realview/Makefile9
-rw-r--r--arch/arm/mach-realview/board-eb.h (renamed from arch/arm/mach-realview/include/mach/board-eb.h)4
-rw-r--r--arch/arm/mach-realview/board-pb1176.h (renamed from arch/arm/mach-realview/include/mach/board-pb1176.h)4
-rw-r--r--arch/arm/mach-realview/board-pb11mp.h (renamed from arch/arm/mach-realview/include/mach/board-pb11mp.h)4
-rw-r--r--arch/arm/mach-realview/board-pba8.h (renamed from arch/arm/mach-realview/include/mach/board-pba8.h)4
-rw-r--r--arch/arm/mach-realview/board-pbx.h (renamed from arch/arm/mach-realview/include/mach/board-pbx.h)4
-rw-r--r--arch/arm/mach-realview/core.c6
-rw-r--r--arch/arm/mach-realview/core.h2
-rw-r--r--arch/arm/mach-realview/hardware.h (renamed from arch/arm/mach-realview/include/mach/hardware.h)2
-rw-r--r--arch/arm/mach-realview/include/mach/barriers.h8
-rw-r--r--arch/arm/mach-realview/include/mach/irqs.h40
-rw-r--r--arch/arm/mach-realview/include/mach/memory.h64
-rw-r--r--arch/arm/mach-realview/include/mach/uncompress.h77
-rw-r--r--arch/arm/mach-realview/irqs-eb.h (renamed from arch/arm/mach-realview/include/mach/irqs-eb.h)20
-rw-r--r--arch/arm/mach-realview/irqs-pb1176.h (renamed from arch/arm/mach-realview/include/mach/irqs-pb1176.h)23
-rw-r--r--arch/arm/mach-realview/irqs-pb11mp.h (renamed from arch/arm/mach-realview/include/mach/irqs-pb11mp.h)27
-rw-r--r--arch/arm/mach-realview/irqs-pba8.h (renamed from arch/arm/mach-realview/include/mach/irqs-pba8.h)23
-rw-r--r--arch/arm/mach-realview/irqs-pbx.h (renamed from arch/arm/mach-realview/include/mach/irqs-pbx.h)24
-rw-r--r--arch/arm/mach-realview/platform.h (renamed from arch/arm/mach-realview/include/mach/platform.h)2
-rw-r--r--arch/arm/mach-realview/platsmp-dt.c91
-rw-r--r--arch/arm/mach-realview/platsmp.c8
-rw-r--r--arch/arm/mach-realview/realview-dt.c1
-rw-r--r--arch/arm/mach-realview/realview_eb.c13
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c6
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c12
-rw-r--r--arch/arm/mach-realview/realview_pba8.c14
-rw-r--r--arch/arm/mach-realview/realview_pbx.c14
-rw-r--r--arch/arm/mach-s3c24xx/include/mach/pm-core.h14
-rw-r--r--arch/arm/mach-s3c24xx/irq-pm.c11
-rw-r--r--arch/arm/mach-s3c64xx/Kconfig31
-rw-r--r--arch/arm/mach-s3c64xx/Makefile24
-rw-r--r--arch/arm/mach-s3c64xx/common.c5
-rw-r--r--arch/arm/mach-s3c64xx/cpuidle.c5
-rw-r--r--arch/arm/mach-s3c64xx/dev-uart.c1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/debug-macro.S38
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h3
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/irqs.h20
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/pm-core.h9
-rw-r--r--arch/arm/mach-s3c64xx/irq-pm.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-anw6410.c3
-rw-r--r--arch/arm/mach-s3c64xx/mach-crag6410-module.c6
-rw-r--r--arch/arm/mach-s3c64xx/mach-crag6410.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-hmt.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-mini6410.c5
-rw-r--r--arch/arm/mach-s3c64xx/mach-ncp.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-real6410.c6
-rw-r--r--arch/arm/mach-s3c64xx/mach-smartq.c16
-rw-r--r--arch/arm/mach-s3c64xx/mach-smartq5.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smartq7.c2
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6400.c3
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6410.c6
-rw-r--r--arch/arm/mach-s3c64xx/pl080.c4
-rw-r--r--arch/arm/mach-s3c64xx/pm.c4
-rw-r--r--arch/arm/mach-s3c64xx/s3c6400.c2
-rw-r--r--arch/arm/mach-s3c64xx/s3c6410.c2
-rw-r--r--arch/arm/mach-versatile/Kconfig41
-rw-r--r--arch/arm/mach-versatile/Makefile6
-rw-r--r--arch/arm/mach-versatile/Makefile.boot4
-rw-r--r--arch/arm/mach-versatile/core.c808
-rw-r--r--arch/arm/mach-versatile/core.h46
-rw-r--r--arch/arm/mach-versatile/include/mach/clkdev.h16
-rw-r--r--arch/arm/mach-versatile/include/mach/hardware.h38
-rw-r--r--arch/arm/mach-versatile/include/mach/irqs.h134
-rw-r--r--arch/arm/mach-versatile/include/mach/platform.h416
-rw-r--r--arch/arm/mach-versatile/include/mach/uncompress.h45
-rw-r--r--arch/arm/mach-versatile/pci.c368
-rw-r--r--arch/arm/mach-versatile/versatile_ab.c44
-rw-r--r--arch/arm/mach-versatile/versatile_dt.c376
-rw-r--r--arch/arm/mach-versatile/versatile_pb.c91
-rw-r--r--arch/arm/mach-w90x900/cpu.c4
-rw-r--r--arch/arm/mach-w90x900/regs-ebi.h (renamed from arch/arm/mach-w90x900/include/mach/regs-ebi.h)0
-rw-r--r--arch/arm/mach-w90x900/regs-gcr.h (renamed from arch/arm/mach-w90x900/include/mach/regs-gcr.h)0
-rw-r--r--arch/arm/mach-w90x900/regs-timer.h (renamed from arch/arm/mach-w90x900/include/mach/regs-timer.h)0
-rw-r--r--arch/arm/mach-w90x900/regs-usb.h (renamed from arch/arm/mach-w90x900/include/mach/regs-usb.h)0
-rw-r--r--arch/arm/mach-w90x900/time.c2
-rw-r--r--arch/arm/mm/Kconfig32
-rw-r--r--arch/arm/mm/idmap.c2
-rw-r--r--arch/arm/mm/mmu.c2
-rw-r--r--arch/arm/mm/proc-mohawk.S2
-rw-r--r--arch/arm/plat-orion/common.c21
-rw-r--r--arch/arm/plat-orion/include/plat/common.h2
-rw-r--r--arch/arm/plat-orion/irq.c1
-rw-r--r--arch/arm/plat-orion/mpp.c1
-rw-r--r--arch/arm/plat-pxa/Makefile3
-rw-r--r--arch/arm/plat-pxa/ssp.c1
-rw-r--r--arch/arm/plat-samsung/Kconfig5
-rw-r--r--arch/arm/plat-samsung/Makefile5
-rw-r--r--arch/arm/plat-samsung/devs.c22
-rw-r--r--arch/arm/plat-samsung/gpio-samsung.c (renamed from drivers/gpio/gpio-samsung.c)12
-rw-r--r--arch/arm/plat-samsung/include/plat/pm.h8
-rw-r--r--arch/arm/plat-samsung/init.c5
-rw-r--r--arch/arm/plat-samsung/pm.c4
-rw-r--r--drivers/clk/mmp/clk-mmp2.c11
-rw-r--r--drivers/clk/mmp/clk-pxa168.c11
-rw-r--r--drivers/clk/mmp/clk-pxa910.c13
-rw-r--r--drivers/clk/pxa/clk-pxa25x.c1
-rw-r--r--drivers/clk/versatile/Kconfig5
-rw-r--r--drivers/clk/versatile/clk-icst.c194
-rw-r--r--drivers/clk/versatile/clk-realview.c10
-rw-r--r--drivers/gpio/Kconfig7
-rw-r--r--drivers/gpio/Makefile1
-rw-r--r--drivers/iio/adc/exynos_adc.c224
-rw-r--r--drivers/input/touchscreen/Kconfig2
-rw-r--r--drivers/irqchip/irq-versatile-fpga.c5
-rw-r--r--drivers/soc/Makefile1
-rw-r--r--drivers/soc/dove/pmu.c43
-rw-r--r--drivers/soc/versatile/soc-realview.c4
-rw-r--r--include/linux/clk/mmp.h17
-rw-r--r--include/linux/platform_data/touchscreen-s3c2410.h1
-rw-r--r--include/linux/soc/dove/pmu.h19
-rw-r--r--sound/soc/samsung/smartq_wm8987.c76
415 files changed, 2369 insertions, 4001 deletions
diff --git a/Documentation/arm/pxa/mfp.txt b/Documentation/arm/pxa/mfp.txt
index a179e5bc02c9..0b7cab978c02 100644
--- a/Documentation/arm/pxa/mfp.txt
+++ b/Documentation/arm/pxa/mfp.txt
@@ -49,7 +49,7 @@ to this new MFP mechanism, here are several key points:
49 internal controllers like PWM, SSP and UART, with 128 internal signals 49 internal controllers like PWM, SSP and UART, with 128 internal signals
50 which can be routed to external through one or more MFPs (e.g. GPIO<0> 50 which can be routed to external through one or more MFPs (e.g. GPIO<0>
51 can be routed through either MFP_PIN_GPIO0 as well as MFP_PIN_GPIO0_2, 51 can be routed through either MFP_PIN_GPIO0 as well as MFP_PIN_GPIO0_2,
52 see arch/arm/mach-pxa/mach/include/mfp-pxa300.h) 52 see arch/arm/mach-pxa/mfp-pxa300.h)
53 53
54 2. Alternate function configuration is removed from this GPIO controller, 54 2. Alternate function configuration is removed from this GPIO controller,
55 the remaining functions are pure GPIO-specific, i.e. 55 the remaining functions are pure GPIO-specific, i.e.
@@ -76,11 +76,11 @@ For board code writers, here are some guidelines:
76 76
771. include ONE of the following header files in your <board>.c: 771. include ONE of the following header files in your <board>.c:
78 78
79 - #include <mach/mfp-pxa25x.h> 79 - #include "mfp-pxa25x.h"
80 - #include <mach/mfp-pxa27x.h> 80 - #include "mfp-pxa27x.h"
81 - #include <mach/mfp-pxa300.h> 81 - #include "mfp-pxa300.h"
82 - #include <mach/mfp-pxa320.h> 82 - #include "mfp-pxa320.h"
83 - #include <mach/mfp-pxa930.h> 83 - #include "mfp-pxa930.h"
84 84
85 NOTE: only one file in your <board>.c, depending on the processors used, 85 NOTE: only one file in your <board>.c, depending on the processors used,
86 because pin configuration definitions may conflict in these file (i.e. 86 because pin configuration definitions may conflict in these file (i.e.
@@ -203,20 +203,20 @@ make them effective there-after.
203 1. Unified pin definitions - enum constants for all configurable pins 203 1. Unified pin definitions - enum constants for all configurable pins
204 2. processor-neutral bit definitions for a possible MFP configuration 204 2. processor-neutral bit definitions for a possible MFP configuration
205 205
206 - arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h 206 - arch/arm/mach-pxa/mfp-pxa3xx.h
207 207
208 for PXA3xx specific MFPR register bit definitions and PXA3xx common pin 208 for PXA3xx specific MFPR register bit definitions and PXA3xx common pin
209 configurations 209 configurations
210 210
211 - arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h 211 - arch/arm/mach-pxa/mfp-pxa2xx.h
212 212
213 for PXA2xx specific definitions and PXA25x/PXA27x common pin configurations 213 for PXA2xx specific definitions and PXA25x/PXA27x common pin configurations
214 214
215 - arch/arm/mach-pxa/include/mach/mfp-pxa25x.h 215 - arch/arm/mach-pxa/mfp-pxa25x.h
216 arch/arm/mach-pxa/include/mach/mfp-pxa27x.h 216 arch/arm/mach-pxa/mfp-pxa27x.h
217 arch/arm/mach-pxa/include/mach/mfp-pxa300.h 217 arch/arm/mach-pxa/mfp-pxa300.h
218 arch/arm/mach-pxa/include/mach/mfp-pxa320.h 218 arch/arm/mach-pxa/mfp-pxa320.h
219 arch/arm/mach-pxa/include/mach/mfp-pxa930.h 219 arch/arm/mach-pxa/mfp-pxa930.h
220 220
221 for processor specific definitions 221 for processor specific definitions
222 222
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
index c352c11bd641..e2cbc895f12a 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -191,6 +191,7 @@ nodes to be present and contain the properties described below.
191 "allwinner,sun6i-a31" 191 "allwinner,sun6i-a31"
192 "allwinner,sun8i-a23" 192 "allwinner,sun8i-a23"
193 "arm,psci" 193 "arm,psci"
194 "arm,realview-smp"
194 "brcm,brahma-b15" 195 "brcm,brahma-b15"
195 "marvell,armada-375-smp" 196 "marvell,armada-375-smp"
196 "marvell,armada-380-smp" 197 "marvell,armada-380-smp"
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
index f46ca9a316a2..ccaaec6014bd 100644
--- a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
@@ -47,6 +47,9 @@ Required properties:
47 47
48- samsung,syscon-phandle Contains the PMU system controller node 48- samsung,syscon-phandle Contains the PMU system controller node
49 (To access the ADC_PHY register on Exynos5250/5420/5800/3250) 49 (To access the ADC_PHY register on Exynos5250/5420/5800/3250)
50Optional properties:
51- has-touchscreen: If present, indicates that a touchscreen is
52 connected an usable.
50 53
51Note: child nodes can be added for auto probing from device tree. 54Note: child nodes can be added for auto probing from device tree.
52 55
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0ada645209af..915c10a891ce 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -240,7 +240,6 @@ config ARM_PATCH_PHYS_VIRT
240 bool "Patch physical to virtual translations at runtime" if EMBEDDED 240 bool "Patch physical to virtual translations at runtime" if EMBEDDED
241 default y 241 default y
242 depends on !XIP_KERNEL && MMU 242 depends on !XIP_KERNEL && MMU
243 depends on !ARCH_REALVIEW || !SPARSEMEM
244 help 243 help
245 Patch phys-to-virt and virt-to-phys translation functions at 244 Patch phys-to-virt and virt-to-phys translation functions at
246 boot and module load time according to the position of the 245 boot and module load time according to the position of the
@@ -321,7 +320,7 @@ config ARCH_MMAP_RND_BITS_MAX
321# 320#
322choice 321choice
323 prompt "ARM system type" 322 prompt "ARM system type"
324 default ARCH_VERSATILE if !MMU 323 default ARM_SINGLE_ARMV7M if !MMU
325 default ARCH_MULTIPLATFORM if MMU 324 default ARCH_MULTIPLATFORM if MMU
326 325
327config ARCH_MULTIPLATFORM 326config ARCH_MULTIPLATFORM
@@ -353,38 +352,6 @@ config ARM_SINGLE_ARMV7M
353 select SPARSE_IRQ 352 select SPARSE_IRQ
354 select USE_OF 353 select USE_OF
355 354
356config ARCH_REALVIEW
357 bool "ARM Ltd. RealView family"
358 select ARCH_WANT_OPTIONAL_GPIOLIB
359 select ARM_AMBA
360 select ARM_TIMER_SP804
361 select COMMON_CLK
362 select COMMON_CLK_VERSATILE
363 select GENERIC_CLOCKEVENTS
364 select GPIO_PL061 if GPIOLIB
365 select ICST
366 select NEED_MACH_MEMORY_H
367 select PLAT_VERSATILE
368 select PLAT_VERSATILE_SCHED_CLOCK
369 help
370 This enables support for ARM Ltd RealView boards.
371
372config ARCH_VERSATILE
373 bool "ARM Ltd. Versatile family"
374 select ARCH_WANT_OPTIONAL_GPIOLIB
375 select ARM_AMBA
376 select ARM_TIMER_SP804
377 select ARM_VIC
378 select CLKDEV_LOOKUP
379 select GENERIC_CLOCKEVENTS
380 select HAVE_MACH_CLKDEV
381 select ICST
382 select PLAT_VERSATILE
383 select PLAT_VERSATILE_CLOCK
384 select PLAT_VERSATILE_SCHED_CLOCK
385 select VERSATILE_FPGA_IRQ
386 help
387 This enables support for ARM Ltd Versatile board.
388 355
389config ARCH_CLPS711X 356config ARCH_CLPS711X
390 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" 357 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
@@ -519,55 +486,15 @@ config ARCH_DOVE
519 select CPU_PJ4 486 select CPU_PJ4
520 select GENERIC_CLOCKEVENTS 487 select GENERIC_CLOCKEVENTS
521 select MIGHT_HAVE_PCI 488 select MIGHT_HAVE_PCI
489 select MULTI_IRQ_HANDLER
522 select MVEBU_MBUS 490 select MVEBU_MBUS
523 select PINCTRL 491 select PINCTRL
524 select PINCTRL_DOVE 492 select PINCTRL_DOVE
525 select PLAT_ORION_LEGACY 493 select PLAT_ORION_LEGACY
526 help
527 Support for the Marvell Dove SoC 88AP510
528
529config ARCH_MV78XX0
530 bool "Marvell MV78xx0"
531 select ARCH_REQUIRE_GPIOLIB
532 select CPU_FEROCEON
533 select GENERIC_CLOCKEVENTS
534 select MVEBU_MBUS
535 select PCI
536 select PLAT_ORION_LEGACY
537 help
538 Support for the following Marvell MV78xx0 series SoCs:
539 MV781x0, MV782x0.
540
541config ARCH_ORION5X
542 bool "Marvell Orion"
543 depends on MMU
544 select ARCH_REQUIRE_GPIOLIB
545 select CPU_FEROCEON
546 select GENERIC_CLOCKEVENTS
547 select MVEBU_MBUS
548 select PCI
549 select PLAT_ORION_LEGACY
550 select MULTI_IRQ_HANDLER
551 help
552 Support for the following Marvell Orion 5x series SoCs:
553 Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
554 Orion-2 (5281), Orion-1-90 (6183).
555
556config ARCH_MMP
557 bool "Marvell PXA168/910/MMP2"
558 depends on MMU
559 select ARCH_REQUIRE_GPIOLIB
560 select CLKDEV_LOOKUP
561 select GENERIC_ALLOCATOR
562 select GENERIC_CLOCKEVENTS
563 select GPIO_PXA
564 select IRQ_DOMAIN
565 select MULTI_IRQ_HANDLER
566 select PINCTRL
567 select PLAT_PXA
568 select SPARSE_IRQ 494 select SPARSE_IRQ
495 select PM_GENERIC_DOMAINS if PM
569 help 496 help
570 Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line. 497 Support for the Marvell Dove SoC 88AP510
571 498
572config ARCH_KS8695 499config ARCH_KS8695
573 bool "Micrel/Kendin KS8695" 500 bool "Micrel/Kendin KS8695"
@@ -692,32 +619,6 @@ config ARCH_S3C24XX
692 (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the 619 (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
693 Samsung SMDK2410 development board (and derivatives). 620 Samsung SMDK2410 development board (and derivatives).
694 621
695config ARCH_S3C64XX
696 bool "Samsung S3C64XX"
697 select ARCH_REQUIRE_GPIOLIB
698 select ARM_AMBA
699 select ARM_VIC
700 select ATAGS
701 select CLKDEV_LOOKUP
702 select CLKSRC_SAMSUNG_PWM
703 select COMMON_CLK_SAMSUNG
704 select CPU_V6K
705 select GENERIC_CLOCKEVENTS
706 select GPIO_SAMSUNG
707 select HAVE_S3C2410_I2C if I2C
708 select HAVE_S3C2410_WATCHDOG if WATCHDOG
709 select HAVE_TCM
710 select NO_IOPORT_MAP
711 select PLAT_SAMSUNG
712 select PM_GENERIC_DOMAINS if PM
713 select S3C_DEV_NAND
714 select S3C_GPIO_TRACK
715 select SAMSUNG_ATAGS
716 select SAMSUNG_WAKEMASK
717 select SAMSUNG_WDT_RESET
718 help
719 Samsung S3C64XX series based systems
720
721config ARCH_DAVINCI 622config ARCH_DAVINCI
722 bool "TI DaVinci" 623 bool "TI DaVinci"
723 select ARCH_HAS_HOLES_MEMORYMODEL 624 select ARCH_HAS_HOLES_MEMORYMODEL
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index e356357d86bb..9bb33ab0608d 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -218,23 +218,6 @@ choice
218 Say Y here if you want the debug print routines to direct 218 Say Y here if you want the debug print routines to direct
219 their output to UART0 serial port on DaVinci DMx devices. 219 their output to UART0 serial port on DaVinci DMx devices.
220 220
221 config DEBUG_ZYNQ_UART0
222 bool "Kernel low-level debugging on Xilinx Zynq using UART0"
223 depends on ARCH_ZYNQ
224 help
225 Say Y here if you want the debug print routines to direct
226 their output to UART0 on the Zynq platform.
227
228 config DEBUG_ZYNQ_UART1
229 bool "Kernel low-level debugging on Xilinx Zynq using UART1"
230 depends on ARCH_ZYNQ
231 help
232 Say Y here if you want the debug print routines to direct
233 their output to UART1 on the Zynq platform.
234
235 If you have a ZC702 board and want early boot messages to
236 appear on the USB serial adaptor, select this option.
237
238 config DEBUG_DC21285_PORT 221 config DEBUG_DC21285_PORT
239 bool "Kernel low-level debugging messages via footbridge serial port" 222 bool "Kernel low-level debugging messages via footbridge serial port"
240 depends on FOOTBRIDGE 223 depends on FOOTBRIDGE
@@ -249,13 +232,30 @@ choice
249 Say Y here if you want the debug print routines to direct 232 Say Y here if you want the debug print routines to direct
250 their output to the UA0 serial port in the CX92755. 233 their output to the UA0 serial port in the CX92755.
251 234
235 config DEBUG_EP93XX
236 bool "Kernel low-level debugging messages via ep93xx UART"
237 depends on ARCH_EP93XX
238 select DEBUG_UART_PL01X
239 help
240 Say Y here if you want kernel low-level debugging support
241 on Cirrus Logic EP93xx based platforms.
242
252 config DEBUG_FOOTBRIDGE_COM1 243 config DEBUG_FOOTBRIDGE_COM1
253 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" 244 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1"
254 depends on FOOTBRIDGE 245 depends on FOOTBRIDGE
246 select DEBUG_UART_8250
255 help 247 help
256 Say Y here if you want the debug print routines to direct 248 Say Y here if you want the debug print routines to direct
257 their output to the 8250 at PCI COM1. 249 their output to the 8250 at PCI COM1.
258 250
251 config DEBUG_GEMINI
252 bool "Kernel low-level debugging messages via Cortina Systems Gemini UART"
253 depends on ARCH_GEMINI
254 select DEBUG_UART_8250
255 help
256 Say Y here if you want kernel low-level debugging support
257 on Cortina Gemini based platforms.
258
259 config DEBUG_HI3620_UART 259 config DEBUG_HI3620_UART
260 bool "Hisilicon HI3620 Debug UART" 260 bool "Hisilicon HI3620 Debug UART"
261 depends on ARCH_HI3xxx 261 depends on ARCH_HI3xxx
@@ -411,6 +411,14 @@ choice
411 Say Y here if you want kernel low-level debugging support 411 Say Y here if you want kernel low-level debugging support
412 on i.MX7D. 412 on i.MX7D.
413 413
414 config DEBUG_INTEGRATOR
415 bool "Kernel low-level debugging messages via ARM Integrator UART"
416 depends on ARCH_INTEGRATOR
417 select DEBUG_UART_PL01X
418 help
419 Say Y here if you want kernel low-level debugging support
420 on ARM Integrator platforms.
421
414 config DEBUG_KEYSTONE_UART0 422 config DEBUG_KEYSTONE_UART0
415 bool "Kernel low-level debugging on KEYSTONE2 using UART0" 423 bool "Kernel low-level debugging on KEYSTONE2 using UART0"
416 depends on ARCH_KEYSTONE 424 depends on ARCH_KEYSTONE
@@ -442,6 +450,14 @@ choice
442 Say Y here if you want kernel low-level debugging support 450 Say Y here if you want kernel low-level debugging support
443 on NXP LPC18xx/43xx UART0. 451 on NXP LPC18xx/43xx UART0.
444 452
453 config DEBUG_LPC32XX
454 bool "Kernel low-level debugging messages via NXP LPC32xx UART"
455 depends on ARCH_LPC32XX
456 select DEBUG_UART_8250
457 help
458 Say Y here if you want kernel low-level debugging support
459 on NXP LPC32xx based platforms.
460
445 config DEBUG_MESON_UARTAO 461 config DEBUG_MESON_UARTAO
446 bool "Kernel low-level debugging via Meson6 UARTAO" 462 bool "Kernel low-level debugging via Meson6 UARTAO"
447 depends on ARCH_MESON 463 depends on ARCH_MESON
@@ -465,26 +481,10 @@ choice
465 Say Y here if you want kernel low-level debugging support 481 Say Y here if you want kernel low-level debugging support
466 on MMP UART3. 482 on MMP UART3.
467 483
468 config DEBUG_QCOM_UARTDM
469 bool "Kernel low-level debugging messages via QCOM UARTDM"
470 depends on ARCH_QCOM
471 help
472 Say Y here if you want the debug print routines to direct
473 their output to the serial port on Qualcomm devices.
474
475 ARCH DEBUG_UART_PHYS DEBUG_UART_VIRT
476 APQ8064 0x16640000 0xf0040000
477 APQ8084 0xf995e000 0xfa75e000
478 MSM8X60 0x19c40000 0xf0040000
479 MSM8960 0x16440000 0xf0040000
480 MSM8974 0xf991e000 0xfa71e000
481
482 Please adjust DEBUG_UART_PHYS and DEBUG_UART_BASE configuration
483 options based on your needs.
484
485 config DEBUG_MVEBU_UART0 484 config DEBUG_MVEBU_UART0
486 bool "Kernel low-level debugging messages via MVEBU UART0 (old bootloaders)" 485 bool "Kernel low-level debugging messages via MVEBU UART0 (old bootloaders)"
487 depends on ARCH_MVEBU 486 depends on ARCH_MVEBU
487 depends on ARCH_MVEBU && CPU_V7
488 select DEBUG_UART_8250 488 select DEBUG_UART_8250
489 help 489 help
490 Say Y here if you want kernel low-level debugging support 490 Say Y here if you want kernel low-level debugging support
@@ -497,17 +497,23 @@ choice
497 Plathome OpenBlocks AX3, when using the original 497 Plathome OpenBlocks AX3, when using the original
498 bootloader. 498 bootloader.
499 499
500 This option will not work on older Marvell platforms
501 (Kirkwood, Dove, MV78xx0, Orion5x), which should pick
502 the "new bootloader" variant.
503
500 If the wrong DEBUG_MVEBU_UART* option is selected, 504 If the wrong DEBUG_MVEBU_UART* option is selected,
501 when u-boot hands over to the kernel, the system 505 when u-boot hands over to the kernel, the system
502 silently crashes, with no serial output at all. 506 silently crashes, with no serial output at all.
503 507
504 config DEBUG_MVEBU_UART0_ALTERNATE 508 config DEBUG_MVEBU_UART0_ALTERNATE
505 bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)" 509 bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)"
506 depends on ARCH_MVEBU 510 depends on ARCH_MVEBU || ARCH_DOVE || ARCH_MV78XX0 || ARCH_ORION5X
507 select DEBUG_UART_8250 511 select DEBUG_UART_8250
508 help 512 help
509 Say Y here if you want kernel low-level debugging support 513 Say Y here if you want kernel low-level debugging support
510 on MVEBU based platforms on UART0. 514 on MVEBU based platforms on UART0. (Armada XP, Armada 3xx,
515 Kirkwood, Dove, MV78xx0, Orion5x).
516
511 517
512 This option should be used with the new bootloaders 518 This option should be used with the new bootloaders
513 that remap the internal registers at 0xf1000000. 519 that remap the internal registers at 0xf1000000.
@@ -522,21 +528,41 @@ choice
522 select DEBUG_UART_8250 528 select DEBUG_UART_8250
523 help 529 help
524 Say Y here if you want kernel low-level debugging support 530 Say Y here if you want kernel low-level debugging support
525 on MVEBU based platforms on UART1. 531 on MVEBU based platforms on UART1. (Armada XP, Armada 3xx,
532 Kirkwood, Dove, MV78xx0, Orion5x).
526 533
527 This option should be used with the new bootloaders 534 This option should be used with the new bootloaders
528 that remap the internal registers at 0xf1000000. 535 that remap the internal registers at 0xf1000000.
536 All of the older (pre Armada XP/370) platforms also use
537 this address, regardless of the boot loader version.
529 538
530 If the wrong DEBUG_MVEBU_UART* option is selected, 539 If the wrong DEBUG_MVEBU_UART* option is selected,
531 when u-boot hands over to the kernel, the system 540 when u-boot hands over to the kernel, the system
532 silently crashes, with no serial output at all. 541 silently crashes, with no serial output at all.
533 542
534 config DEBUG_VF_UART 543 config DEBUG_MT6589_UART0
535 bool "Vybrid UART" 544 bool "Mediatek mt6589 UART0"
536 depends on SOC_VF610 545 depends on ARCH_MEDIATEK
546 select DEBUG_UART_8250
537 help 547 help
538 Say Y here if you want kernel low-level debugging support 548 Say Y here if you want kernel low-level debugging support
539 on Vybrid based platforms. 549 for Mediatek mt6589 based platforms on UART0.
550
551 config DEBUG_MT8127_UART0
552 bool "Mediatek mt8127/mt6592 UART0"
553 depends on ARCH_MEDIATEK
554 select DEBUG_UART_8250
555 help
556 Say Y here if you want kernel low-level debugging support
557 for Mediatek mt8127 based platforms on UART0.
558
559 config DEBUG_MT8135_UART3
560 bool "Mediatek mt8135 UART3"
561 depends on ARCH_MEDIATEK
562 select DEBUG_UART_8250
563 help
564 Say Y here if you want kernel low-level debugging support
565 for Mediatek mt8135 based platforms on UART3.
540 566
541 config DEBUG_NETX_UART 567 config DEBUG_NETX_UART
542 bool "Kernel low-level debugging messages via NetX UART" 568 bool "Kernel low-level debugging messages via NetX UART"
@@ -700,6 +726,23 @@ choice
700 Say Y here if you want kernel low-level debugging support 726 Say Y here if you want kernel low-level debugging support
701 on PXA UART1. 727 on PXA UART1.
702 728
729 config DEBUG_QCOM_UARTDM
730 bool "Kernel low-level debugging messages via QCOM UARTDM"
731 depends on ARCH_QCOM
732 help
733 Say Y here if you want the debug print routines to direct
734 their output to the serial port on Qualcomm devices.
735
736 ARCH DEBUG_UART_PHYS DEBUG_UART_VIRT
737 APQ8064 0x16640000 0xf0040000
738 APQ8084 0xf995e000 0xfa75e000
739 MSM8X60 0x19c40000 0xf0040000
740 MSM8960 0x16440000 0xf0040000
741 MSM8974 0xf991e000 0xfa71e000
742
743 Please adjust DEBUG_UART_PHYS and DEBUG_UART_BASE configuration
744 options based on your needs.
745
703 config DEBUG_REALVIEW_STD_PORT 746 config DEBUG_REALVIEW_STD_PORT
704 bool "RealView Default UART" 747 bool "RealView Default UART"
705 depends on ARCH_REALVIEW 748 depends on ARCH_REALVIEW
@@ -843,6 +886,7 @@ choice
843 depends on PLAT_SAMSUNG 886 depends on PLAT_SAMSUNG
844 select DEBUG_EXYNOS_UART if ARCH_EXYNOS 887 select DEBUG_EXYNOS_UART if ARCH_EXYNOS
845 select DEBUG_S3C24XX_UART if ARCH_S3C24XX 888 select DEBUG_S3C24XX_UART if ARCH_S3C24XX
889 select DEBUG_S3C64XX_UART if ARCH_S3C64XX
846 select DEBUG_S5PV210_UART if ARCH_S5PV210 890 select DEBUG_S5PV210_UART if ARCH_S5PV210
847 bool "Use Samsung S3C UART 0 for low-level debug" 891 bool "Use Samsung S3C UART 0 for low-level debug"
848 help 892 help
@@ -854,6 +898,7 @@ choice
854 depends on PLAT_SAMSUNG 898 depends on PLAT_SAMSUNG
855 select DEBUG_EXYNOS_UART if ARCH_EXYNOS 899 select DEBUG_EXYNOS_UART if ARCH_EXYNOS
856 select DEBUG_S3C24XX_UART if ARCH_S3C24XX 900 select DEBUG_S3C24XX_UART if ARCH_S3C24XX
901 select DEBUG_S3C64XX_UART if ARCH_S3C64XX
857 select DEBUG_S5PV210_UART if ARCH_S5PV210 902 select DEBUG_S5PV210_UART if ARCH_S5PV210
858 bool "Use Samsung S3C UART 1 for low-level debug" 903 bool "Use Samsung S3C UART 1 for low-level debug"
859 help 904 help
@@ -865,6 +910,7 @@ choice
865 depends on PLAT_SAMSUNG 910 depends on PLAT_SAMSUNG
866 select DEBUG_EXYNOS_UART if ARCH_EXYNOS 911 select DEBUG_EXYNOS_UART if ARCH_EXYNOS
867 select DEBUG_S3C24XX_UART if ARCH_S3C24XX 912 select DEBUG_S3C24XX_UART if ARCH_S3C24XX
913 select DEBUG_S3C64XX_UART if ARCH_S3C64XX
868 select DEBUG_S5PV210_UART if ARCH_S5PV210 914 select DEBUG_S5PV210_UART if ARCH_S5PV210
869 bool "Use Samsung S3C UART 2 for low-level debug" 915 bool "Use Samsung S3C UART 2 for low-level debug"
870 help 916 help
@@ -875,6 +921,7 @@ choice
875 config DEBUG_S3C_UART3 921 config DEBUG_S3C_UART3
876 depends on PLAT_SAMSUNG && (ARCH_EXYNOS || ARCH_S5PV210) 922 depends on PLAT_SAMSUNG && (ARCH_EXYNOS || ARCH_S5PV210)
877 select DEBUG_EXYNOS_UART if ARCH_EXYNOS 923 select DEBUG_EXYNOS_UART if ARCH_EXYNOS
924 select DEBUG_S3C64XX_UART if ARCH_S3C64XX
878 select DEBUG_S5PV210_UART if ARCH_S5PV210 925 select DEBUG_S5PV210_UART if ARCH_S5PV210
879 bool "Use Samsung S3C UART 3 for low-level debug" 926 bool "Use Samsung S3C UART 3 for low-level debug"
880 help 927 help
@@ -966,6 +1013,70 @@ choice
966 Say Y here if you want kernel low-level debugging support 1013 Say Y here if you want kernel low-level debugging support
967 on Allwinner A31/A23 based platforms on the R_UART. 1014 on Allwinner A31/A23 based platforms on the R_UART.
968 1015
1016 config DEBUG_SIRFPRIMA2_UART1
1017 bool "Kernel low-level debugging messages via SiRFprimaII UART1"
1018 depends on ARCH_PRIMA2
1019 select DEBUG_SIRFSOC_UART
1020 help
1021 Say Y here if you want the debug print routines to direct
1022 their output to the uart1 port on SiRFprimaII devices.
1023
1024 config DEBUG_SIRFATLAS7_UART0
1025 bool "Kernel low-level debugging messages via SiRFatlas7 UART0"
1026 depends on ARCH_ATLAS7
1027 select DEBUG_SIRFSOC_UART
1028 help
1029 Say Y here if you want the debug print routines to direct
1030 their output to the uart0 port on SiRFATLAS7 devices.The uart0
1031 is used on SiRFATLAS7 as a extra debug port.sometimes an extra
1032 debug port can be very useful.
1033
1034 config DEBUG_SIRFATLAS7_UART1
1035 bool "Kernel low-level debugging messages via SiRFatlas7 UART1"
1036 depends on ARCH_ATLAS7
1037 select DEBUG_SIRFSOC_UART
1038 help
1039 Say Y here if you want the debug print routines to direct
1040 their output to the uart1 port on SiRFATLAS7 devices.
1041
1042 config DEBUG_SPEAR3XX
1043 bool "Kernel low-level debugging messages via ST SPEAr 3xx/6xx UART"
1044 depends on ARCH_SPEAR3XX || ARCH_SPEAR6XX
1045 select DEBUG_UART_PL01X
1046 help
1047 Say Y here if you want kernel low-level debugging support
1048 on ST SPEAr based platforms.
1049
1050 config DEBUG_SPEAR13XX
1051 bool "Kernel low-level debugging messages via ST SPEAr 13xx UART"
1052 depends on ARCH_SPEAR13XX
1053 select DEBUG_UART_PL01X
1054 help
1055 Say Y here if you want kernel low-level debugging support
1056 on ST SPEAr13xx based platforms.
1057
1058 config STIH41X_DEBUG_ASC2
1059 bool "Use StiH415/416 ASC2 UART for low-level debug"
1060 depends on ARCH_STI
1061 select DEBUG_STI_UART
1062 help
1063 Say Y here if you want kernel low-level debugging support
1064 on STiH415/416 based platforms like b2000, which has
1065 default UART wired up to ASC2.
1066
1067 If unsure, say N.
1068
1069 config STIH41X_DEBUG_SBC_ASC1
1070 bool "Use StiH415/416 SBC ASC1 UART for low-level debug"
1071 depends on ARCH_STI
1072 select DEBUG_STI_UART
1073 help
1074 Say Y here if you want kernel low-level debugging support
1075 on STiH415/416 based platforms like b2020. which has
1076 default UART wired up to SBC ASC1.
1077
1078 If unsure, say N.
1079
969 config TEGRA_DEBUG_UART_AUTO_ODMDATA 1080 config TEGRA_DEBUG_UART_AUTO_ODMDATA
970 bool "Kernel low-level debugging messages via Tegra UART via ODMDATA" 1081 bool "Kernel low-level debugging messages via Tegra UART via ODMDATA"
971 depends on ARCH_TEGRA 1082 depends on ARCH_TEGRA
@@ -1018,54 +1129,6 @@ choice
1018 Say Y here if you want kernel low-level debugging support 1129 Say Y here if you want kernel low-level debugging support
1019 on Tegra based platforms. 1130 on Tegra based platforms.
1020 1131
1021 config DEBUG_SIRFPRIMA2_UART1
1022 bool "Kernel low-level debugging messages via SiRFprimaII UART1"
1023 depends on ARCH_PRIMA2
1024 select DEBUG_SIRFSOC_UART
1025 help
1026 Say Y here if you want the debug print routines to direct
1027 their output to the uart1 port on SiRFprimaII devices.
1028
1029 config DEBUG_SIRFATLAS7_UART0
1030 bool "Kernel low-level debugging messages via SiRFatlas7 UART0"
1031 depends on ARCH_ATLAS7
1032 select DEBUG_SIRFSOC_UART
1033 help
1034 Say Y here if you want the debug print routines to direct
1035 their output to the uart0 port on SiRFATLAS7 devices.The uart0
1036 is used on SiRFATLAS7 as a extra debug port.sometimes an extra
1037 debug port can be very useful.
1038
1039 config DEBUG_SIRFATLAS7_UART1
1040 bool "Kernel low-level debugging messages via SiRFatlas7 UART1"
1041 depends on ARCH_ATLAS7
1042 select DEBUG_SIRFSOC_UART
1043 help
1044 Say Y here if you want the debug print routines to direct
1045 their output to the uart1 port on SiRFATLAS7 devices.
1046
1047 config STIH41X_DEBUG_ASC2
1048 bool "Use StiH415/416 ASC2 UART for low-level debug"
1049 depends on ARCH_STI
1050 select DEBUG_STI_UART
1051 help
1052 Say Y here if you want kernel low-level debugging support
1053 on STiH415/416 based platforms like b2000, which has
1054 default UART wired up to ASC2.
1055
1056 If unsure, say N.
1057
1058 config STIH41X_DEBUG_SBC_ASC1
1059 bool "Use StiH415/416 SBC ASC1 UART for low-level debug"
1060 depends on ARCH_STI
1061 select DEBUG_STI_UART
1062 help
1063 Say Y here if you want kernel low-level debugging support
1064 on STiH415/416 based platforms like b2020. which has
1065 default UART wired up to SBC ASC1.
1066
1067 If unsure, say N.
1068
1069 config DEBUG_U300_UART 1132 config DEBUG_U300_UART
1070 bool "Kernel low-level debugging messages via U300 UART0" 1133 bool "Kernel low-level debugging messages via U300 UART0"
1071 depends on ARCH_U300 1134 depends on ARCH_U300
@@ -1081,29 +1144,13 @@ choice
1081 Say Y here if you want kernel low-level debugging support 1144 Say Y here if you want kernel low-level debugging support
1082 on Ux500 based platforms. 1145 on Ux500 based platforms.
1083 1146
1084 config DEBUG_MT6589_UART0 1147 config DEBUG_VERSATILE
1085 bool "Mediatek mt6589 UART0" 1148 bool "Kernel low-level debugging messages via ARM Versatile UART"
1086 depends on ARCH_MEDIATEK 1149 depends on ARCH_VERSATILE
1087 select DEBUG_UART_8250 1150 select DEBUG_UART_PL01X
1088 help
1089 Say Y here if you want kernel low-level debugging support
1090 for Mediatek mt6589 based platforms on UART0.
1091
1092 config DEBUG_MT8127_UART0
1093 bool "Mediatek mt8127/mt6592 UART0"
1094 depends on ARCH_MEDIATEK
1095 select DEBUG_UART_8250
1096 help
1097 Say Y here if you want kernel low-level debugging support
1098 for Mediatek mt8127 based platforms on UART0.
1099
1100 config DEBUG_MT8135_UART3
1101 bool "Mediatek mt8135 UART3"
1102 depends on ARCH_MEDIATEK
1103 select DEBUG_UART_8250
1104 help 1151 help
1105 Say Y here if you want kernel low-level debugging support 1152 Say Y here if you want kernel low-level debugging support
1106 for Mediatek mt8135 based platforms on UART3. 1153 on ARM Versatile platforms.
1107 1154
1108 config DEBUG_VEXPRESS_UART0_DETECT 1155 config DEBUG_VEXPRESS_UART0_DETECT
1109 bool "Autodetect UART0 on Versatile Express Cortex-A core tiles" 1156 bool "Autodetect UART0 on Versatile Express Cortex-A core tiles"
@@ -1141,6 +1188,13 @@ choice
1141 This option selects UART0 at 0xb0090000. This is appropriate for 1188 This option selects UART0 at 0xb0090000. This is appropriate for
1142 Cortex-R series tiles and SMMs, such as Cortex-R5 and Cortex-R7 1189 Cortex-R series tiles and SMMs, such as Cortex-R5 and Cortex-R7
1143 1190
1191 config DEBUG_VF_UART
1192 bool "Vybrid UART"
1193 depends on SOC_VF610
1194 help
1195 Say Y here if you want kernel low-level debugging support
1196 on Vybrid based platforms.
1197
1144 config DEBUG_VT8500_UART0 1198 config DEBUG_VT8500_UART0
1145 bool "Use UART0 on VIA/Wondermedia SoCs" 1199 bool "Use UART0 on VIA/Wondermedia SoCs"
1146 depends on ARCH_VT8500 1200 depends on ARCH_VT8500
@@ -1148,6 +1202,35 @@ choice
1148 This option selects UART0 on VIA/Wondermedia System-on-a-chip 1202 This option selects UART0 on VIA/Wondermedia System-on-a-chip
1149 devices, including VT8500, WM8505, WM8650 and WM8850. 1203 devices, including VT8500, WM8505, WM8650 and WM8850.
1150 1204
1205 config DEBUG_ZTE_ZX
1206 bool "Use ZTE ZX UART"
1207 select DEBUG_UART_PL01X
1208 depends on ARCH_ZX
1209 help
1210 Say Y here if you are enabling ZTE ZX296702 SOC and need
1211 debug uart support.
1212
1213 This option is preferred over the platform specific
1214 options; the platform specific options are deprecated
1215 and will be soon removed.
1216
1217 config DEBUG_ZYNQ_UART0
1218 bool "Kernel low-level debugging on Xilinx Zynq using UART0"
1219 depends on ARCH_ZYNQ
1220 help
1221 Say Y here if you want the debug print routines to direct
1222 their output to UART0 on the Zynq platform.
1223
1224 config DEBUG_ZYNQ_UART1
1225 bool "Kernel low-level debugging on Xilinx Zynq using UART1"
1226 depends on ARCH_ZYNQ
1227 help
1228 Say Y here if you want the debug print routines to direct
1229 their output to UART1 on the Zynq platform.
1230
1231 If you have a ZC702 board and want early boot messages to
1232 appear on the USB serial adaptor, select this option.
1233
1151 config DEBUG_ICEDCC 1234 config DEBUG_ICEDCC
1152 bool "Kernel low-level debugging via EmbeddedICE DCC channel" 1235 bool "Kernel low-level debugging via EmbeddedICE DCC channel"
1153 help 1236 help
@@ -1175,18 +1258,6 @@ choice
1175 For more details about semihosting, please see 1258 For more details about semihosting, please see
1176 chapter 8 of DUI0203I_rvct_developer_guide.pdf from ARM Ltd. 1259 chapter 8 of DUI0203I_rvct_developer_guide.pdf from ARM Ltd.
1177 1260
1178 config DEBUG_ZTE_ZX
1179 bool "Use ZTE ZX UART"
1180 select DEBUG_UART_PL01X
1181 depends on ARCH_ZX
1182 help
1183 Say Y here if you are enabling ZTE ZX296702 SOC and need
1184 debug uart support.
1185
1186 This option is preferred over the platform specific
1187 options; the platform specific options are deprecated
1188 and will be soon removed.
1189
1190 config DEBUG_LL_UART_8250 1261 config DEBUG_LL_UART_8250
1191 bool "Kernel low-level debugging via 8250 UART" 1262 bool "Kernel low-level debugging via 8250 UART"
1192 help 1263 help
@@ -1239,6 +1310,9 @@ config DEBUG_S3C2410_UART
1239config DEBUG_S3C24XX_UART 1310config DEBUG_S3C24XX_UART
1240 bool 1311 bool
1241 1312
1313config DEBUG_S3C64XX_UART
1314 bool
1315
1242config DEBUG_S5PV210_UART 1316config DEBUG_S5PV210_UART
1243 bool 1317 bool
1244 1318
@@ -1294,6 +1368,7 @@ config DEBUG_LL_INCLUDE
1294 default "debug/at91.S" if DEBUG_AT91_UART 1368 default "debug/at91.S" if DEBUG_AT91_UART
1295 default "debug/asm9260.S" if DEBUG_ASM9260_UART 1369 default "debug/asm9260.S" if DEBUG_ASM9260_UART
1296 default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 1370 default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
1371 default "debug/dc21285.S" if DEBUG_DC21285_PORT
1297 default "debug/meson.S" if DEBUG_MESON_UARTAO 1372 default "debug/meson.S" if DEBUG_MESON_UARTAO
1298 default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X 1373 default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
1299 default "debug/exynos.S" if DEBUG_EXYNOS_UART 1374 default "debug/exynos.S" if DEBUG_EXYNOS_UART
@@ -1324,7 +1399,7 @@ config DEBUG_LL_INCLUDE
1324 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA0 1399 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA0
1325 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA1 1400 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA1
1326 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4 1401 default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4
1327 default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART 1402 default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART || DEBUG_S3C64XX_UART
1328 default "debug/s5pv210.S" if DEBUG_S5PV210_UART 1403 default "debug/s5pv210.S" if DEBUG_S5PV210_UART
1329 default "debug/sirf.S" if DEBUG_SIRFSOC_UART 1404 default "debug/sirf.S" if DEBUG_SIRFSOC_UART
1330 default "debug/sti.S" if DEBUG_STI_UART 1405 default "debug/sti.S" if DEBUG_STI_UART
@@ -1344,11 +1419,9 @@ config DEBUG_UART_PL01X
1344 1419
1345# Compatibility options for 8250 1420# Compatibility options for 8250
1346config DEBUG_UART_8250 1421config DEBUG_UART_8250
1347 def_bool ARCH_DOVE || ARCH_EBSA110 || \ 1422 def_bool ARCH_EBSA110 || \
1348 (FOOTBRIDGE && !DEBUG_DC21285_PORT) || \ 1423 ARCH_IOP13XX || ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX || \
1349 ARCH_GEMINI || ARCH_IOP13XX || ARCH_IOP32X || \ 1424 ARCH_RPC
1350 ARCH_IOP33X || ARCH_IXP4XX || \
1351 ARCH_LPC32XX || ARCH_MV78XX0 || ARCH_ORION5X || ARCH_RPC
1352 1425
1353# Compatibility options for BCM63xx 1426# Compatibility options for BCM63xx
1354config DEBUG_UART_BCM63XX 1427config DEBUG_UART_BCM63XX
@@ -1373,12 +1446,12 @@ config DEBUG_UART_PHYS
1373 default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT 1446 default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT
1374 default 0x10124000 if DEBUG_RK3X_UART0 1447 default 0x10124000 if DEBUG_RK3X_UART0
1375 default 0x10126000 if DEBUG_RK3X_UART1 1448 default 0x10126000 if DEBUG_RK3X_UART1
1376 default 0x101f1000 if ARCH_VERSATILE 1449 default 0x101f1000 if DEBUG_VERSATILE
1377 default 0x101fb000 if DEBUG_NOMADIK_UART 1450 default 0x101fb000 if DEBUG_NOMADIK_UART
1378 default 0x11002000 if DEBUG_MT8127_UART0 1451 default 0x11002000 if DEBUG_MT8127_UART0
1379 default 0x11006000 if DEBUG_MT6589_UART0 1452 default 0x11006000 if DEBUG_MT6589_UART0
1380 default 0x11009000 if DEBUG_MT8135_UART3 1453 default 0x11009000 if DEBUG_MT8135_UART3
1381 default 0x16000000 if ARCH_INTEGRATOR 1454 default 0x16000000 if DEBUG_INTEGRATOR
1382 default 0x18000300 if DEBUG_BCM_5301X 1455 default 0x18000300 if DEBUG_BCM_5301X
1383 default 0x18010000 if DEBUG_SIRFATLAS7_UART0 1456 default 0x18010000 if DEBUG_SIRFATLAS7_UART0
1384 default 0x18020000 if DEBUG_SIRFATLAS7_UART1 1457 default 0x18020000 if DEBUG_SIRFATLAS7_UART1
@@ -1391,9 +1464,9 @@ config DEBUG_UART_PHYS
1391 default 0x3e000000 if DEBUG_BCM_KONA_UART 1464 default 0x3e000000 if DEBUG_BCM_KONA_UART
1392 default 0x4000e400 if DEBUG_LL_UART_EFM32 1465 default 0x4000e400 if DEBUG_LL_UART_EFM32
1393 default 0x40081000 if DEBUG_LPC18XX_UART0 1466 default 0x40081000 if DEBUG_LPC18XX_UART0
1394 default 0x40090000 if ARCH_LPC32XX 1467 default 0x40090000 if DEBUG_LPC32XX
1395 default 0x40100000 if DEBUG_PXA_UART1 1468 default 0x40100000 if DEBUG_PXA_UART1
1396 default 0x42000000 if ARCH_GEMINI 1469 default 0x42000000 if DEBUG_GEMINI
1397 default 0x50000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \ 1470 default 0x50000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
1398 DEBUG_S3C2410_UART0) 1471 DEBUG_S3C2410_UART0)
1399 default 0x50004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \ 1472 default 0x50004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
@@ -1401,24 +1474,28 @@ config DEBUG_UART_PHYS
1401 default 0x50008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \ 1474 default 0x50008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
1402 DEBUG_S3C2410_UART2) 1475 DEBUG_S3C2410_UART2)
1403 default 0x78000000 if DEBUG_CNS3XXX 1476 default 0x78000000 if DEBUG_CNS3XXX
1404 default 0x7c0003f8 if FOOTBRIDGE 1477 default 0x7c0003f8 if DEBUG_FOOTBRIDGE_COM1
1478 default 0x7f005000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
1479 default 0x7f005400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
1480 default 0x7f005800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
1481 default 0x7f005c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
1405 default 0x80010000 if DEBUG_ASM9260_UART 1482 default 0x80010000 if DEBUG_ASM9260_UART
1406 default 0x80070000 if DEBUG_IMX23_UART 1483 default 0x80070000 if DEBUG_IMX23_UART
1407 default 0x80074000 if DEBUG_IMX28_UART 1484 default 0x80074000 if DEBUG_IMX28_UART
1408 default 0x80230000 if DEBUG_PICOXCELL_UART 1485 default 0x80230000 if DEBUG_PICOXCELL_UART
1409 default 0x808c0000 if ARCH_EP93XX 1486 default 0x808c0000 if DEBUG_EP93XX || ARCH_EP93XX
1410 default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART 1487 default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
1411 default 0xb0060000 if DEBUG_SIRFPRIMA2_UART1 1488 default 0xb0060000 if DEBUG_SIRFPRIMA2_UART1
1412 default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX 1489 default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX
1413 default 0xc0013000 if DEBUG_U300_UART 1490 default 0xc0013000 if DEBUG_U300_UART
1414 default 0xc8000000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN 1491 default 0xc8000000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
1415 default 0xc8000003 if ARCH_IXP4XX && CPU_BIG_ENDIAN 1492 default 0xc8000003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
1416 default 0xd0000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX 1493 default 0xd0000000 if DEBUG_SPEAR3XX
1417 default 0xd0012000 if DEBUG_MVEBU_UART0 1494 default 0xd0012000 if DEBUG_MVEBU_UART0
1418 default 0xc81004c0 if DEBUG_MESON_UARTAO 1495 default 0xc81004c0 if DEBUG_MESON_UARTAO
1419 default 0xd4017000 if DEBUG_MMP_UART2 1496 default 0xd4017000 if DEBUG_MMP_UART2
1420 default 0xd4018000 if DEBUG_MMP_UART3 1497 default 0xd4018000 if DEBUG_MMP_UART3
1421 default 0xe0000000 if ARCH_SPEAR13XX 1498 default 0xe0000000 if DEBUG_SPEAR13XX
1422 default 0xe4007000 if DEBUG_HIP04_UART 1499 default 0xe4007000 if DEBUG_HIP04_UART
1423 default 0xe6c40000 if DEBUG_RMOBILE_SCIFA0 1500 default 0xe6c40000 if DEBUG_RMOBILE_SCIFA0
1424 default 0xe6c50000 if DEBUG_RMOBILE_SCIFA1 1501 default 0xe6c50000 if DEBUG_RMOBILE_SCIFA1
@@ -1430,8 +1507,6 @@ config DEBUG_UART_PHYS
1430 default 0xf040ab00 if DEBUG_BRCMSTB_UART 1507 default 0xf040ab00 if DEBUG_BRCMSTB_UART
1431 default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE 1508 default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE
1432 default 0xf1012100 if DEBUG_MVEBU_UART1_ALTERNATE 1509 default 0xf1012100 if DEBUG_MVEBU_UART1_ALTERNATE
1433 default 0xf1012000 if ARCH_DOVE || ARCH_MV78XX0 || \
1434 ARCH_ORION5X
1435 default 0xf7fc9000 if DEBUG_BERLIN_UART 1510 default 0xf7fc9000 if DEBUG_BERLIN_UART
1436 default 0xf8b00000 if DEBUG_HIX5HD2_UART 1511 default 0xf8b00000 if DEBUG_HIX5HD2_UART
1437 default 0xf991e000 if DEBUG_QCOM_UARTDM 1512 default 0xf991e000 if DEBUG_QCOM_UARTDM
@@ -1460,6 +1535,7 @@ config DEBUG_UART_PHYS
1460 DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \ 1535 DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
1461 DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \ 1536 DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
1462 DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \ 1537 DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
1538 DEBUG_S3C64XX_UART || \
1463 DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ 1539 DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
1464 DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \ 1540 DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \
1465 DEBUG_AT91_UART 1541 DEBUG_AT91_UART
@@ -1476,17 +1552,22 @@ config DEBUG_UART_VIRT
1476 default 0xf1002000 if DEBUG_MT8127_UART0 1552 default 0xf1002000 if DEBUG_MT8127_UART0
1477 default 0xf1006000 if DEBUG_MT6589_UART0 1553 default 0xf1006000 if DEBUG_MT6589_UART0
1478 default 0xf1009000 if DEBUG_MT8135_UART3 1554 default 0xf1009000 if DEBUG_MT8135_UART3
1479 default 0xf11f1000 if ARCH_VERSATILE 1555 default 0xf11f1000 if DEBUG_VERSATILE
1480 default 0xf1600000 if ARCH_INTEGRATOR 1556 default 0xf1600000 if DEBUG_INTEGRATOR
1481 default 0xf1c28000 if DEBUG_SUNXI_UART0 1557 default 0xf1c28000 if DEBUG_SUNXI_UART0
1482 default 0xf1c28400 if DEBUG_SUNXI_UART1 1558 default 0xf1c28400 if DEBUG_SUNXI_UART1
1483 default 0xf1f02800 if DEBUG_SUNXI_R_UART 1559 default 0xf1f02800 if DEBUG_SUNXI_R_UART
1560 default 0xf31004c0 if DEBUG_MESON_UARTAO
1561 default 0xf4090000 if DEBUG_LPC32XX
1562 default 0xf4200000 if DEBUG_GEMINI
1484 default 0xf6200000 if DEBUG_PXA_UART1 1563 default 0xf6200000 if DEBUG_PXA_UART1
1485 default 0xf4090000 if ARCH_LPC32XX
1486 default 0xf4200000 if ARCH_GEMINI
1487 default 0xf7000000 if DEBUG_SUN9I_UART0 1564 default 0xf7000000 if DEBUG_SUN9I_UART0
1565 default 0xf7000000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
1488 default 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \ 1566 default 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
1489 DEBUG_S3C2410_UART0) 1567 DEBUG_S3C2410_UART0)
1568 default 0xf7000400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
1569 default 0xf7000800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
1570 default 0xf7000c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
1490 default 0xf7004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \ 1571 default 0xf7004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
1491 DEBUG_S3C2410_UART1) 1572 DEBUG_S3C2410_UART1)
1492 default 0xf7008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \ 1573 default 0xf7008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
@@ -1502,13 +1583,11 @@ config DEBUG_UART_VIRT
1502 default 0xfc40ab00 if DEBUG_BRCMSTB_UART 1583 default 0xfc40ab00 if DEBUG_BRCMSTB_UART
1503 default 0xfc705000 if DEBUG_ZTE_ZX 1584 default 0xfc705000 if DEBUG_ZTE_ZX
1504 default 0xfcfe8600 if DEBUG_UART_BCM63XX 1585 default 0xfcfe8600 if DEBUG_UART_BCM63XX
1505 default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX 1586 default 0xfd000000 if DEBUG_SPEAR3XX || DEBUG_SPEAR13XX
1506 default 0xfd000000 if ARCH_SPEAR13XX 1587 default 0xfd012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_MV78XX0
1507 default 0xfd012000 if ARCH_MV78XX0
1508 default 0xfd883000 if DEBUG_ALPINE_UART0 1588 default 0xfd883000 if DEBUG_ALPINE_UART0
1509 default 0xfde12000 if ARCH_DOVE 1589 default 0xfde12000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_DOVE
1510 default 0xfe012000 if ARCH_ORION5X 1590 default 0xfe012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_ORION5X
1511 default 0xf31004c0 if DEBUG_MESON_UARTAO
1512 default 0xfe017000 if DEBUG_MMP_UART2 1591 default 0xfe017000 if DEBUG_MMP_UART2
1513 default 0xfe018000 if DEBUG_MMP_UART3 1592 default 0xfe018000 if DEBUG_MMP_UART3
1514 default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART 1593 default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
@@ -1522,7 +1601,7 @@ config DEBUG_UART_VIRT
1522 default 0xfeb31000 if DEBUG_KEYSTONE_UART1 1601 default 0xfeb31000 if DEBUG_KEYSTONE_UART1
1523 default 0xfec02000 if DEBUG_SOCFPGA_UART0 1602 default 0xfec02000 if DEBUG_SOCFPGA_UART0
1524 default 0xfec02100 if DEBUG_SOCFPGA_UART1 1603 default 0xfec02100 if DEBUG_SOCFPGA_UART1
1525 default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE 1604 default 0xfec12000 if (DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE) && ARCH_MVEBU
1526 default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE 1605 default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE
1527 default 0xfec10000 if DEBUG_SIRFATLAS7_UART0 1606 default 0xfec10000 if DEBUG_SIRFATLAS7_UART0
1528 default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0 1607 default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0
@@ -1534,8 +1613,8 @@ config DEBUG_UART_VIRT
1534 default 0xfed60000 if DEBUG_RK29_UART0 1613 default 0xfed60000 if DEBUG_RK29_UART0
1535 default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2 1614 default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
1536 default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3 1615 default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
1537 default 0xfedc0000 if ARCH_EP93XX 1616 default 0xfedc0000 if DEBUG_EP93XX
1538 default 0xfee003f8 if FOOTBRIDGE 1617 default 0xfee003f8 if DEBUG_FOOTBRIDGE_COM1
1539 default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART 1618 default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
1540 default 0xfee82340 if ARCH_IOP13XX 1619 default 0xfee82340 if ARCH_IOP13XX
1541 default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN 1620 default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
@@ -1552,13 +1631,14 @@ config DEBUG_UART_VIRT
1552 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \ 1631 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
1553 DEBUG_NETX_UART || \ 1632 DEBUG_NETX_UART || \
1554 DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \ 1633 DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
1634 DEBUG_S3C64XX_UART || \
1555 DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ 1635 DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
1556 DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 1636 DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
1557 1637
1558config DEBUG_UART_8250_SHIFT 1638config DEBUG_UART_8250_SHIFT
1559 int "Register offset shift for the 8250 debug UART" 1639 int "Register offset shift for the 8250 debug UART"
1560 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250 1640 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
1561 default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X || \ 1641 default 0 if DEBUG_FOOTBRIDGE_COM1 || ARCH_IOP32X || DEBUG_BCM_5301X || \
1562 DEBUG_OMAP7XXUART1 || DEBUG_OMAP7XXUART2 || DEBUG_OMAP7XXUART3 1642 DEBUG_OMAP7XXUART1 || DEBUG_OMAP7XXUART2 || DEBUG_OMAP7XXUART3
1563 default 2 1643 default 2
1564 1644
@@ -1566,8 +1646,9 @@ config DEBUG_UART_8250_WORD
1566 bool "Use 32-bit accesses for 8250 UART" 1646 bool "Use 32-bit accesses for 8250 UART"
1567 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250 1647 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
1568 depends on DEBUG_UART_8250_SHIFT >= 2 1648 depends on DEBUG_UART_8250_SHIFT >= 2
1569 default y if DEBUG_PICOXCELL_UART || DEBUG_SOCFPGA_UART0 || \ 1649 default y if DEBUG_PICOXCELL_UART || \
1570 DEBUG_SOCFPGA_UART1 || ARCH_KEYSTONE || \ 1650 DEBUG_SOCFPGA_UART0 || DEBUG_SOCFPGA_UART1 || \
1651 DEBUG_KEYSTONE_UART0 || DEBUG_KEYSTONE_UART1 || \
1571 DEBUG_ALPINE_UART0 || \ 1652 DEBUG_ALPINE_UART0 || \
1572 DEBUG_DAVINCI_DMx_UART0 || DEBUG_DAVINCI_DA8XX_UART1 || \ 1653 DEBUG_DAVINCI_DMx_UART0 || DEBUG_DAVINCI_DA8XX_UART1 || \
1573 DEBUG_DAVINCI_DA8XX_UART2 || \ 1654 DEBUG_DAVINCI_DA8XX_UART2 || \
@@ -1577,7 +1658,7 @@ config DEBUG_UART_8250_WORD
1577config DEBUG_UART_8250_FLOW_CONTROL 1658config DEBUG_UART_8250_FLOW_CONTROL
1578 bool "Enable flow control for 8250 UART" 1659 bool "Enable flow control for 8250 UART"
1579 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250 1660 depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
1580 default y if ARCH_EBSA110 || FOOTBRIDGE || ARCH_GEMINI || ARCH_RPC 1661 default y if ARCH_EBSA110 || DEBUG_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC
1581 1662
1582config DEBUG_UNCOMPRESS 1663config DEBUG_UNCOMPRESS
1583 bool 1664 bool
diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig
index a7846d64b396..158dde87f5d0 100644
--- a/arch/arm/configs/ep93xx_defconfig
+++ b/arch/arm/configs/ep93xx_defconfig
@@ -132,6 +132,5 @@ CONFIG_DEBUG_SPINLOCK=y
132CONFIG_DEBUG_MUTEXES=y 132CONFIG_DEBUG_MUTEXES=y
133CONFIG_DEBUG_USER=y 133CONFIG_DEBUG_USER=y
134CONFIG_DEBUG_LL=y 134CONFIG_DEBUG_LL=y
135CONFIG_DEBUG_LL_UART_PL01X=y
136# CONFIG_CRYPTO_ANSI_CPRNG is not set 135# CONFIG_CRYPTO_ANSI_CPRNG is not set
137CONFIG_LIBCRC32C=y 136CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/lpc32xx_defconfig b/arch/arm/configs/lpc32xx_defconfig
index c100b7df5441..9f56ca3985ae 100644
--- a/arch/arm/configs/lpc32xx_defconfig
+++ b/arch/arm/configs/lpc32xx_defconfig
@@ -204,7 +204,6 @@ CONFIG_DEBUG_INFO=y
204# CONFIG_FTRACE is not set 204# CONFIG_FTRACE is not set
205# CONFIG_ARM_UNWIND is not set 205# CONFIG_ARM_UNWIND is not set
206CONFIG_DEBUG_LL=y 206CONFIG_DEBUG_LL=y
207CONFIG_DEBUG_LL_UART_8250=y
208CONFIG_EARLY_PRINTK=y 207CONFIG_EARLY_PRINTK=y
209CONFIG_CRYPTO_ANSI_CPRNG=y 208CONFIG_CRYPTO_ANSI_CPRNG=y
210# CONFIG_CRYPTO_HW is not set 209# CONFIG_CRYPTO_HW is not set
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index b0df2574599a..e347a558a4cd 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -11,6 +11,9 @@ CONFIG_MODULES=y
11CONFIG_MODULE_UNLOAD=y 11CONFIG_MODULE_UNLOAD=y
12CONFIG_PARTITION_ADVANCED=y 12CONFIG_PARTITION_ADVANCED=y
13CONFIG_CMDLINE_PARTITION=y 13CONFIG_CMDLINE_PARTITION=y
14CONFIG_ARCH_MULTI_V7=y
15# CONFIG_ARCH_MULTI_V5 is not set
16# CONFIG_ARCH_MULTI_V4 is not set
14CONFIG_ARCH_VIRT=y 17CONFIG_ARCH_VIRT=y
15CONFIG_ARCH_ALPINE=y 18CONFIG_ARCH_ALPINE=y
16CONFIG_ARCH_MVEBU=y 19CONFIG_ARCH_MVEBU=y
diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig
index 85d10d2e3d66..a0345e1ce172 100644
--- a/arch/arm/configs/mv78xx0_defconfig
+++ b/arch/arm/configs/mv78xx0_defconfig
@@ -11,6 +11,9 @@ CONFIG_KPROBES=y
11CONFIG_MODULES=y 11CONFIG_MODULES=y
12CONFIG_MODULE_UNLOAD=y 12CONFIG_MODULE_UNLOAD=y
13# CONFIG_BLK_DEV_BSG is not set 13# CONFIG_BLK_DEV_BSG is not set
14CONFIG_ARCH_MULTI_V5=y
15# CONFIG_ARCH_MULTI_V6 is not set
16# CONFIG_ARCH_MULTI_V7 is not set
14CONFIG_ARCH_MV78XX0=y 17CONFIG_ARCH_MV78XX0=y
15CONFIG_MACH_DB78X00_BP=y 18CONFIG_MACH_DB78X00_BP=y
16CONFIG_MACH_RD78X00_MASA=y 19CONFIG_MACH_RD78X00_MASA=y
@@ -132,7 +135,6 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
132CONFIG_DEBUG_USER=y 135CONFIG_DEBUG_USER=y
133CONFIG_DEBUG_ERRORS=y 136CONFIG_DEBUG_ERRORS=y
134CONFIG_DEBUG_LL=y 137CONFIG_DEBUG_LL=y
135CONFIG_DEBUG_LL_UART_8250=y
136CONFIG_CRYPTO_CBC=m 138CONFIG_CRYPTO_CBC=m
137CONFIG_CRYPTO_ECB=m 139CONFIG_CRYPTO_ECB=m
138CONFIG_CRYPTO_PCBC=m 140CONFIG_CRYPTO_PCBC=m
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig
index 8099417a9466..5876ce7af130 100644
--- a/arch/arm/configs/orion5x_defconfig
+++ b/arch/arm/configs/orion5x_defconfig
@@ -13,6 +13,9 @@ CONFIG_MODULE_UNLOAD=y
13# CONFIG_BLK_DEV_BSG is not set 13# CONFIG_BLK_DEV_BSG is not set
14CONFIG_PARTITION_ADVANCED=y 14CONFIG_PARTITION_ADVANCED=y
15CONFIG_BSD_DISKLABEL=y 15CONFIG_BSD_DISKLABEL=y
16CONFIG_ARCH_MULTI_V5=y
17# CONFIG_ARCH_MULTI_V6 is not set
18# CONFIG_ARCH_MULTI_V7 is not set
16CONFIG_ARCH_ORION5X=y 19CONFIG_ARCH_ORION5X=y
17CONFIG_ARCH_ORION5X_DT=y 20CONFIG_ARCH_ORION5X_DT=y
18CONFIG_MACH_DB88F5281=y 21CONFIG_MACH_DB88F5281=y
@@ -159,7 +162,6 @@ CONFIG_LATENCYTOP=y
159# CONFIG_FTRACE is not set 162# CONFIG_FTRACE is not set
160CONFIG_DEBUG_USER=y 163CONFIG_DEBUG_USER=y
161CONFIG_DEBUG_LL=y 164CONFIG_DEBUG_LL=y
162CONFIG_DEBUG_LL_UART_8250=y
163CONFIG_CRYPTO_CBC=m 165CONFIG_CRYPTO_CBC=m
164CONFIG_CRYPTO_ECB=m 166CONFIG_CRYPTO_ECB=m
165CONFIG_CRYPTO_PCBC=m 167CONFIG_CRYPTO_PCBC=m
diff --git a/arch/arm/configs/realview-smp_defconfig b/arch/arm/configs/realview-smp_defconfig
index 1da5d9e48224..bff0754bf2c1 100644
--- a/arch/arm/configs/realview-smp_defconfig
+++ b/arch/arm/configs/realview-smp_defconfig
@@ -8,10 +8,19 @@ CONFIG_MODULES=y
8CONFIG_MODULE_UNLOAD=y 8CONFIG_MODULE_UNLOAD=y
9# CONFIG_BLK_DEV_BSG is not set 9# CONFIG_BLK_DEV_BSG is not set
10# CONFIG_IOSCHED_CFQ is not set 10# CONFIG_IOSCHED_CFQ is not set
11CONFIG_ARCH_MULTI_V6=y
11CONFIG_ARCH_REALVIEW=y 12CONFIG_ARCH_REALVIEW=y
13CONFIG_REALVIEW_DT=y
12CONFIG_MACH_REALVIEW_EB=y 14CONFIG_MACH_REALVIEW_EB=y
15CONFIG_REALVIEW_EB_ARM1136=y
16CONFIG_REALVIEW_EB_ARM1176=y
17CONFIG_REALVIEW_EB_A9MP=y
13CONFIG_REALVIEW_EB_ARM11MP=y 18CONFIG_REALVIEW_EB_ARM11MP=y
19CONFIG_REALVIEW_EB_ARM11MP_REVB=y
14CONFIG_MACH_REALVIEW_PB11MP=y 20CONFIG_MACH_REALVIEW_PB11MP=y
21CONFIG_MACH_REALVIEW_PB1176=y
22CONFIG_MACH_REALVIEW_PBA8=y
23CONFIG_MACH_REALVIEW_PBX=y
15CONFIG_SMP=y 24CONFIG_SMP=y
16CONFIG_HOTPLUG_CPU=y 25CONFIG_HOTPLUG_CPU=y
17CONFIG_AEABI=y 26CONFIG_AEABI=y
diff --git a/arch/arm/configs/realview_defconfig b/arch/arm/configs/realview_defconfig
index d02e9d911bb7..bc6bef864b36 100644
--- a/arch/arm/configs/realview_defconfig
+++ b/arch/arm/configs/realview_defconfig
@@ -8,11 +8,19 @@ CONFIG_MODULES=y
8CONFIG_MODULE_UNLOAD=y 8CONFIG_MODULE_UNLOAD=y
9# CONFIG_BLK_DEV_BSG is not set 9# CONFIG_BLK_DEV_BSG is not set
10# CONFIG_IOSCHED_CFQ is not set 10# CONFIG_IOSCHED_CFQ is not set
11CONFIG_ARCH_MULTI_V6=y
11CONFIG_ARCH_REALVIEW=y 12CONFIG_ARCH_REALVIEW=y
13CONFIG_REALVIEW_DT=y
12CONFIG_MACH_REALVIEW_EB=y 14CONFIG_MACH_REALVIEW_EB=y
15CONFIG_REALVIEW_EB_ARM1136=y
16CONFIG_REALVIEW_EB_ARM1176=y
17CONFIG_REALVIEW_EB_A9MP=y
13CONFIG_REALVIEW_EB_ARM11MP=y 18CONFIG_REALVIEW_EB_ARM11MP=y
19CONFIG_REALVIEW_EB_ARM11MP_REVB=y
14CONFIG_MACH_REALVIEW_PB11MP=y 20CONFIG_MACH_REALVIEW_PB11MP=y
15CONFIG_MACH_REALVIEW_PB1176=y 21CONFIG_MACH_REALVIEW_PB1176=y
22CONFIG_MACH_REALVIEW_PBA8=y
23CONFIG_MACH_REALVIEW_PBX=y
16CONFIG_AEABI=y 24CONFIG_AEABI=y
17CONFIG_ZBOOT_ROM_TEXT=0x0 25CONFIG_ZBOOT_ROM_TEXT=0x0
18CONFIG_ZBOOT_ROM_BSS=0x0 26CONFIG_ZBOOT_ROM_BSS=0x0
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig
index e2f9fa5bb54b..e0f66936ae02 100644
--- a/arch/arm/configs/s3c6400_defconfig
+++ b/arch/arm/configs/s3c6400_defconfig
@@ -5,6 +5,8 @@ CONFIG_KALLSYMS_ALL=y
5CONFIG_MODULES=y 5CONFIG_MODULES=y
6CONFIG_MODULE_UNLOAD=y 6CONFIG_MODULE_UNLOAD=y
7# CONFIG_BLK_DEV_BSG is not set 7# CONFIG_BLK_DEV_BSG is not set
8CONFIG_ARCH_MULTI_V6=y
9# CONFIG_ARCH_MULTI_V7 is not set
8CONFIG_ARCH_S3C64XX=y 10CONFIG_ARCH_S3C64XX=y
9CONFIG_S3C_BOOT_ERROR_RESET=y 11CONFIG_S3C_BOOT_ERROR_RESET=y
10CONFIG_MACH_SMDK6400=y 12CONFIG_MACH_SMDK6400=y
diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig
index ea49d37564da..64bef9775bb6 100644
--- a/arch/arm/configs/versatile_defconfig
+++ b/arch/arm/configs/versatile_defconfig
@@ -6,8 +6,8 @@ CONFIG_SLAB=y
6CONFIG_MODULES=y 6CONFIG_MODULES=y
7CONFIG_MODULE_UNLOAD=y 7CONFIG_MODULE_UNLOAD=y
8CONFIG_PARTITION_ADVANCED=y 8CONFIG_PARTITION_ADVANCED=y
9# CONFIG_ARCH_MULTI_V7 is not set
9CONFIG_ARCH_VERSATILE=y 10CONFIG_ARCH_VERSATILE=y
10CONFIG_MACH_VERSATILE_AB=y
11CONFIG_AEABI=y 11CONFIG_AEABI=y
12CONFIG_OABI_COMPAT=y 12CONFIG_OABI_COMPAT=y
13CONFIG_ZBOOT_ROM_TEXT=0x0 13CONFIG_ZBOOT_ROM_TEXT=0x0
@@ -82,6 +82,5 @@ CONFIG_MAGIC_SYSRQ=y
82CONFIG_DEBUG_KERNEL=y 82CONFIG_DEBUG_KERNEL=y
83CONFIG_DEBUG_USER=y 83CONFIG_DEBUG_USER=y
84CONFIG_DEBUG_LL=y 84CONFIG_DEBUG_LL=y
85CONFIG_DEBUG_LL_UART_PL01X=y
86CONFIG_FONTS=y 85CONFIG_FONTS=y
87CONFIG_FONT_ACORN_8x8=y 86CONFIG_FONT_ACORN_8x8=y
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index 85e374f873ac..b23c6c81c9ad 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -228,10 +228,26 @@ static inline int cpu_is_xsc3(void)
228} 228}
229#endif 229#endif
230 230
231#if !defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_CPU_XSC3) 231#if !defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_CPU_XSC3) && \
232#define cpu_is_xscale() 0 232 !defined(CONFIG_CPU_MOHAWK)
233#define cpu_is_xscale_family() 0
233#else 234#else
234#define cpu_is_xscale() 1 235static inline int cpu_is_xscale_family(void)
236{
237 unsigned int id;
238 id = read_cpuid_id() & 0xffffe000;
239
240 switch (id) {
241 case 0x69052000: /* Intel XScale 1 */
242 case 0x69054000: /* Intel XScale 2 */
243 case 0x69056000: /* Intel XScale 3 */
244 case 0x56056000: /* Marvell XScale 3 */
245 case 0x56158000: /* Marvell Mohawk */
246 return 1;
247 }
248
249 return 0;
250}
235#endif 251#endif
236 252
237/* 253/*
diff --git a/arch/arm/mach-footbridge/include/mach/debug-macro.S b/arch/arm/include/debug/dc21285.S
index 02247f313e94..02247f313e94 100644
--- a/arch/arm/mach-footbridge/include/mach/debug-macro.S
+++ b/arch/arm/include/debug/dc21285.S
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 65addcbf5b30..2e26016a91a5 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -211,7 +211,7 @@ const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
211{ 211{
212 const struct machine_desc *mdesc, *mdesc_best = NULL; 212 const struct machine_desc *mdesc, *mdesc_best = NULL;
213 213
214#ifdef CONFIG_ARCH_MULTIPLATFORM 214#if defined(CONFIG_ARCH_MULTIPLATFORM) || defined(CONFIG_ARM_SINGLE_ARMV7M)
215 DT_MACHINE_START(GENERIC_DT, "Generic DT based system") 215 DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
216 MACHINE_END 216 MACHINE_END
217 217
diff --git a/arch/arm/kernel/xscale-cp0.c b/arch/arm/kernel/xscale-cp0.c
index bdbb8853a19b..77a2eef72115 100644
--- a/arch/arm/kernel/xscale-cp0.c
+++ b/arch/arm/kernel/xscale-cp0.c
@@ -15,6 +15,9 @@
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <asm/thread_notify.h> 17#include <asm/thread_notify.h>
18#include <asm/cputype.h>
19
20asm(" .arch armv5te\n");
18 21
19static inline void dsp_save_state(u32 *state) 22static inline void dsp_save_state(u32 *state)
20{ 23{
@@ -152,6 +155,10 @@ static int __init xscale_cp0_init(void)
152{ 155{
153 u32 cp_access; 156 u32 cp_access;
154 157
158 /* do not attempt to probe iwmmxt on non-xscale family CPUs */
159 if (!cpu_is_xscale_family())
160 return 0;
161
155 cp_access = xscale_cp_access_read() & ~3; 162 cp_access = xscale_cp_access_read() & ~3;
156 xscale_cp_access_write(cp_access | 1); 163 xscale_cp_access_write(cp_access | 1);
157 164
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index f8f62fbaa915..3d8cf8cbd98a 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -32,7 +32,7 @@
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33 33
34#include <mach/common.h> 34#include <mach/common.h>
35#include <mach/cp_intc.h> 35#include "cp_intc.h"
36#include <mach/mux.h> 36#include <mach/mux.h>
37#include <mach/da8xx.h> 37#include <mach/da8xx.h>
38 38
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 9cc7b818fbf6..8e4539f69fdc 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -40,10 +40,10 @@
40#include <linux/spi/flash.h> 40#include <linux/spi/flash.h>
41 41
42#include <mach/common.h> 42#include <mach/common.h>
43#include <mach/cp_intc.h> 43#include "cp_intc.h"
44#include <mach/da8xx.h> 44#include <mach/da8xx.h>
45#include <mach/mux.h> 45#include <mach/mux.h>
46#include <mach/sram.h> 46#include "sram.h"
47 47
48#include <asm/mach-types.h> 48#include <asm/mach-types.h>
49#include <asm/mach/arch.h> 49#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 8cfbfe084535..de1316bf643a 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -26,7 +26,7 @@
26#include <asm/mach-types.h> 26#include <asm/mach-types.h>
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28#include <mach/common.h> 28#include <mach/common.h>
29#include <mach/cp_intc.h> 29#include "cp_intc.h"
30#include <mach/da8xx.h> 30#include <mach/da8xx.h>
31#include <linux/platform_data/mtd-davinci.h> 31#include <linux/platform_data/mtd-davinci.h>
32#include <linux/platform_data/mtd-davinci-aemif.h> 32#include <linux/platform_data/mtd-davinci-aemif.h>
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index 2aac51d0e853..ee624861ca66 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -19,7 +19,7 @@
19#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20 20
21#include <mach/common.h> 21#include <mach/common.h>
22#include <mach/cp_intc.h> 22#include "cp_intc.h"
23#include <mach/da8xx.h> 23#include <mach/da8xx.h>
24#include <mach/mux.h> 24#include <mach/mux.h>
25 25
diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c
index 3caff9637a82..3424eac6b588 100644
--- a/arch/arm/mach-davinci/clock.c
+++ b/arch/arm/mach-davinci/clock.c
@@ -23,7 +23,7 @@
23#include <mach/hardware.h> 23#include <mach/hardware.h>
24 24
25#include <mach/clock.h> 25#include <mach/clock.h>
26#include <mach/psc.h> 26#include "psc.h"
27#include <mach/cputype.h> 27#include <mach/cputype.h>
28#include "clock.h" 28#include "clock.h"
29 29
diff --git a/arch/arm/mach-davinci/cp_intc.c b/arch/arm/mach-davinci/cp_intc.c
index 507aad4b8dd9..1a68d2477de6 100644
--- a/arch/arm/mach-davinci/cp_intc.c
+++ b/arch/arm/mach-davinci/cp_intc.c
@@ -19,7 +19,7 @@
19#include <linux/of_irq.h> 19#include <linux/of_irq.h>
20 20
21#include <mach/common.h> 21#include <mach/common.h>
22#include <mach/cp_intc.h> 22#include "cp_intc.h"
23 23
24static inline unsigned int cp_intc_read(unsigned offset) 24static inline unsigned int cp_intc_read(unsigned offset)
25{ 25{
diff --git a/arch/arm/mach-davinci/include/mach/cp_intc.h b/arch/arm/mach-davinci/cp_intc.h
index 827bbe9baed4..827bbe9baed4 100644
--- a/arch/arm/mach-davinci/include/mach/cp_intc.h
+++ b/arch/arm/mach-davinci/cp_intc.h
diff --git a/arch/arm/mach-davinci/cpuidle.c b/arch/arm/mach-davinci/cpuidle.c
index 306ebc51599a..1b8f08532455 100644
--- a/arch/arm/mach-davinci/cpuidle.c
+++ b/arch/arm/mach-davinci/cpuidle.c
@@ -19,8 +19,8 @@
19#include <linux/export.h> 19#include <linux/export.h>
20#include <asm/cpuidle.h> 20#include <asm/cpuidle.h>
21 21
22#include <mach/cpuidle.h> 22#include "cpuidle.h"
23#include <mach/ddr2.h> 23#include "ddr2.h"
24 24
25#define DAVINCI_CPUIDLE_MAX_STATES 2 25#define DAVINCI_CPUIDLE_MAX_STATES 2
26 26
diff --git a/arch/arm/mach-davinci/include/mach/cpuidle.h b/arch/arm/mach-davinci/cpuidle.h
index 74f088b0edfb..74f088b0edfb 100644
--- a/arch/arm/mach-davinci/include/mach/cpuidle.h
+++ b/arch/arm/mach-davinci/cpuidle.h
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 115d5736da80..7187e7fc2822 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -15,7 +15,7 @@
15 15
16#include <asm/mach/map.h> 16#include <asm/mach/map.h>
17 17
18#include <mach/psc.h> 18#include "psc.h"
19#include <mach/irqs.h> 19#include <mach/irqs.h>
20#include <mach/cputype.h> 20#include <mach/cputype.h>
21#include <mach/common.h> 21#include <mach/common.h>
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 676997895e13..97d8779a9a65 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -22,7 +22,7 @@
22 22
23#include <asm/mach/map.h> 23#include <asm/mach/map.h>
24 24
25#include <mach/psc.h> 25#include "psc.h"
26#include <mach/irqs.h> 26#include <mach/irqs.h>
27#include <mach/cputype.h> 27#include <mach/cputype.h>
28#include <mach/common.h> 28#include <mach/common.h>
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index 06b6451225c1..c4b5808ca7c1 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -15,7 +15,7 @@
15#include <asm/mach/arch.h> 15#include <asm/mach/arch.h>
16 16
17#include <mach/common.h> 17#include <mach/common.h>
18#include <mach/cp_intc.h> 18#include "cp_intc.h"
19#include <mach/da8xx.h> 19#include <mach/da8xx.h>
20 20
21#define DA8XX_NUM_UARTS 3 21#define DA8XX_NUM_UARTS 3
diff --git a/arch/arm/mach-davinci/include/mach/ddr2.h b/arch/arm/mach-davinci/ddr2.h
index c19e047d0e6a..c19e047d0e6a 100644
--- a/arch/arm/mach-davinci/include/mach/ddr2.h
+++ b/arch/arm/mach-davinci/ddr2.h
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index 28c90bc372bd..e88b7a5cde99 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -22,8 +22,8 @@
22#include <mach/common.h> 22#include <mach/common.h>
23#include <mach/time.h> 23#include <mach/time.h>
24#include <mach/da8xx.h> 24#include <mach/da8xx.h>
25#include <mach/cpuidle.h> 25#include "cpuidle.h"
26#include <mach/sram.h> 26#include "sram.h"
27 27
28#include "clock.h" 28#include "clock.h"
29#include "asp.h" 29#include "asp.h"
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 609950b8c191..c7c1458df23c 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -21,7 +21,7 @@
21#include <asm/mach/map.h> 21#include <asm/mach/map.h>
22 22
23#include <mach/cputype.h> 23#include <mach/cputype.h>
24#include <mach/psc.h> 24#include "psc.h"
25#include <mach/mux.h> 25#include <mach/mux.h>
26#include <mach/irqs.h> 26#include <mach/irqs.h>
27#include <mach/time.h> 27#include <mach/time.h>
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 2068cbeaeb03..01843fbcc9ea 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -26,7 +26,7 @@
26#include <asm/mach/map.h> 26#include <asm/mach/map.h>
27 27
28#include <mach/cputype.h> 28#include <mach/cputype.h>
29#include <mach/psc.h> 29#include "psc.h"
30#include <mach/mux.h> 30#include <mach/mux.h>
31#include <mach/irqs.h> 31#include <mach/irqs.h>
32#include <mach/time.h> 32#include <mach/time.h>
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index d38f5049d56e..b28071ae3a57 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -19,7 +19,7 @@
19 19
20#include <mach/cputype.h> 20#include <mach/cputype.h>
21#include <mach/irqs.h> 21#include <mach/irqs.h>
22#include <mach/psc.h> 22#include "psc.h"
23#include <mach/mux.h> 23#include <mach/mux.h>
24#include <mach/time.h> 24#include <mach/time.h>
25#include <mach/serial.h> 25#include <mach/serial.h>
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 70eb42725eec..cf80786e2471 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -20,7 +20,7 @@
20 20
21#include <mach/cputype.h> 21#include <mach/cputype.h>
22#include <mach/irqs.h> 22#include <mach/irqs.h>
23#include <mach/psc.h> 23#include "psc.h"
24#include <mach/mux.h> 24#include <mach/mux.h>
25#include <mach/time.h> 25#include <mach/time.h>
26#include <mach/serial.h> 26#include <mach/serial.h>
diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c
index 07e23ba61f3a..8929569b1f8a 100644
--- a/arch/arm/mach-davinci/pm.c
+++ b/arch/arm/mach-davinci/pm.c
@@ -21,7 +21,7 @@
21 21
22#include <mach/common.h> 22#include <mach/common.h>
23#include <mach/da8xx.h> 23#include <mach/da8xx.h>
24#include <mach/sram.h> 24#include "sram.h"
25#include <mach/pm.h> 25#include <mach/pm.h>
26 26
27#include "clock.h" 27#include "clock.h"
diff --git a/arch/arm/mach-davinci/psc.c b/arch/arm/mach-davinci/psc.c
index 82fdc69d5728..e5dc6bfde5f3 100644
--- a/arch/arm/mach-davinci/psc.c
+++ b/arch/arm/mach-davinci/psc.c
@@ -23,7 +23,7 @@
23#include <linux/io.h> 23#include <linux/io.h>
24 24
25#include <mach/cputype.h> 25#include <mach/cputype.h>
26#include <mach/psc.h> 26#include "psc.h"
27 27
28#include "clock.h" 28#include "clock.h"
29 29
diff --git a/arch/arm/mach-davinci/include/mach/psc.h b/arch/arm/mach-davinci/psc.h
index 99d47cfa301f..99d47cfa301f 100644
--- a/arch/arm/mach-davinci/include/mach/psc.h
+++ b/arch/arm/mach-davinci/psc.h
diff --git a/arch/arm/mach-davinci/sleep.S b/arch/arm/mach-davinci/sleep.S
index a5336a5e2739..cd350dee4df3 100644
--- a/arch/arm/mach-davinci/sleep.S
+++ b/arch/arm/mach-davinci/sleep.S
@@ -21,8 +21,8 @@
21 21
22#include <linux/linkage.h> 22#include <linux/linkage.h>
23#include <asm/assembler.h> 23#include <asm/assembler.h>
24#include <mach/psc.h> 24#include "psc.h"
25#include <mach/ddr2.h> 25#include "ddr2.h"
26 26
27#include "clock.h" 27#include "clock.h"
28 28
diff --git a/arch/arm/mach-davinci/sram.c b/arch/arm/mach-davinci/sram.c
index 8540dddf1fbd..668b6e749768 100644
--- a/arch/arm/mach-davinci/sram.c
+++ b/arch/arm/mach-davinci/sram.c
@@ -14,7 +14,7 @@
14#include <linux/genalloc.h> 14#include <linux/genalloc.h>
15 15
16#include <mach/common.h> 16#include <mach/common.h>
17#include <mach/sram.h> 17#include "sram.h"
18 18
19static struct gen_pool *sram_pool; 19static struct gen_pool *sram_pool;
20 20
diff --git a/arch/arm/mach-davinci/include/mach/sram.h b/arch/arm/mach-davinci/sram.h
index 4e5db56218b8..4e5db56218b8 100644
--- a/arch/arm/mach-davinci/include/mach/sram.h
+++ b/arch/arm/mach-davinci/sram.h
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
index 0dc39cf30fdd..b9a7c33db29a 100644
--- a/arch/arm/mach-dove/cm-a510.c
+++ b/arch/arm/mach-dove/cm-a510.c
@@ -88,6 +88,7 @@ static void __init cm_a510_init(void)
88 88
89MACHINE_START(CM_A510, "Compulab CM-A510 Board") 89MACHINE_START(CM_A510, "Compulab CM-A510 Board")
90 .atag_offset = 0x100, 90 .atag_offset = 0x100,
91 .nr_irqs = DOVE_NR_IRQS,
91 .init_machine = cm_a510_init, 92 .init_machine = cm_a510_init,
92 .map_io = dove_map_io, 93 .map_io = dove_map_io,
93 .init_early = dove_init_early, 94 .init_early = dove_init_early,
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index 0d1a89298ece..0cdaa3851d2e 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -16,6 +16,7 @@
16#include <linux/platform_data/dma-mv_xor.h> 16#include <linux/platform_data/dma-mv_xor.h>
17#include <linux/platform_data/usb-ehci-orion.h> 17#include <linux/platform_data/usb-ehci-orion.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/soc/dove/pmu.h>
19#include <asm/hardware/cache-tauros2.h> 20#include <asm/hardware/cache-tauros2.h>
20#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
21#include <asm/mach/map.h> 22#include <asm/mach/map.h>
@@ -375,6 +376,47 @@ void __init dove_setup_cpu_wins(void)
375 DOVE_SCRATCHPAD_SIZE); 376 DOVE_SCRATCHPAD_SIZE);
376} 377}
377 378
379static struct resource orion_wdt_resource[] = {
380 DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
381 DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
382};
383
384static struct platform_device orion_wdt_device = {
385 .name = "orion_wdt",
386 .id = -1,
387 .num_resources = ARRAY_SIZE(orion_wdt_resource),
388 .resource = orion_wdt_resource,
389};
390
391static void __init __maybe_unused orion_wdt_init(void)
392{
393 platform_device_register(&orion_wdt_device);
394}
395
396static const struct dove_pmu_domain_initdata pmu_domains[] __initconst = {
397 {
398 .pwr_mask = PMU_PWR_VPU_PWR_DWN_MASK,
399 .rst_mask = PMU_SW_RST_VIDEO_MASK,
400 .iso_mask = PMU_ISO_VIDEO_MASK,
401 .name = "vpu-domain",
402 }, {
403 .pwr_mask = PMU_PWR_GPU_PWR_DWN_MASK,
404 .rst_mask = PMU_SW_RST_GPU_MASK,
405 .iso_mask = PMU_ISO_GPU_MASK,
406 .name = "gpu-domain",
407 }, {
408 /* sentinel */
409 },
410};
411
412static const struct dove_pmu_initdata pmu_data __initconst = {
413 .pmc_base = DOVE_PMU_VIRT_BASE,
414 .pmu_base = DOVE_PMU_VIRT_BASE + 0x8000,
415 .irq = IRQ_DOVE_PMU,
416 .irq_domain_start = IRQ_DOVE_PMU_START,
417 .domains = pmu_domains,
418};
419
378void __init dove_init(void) 420void __init dove_init(void)
379{ 421{
380 pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n", 422 pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n",
@@ -389,6 +431,7 @@ void __init dove_init(void)
389 dove_clk_init(); 431 dove_clk_init();
390 432
391 /* internal devices that every board has */ 433 /* internal devices that every board has */
434 dove_init_pmu_legacy(&pmu_data);
392 dove_rtc_init(); 435 dove_rtc_init();
393 dove_xor0_init(); 436 dove_xor0_init();
394 dove_xor1_init(); 437 dove_xor1_init();
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c
index 76e26f949c27..bcb678fd2415 100644
--- a/arch/arm/mach-dove/dove-db-setup.c
+++ b/arch/arm/mach-dove/dove-db-setup.c
@@ -94,6 +94,7 @@ static void __init dove_db_init(void)
94 94
95MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board") 95MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
96 .atag_offset = 0x100, 96 .atag_offset = 0x100,
97 .nr_irqs = DOVE_NR_IRQS,
97 .init_machine = dove_db_init, 98 .init_machine = dove_db_init,
98 .map_io = dove_map_io, 99 .map_io = dove_map_io,
99 .init_early = dove_init_early, 100 .init_early = dove_init_early,
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h
index 0c4b35f4ee5b..00f45458b3ec 100644
--- a/arch/arm/mach-dove/include/mach/dove.h
+++ b/arch/arm/mach-dove/include/mach/dove.h
@@ -11,6 +11,8 @@
11#ifndef __ASM_ARCH_DOVE_H 11#ifndef __ASM_ARCH_DOVE_H
12#define __ASM_ARCH_DOVE_H 12#define __ASM_ARCH_DOVE_H
13 13
14#include <mach/irqs.h>
15
14/* 16/*
15 * Marvell Dove address maps. 17 * Marvell Dove address maps.
16 * 18 *
diff --git a/arch/arm/mach-dove/include/mach/entry-macro.S b/arch/arm/mach-dove/include/mach/entry-macro.S
deleted file mode 100644
index df1d44bdc375..000000000000
--- a/arch/arm/mach-dove/include/mach/entry-macro.S
+++ /dev/null
@@ -1,33 +0,0 @@
1/*
2 * arch/arm/mach-dove/include/mach/entry-macro.S
3 *
4 * Low-level IRQ helper macros for Marvell Dove platforms
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <mach/bridge-regs.h>
12
13 .macro get_irqnr_preamble, base, tmp
14 ldr \base, =IRQ_VIRT_BASE
15 .endm
16
17 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
18 @ check low interrupts
19 ldr \irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
20 ldr \tmp, [\base, #IRQ_MASK_LOW_OFF]
21 mov \irqnr, #32
22 ands \irqstat, \irqstat, \tmp
23
24 @ if no low interrupts set, check high interrupts
25 ldreq \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
26 ldreq \tmp, [\base, #IRQ_MASK_HIGH_OFF]
27 moveq \irqnr, #64
28 andeqs \irqstat, \irqstat, \tmp
29
30 @ find first active interrupt source
31 clzne \irqstat, \irqstat
32 subne \irqnr, \irqnr, \irqstat
33 .endm
diff --git a/arch/arm/mach-dove/include/mach/irqs.h b/arch/arm/mach-dove/include/mach/irqs.h
index 3f29e6bca058..8ff0fa8b4fcd 100644
--- a/arch/arm/mach-dove/include/mach/irqs.h
+++ b/arch/arm/mach-dove/include/mach/irqs.h
@@ -90,7 +90,7 @@
90#define NR_PMU_IRQS 7 90#define NR_PMU_IRQS 7
91#define IRQ_DOVE_RTC (IRQ_DOVE_PMU_START + 5) 91#define IRQ_DOVE_RTC (IRQ_DOVE_PMU_START + 5)
92 92
93#define NR_IRQS (IRQ_DOVE_PMU_START + NR_PMU_IRQS) 93#define DOVE_NR_IRQS (IRQ_DOVE_PMU_START + NR_PMU_IRQS)
94 94
95 95
96#endif 96#endif
diff --git a/arch/arm/mach-dove/include/mach/pm.h b/arch/arm/mach-dove/include/mach/pm.h
index b47f75038686..d22b9b174007 100644
--- a/arch/arm/mach-dove/include/mach/pm.h
+++ b/arch/arm/mach-dove/include/mach/pm.h
@@ -51,22 +51,14 @@
51#define CLOCK_GATING_GIGA_PHY_MASK (1 << CLOCK_GATING_BIT_GIGA_PHY) 51#define CLOCK_GATING_GIGA_PHY_MASK (1 << CLOCK_GATING_BIT_GIGA_PHY)
52 52
53#define PMU_INTERRUPT_CAUSE (DOVE_PMU_VIRT_BASE + 0x50) 53#define PMU_INTERRUPT_CAUSE (DOVE_PMU_VIRT_BASE + 0x50)
54#define PMU_INTERRUPT_MASK (DOVE_PMU_VIRT_BASE + 0x54)
55 54
56static inline int pmu_to_irq(int pin) 55#define PMU_SW_RST_VIDEO_MASK BIT(16)
57{ 56#define PMU_SW_RST_GPU_MASK BIT(18)
58 if (pin < NR_PMU_IRQS)
59 return pin + IRQ_DOVE_PMU_START;
60 57
61 return -EINVAL; 58#define PMU_PWR_GPU_PWR_DWN_MASK BIT(2)
62} 59#define PMU_PWR_VPU_PWR_DWN_MASK BIT(3)
63 60
64static inline int irq_to_pmu(int irq) 61#define PMU_ISO_VIDEO_MASK BIT(0)
65{ 62#define PMU_ISO_GPU_MASK BIT(1)
66 if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS)
67 return irq - IRQ_DOVE_PMU_START;
68
69 return -EINVAL;
70}
71 63
72#endif 64#endif
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index bfb3703357c5..d6627c1f7f30 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -7,87 +7,15 @@
7 * License version 2. This program is licensed "as is" without any 7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h> 10#include <linux/init.h>
13#include <linux/irq.h> 11#include <linux/irq.h>
14#include <linux/gpio.h>
15#include <linux/io.h> 12#include <linux/io.h>
16#include <asm/mach/arch.h> 13#include <asm/exception.h>
17#include <plat/irq.h> 14#include <plat/irq.h>
18#include <asm/mach/irq.h>
19#include <mach/pm.h>
20#include <mach/bridge-regs.h> 15#include <mach/bridge-regs.h>
21#include <plat/orion-gpio.h> 16#include <plat/orion-gpio.h>
22#include "common.h" 17#include "common.h"
23 18
24static void pmu_irq_mask(struct irq_data *d)
25{
26 int pin = irq_to_pmu(d->irq);
27 u32 u;
28
29 u = readl(PMU_INTERRUPT_MASK);
30 u &= ~(1 << (pin & 31));
31 writel(u, PMU_INTERRUPT_MASK);
32}
33
34static void pmu_irq_unmask(struct irq_data *d)
35{
36 int pin = irq_to_pmu(d->irq);
37 u32 u;
38
39 u = readl(PMU_INTERRUPT_MASK);
40 u |= 1 << (pin & 31);
41 writel(u, PMU_INTERRUPT_MASK);
42}
43
44static void pmu_irq_ack(struct irq_data *d)
45{
46 int pin = irq_to_pmu(d->irq);
47 u32 u;
48
49 /*
50 * The PMU mask register is not RW0C: it is RW. This means that
51 * the bits take whatever value is written to them; if you write
52 * a '1', you will set the interrupt.
53 *
54 * Unfortunately this means there is NO race free way to clear
55 * these interrupts.
56 *
57 * So, let's structure the code so that the window is as small as
58 * possible.
59 */
60 u = ~(1 << (pin & 31));
61 u &= readl_relaxed(PMU_INTERRUPT_CAUSE);
62 writel_relaxed(u, PMU_INTERRUPT_CAUSE);
63}
64
65static struct irq_chip pmu_irq_chip = {
66 .name = "pmu_irq",
67 .irq_mask = pmu_irq_mask,
68 .irq_unmask = pmu_irq_unmask,
69 .irq_ack = pmu_irq_ack,
70};
71
72static void pmu_irq_handler(struct irq_desc *desc)
73{
74 unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
75 unsigned int irq;
76
77 cause &= readl(PMU_INTERRUPT_MASK);
78 if (cause == 0) {
79 do_bad_IRQ(desc);
80 return;
81 }
82
83 for (irq = 0; irq < NR_PMU_IRQS; irq++) {
84 if (!(cause & (1 << irq)))
85 continue;
86 irq = pmu_to_irq(irq);
87 generic_handle_irq(irq);
88 }
89}
90
91static int __initdata gpio0_irqs[4] = { 19static int __initdata gpio0_irqs[4] = {
92 IRQ_DOVE_GPIO_0_7, 20 IRQ_DOVE_GPIO_0_7,
93 IRQ_DOVE_GPIO_8_15, 21 IRQ_DOVE_GPIO_8_15,
@@ -109,14 +37,6 @@ static int __initdata gpio2_irqs[4] = {
109 0, 37 0,
110}; 38};
111 39
112#ifdef CONFIG_MULTI_IRQ_HANDLER
113/*
114 * Compiling with both non-DT and DT support enabled, will
115 * break asm irq handler used by non-DT boards. Therefore,
116 * we provide a C-style irq handler even for non-DT boards,
117 * if MULTI_IRQ_HANDLER is set.
118 */
119
120static void __iomem *dove_irq_base = IRQ_VIRT_BASE; 40static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
121 41
122static asmlinkage void 42static asmlinkage void
@@ -139,18 +59,13 @@ __exception_irq_entry dove_legacy_handle_irq(struct pt_regs *regs)
139 return; 59 return;
140 } 60 }
141} 61}
142#endif
143 62
144void __init dove_init_irq(void) 63void __init dove_init_irq(void)
145{ 64{
146 int i;
147
148 orion_irq_init(1, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF); 65 orion_irq_init(1, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
149 orion_irq_init(33, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF); 66 orion_irq_init(33, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
150 67
151#ifdef CONFIG_MULTI_IRQ_HANDLER
152 set_handle_irq(dove_legacy_handle_irq); 68 set_handle_irq(dove_legacy_handle_irq);
153#endif
154 69
155 /* 70 /*
156 * Initialize gpiolib for GPIOs 0-71. 71 * Initialize gpiolib for GPIOs 0-71.
@@ -163,17 +78,4 @@ void __init dove_init_irq(void)
163 78
164 orion_gpio_init(NULL, 64, 8, DOVE_GPIO2_VIRT_BASE, 0, 79 orion_gpio_init(NULL, 64, 8, DOVE_GPIO2_VIRT_BASE, 0,
165 IRQ_DOVE_GPIO_START + 64, gpio2_irqs); 80 IRQ_DOVE_GPIO_START + 64, gpio2_irqs);
166
167 /*
168 * Mask and clear PMU interrupts
169 */
170 writel(0, PMU_INTERRUPT_MASK);
171 writel(0, PMU_INTERRUPT_CAUSE);
172
173 for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) {
174 irq_set_chip_and_handler(i, &pmu_irq_chip, handle_level_irq);
175 irq_set_status_flags(i, IRQ_LEVEL);
176 irq_clear_status_flags(i, IRQ_NOREQUEST);
177 }
178 irq_set_chained_handler(IRQ_DOVE_PMU, pmu_irq_handler);
179} 81}
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 2fa9d11c9d14..b01bdc9baf89 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -1,4 +1,4 @@
1config ARCH_INTEGRATOR 1menuconfig ARCH_INTEGRATOR
2 bool "ARM Ltd. Integrator family" 2 bool "ARM Ltd. Integrator family"
3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6 3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6
4 select ARM_AMBA 4 select ARM_AMBA
@@ -24,8 +24,6 @@ config ARCH_INTEGRATOR
24 24
25if ARCH_INTEGRATOR 25if ARCH_INTEGRATOR
26 26
27menu "Integrator Options"
28
29config ARCH_INTEGRATOR_AP 27config ARCH_INTEGRATOR_AP
30 bool "Support Integrator/AP and Integrator/PP2 platforms" 28 bool "Support Integrator/AP and Integrator/PP2 platforms"
31 select CLKSRC_MMIO 29 select CLKSRC_MMIO
@@ -37,19 +35,6 @@ config ARCH_INTEGRATOR_AP
37 Include support for the ARM(R) Integrator/AP and 35 Include support for the ARM(R) Integrator/AP and
38 Integrator/PP2 platforms. 36 Integrator/PP2 platforms.
39 37
40config ARCH_INTEGRATOR_CP
41 bool "Support Integrator/CP platform"
42 select ARCH_CINTEGRATOR
43 select ARM_TIMER_SP804
44 select SERIAL_AMBA_PL011 if TTY
45 select SERIAL_AMBA_PL011_CONSOLE if TTY
46 select SOC_BUS
47 help
48 Include support for the ARM(R) Integrator CP platform.
49
50config ARCH_CINTEGRATOR
51 bool
52
53config INTEGRATOR_IMPD1 38config INTEGRATOR_IMPD1
54 bool "Include support for Integrator/IM-PD1" 39 bool "Include support for Integrator/IM-PD1"
55 depends on ARCH_INTEGRATOR_AP 40 depends on ARCH_INTEGRATOR_AP
@@ -64,6 +49,119 @@ config INTEGRATOR_IMPD1
64 To compile this driver as a module, choose M here: the 49 To compile this driver as a module, choose M here: the
65 module will be called impd1. 50 module will be called impd1.
66 51
67endmenu 52config INTEGRATOR_CM7TDMI
53 bool "Integrator/CM7TDMI core module"
54 depends on ARCH_INTEGRATOR_AP
55 depends on ARCH_MULTI_V4 && !MMU
56 select CPU_ARM7TDMI
57
58config INTEGRATOR_CM720T
59 bool "Integrator/CM720T core module"
60 depends on ARCH_INTEGRATOR_AP
61 depends on ARCH_MULTI_V4T
62 select CPU_ARM720T
63
64config INTEGRATOR_CM740T
65 bool "Integrator/CM740T core module"
66 depends on ARCH_INTEGRATOR_AP
67 depends on ARCH_MULTI_V4T && !MMU
68 select CPU_ARM740T
69
70config INTEGRATOR_CM920T
71 bool "Integrator/CM920T core module"
72 depends on ARCH_INTEGRATOR_AP
73 depends on ARCH_MULTI_V4T
74 select CPU_ARM920T
75
76config INTEGRATOR_CM922T_XA10
77 bool "Integrator/CM922T-XA10 core module"
78 depends on ARCH_MULTI_V4T
79 depends on ARCH_INTEGRATOR_AP
80 select CPU_ARM922T
81
82config INTEGRATOR_CM926EJS
83 bool "Integrator/CM926EJ-S core module"
84 depends on ARCH_INTEGRATOR_AP
85 depends on ARCH_MULTI_V5
86 select CPU_ARM926T
87
88config INTEGRATOR_CM940T
89 bool "Integrator/CM940T core module"
90 depends on ARCH_INTEGRATOR_AP
91 depends on ARCH_MULTI_V4T && !MMU
92 select CPU_ARM940T
93
94config INTEGRATOR_CM946ES
95 bool "Integrator/CM946E-S core module"
96 depends on ARCH_INTEGRATOR_AP
97 depends on ARCH_MULTI_V5 && !MMU
98 select CPU_ARM946E
99
100config INTEGRATOR_CM966ES
101 bool "Integrator/CM966E-S core module"
102 depends on ARCH_INTEGRATOR_AP
103 depends on BROKEN # no kernel support
104
105config INTEGRATOR_CM10200E_REV0
106 bool "Integrator/CM10200E rev.0 core module"
107 depends on ARCH_INTEGRATOR_AP && n
108 depends on ARCH_MULTI_V5
109 select CPU_ARM1020
110
111config INTEGRATOR_CM10200E
112 bool "Integrator/CM10200E core module"
113 depends on ARCH_INTEGRATOR_AP && n
114 depends on ARCH_MULTI_V5
115 select CPU_ARM1020E
116
117config INTEGRATOR_CM10220E
118 bool "Integrator/CM10220E core module"
119 depends on ARCH_INTEGRATOR_AP
120 depends on ARCH_MULTI_V5
121 select CPU_ARM1022
122
123config INTEGRATOR_CM1026EJS
124 bool "Integrator/CM1026EJ-S core module"
125 depends on ARCH_INTEGRATOR_AP
126 depends on ARCH_MULTI_V5
127 select CPU_ARM1026
128
129config INTEGRATOR_CM1136JFS
130 bool "Integrator/CM1136JF-S core module"
131 depends on ARCH_INTEGRATOR_AP
132 depends on ARCH_MULTI_V6
133 select CPU_V6
134
135config ARCH_INTEGRATOR_CP
136 bool "Support Integrator/CP platform"
137 depends on (!MMU || ARCH_MULTI_V5 || ARCH_MULTI_V6)
138 select ARM_TIMER_SP804
139 select SERIAL_AMBA_PL011 if TTY
140 select SERIAL_AMBA_PL011_CONSOLE if TTY
141 select SOC_BUS
142 help
143 Include support for the ARM(R) Integrator CP platform.
144
145config INTEGRATOR_CT7T
146 bool "Integrator/CT7TD (ARM7TDMI) core tile"
147 depends on ARCH_INTEGRATOR_CP
148 depends on ARCH_MULTI_V4T && !MMU
149 select CPU_ARM7TDMI
150
151config INTEGRATOR_CT926
152 bool "Integrator/CT926 (ARM926EJ-S) core tile"
153 depends on ARCH_INTEGRATOR_CP
154 depends on ARCH_MULTI_V5
155 select CPU_ARM926T
156
157config INTEGRATOR_CTB36
158 bool "Integrator/CTB36 (ARM1136JF-S) core tile"
159 depends on ARCH_INTEGRATOR_CP
160 depends on ARCH_MULTI_V6
161 select CPU_V6
162
163config ARCH_CINTEGRATOR
164 depends on ARCH_INTEGRATOR_CP
165 def_bool y
68 166
69endif 167endif
diff --git a/arch/arm/mach-iop13xx/include/mach/pci.h b/arch/arm/mach-iop13xx/include/mach/pci.h
deleted file mode 100644
index 59f42b535572..000000000000
--- a/arch/arm/mach-iop13xx/include/mach/pci.h
+++ /dev/null
@@ -1,57 +0,0 @@
1#ifndef _IOP13XX_PCI_H_
2#define _IOP13XX_PCI_H_
3#include <linux/io.h>
4#include <mach/irqs.h>
5
6struct pci_sys_data;
7struct hw_pci;
8int iop13xx_pci_setup(int nr, struct pci_sys_data *sys);
9struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *);
10void iop13xx_atu_select(struct hw_pci *plat_pci);
11void iop13xx_pci_init(void);
12void iop13xx_map_pci_memory(void);
13
14#define IOP_PCI_STATUS_ERROR (PCI_STATUS_PARITY | \
15 PCI_STATUS_SIG_TARGET_ABORT | \
16 PCI_STATUS_REC_TARGET_ABORT | \
17 PCI_STATUS_REC_TARGET_ABORT | \
18 PCI_STATUS_REC_MASTER_ABORT | \
19 PCI_STATUS_SIG_SYSTEM_ERROR | \
20 PCI_STATUS_DETECTED_PARITY)
21
22#define IOP13XX_ATUE_ATUISR_ERROR (IOP13XX_ATUE_STAT_HALT_ON_ERROR | \
23 IOP13XX_ATUE_STAT_ROOT_SYS_ERR | \
24 IOP13XX_ATUE_STAT_PCI_IFACE_ERR | \
25 IOP13XX_ATUE_STAT_ERR_COR | \
26 IOP13XX_ATUE_STAT_ERR_UNCOR | \
27 IOP13XX_ATUE_STAT_CRS | \
28 IOP13XX_ATUE_STAT_DET_PAR_ERR | \
29 IOP13XX_ATUE_STAT_EXT_REC_MABORT | \
30 IOP13XX_ATUE_STAT_SIG_TABORT | \
31 IOP13XX_ATUE_STAT_EXT_REC_TABORT | \
32 IOP13XX_ATUE_STAT_MASTER_DATA_PAR)
33
34#define IOP13XX_ATUX_ATUISR_ERROR (IOP13XX_ATUX_STAT_TX_SCEM | \
35 IOP13XX_ATUX_STAT_REC_SCEM | \
36 IOP13XX_ATUX_STAT_TX_SERR | \
37 IOP13XX_ATUX_STAT_DET_PAR_ERR | \
38 IOP13XX_ATUX_STAT_INT_REC_MABORT | \
39 IOP13XX_ATUX_STAT_REC_SERR | \
40 IOP13XX_ATUX_STAT_EXT_REC_MABORT | \
41 IOP13XX_ATUX_STAT_EXT_REC_TABORT | \
42 IOP13XX_ATUX_STAT_EXT_SIG_TABORT | \
43 IOP13XX_ATUX_STAT_MASTER_DATA_PAR)
44
45/* PCI interrupts
46 */
47#define ATUX_INTA IRQ_IOP13XX_XINT0
48#define ATUX_INTB IRQ_IOP13XX_XINT1
49#define ATUX_INTC IRQ_IOP13XX_XINT2
50#define ATUX_INTD IRQ_IOP13XX_XINT3
51
52#define ATUE_INTA IRQ_IOP13XX_ATUE_IMA
53#define ATUE_INTB IRQ_IOP13XX_ATUE_IMB
54#define ATUE_INTC IRQ_IOP13XX_ATUE_IMC
55#define ATUE_INTD IRQ_IOP13XX_ATUE_IMD
56
57#endif /* _IOP13XX_PCI_H_ */
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c
index 9cd07d396093..d255ab5ad1a5 100644
--- a/arch/arm/mach-iop13xx/iq81340mc.c
+++ b/arch/arm/mach-iop13xx/iq81340mc.c
@@ -23,7 +23,7 @@
23#include <asm/mach/pci.h> 23#include <asm/mach/pci.h>
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26#include <mach/pci.h> 26#include "pci.h"
27#include <asm/mach/time.h> 27#include <asm/mach/time.h>
28#include <mach/time.h> 28#include <mach/time.h>
29 29
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c
index b3ec11cb707e..33eeaf1fa11d 100644
--- a/arch/arm/mach-iop13xx/iq81340sc.c
+++ b/arch/arm/mach-iop13xx/iq81340sc.c
@@ -23,7 +23,7 @@
23#include <asm/mach/pci.h> 23#include <asm/mach/pci.h>
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26#include <mach/pci.h> 26#include "pci.h"
27#include <asm/mach/time.h> 27#include <asm/mach/time.h>
28#include <mach/time.h> 28#include <mach/time.h>
29 29
diff --git a/arch/arm/mach-iop13xx/irq.c b/arch/arm/mach-iop13xx/irq.c
index 623d85a4af2d..c702cc4092de 100644
--- a/arch/arm/mach-iop13xx/irq.c
+++ b/arch/arm/mach-iop13xx/irq.c
@@ -25,7 +25,7 @@
25#include <asm/irq.h> 25#include <asm/irq.h>
26#include <mach/hardware.h> 26#include <mach/hardware.h>
27#include <mach/irqs.h> 27#include <mach/irqs.h>
28#include <mach/msi.h> 28#include "msi.h"
29 29
30/* INTCTL0 CP6 R0 Page 4 30/* INTCTL0 CP6 R0 Page 4
31 */ 31 */
diff --git a/arch/arm/mach-iop13xx/include/mach/msi.h b/arch/arm/mach-iop13xx/msi.h
index b80c5ae17e99..b80c5ae17e99 100644
--- a/arch/arm/mach-iop13xx/include/mach/msi.h
+++ b/arch/arm/mach-iop13xx/msi.h
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
index 9082b84aeebb..204eb4460271 100644
--- a/arch/arm/mach-iop13xx/pci.c
+++ b/arch/arm/mach-iop13xx/pci.c
@@ -27,7 +27,7 @@
27#include <asm/sizes.h> 27#include <asm/sizes.h>
28#include <asm/signal.h> 28#include <asm/signal.h>
29#include <asm/mach/pci.h> 29#include <asm/mach/pci.h>
30#include <mach/pci.h> 30#include "pci.h"
31 31
32#define IOP13XX_PCI_DEBUG 0 32#define IOP13XX_PCI_DEBUG 0
33#define PRINTK(x...) ((void)(IOP13XX_PCI_DEBUG && printk(x))) 33#define PRINTK(x...) ((void)(IOP13XX_PCI_DEBUG && printk(x)))
diff --git a/arch/arm/mach-iop13xx/pci.h b/arch/arm/mach-iop13xx/pci.h
index d45a80b3080e..71b9c57e1fde 100644
--- a/arch/arm/mach-iop13xx/pci.h
+++ b/arch/arm/mach-iop13xx/pci.h
@@ -1,6 +1,64 @@
1#ifndef _IOP13XX_PCI_H_
2#define _IOP13XX_PCI_H_
3#include <linux/io.h>
4#include <mach/irqs.h>
5
1#include <linux/types.h> 6#include <linux/types.h>
2 7
3extern void __iomem *iop13xx_atue_mem_base; 8extern void __iomem *iop13xx_atue_mem_base;
4extern void __iomem *iop13xx_atux_mem_base; 9extern void __iomem *iop13xx_atux_mem_base;
5extern size_t iop13xx_atue_mem_size; 10extern size_t iop13xx_atue_mem_size;
6extern size_t iop13xx_atux_mem_size; 11extern size_t iop13xx_atux_mem_size;
12
13struct pci_sys_data;
14struct hw_pci;
15int iop13xx_pci_setup(int nr, struct pci_sys_data *sys);
16struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *);
17void iop13xx_atu_select(struct hw_pci *plat_pci);
18void iop13xx_pci_init(void);
19void iop13xx_map_pci_memory(void);
20
21#define IOP_PCI_STATUS_ERROR (PCI_STATUS_PARITY | \
22 PCI_STATUS_SIG_TARGET_ABORT | \
23 PCI_STATUS_REC_TARGET_ABORT | \
24 PCI_STATUS_REC_TARGET_ABORT | \
25 PCI_STATUS_REC_MASTER_ABORT | \
26 PCI_STATUS_SIG_SYSTEM_ERROR | \
27 PCI_STATUS_DETECTED_PARITY)
28
29#define IOP13XX_ATUE_ATUISR_ERROR (IOP13XX_ATUE_STAT_HALT_ON_ERROR | \
30 IOP13XX_ATUE_STAT_ROOT_SYS_ERR | \
31 IOP13XX_ATUE_STAT_PCI_IFACE_ERR | \
32 IOP13XX_ATUE_STAT_ERR_COR | \
33 IOP13XX_ATUE_STAT_ERR_UNCOR | \
34 IOP13XX_ATUE_STAT_CRS | \
35 IOP13XX_ATUE_STAT_DET_PAR_ERR | \
36 IOP13XX_ATUE_STAT_EXT_REC_MABORT | \
37 IOP13XX_ATUE_STAT_SIG_TABORT | \
38 IOP13XX_ATUE_STAT_EXT_REC_TABORT | \
39 IOP13XX_ATUE_STAT_MASTER_DATA_PAR)
40
41#define IOP13XX_ATUX_ATUISR_ERROR (IOP13XX_ATUX_STAT_TX_SCEM | \
42 IOP13XX_ATUX_STAT_REC_SCEM | \
43 IOP13XX_ATUX_STAT_TX_SERR | \
44 IOP13XX_ATUX_STAT_DET_PAR_ERR | \
45 IOP13XX_ATUX_STAT_INT_REC_MABORT | \
46 IOP13XX_ATUX_STAT_REC_SERR | \
47 IOP13XX_ATUX_STAT_EXT_REC_MABORT | \
48 IOP13XX_ATUX_STAT_EXT_REC_TABORT | \
49 IOP13XX_ATUX_STAT_EXT_SIG_TABORT | \
50 IOP13XX_ATUX_STAT_MASTER_DATA_PAR)
51
52/* PCI interrupts
53 */
54#define ATUX_INTA IRQ_IOP13XX_XINT0
55#define ATUX_INTB IRQ_IOP13XX_XINT1
56#define ATUX_INTC IRQ_IOP13XX_XINT2
57#define ATUX_INTD IRQ_IOP13XX_XINT3
58
59#define ATUE_INTA IRQ_IOP13XX_ATUE_IMA
60#define ATUE_INTB IRQ_IOP13XX_ATUE_IMB
61#define ATUE_INTC IRQ_IOP13XX_ATUE_IMC
62#define ATUE_INTD IRQ_IOP13XX_ATUE_IMD
63
64#endif /* _IOP13XX_PCI_H_ */
diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c
index 9f9c0441a917..e4d709c8ed32 100644
--- a/arch/arm/mach-ks8695/board-acs5k.c
+++ b/arch/arm/mach-ks8695/board-acs5k.c
@@ -33,7 +33,7 @@
33#include <asm/mach/map.h> 33#include <asm/mach/map.h>
34#include <asm/mach/irq.h> 34#include <asm/mach/irq.h>
35 35
36#include <mach/devices.h> 36#include "devices.h"
37#include <mach/gpio-ks8695.h> 37#include <mach/gpio-ks8695.h>
38 38
39#include "generic.h" 39#include "generic.h"
diff --git a/arch/arm/mach-ks8695/board-dsm320.c b/arch/arm/mach-ks8695/board-dsm320.c
index d37c218c3584..13537e9c5485 100644
--- a/arch/arm/mach-ks8695/board-dsm320.c
+++ b/arch/arm/mach-ks8695/board-dsm320.c
@@ -28,7 +28,7 @@
28#include <asm/mach/map.h> 28#include <asm/mach/map.h>
29#include <asm/mach/irq.h> 29#include <asm/mach/irq.h>
30 30
31#include <mach/devices.h> 31#include "devices.h"
32#include <mach/gpio-ks8695.h> 32#include <mach/gpio-ks8695.h>
33 33
34#include "generic.h" 34#include "generic.h"
diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c
index 3acbdfd31391..69cfb9935fc1 100644
--- a/arch/arm/mach-ks8695/board-micrel.c
+++ b/arch/arm/mach-ks8695/board-micrel.c
@@ -19,7 +19,7 @@
19#include <asm/mach/irq.h> 19#include <asm/mach/irq.h>
20 20
21#include <mach/gpio-ks8695.h> 21#include <mach/gpio-ks8695.h>
22#include <mach/devices.h> 22#include "devices.h"
23 23
24#include "generic.h" 24#include "generic.h"
25 25
diff --git a/arch/arm/mach-ks8695/board-og.c b/arch/arm/mach-ks8695/board-og.c
index f2658168eeff..1f4f2f4f25bb 100644
--- a/arch/arm/mach-ks8695/board-og.c
+++ b/arch/arm/mach-ks8695/board-og.c
@@ -18,7 +18,7 @@
18#include <asm/mach-types.h> 18#include <asm/mach-types.h>
19#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20#include <asm/mach/map.h> 20#include <asm/mach/map.h>
21#include <mach/devices.h> 21#include "devices.h"
22#include <mach/regs-gpio.h> 22#include <mach/regs-gpio.h>
23#include <mach/gpio-ks8695.h> 23#include <mach/gpio-ks8695.h>
24#include "generic.h" 24#include "generic.h"
diff --git a/arch/arm/mach-ks8695/board-sg.c b/arch/arm/mach-ks8695/board-sg.c
index fdf2352d2cf8..46e455c3821b 100644
--- a/arch/arm/mach-ks8695/board-sg.c
+++ b/arch/arm/mach-ks8695/board-sg.c
@@ -16,7 +16,7 @@
16#include <linux/mtd/partitions.h> 16#include <linux/mtd/partitions.h>
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18#include <asm/mach/arch.h> 18#include <asm/mach/arch.h>
19#include <mach/devices.h> 19#include "devices.h"
20#include "generic.h" 20#include "generic.h"
21 21
22/* 22/*
diff --git a/arch/arm/mach-ks8695/cpu.c b/arch/arm/mach-ks8695/cpu.c
index ddb24222918e..474a050da85b 100644
--- a/arch/arm/mach-ks8695/cpu.c
+++ b/arch/arm/mach-ks8695/cpu.c
@@ -30,7 +30,7 @@
30#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
31#include <asm/mach/map.h> 31#include <asm/mach/map.h>
32 32
33#include <mach/regs-sys.h> 33#include "regs-sys.h"
34#include <mach/regs-misc.h> 34#include <mach/regs-misc.h>
35 35
36 36
diff --git a/arch/arm/mach-ks8695/devices.c b/arch/arm/mach-ks8695/devices.c
index 47399bc3c024..61cf20beb45f 100644
--- a/arch/arm/mach-ks8695/devices.c
+++ b/arch/arm/mach-ks8695/devices.c
@@ -24,9 +24,9 @@
24#include <linux/platform_device.h> 24#include <linux/platform_device.h>
25 25
26#include <mach/irqs.h> 26#include <mach/irqs.h>
27#include <mach/regs-wan.h> 27#include "regs-wan.h"
28#include <mach/regs-lan.h> 28#include "regs-lan.h"
29#include <mach/regs-hpna.h> 29#include "regs-hpna.h"
30#include <mach/regs-switch.h> 30#include <mach/regs-switch.h>
31#include <mach/regs-misc.h> 31#include <mach/regs-misc.h>
32 32
diff --git a/arch/arm/mach-ks8695/include/mach/devices.h b/arch/arm/mach-ks8695/devices.h
index 1e6594a0f297..1e6594a0f297 100644
--- a/arch/arm/mach-ks8695/include/mach/devices.h
+++ b/arch/arm/mach-ks8695/devices.h
diff --git a/arch/arm/mach-ks8695/pci.c b/arch/arm/mach-ks8695/pci.c
index c1bc4c3716ed..577a35f75c8a 100644
--- a/arch/arm/mach-ks8695/pci.c
+++ b/arch/arm/mach-ks8695/pci.c
@@ -33,8 +33,8 @@
33#include <asm/mach/pci.h> 33#include <asm/mach/pci.h>
34#include <mach/hardware.h> 34#include <mach/hardware.h>
35 35
36#include <mach/devices.h> 36#include "devices.h"
37#include <mach/regs-pci.h> 37#include "regs-pci.h"
38 38
39 39
40static int pci_dbg; 40static int pci_dbg;
diff --git a/arch/arm/mach-ks8695/include/mach/regs-hpna.h b/arch/arm/mach-ks8695/regs-hpna.h
index 815ce5c2e3b9..815ce5c2e3b9 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-hpna.h
+++ b/arch/arm/mach-ks8695/regs-hpna.h
diff --git a/arch/arm/mach-ks8695/include/mach/regs-lan.h b/arch/arm/mach-ks8695/regs-lan.h
index 82c5f3791afb..82c5f3791afb 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-lan.h
+++ b/arch/arm/mach-ks8695/regs-lan.h
diff --git a/arch/arm/mach-ks8695/include/mach/regs-mem.h b/arch/arm/mach-ks8695/regs-mem.h
index 55806bc68ce3..55806bc68ce3 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-mem.h
+++ b/arch/arm/mach-ks8695/regs-mem.h
diff --git a/arch/arm/mach-ks8695/include/mach/regs-pci.h b/arch/arm/mach-ks8695/regs-pci.h
index 75a9db6edbd9..75a9db6edbd9 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-pci.h
+++ b/arch/arm/mach-ks8695/regs-pci.h
diff --git a/arch/arm/mach-ks8695/include/mach/regs-sys.h b/arch/arm/mach-ks8695/regs-sys.h
index 57c20be0c129..57c20be0c129 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-sys.h
+++ b/arch/arm/mach-ks8695/regs-sys.h
diff --git a/arch/arm/mach-ks8695/include/mach/regs-wan.h b/arch/arm/mach-ks8695/regs-wan.h
index c475bed22b8e..c475bed22b8e 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-wan.h
+++ b/arch/arm/mach-ks8695/regs-wan.h
diff --git a/arch/arm/mach-mmp/Kconfig b/arch/arm/mach-mmp/Kconfig
index fdbfadf00c84..01c57d369462 100644
--- a/arch/arm/mach-mmp/Kconfig
+++ b/arch/arm/mach-mmp/Kconfig
@@ -1,9 +1,22 @@
1menuconfig ARCH_MMP
2 bool "Marvell PXA168/910/MMP2"
3 depends on ARCH_MULTI_V5 || ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select GPIO_PXA
6 select PINCTRL
7 select PLAT_PXA
8 help
9 Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
10
1if ARCH_MMP 11if ARCH_MMP
2 12
3menu "Marvell PXA168/910/MMP2 Implmentations" 13menu "Marvell PXA168/910/MMP2 Implementations"
14
15if ATAGS
4 16
5config MACH_ASPENITE 17config MACH_ASPENITE
6 bool "Marvell's PXA168 Aspenite Development Board" 18 bool "Marvell's PXA168 Aspenite Development Board"
19 depends on ARCH_MULTI_V5
7 select CPU_PXA168 20 select CPU_PXA168
8 help 21 help
9 Say 'Y' here if you want to support the Marvell PXA168-based 22 Say 'Y' here if you want to support the Marvell PXA168-based
@@ -11,6 +24,7 @@ config MACH_ASPENITE
11 24
12config MACH_ZYLONITE2 25config MACH_ZYLONITE2
13 bool "Marvell's PXA168 Zylonite2 Development Board" 26 bool "Marvell's PXA168 Zylonite2 Development Board"
27 depends on ARCH_MULTI_V5
14 select CPU_PXA168 28 select CPU_PXA168
15 help 29 help
16 Say 'Y' here if you want to support the Marvell PXA168-based 30 Say 'Y' here if you want to support the Marvell PXA168-based
@@ -18,6 +32,7 @@ config MACH_ZYLONITE2
18 32
19config MACH_AVENGERS_LITE 33config MACH_AVENGERS_LITE
20 bool "Marvell's PXA168 Avengers Lite Development Board" 34 bool "Marvell's PXA168 Avengers Lite Development Board"
35 depends on ARCH_MULTI_V5
21 select CPU_PXA168 36 select CPU_PXA168
22 help 37 help
23 Say 'Y' here if you want to support the Marvell PXA168-based 38 Say 'Y' here if you want to support the Marvell PXA168-based
@@ -25,6 +40,7 @@ config MACH_AVENGERS_LITE
25 40
26config MACH_TAVOREVB 41config MACH_TAVOREVB
27 bool "Marvell's PXA910 TavorEVB Development Board" 42 bool "Marvell's PXA910 TavorEVB Development Board"
43 depends on ARCH_MULTI_V5
28 select CPU_PXA910 44 select CPU_PXA910
29 help 45 help
30 Say 'Y' here if you want to support the Marvell PXA910-based 46 Say 'Y' here if you want to support the Marvell PXA910-based
@@ -32,6 +48,7 @@ config MACH_TAVOREVB
32 48
33config MACH_TTC_DKB 49config MACH_TTC_DKB
34 bool "Marvell's PXA910 TavorEVB Development Board" 50 bool "Marvell's PXA910 TavorEVB Development Board"
51 depends on ARCH_MULTI_V5
35 select CPU_PXA910 52 select CPU_PXA910
36 help 53 help
37 Say 'Y' here if you want to support the Marvell PXA910-based 54 Say 'Y' here if you want to support the Marvell PXA910-based
@@ -39,7 +56,7 @@ config MACH_TTC_DKB
39 56
40config MACH_BROWNSTONE 57config MACH_BROWNSTONE
41 bool "Marvell's Brownstone Development Platform" 58 bool "Marvell's Brownstone Development Platform"
42 depends on !CPU_MOHAWK 59 depends on ARCH_MULTI_V7
43 select CPU_MMP2 60 select CPU_MMP2
44 help 61 help
45 Say 'Y' here if you want to support the Marvell MMP2-based 62 Say 'Y' here if you want to support the Marvell MMP2-based
@@ -50,7 +67,7 @@ config MACH_BROWNSTONE
50 67
51config MACH_FLINT 68config MACH_FLINT
52 bool "Marvell's Flint Development Platform" 69 bool "Marvell's Flint Development Platform"
53 depends on !CPU_MOHAWK 70 depends on ARCH_MULTI_V7
54 select CPU_MMP2 71 select CPU_MMP2
55 help 72 help
56 Say 'Y' here if you want to support the Marvell MMP2-based 73 Say 'Y' here if you want to support the Marvell MMP2-based
@@ -61,7 +78,7 @@ config MACH_FLINT
61 78
62config MACH_MARVELL_JASPER 79config MACH_MARVELL_JASPER
63 bool "Marvell's Jasper Development Platform" 80 bool "Marvell's Jasper Development Platform"
64 depends on !CPU_MOHAWK 81 depends on ARCH_MULTI_V7
65 select CPU_MMP2 82 select CPU_MMP2
66 help 83 help
67 Say 'Y' here if you want to support the Marvell MMP2-base 84 Say 'Y' here if you want to support the Marvell MMP2-base
@@ -72,6 +89,7 @@ config MACH_MARVELL_JASPER
72 89
73config MACH_TETON_BGA 90config MACH_TETON_BGA
74 bool "Marvell's PXA168 Teton BGA Development Board" 91 bool "Marvell's PXA168 Teton BGA Development Board"
92 depends on ARCH_MULTI_V5
75 select CPU_PXA168 93 select CPU_PXA168
76 help 94 help
77 Say 'Y' here if you want to support the Marvell PXA168-based 95 Say 'Y' here if you want to support the Marvell PXA168-based
@@ -79,14 +97,16 @@ config MACH_TETON_BGA
79 97
80config MACH_GPLUGD 98config MACH_GPLUGD
81 bool "Marvell's PXA168 GuruPlug Display (gplugD) Board" 99 bool "Marvell's PXA168 GuruPlug Display (gplugD) Board"
100 depends on ARCH_MULTI_V5
82 select CPU_PXA168 101 select CPU_PXA168
83 help 102 help
84 Say 'Y' here if you want to support the Marvell PXA168-based 103 Say 'Y' here if you want to support the Marvell PXA168-based
85 GuruPlug Display (gplugD) Board 104 GuruPlug Display (gplugD) Board
105endif
86 106
87config MACH_MMP_DT 107config MACH_MMP_DT
88 bool "Support MMP (ARMv5) platforms from device tree" 108 bool "Support MMP (ARMv5) platforms from device tree"
89 select USE_OF 109 depends on ARCH_MULTI_V5
90 select PINCTRL 110 select PINCTRL
91 select PINCTRL_SINGLE 111 select PINCTRL_SINGLE
92 select COMMON_CLK 112 select COMMON_CLK
@@ -99,11 +119,9 @@ config MACH_MMP_DT
99 119
100config MACH_MMP2_DT 120config MACH_MMP2_DT
101 bool "Support MMP2 (ARMv7) platforms from device tree" 121 bool "Support MMP2 (ARMv7) platforms from device tree"
102 depends on !CPU_MOHAWK 122 depends on ARCH_MULTI_V7
103 select USE_OF
104 select PINCTRL 123 select PINCTRL
105 select PINCTRL_SINGLE 124 select PINCTRL_SINGLE
106 select COMMON_CLK
107 select ARCH_HAS_RESET_CONTROLLER 125 select ARCH_HAS_RESET_CONTROLLER
108 select CPU_PJ4 126 select CPU_PJ4
109 help 127 help
diff --git a/arch/arm/mach-mmp/Makefile b/arch/arm/mach-mmp/Makefile
index 98f0f6388e44..7677ad5414e9 100644
--- a/arch/arm/mach-mmp/Makefile
+++ b/arch/arm/mach-mmp/Makefile
@@ -1,6 +1,7 @@
1# 1#
2# Makefile for Marvell's PXA168 processors line 2# Makefile for Marvell's PXA168 processors line
3# 3#
4ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-pxa/include
4 5
5obj-y += common.o devices.o time.o 6obj-y += common.o devices.o time.o
6 7
diff --git a/arch/arm/mach-mmp/include/mach/addr-map.h b/arch/arm/mach-mmp/addr-map.h
index f88a44c0ef91..2739d27bc89d 100644
--- a/arch/arm/mach-mmp/include/mach/addr-map.h
+++ b/arch/arm/mach-mmp/addr-map.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/addr-map.h
3 *
4 * Common address map definitions 2 * Common address map definitions
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index 7e0248582efd..5db0edf716dd 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -22,14 +22,14 @@
22 22
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <mach/addr-map.h>
26#include <mach/mfp-pxa168.h>
27#include <mach/pxa168.h>
28#include <mach/irqs.h>
29#include <video/pxa168fb.h> 25#include <video/pxa168fb.h>
30#include <linux/input.h> 26#include <linux/input.h>
31#include <linux/platform_data/keypad-pxa27x.h> 27#include <linux/platform_data/keypad-pxa27x.h>
32 28
29#include "addr-map.h"
30#include "mfp-pxa168.h"
31#include "pxa168.h"
32#include "irqs.h"
33#include "common.h" 33#include "common.h"
34 34
35static unsigned long common_pin_config[] __initdata = { 35static unsigned long common_pin_config[] __initdata = {
diff --git a/arch/arm/mach-mmp/avengers_lite.c b/arch/arm/mach-mmp/avengers_lite.c
index a451a0f4d512..3d2aea830ef7 100644
--- a/arch/arm/mach-mmp/avengers_lite.c
+++ b/arch/arm/mach-mmp/avengers_lite.c
@@ -17,10 +17,10 @@
17 17
18#include <asm/mach-types.h> 18#include <asm/mach-types.h>
19#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20#include <mach/addr-map.h> 20#include "addr-map.h"
21#include <mach/mfp-pxa168.h> 21#include "mfp-pxa168.h"
22#include <mach/pxa168.h> 22#include "pxa168.h"
23#include <mach/irqs.h> 23#include "irqs.h"
24 24
25 25
26#include "common.h" 26#include "common.h"
diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c
index ac25544b8cdb..d1613b954926 100644
--- a/arch/arm/mach-mmp/brownstone.c
+++ b/arch/arm/mach-mmp/brownstone.c
@@ -22,10 +22,10 @@
22 22
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <mach/addr-map.h> 25#include "addr-map.h"
26#include <mach/mfp-mmp2.h> 26#include "mfp-mmp2.h"
27#include <mach/mmp2.h> 27#include "mmp2.h"
28#include <mach/irqs.h> 28#include "irqs.h"
29 29
30#include "common.h" 30#include "common.h"
31 31
diff --git a/arch/arm/mach-mmp/clock-mmp2.c b/arch/arm/mach-mmp/clock-mmp2.c
index 53d77cbd6000..835c3e7cc67e 100644
--- a/arch/arm/mach-mmp/clock-mmp2.c
+++ b/arch/arm/mach-mmp/clock-mmp2.c
@@ -4,8 +4,9 @@
4#include <linux/list.h> 4#include <linux/list.h>
5#include <linux/io.h> 5#include <linux/io.h>
6#include <linux/clk.h> 6#include <linux/clk.h>
7#include <linux/clk/mmp.h>
7 8
8#include <mach/addr-map.h> 9#include "addr-map.h"
9 10
10#include "common.h" 11#include "common.h"
11#include "clock.h" 12#include "clock.h"
@@ -105,7 +106,8 @@ static struct clk_lookup mmp2_clkregs[] = {
105 INIT_CLKREG(&clk_sdh3, "sdhci-pxav3.3", "PXA-SDHCLK"), 106 INIT_CLKREG(&clk_sdh3, "sdhci-pxav3.3", "PXA-SDHCLK"),
106}; 107};
107 108
108void __init mmp2_clk_init(void) 109void __init mmp2_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
110 phys_addr_t apbc_phys)
109{ 111{
110 clkdev_add_table(ARRAY_AND_SIZE(mmp2_clkregs)); 112 clkdev_add_table(ARRAY_AND_SIZE(mmp2_clkregs));
111} 113}
diff --git a/arch/arm/mach-mmp/clock-pxa168.c b/arch/arm/mach-mmp/clock-pxa168.c
index c572f219ae26..f726a3692431 100644
--- a/arch/arm/mach-mmp/clock-pxa168.c
+++ b/arch/arm/mach-mmp/clock-pxa168.c
@@ -4,8 +4,9 @@
4#include <linux/list.h> 4#include <linux/list.h>
5#include <linux/io.h> 5#include <linux/io.h>
6#include <linux/clk.h> 6#include <linux/clk.h>
7#include <linux/clk/mmp.h>
7 8
8#include <mach/addr-map.h> 9#include "addr-map.h"
9 10
10#include "common.h" 11#include "common.h"
11#include "clock.h" 12#include "clock.h"
@@ -85,7 +86,8 @@ static struct clk_lookup pxa168_clkregs[] = {
85 INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL), 86 INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
86}; 87};
87 88
88void __init pxa168_clk_init(void) 89void __init pxa168_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
90 phys_addr_t apbc_phys)
89{ 91{
90 clkdev_add_table(ARRAY_AND_SIZE(pxa168_clkregs)); 92 clkdev_add_table(ARRAY_AND_SIZE(pxa168_clkregs));
91} 93}
diff --git a/arch/arm/mach-mmp/clock-pxa910.c b/arch/arm/mach-mmp/clock-pxa910.c
index 379e1df61c70..bca60a224e07 100644
--- a/arch/arm/mach-mmp/clock-pxa910.c
+++ b/arch/arm/mach-mmp/clock-pxa910.c
@@ -4,8 +4,9 @@
4#include <linux/list.h> 4#include <linux/list.h>
5#include <linux/io.h> 5#include <linux/io.h>
6#include <linux/clk.h> 6#include <linux/clk.h>
7#include <linux/clk/mmp.h>
7 8
8#include <mach/addr-map.h> 9#include "addr-map.h"
9 10
10#include "common.h" 11#include "common.h"
11#include "clock.h" 12#include "clock.h"
@@ -61,7 +62,8 @@ static struct clk_lookup pxa910_clkregs[] = {
61 INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL), 62 INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
62}; 63};
63 64
64void __init pxa910_clk_init(void) 65void __init pxa910_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
66 phys_addr_t apbc_phys, phys_addr_t apbcp_phys)
65{ 67{
66 clkdev_add_table(ARRAY_AND_SIZE(pxa910_clkregs)); 68 clkdev_add_table(ARRAY_AND_SIZE(pxa910_clkregs));
67} 69}
diff --git a/arch/arm/mach-mmp/clock.c b/arch/arm/mach-mmp/clock.c
index 7c6f95f29142..ac6633d0b69b 100644
--- a/arch/arm/mach-mmp/clock.c
+++ b/arch/arm/mach-mmp/clock.c
@@ -13,7 +13,7 @@
13#include <linux/clk.h> 13#include <linux/clk.h>
14#include <linux/io.h> 14#include <linux/io.h>
15 15
16#include <mach/regs-apbc.h> 16#include "regs-apbc.h"
17#include "clock.h" 17#include "clock.h"
18 18
19static void apbc_clk_enable(struct clk *clk) 19static void apbc_clk_enable(struct clk *clk)
diff --git a/arch/arm/mach-mmp/clock.h b/arch/arm/mach-mmp/clock.h
index 149b30cd1469..8194445183fe 100644
--- a/arch/arm/mach-mmp/clock.h
+++ b/arch/arm/mach-mmp/clock.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/clock.h
3 *
4 * This program is free software; you can redistribute it and/or modify 2 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as 3 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 4 * published by the Free Software Foundation.
diff --git a/arch/arm/mach-mmp/common.c b/arch/arm/mach-mmp/common.c
index c03b4ab582db..685a0993cff6 100644
--- a/arch/arm/mach-mmp/common.c
+++ b/arch/arm/mach-mmp/common.c
@@ -15,8 +15,8 @@
15#include <asm/page.h> 15#include <asm/page.h>
16#include <asm/mach/map.h> 16#include <asm/mach/map.h>
17#include <asm/system_misc.h> 17#include <asm/system_misc.h>
18#include <mach/addr-map.h> 18#include "addr-map.h"
19#include <mach/cputype.h> 19#include "cputype.h"
20 20
21#include "common.h" 21#include "common.h"
22 22
diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h
index cf445bae6d77..7453a90c34bd 100644
--- a/arch/arm/mach-mmp/common.h
+++ b/arch/arm/mach-mmp/common.h
@@ -5,6 +5,3 @@ extern void timer_init(int irq);
5 5
6extern void __init mmp_map_io(void); 6extern void __init mmp_map_io(void);
7extern void mmp_restart(enum reboot_mode, const char *); 7extern void mmp_restart(enum reboot_mode, const char *);
8extern void __init pxa168_clk_init(void);
9extern void __init pxa910_clk_init(void);
10extern void __init mmp2_clk_init(void);
diff --git a/arch/arm/mach-mmp/include/mach/cputype.h b/arch/arm/mach-mmp/cputype.h
index 8a3b56dfd35d..8a3b56dfd35d 100644
--- a/arch/arm/mach-mmp/include/mach/cputype.h
+++ b/arch/arm/mach-mmp/cputype.h
diff --git a/arch/arm/mach-mmp/devices.c b/arch/arm/mach-mmp/devices.c
index 2bcb766af05d..3330ac7cfbef 100644
--- a/arch/arm/mach-mmp/devices.c
+++ b/arch/arm/mach-mmp/devices.c
@@ -12,10 +12,10 @@
12#include <linux/delay.h> 12#include <linux/delay.h>
13 13
14#include <asm/irq.h> 14#include <asm/irq.h>
15#include <mach/irqs.h> 15#include "irqs.h"
16#include <mach/devices.h> 16#include "devices.h"
17#include <mach/cputype.h> 17#include "cputype.h"
18#include <mach/regs-usb.h> 18#include "regs-usb.h"
19 19
20int __init pxa_register_device(struct pxa_device_desc *desc, 20int __init pxa_register_device(struct pxa_device_desc *desc,
21 void *data, size_t size) 21 void *data, size_t size)
@@ -73,6 +73,8 @@ int __init pxa_register_device(struct pxa_device_desc *desc,
73} 73}
74 74
75#if IS_ENABLED(CONFIG_USB) || IS_ENABLED(CONFIG_USB_GADGET) 75#if IS_ENABLED(CONFIG_USB) || IS_ENABLED(CONFIG_USB_GADGET)
76#if IS_ENABLED(CONFIG_USB_MV_UDC) || IS_ENABLED(CONFIG_USB_EHCI_MV)
77#if IS_ENABLED(CONFIG_CPU_PXA910) || IS_ENABLED(CONFIG_CPU_PXA168)
76 78
77/***************************************************************************** 79/*****************************************************************************
78 * The registers read/write routines 80 * The registers read/write routines
@@ -112,9 +114,6 @@ static void u2o_write(void __iomem *base, unsigned int offset,
112 readl_relaxed(base + offset); 114 readl_relaxed(base + offset);
113} 115}
114 116
115#if IS_ENABLED(CONFIG_USB_MV_UDC) || IS_ENABLED(CONFIG_USB_EHCI_MV)
116
117#if IS_ENABLED(CONFIG_CPU_PXA910) || IS_ENABLED(CONFIG_CPU_PXA168)
118 117
119static DEFINE_MUTEX(phy_lock); 118static DEFINE_MUTEX(phy_lock);
120static int phy_init_cnt; 119static int phy_init_cnt;
diff --git a/arch/arm/mach-mmp/include/mach/devices.h b/arch/arm/mach-mmp/devices.h
index 21217ef11b64..21217ef11b64 100644
--- a/arch/arm/mach-mmp/include/mach/devices.h
+++ b/arch/arm/mach-mmp/devices.h
diff --git a/arch/arm/mach-mmp/flint.c b/arch/arm/mach-mmp/flint.c
index 6291c33d83e2..078b98034960 100644
--- a/arch/arm/mach-mmp/flint.c
+++ b/arch/arm/mach-mmp/flint.c
@@ -21,10 +21,10 @@
21 21
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <mach/addr-map.h> 24#include "addr-map.h"
25#include <mach/mfp-mmp2.h> 25#include "mfp-mmp2.h"
26#include <mach/mmp2.h> 26#include "mmp2.h"
27#include <mach/irqs.h> 27#include "irqs.h"
28 28
29#include "common.h" 29#include "common.h"
30 30
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c
index 22762a1f9f72..c224119dc0f4 100644
--- a/arch/arm/mach-mmp/gplugd.c
+++ b/arch/arm/mach-mmp/gplugd.c
@@ -16,9 +16,9 @@
16#include <asm/mach/arch.h> 16#include <asm/mach/arch.h>
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18 18
19#include <mach/irqs.h> 19#include "irqs.h"
20#include <mach/pxa168.h> 20#include "pxa168.h"
21#include <mach/mfp-pxa168.h> 21#include "mfp-pxa168.h"
22 22
23#include "common.h" 23#include "common.h"
24 24
diff --git a/arch/arm/mach-mmp/include/mach/dma.h b/arch/arm/mach-mmp/include/mach/dma.h
deleted file mode 100644
index 1d6914544da4..000000000000
--- a/arch/arm/mach-mmp/include/mach/dma.h
+++ /dev/null
@@ -1,13 +0,0 @@
1/*
2 * linux/arch/arm/mach-mmp/include/mach/dma.h
3 */
4
5#ifndef __ASM_MACH_DMA_H
6#define __ASM_MACH_DMA_H
7
8#include <mach/addr-map.h>
9
10#define DMAC_REGS_VIRT (APB_VIRT_BASE + 0x00000)
11
12#include <plat/dma.h>
13#endif /* __ASM_MACH_DMA_H */
diff --git a/arch/arm/mach-mmp/include/mach/hardware.h b/arch/arm/mach-mmp/include/mach/hardware.h
deleted file mode 100644
index 99264a5ce5e4..000000000000
--- a/arch/arm/mach-mmp/include/mach/hardware.h
+++ /dev/null
@@ -1,4 +0,0 @@
1#ifndef __ASM_MACH_HARDWARE_H
2#define __ASM_MACH_HARDWARE_H
3
4#endif /* __ASM_MACH_HARDWARE_H */
diff --git a/arch/arm/mach-mmp/include/mach/regs-smc.h b/arch/arm/mach-mmp/include/mach/regs-smc.h
deleted file mode 100644
index e484d40d71bd..000000000000
--- a/arch/arm/mach-mmp/include/mach/regs-smc.h
+++ /dev/null
@@ -1,37 +0,0 @@
1/*
2 * linux/arch/arm/mach-mmp/include/mach/regs-smc.h
3 *
4 * Static Memory Controller Registers
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef __ASM_MACH_REGS_SMC_H
12#define __ASM_MACH_REGS_SMC_H
13
14#include <mach/addr-map.h>
15
16#define SMC_VIRT_BASE (AXI_VIRT_BASE + 0x83800)
17#define SMC_REG(x) (SMC_VIRT_BASE + (x))
18
19#define SMC_MSC0 SMC_REG(0x0020)
20#define SMC_MSC1 SMC_REG(0x0024)
21#define SMC_SXCNFG0 SMC_REG(0x0030)
22#define SMC_SXCNFG1 SMC_REG(0x0034)
23#define SMC_MEMCLKCFG SMC_REG(0x0068)
24#define SMC_CSDFICFG0 SMC_REG(0x0090)
25#define SMC_CSDFICFG1 SMC_REG(0x0094)
26#define SMC_CLK_RET_DEL SMC_REG(0x00b0)
27#define SMC_ADV_RET_DEL SMC_REG(0x00b4)
28#define SMC_CSADRMAP0 SMC_REG(0x00c0)
29#define SMC_CSADRMAP1 SMC_REG(0x00c4)
30#define SMC_WE_AP0 SMC_REG(0x00e0)
31#define SMC_WE_AP1 SMC_REG(0x00e4)
32#define SMC_OE_AP0 SMC_REG(0x00f0)
33#define SMC_OE_AP1 SMC_REG(0x00f4)
34#define SMC_ADV_AP0 SMC_REG(0x0100)
35#define SMC_ADV_AP1 SMC_REG(0x0104)
36
37#endif /* __ASM_MACH_REGS_SMC_H */
diff --git a/arch/arm/mach-mmp/include/mach/uncompress.h b/arch/arm/mach-mmp/include/mach/uncompress.h
deleted file mode 100644
index 8890fa8fa771..000000000000
--- a/arch/arm/mach-mmp/include/mach/uncompress.h
+++ /dev/null
@@ -1,45 +0,0 @@
1/*
2 * arch/arm/mach-mmp/include/mach/uncompress.h
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#include <linux/serial_reg.h>
10#include <mach/addr-map.h>
11#include <asm/mach-types.h>
12
13#define UART1_BASE (APB_PHYS_BASE + 0x36000)
14#define UART2_BASE (APB_PHYS_BASE + 0x17000)
15#define UART3_BASE (APB_PHYS_BASE + 0x18000)
16
17volatile unsigned long *UART;
18
19static inline void putc(char c)
20{
21 /* UART enabled? */
22 if (!(UART[UART_IER] & UART_IER_UUE))
23 return;
24
25 while (!(UART[UART_LSR] & UART_LSR_THRE))
26 barrier();
27
28 UART[UART_TX] = c;
29}
30
31/*
32 * This does not append a newline
33 */
34static inline void flush(void)
35{
36}
37
38static inline void arch_decomp_setup(void)
39{
40 /* default to UART2 */
41 UART = (unsigned long *)UART2_BASE;
42
43 if (machine_is_avengers_lite())
44 UART = (unsigned long *)UART3_BASE;
45}
diff --git a/arch/arm/mach-mmp/include/mach/irqs.h b/arch/arm/mach-mmp/irqs.h
index fb492a50a817..fb492a50a817 100644
--- a/arch/arm/mach-mmp/include/mach/irqs.h
+++ b/arch/arm/mach-mmp/irqs.h
diff --git a/arch/arm/mach-mmp/jasper.c b/arch/arm/mach-mmp/jasper.c
index 0e9e5c05b37c..5dbb753a77ac 100644
--- a/arch/arm/mach-mmp/jasper.c
+++ b/arch/arm/mach-mmp/jasper.c
@@ -20,12 +20,12 @@
20#include <linux/mfd/max8925.h> 20#include <linux/mfd/max8925.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22 22
23#include <mach/irqs.h> 23#include "irqs.h"
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26#include <mach/addr-map.h> 26#include "addr-map.h"
27#include <mach/mfp-mmp2.h> 27#include "mfp-mmp2.h"
28#include <mach/mmp2.h> 28#include "mmp2.h"
29 29
30#include "common.h" 30#include "common.h"
31 31
diff --git a/arch/arm/mach-mmp/include/mach/mfp-mmp2.h b/arch/arm/mach-mmp/mfp-mmp2.h
index 4ad38629c3f6..b2744349725d 100644
--- a/arch/arm/mach-mmp/include/mach/mfp-mmp2.h
+++ b/arch/arm/mach-mmp/mfp-mmp2.h
@@ -1,7 +1,7 @@
1#ifndef __ASM_MACH_MFP_MMP2_H 1#ifndef __ASM_MACH_MFP_MMP2_H
2#define __ASM_MACH_MFP_MMP2_H 2#define __ASM_MACH_MFP_MMP2_H
3 3
4#include <mach/mfp.h> 4#include "mfp.h"
5 5
6#define MFP_DRIVE_VERY_SLOW (0x0 << 13) 6#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
7#define MFP_DRIVE_SLOW (0x2 << 13) 7#define MFP_DRIVE_SLOW (0x2 << 13)
diff --git a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h b/arch/arm/mach-mmp/mfp-pxa168.h
index 92aaa3c19d61..9050d032377e 100644
--- a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
+++ b/arch/arm/mach-mmp/mfp-pxa168.h
@@ -1,7 +1,7 @@
1#ifndef __ASM_MACH_MFP_PXA168_H 1#ifndef __ASM_MACH_MFP_PXA168_H
2#define __ASM_MACH_MFP_PXA168_H 2#define __ASM_MACH_MFP_PXA168_H
3 3
4#include <mach/mfp.h> 4#include "mfp.h"
5 5
6#define MFP_DRIVE_VERY_SLOW (0x0 << 13) 6#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
7#define MFP_DRIVE_SLOW (0x1 << 13) 7#define MFP_DRIVE_SLOW (0x1 << 13)
diff --git a/arch/arm/mach-mmp/include/mach/mfp-pxa910.h b/arch/arm/mach-mmp/mfp-pxa910.h
index 8c78f2b16452..f06db5cd3ad3 100644
--- a/arch/arm/mach-mmp/include/mach/mfp-pxa910.h
+++ b/arch/arm/mach-mmp/mfp-pxa910.h
@@ -1,7 +1,7 @@
1#ifndef __ASM_MACH_MFP_PXA910_H 1#ifndef __ASM_MACH_MFP_PXA910_H
2#define __ASM_MACH_MFP_PXA910_H 2#define __ASM_MACH_MFP_PXA910_H
3 3
4#include <mach/mfp.h> 4#include "mfp.h"
5 5
6#define MFP_DRIVE_VERY_SLOW (0x0 << 13) 6#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
7#define MFP_DRIVE_SLOW (0x2 << 13) 7#define MFP_DRIVE_SLOW (0x2 << 13)
diff --git a/arch/arm/mach-mmp/include/mach/mfp.h b/arch/arm/mach-mmp/mfp.h
index 62e510e80a58..62e510e80a58 100644
--- a/arch/arm/mach-mmp/include/mach/mfp.h
+++ b/arch/arm/mach-mmp/mfp.h
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c
index a70b5530bd42..afba5460cdaf 100644
--- a/arch/arm/mach-mmp/mmp2.c
+++ b/arch/arm/mach-mmp/mmp2.c
@@ -9,6 +9,7 @@
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation. 10 * published by the Free Software Foundation.
11 */ 11 */
12#include <linux/clk/mmp.h>
12#include <linux/module.h> 13#include <linux/module.h>
13#include <linux/kernel.h> 14#include <linux/kernel.h>
14#include <linux/init.h> 15#include <linux/init.h>
@@ -20,15 +21,14 @@
20#include <asm/hardware/cache-tauros2.h> 21#include <asm/hardware/cache-tauros2.h>
21 22
22#include <asm/mach/time.h> 23#include <asm/mach/time.h>
23#include <mach/addr-map.h> 24#include "addr-map.h"
24#include <mach/regs-apbc.h> 25#include "regs-apbc.h"
25#include <mach/cputype.h> 26#include "cputype.h"
26#include <mach/irqs.h> 27#include "irqs.h"
27#include <mach/dma.h> 28#include "mfp.h"
28#include <mach/mfp.h> 29#include "devices.h"
29#include <mach/devices.h> 30#include "mmp2.h"
30#include <mach/mmp2.h> 31#include "pm-mmp2.h"
31#include <mach/pm-mmp2.h>
32 32
33#include "common.h" 33#include "common.h"
34 34
@@ -110,8 +110,9 @@ static int __init mmp2_init(void)
110#endif 110#endif
111 mfp_init_base(MFPR_VIRT_BASE); 111 mfp_init_base(MFPR_VIRT_BASE);
112 mfp_init_addr(mmp2_addr_map); 112 mfp_init_addr(mmp2_addr_map);
113 pxa_init_dma(IRQ_MMP2_DMA_RIQ, 16); 113 mmp2_clk_init(APB_PHYS_BASE + 0x50000,
114 mmp2_clk_init(); 114 AXI_PHYS_BASE + 0x82800,
115 APB_PHYS_BASE + 0x15000);
115 } 116 }
116 117
117 return 0; 118 return 0;
diff --git a/arch/arm/mach-mmp/include/mach/mmp2.h b/arch/arm/mach-mmp/mmp2.h
index 0764f4ecec82..9b5e75ee9e4d 100644
--- a/arch/arm/mach-mmp/include/mach/mmp2.h
+++ b/arch/arm/mach-mmp/mmp2.h
@@ -10,9 +10,10 @@ extern void mmp2_clear_pmic_int(void);
10 10
11#include <linux/i2c.h> 11#include <linux/i2c.h>
12#include <linux/i2c/pxa-i2c.h> 12#include <linux/i2c/pxa-i2c.h>
13#include <mach/devices.h>
14#include <linux/platform_data/dma-mmp_tdma.h> 13#include <linux/platform_data/dma-mmp_tdma.h>
15 14
15#include "devices.h"
16
16extern struct pxa_device_desc mmp2_device_uart1; 17extern struct pxa_device_desc mmp2_device_uart1;
17extern struct pxa_device_desc mmp2_device_uart2; 18extern struct pxa_device_desc mmp2_device_uart2;
18extern struct pxa_device_desc mmp2_device_uart3; 19extern struct pxa_device_desc mmp2_device_uart3;
diff --git a/arch/arm/mach-mmp/pm-mmp2.c b/arch/arm/mach-mmp/pm-mmp2.c
index 43b1a516957f..17699be3bc3d 100644
--- a/arch/arm/mach-mmp/pm-mmp2.c
+++ b/arch/arm/mach-mmp/pm-mmp2.c
@@ -18,12 +18,12 @@
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <mach/hardware.h> 21
22#include <mach/cputype.h> 22#include "cputype.h"
23#include <mach/addr-map.h> 23#include "addr-map.h"
24#include <mach/pm-mmp2.h> 24#include "pm-mmp2.h"
25#include <mach/regs-icu.h> 25#include "regs-icu.h"
26#include <mach/irqs.h> 26#include "irqs.h"
27 27
28int mmp2_set_wake(struct irq_data *d, unsigned int on) 28int mmp2_set_wake(struct irq_data *d, unsigned int on)
29{ 29{
diff --git a/arch/arm/mach-mmp/include/mach/pm-mmp2.h b/arch/arm/mach-mmp/pm-mmp2.h
index 98bd66ce8006..486e0590cd8d 100644
--- a/arch/arm/mach-mmp/include/mach/pm-mmp2.h
+++ b/arch/arm/mach-mmp/pm-mmp2.h
@@ -11,7 +11,7 @@
11#ifndef __MMP2_PM_H__ 11#ifndef __MMP2_PM_H__
12#define __MMP2_PM_H__ 12#define __MMP2_PM_H__
13 13
14#include <mach/addr-map.h> 14#include "addr-map.h"
15 15
16#define APMU_PJ_IDLE_CFG APMU_REG(0x018) 16#define APMU_PJ_IDLE_CFG APMU_REG(0x018)
17#define APMU_PJ_IDLE_CFG_PJ_IDLE (1 << 1) 17#define APMU_PJ_IDLE_CFG_PJ_IDLE (1 << 1)
diff --git a/arch/arm/mach-mmp/pm-pxa910.c b/arch/arm/mach-mmp/pm-pxa910.c
index 7db5870d127f..8b47600b3cdf 100644
--- a/arch/arm/mach-mmp/pm-pxa910.c
+++ b/arch/arm/mach-mmp/pm-pxa910.c
@@ -19,12 +19,12 @@
19#include <linux/irq.h> 19#include <linux/irq.h>
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/outercache.h> 21#include <asm/outercache.h>
22#include <mach/hardware.h> 22
23#include <mach/cputype.h> 23#include "cputype.h"
24#include <mach/addr-map.h> 24#include "addr-map.h"
25#include <mach/pm-pxa910.h> 25#include "pm-pxa910.h"
26#include <mach/regs-icu.h> 26#include "regs-icu.h"
27#include <mach/irqs.h> 27#include "irqs.h"
28 28
29int pxa910_set_wake(struct irq_data *data, unsigned int on) 29int pxa910_set_wake(struct irq_data *data, unsigned int on)
30{ 30{
diff --git a/arch/arm/mach-mmp/include/mach/pm-pxa910.h b/arch/arm/mach-mmp/pm-pxa910.h
index 8cac8ab5253d..8cac8ab5253d 100644
--- a/arch/arm/mach-mmp/include/mach/pm-pxa910.h
+++ b/arch/arm/mach-mmp/pm-pxa910.h
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
index 144e997624c0..0f5f16fb8c66 100644
--- a/arch/arm/mach-mmp/pxa168.c
+++ b/arch/arm/mach-mmp/pxa168.c
@@ -13,25 +13,25 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <linux/clk.h> 15#include <linux/clk.h>
16#include <linux/clk/mmp.h>
16#include <linux/platform_device.h> 17#include <linux/platform_device.h>
17#include <linux/platform_data/mv_usb.h> 18#include <linux/platform_data/mv_usb.h>
19#include <linux/dma-mapping.h>
18 20
19#include <asm/mach/time.h> 21#include <asm/mach/time.h>
20#include <asm/system_misc.h> 22#include <asm/system_misc.h>
21#include <mach/cputype.h>
22#include <mach/addr-map.h>
23#include <mach/regs-apbc.h>
24#include <mach/regs-apmu.h>
25#include <mach/irqs.h>
26#include <mach/dma.h>
27#include <mach/devices.h>
28#include <mach/mfp.h>
29#include <linux/dma-mapping.h>
30#include <mach/pxa168.h>
31#include <mach/regs-usb.h>
32 23
33#include "common.h" 24#include "addr-map.h"
34#include "clock.h" 25#include "clock.h"
26#include "common.h"
27#include "cputype.h"
28#include "devices.h"
29#include "irqs.h"
30#include "mfp.h"
31#include "pxa168.h"
32#include "regs-apbc.h"
33#include "regs-apmu.h"
34#include "regs-usb.h"
35 35
36#define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000) 36#define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000)
37 37
@@ -55,8 +55,9 @@ static int __init pxa168_init(void)
55 if (cpu_is_pxa168()) { 55 if (cpu_is_pxa168()) {
56 mfp_init_base(MFPR_VIRT_BASE); 56 mfp_init_base(MFPR_VIRT_BASE);
57 mfp_init_addr(pxa168_mfp_addr_map); 57 mfp_init_addr(pxa168_mfp_addr_map);
58 pxa_init_dma(IRQ_PXA168_DMA_INT0, 32); 58 pxa168_clk_init(APB_PHYS_BASE + 0x50000,
59 pxa168_clk_init(); 59 AXI_PHYS_BASE + 0x82800,
60 APB_PHYS_BASE + 0x15000);
60 } 61 }
61 62
62 return 0; 63 return 0;
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/pxa168.h
index a83ba7cb525d..75841e9ccd73 100644
--- a/arch/arm/mach-mmp/include/mach/pxa168.h
+++ b/arch/arm/mach-mmp/pxa168.h
@@ -11,14 +11,15 @@ extern void pxa168_clear_keypad_wakeup(void);
11 11
12#include <linux/i2c.h> 12#include <linux/i2c.h>
13#include <linux/i2c/pxa-i2c.h> 13#include <linux/i2c/pxa-i2c.h>
14#include <mach/devices.h>
15#include <linux/platform_data/mtd-nand-pxa3xx.h> 14#include <linux/platform_data/mtd-nand-pxa3xx.h>
16#include <video/pxa168fb.h> 15#include <video/pxa168fb.h>
17#include <linux/platform_data/keypad-pxa27x.h> 16#include <linux/platform_data/keypad-pxa27x.h>
18#include <mach/cputype.h>
19#include <linux/pxa168_eth.h> 17#include <linux/pxa168_eth.h>
20#include <linux/platform_data/mv_usb.h> 18#include <linux/platform_data/mv_usb.h>
21 19
20#include "devices.h"
21#include "cputype.h"
22
22extern struct pxa_device_desc pxa168_device_uart1; 23extern struct pxa_device_desc pxa168_device_uart1;
23extern struct pxa_device_desc pxa168_device_uart2; 24extern struct pxa_device_desc pxa168_device_uart2;
24extern struct pxa_device_desc pxa168_device_uart3; 25extern struct pxa_device_desc pxa168_device_uart3;
diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c
index eb57ee196842..1ccbba9ac495 100644
--- a/arch/arm/mach-mmp/pxa910.c
+++ b/arch/arm/mach-mmp/pxa910.c
@@ -7,6 +7,7 @@
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10#include <linux/clk/mmp.h>
10#include <linux/module.h> 11#include <linux/module.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
12#include <linux/init.h> 13#include <linux/init.h>
@@ -18,15 +19,14 @@
18 19
19#include <asm/hardware/cache-tauros2.h> 20#include <asm/hardware/cache-tauros2.h>
20#include <asm/mach/time.h> 21#include <asm/mach/time.h>
21#include <mach/addr-map.h> 22#include "addr-map.h"
22#include <mach/regs-apbc.h> 23#include "regs-apbc.h"
23#include <mach/cputype.h> 24#include "cputype.h"
24#include <mach/irqs.h> 25#include "irqs.h"
25#include <mach/dma.h> 26#include "mfp.h"
26#include <mach/mfp.h> 27#include "devices.h"
27#include <mach/devices.h> 28#include "pm-pxa910.h"
28#include <mach/pm-pxa910.h> 29#include "pxa910.h"
29#include <mach/pxa910.h>
30 30
31#include "common.h" 31#include "common.h"
32 32
@@ -96,8 +96,10 @@ static int __init pxa910_init(void)
96#endif 96#endif
97 mfp_init_base(MFPR_VIRT_BASE); 97 mfp_init_base(MFPR_VIRT_BASE);
98 mfp_init_addr(pxa910_mfp_addr_map); 98 mfp_init_addr(pxa910_mfp_addr_map);
99 pxa_init_dma(IRQ_PXA910_DMA_INT0, 32); 99 pxa910_clk_init(APB_PHYS_BASE + 0x50000,
100 pxa910_clk_init(); 100 AXI_PHYS_BASE + 0x82800,
101 APB_PHYS_BASE + 0x15000,
102 APB_PHYS_BASE + 0x3b000);
101 } 103 }
102 104
103 return 0; 105 return 0;
diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/pxa910.h
index 92253203f5b4..a211e81e5a08 100644
--- a/arch/arm/mach-mmp/include/mach/pxa910.h
+++ b/arch/arm/mach-mmp/pxa910.h
@@ -7,10 +7,11 @@ extern void __init pxa910_init_irq(void);
7 7
8#include <linux/i2c.h> 8#include <linux/i2c.h>
9#include <linux/i2c/pxa-i2c.h> 9#include <linux/i2c/pxa-i2c.h>
10#include <mach/devices.h>
11#include <linux/platform_data/mtd-nand-pxa3xx.h> 10#include <linux/platform_data/mtd-nand-pxa3xx.h>
12#include <video/mmp_disp.h> 11#include <video/mmp_disp.h>
13 12
13#include "devices.h"
14
14extern struct pxa_device_desc pxa910_device_uart1; 15extern struct pxa_device_desc pxa910_device_uart1;
15extern struct pxa_device_desc pxa910_device_uart2; 16extern struct pxa_device_desc pxa910_device_uart2;
16extern struct pxa_device_desc pxa910_device_twsi0; 17extern struct pxa_device_desc pxa910_device_twsi0;
diff --git a/arch/arm/mach-mmp/include/mach/regs-apbc.h b/arch/arm/mach-mmp/regs-apbc.h
index ddc812f40341..704bcae3fc26 100644
--- a/arch/arm/mach-mmp/include/mach/regs-apbc.h
+++ b/arch/arm/mach-mmp/regs-apbc.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/regs-apbc.h
3 *
4 * Application Peripheral Bus Clock Unit 2 * Application Peripheral Bus Clock Unit
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -11,7 +9,7 @@
11#ifndef __ASM_MACH_REGS_APBC_H 9#ifndef __ASM_MACH_REGS_APBC_H
12#define __ASM_MACH_REGS_APBC_H 10#define __ASM_MACH_REGS_APBC_H
13 11
14#include <mach/addr-map.h> 12#include "addr-map.h"
15 13
16/* Common APB clock register bit definitions */ 14/* Common APB clock register bit definitions */
17#define APBC_APBCLK (1 << 0) /* APB Bus Clock Enable */ 15#define APBC_APBCLK (1 << 0) /* APB Bus Clock Enable */
diff --git a/arch/arm/mach-mmp/include/mach/regs-apmu.h b/arch/arm/mach-mmp/regs-apmu.h
index 93c8d0e29bb9..23f6209b65aa 100644
--- a/arch/arm/mach-mmp/include/mach/regs-apmu.h
+++ b/arch/arm/mach-mmp/regs-apmu.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/regs-apmu.h
3 *
4 * Application Subsystem Power Management Unit 2 * Application Subsystem Power Management Unit
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -11,7 +9,7 @@
11#ifndef __ASM_MACH_REGS_APMU_H 9#ifndef __ASM_MACH_REGS_APMU_H
12#define __ASM_MACH_REGS_APMU_H 10#define __ASM_MACH_REGS_APMU_H
13 11
14#include <mach/addr-map.h> 12#include "addr-map.h"
15 13
16#define APMU_FNCLK_EN (1 << 4) 14#define APMU_FNCLK_EN (1 << 4)
17#define APMU_AXICLK_EN (1 << 3) 15#define APMU_AXICLK_EN (1 << 3)
diff --git a/arch/arm/mach-mmp/include/mach/regs-icu.h b/arch/arm/mach-mmp/regs-icu.h
index f882d91894be..0328abe340a4 100644
--- a/arch/arm/mach-mmp/include/mach/regs-icu.h
+++ b/arch/arm/mach-mmp/regs-icu.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/regs-icu.h
3 *
4 * Interrupt Control Unit 2 * Interrupt Control Unit
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -11,7 +9,7 @@
11#ifndef __ASM_MACH_ICU_H 9#ifndef __ASM_MACH_ICU_H
12#define __ASM_MACH_ICU_H 10#define __ASM_MACH_ICU_H
13 11
14#include <mach/addr-map.h> 12#include "addr-map.h"
15 13
16#define ICU_VIRT_BASE (AXI_VIRT_BASE + 0x82000) 14#define ICU_VIRT_BASE (AXI_VIRT_BASE + 0x82000)
17#define ICU_REG(x) (ICU_VIRT_BASE + (x)) 15#define ICU_REG(x) (ICU_VIRT_BASE + (x))
diff --git a/arch/arm/mach-mmp/include/mach/regs-timers.h b/arch/arm/mach-mmp/regs-timers.h
index 45589fec9fc7..d3611c0becf0 100644
--- a/arch/arm/mach-mmp/include/mach/regs-timers.h
+++ b/arch/arm/mach-mmp/regs-timers.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/regs-timers.h
3 *
4 * Timers Module 2 * Timers Module
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -11,7 +9,7 @@
11#ifndef __ASM_MACH_REGS_TIMERS_H 9#ifndef __ASM_MACH_REGS_TIMERS_H
12#define __ASM_MACH_REGS_TIMERS_H 10#define __ASM_MACH_REGS_TIMERS_H
13 11
14#include <mach/addr-map.h> 12#include "addr-map.h"
15 13
16#define TIMERS1_VIRT_BASE (APB_VIRT_BASE + 0x14000) 14#define TIMERS1_VIRT_BASE (APB_VIRT_BASE + 0x14000)
17#define TIMERS2_VIRT_BASE (APB_VIRT_BASE + 0x16000) 15#define TIMERS2_VIRT_BASE (APB_VIRT_BASE + 0x16000)
diff --git a/arch/arm/mach-mmp/include/mach/regs-usb.h b/arch/arm/mach-mmp/regs-usb.h
index b047bf487506..b047bf487506 100644
--- a/arch/arm/mach-mmp/include/mach/regs-usb.h
+++ b/arch/arm/mach-mmp/regs-usb.h
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c
index cdfc9bfee1a4..efe35fadeb60 100644
--- a/arch/arm/mach-mmp/tavorevb.c
+++ b/arch/arm/mach-mmp/tavorevb.c
@@ -16,10 +16,10 @@
16 16
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18#include <asm/mach/arch.h> 18#include <asm/mach/arch.h>
19#include <mach/addr-map.h> 19#include "addr-map.h"
20#include <mach/mfp-pxa910.h> 20#include "mfp-pxa910.h"
21#include <mach/pxa910.h> 21#include "pxa910.h"
22#include <mach/irqs.h> 22#include "irqs.h"
23 23
24#include "common.h" 24#include "common.h"
25 25
diff --git a/arch/arm/mach-mmp/teton_bga.c b/arch/arm/mach-mmp/teton_bga.c
index 6aa53fb29d26..cf038eb3bb4b 100644
--- a/arch/arm/mach-mmp/teton_bga.c
+++ b/arch/arm/mach-mmp/teton_bga.c
@@ -23,11 +23,11 @@
23 23
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26#include <mach/addr-map.h> 26#include "addr-map.h"
27#include <mach/mfp-pxa168.h> 27#include "mfp-pxa168.h"
28#include <mach/pxa168.h> 28#include "pxa168.h"
29#include <mach/teton_bga.h> 29#include "teton_bga.h"
30#include <mach/irqs.h> 30#include "irqs.h"
31 31
32#include "common.h" 32#include "common.h"
33 33
diff --git a/arch/arm/mach-mmp/include/mach/teton_bga.h b/arch/arm/mach-mmp/teton_bga.h
index 61a539b2cc98..019730f5aa56 100644
--- a/arch/arm/mach-mmp/include/mach/teton_bga.h
+++ b/arch/arm/mach-mmp/teton_bga.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-mmp/include/mach/teton_bga.h
3 *
4 * Support for the Marvell PXA168 Teton BGA Development Platform. 2 * Support for the Marvell PXA168 Teton BGA Development Platform.
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-mmp/time.c b/arch/arm/mach-mmp/time.c
index dbc697b2fda1..3c2c92aaa0ae 100644
--- a/arch/arm/mach-mmp/time.c
+++ b/arch/arm/mach-mmp/time.c
@@ -29,14 +29,13 @@
29#include <linux/of_address.h> 29#include <linux/of_address.h>
30#include <linux/of_irq.h> 30#include <linux/of_irq.h>
31#include <linux/sched_clock.h> 31#include <linux/sched_clock.h>
32
33#include <mach/addr-map.h>
34#include <mach/regs-timers.h>
35#include <mach/regs-apbc.h>
36#include <mach/irqs.h>
37#include <mach/cputype.h>
38#include <asm/mach/time.h> 32#include <asm/mach/time.h>
39 33
34#include "addr-map.h"
35#include "regs-timers.h"
36#include "regs-apbc.h"
37#include "irqs.h"
38#include "cputype.h"
40#include "clock.h" 39#include "clock.h"
41 40
42#ifdef CONFIG_CPU_MMP2 41#ifdef CONFIG_CPU_MMP2
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index ac4af81de3ea..d90c74fa614d 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -26,11 +26,11 @@
26#include <asm/mach-types.h> 26#include <asm/mach-types.h>
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28#include <asm/mach/flash.h> 28#include <asm/mach/flash.h>
29#include <mach/addr-map.h> 29#include "addr-map.h"
30#include <mach/mfp-pxa910.h> 30#include "mfp-pxa910.h"
31#include <mach/pxa910.h> 31#include "pxa910.h"
32#include <mach/irqs.h> 32#include "irqs.h"
33#include <mach/regs-usb.h> 33#include "regs-usb.h"
34 34
35#include "common.h" 35#include "common.h"
36 36
diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig
index f2d309d0619e..a32575fa3fba 100644
--- a/arch/arm/mach-mv78xx0/Kconfig
+++ b/arch/arm/mach-mv78xx0/Kconfig
@@ -1,6 +1,15 @@
1if ARCH_MV78XX0 1menuconfig ARCH_MV78XX0
2 bool "Marvell MV78xx0" if ARCH_MULTI_V5
3 select ARCH_REQUIRE_GPIOLIB
4 select CPU_FEROCEON
5 select MVEBU_MBUS
6 select PCI
7 select PLAT_ORION_LEGACY
8 help
9 Support for the following Marvell MV78xx0 series SoCs:
10 MV781x0, MV782x0.
2 11
3menu "Marvell MV78xx0 Implementations" 12if ARCH_MV78XX0
4 13
5config MACH_DB78X00_BP 14config MACH_DB78X00_BP
6 bool "Marvell DB-78x00-BP Development Board" 15 bool "Marvell DB-78x00-BP Development Board"
@@ -20,6 +29,4 @@ config MACH_TERASTATION_WXL
20 Say 'Y' here if you want your kernel to support the 29 Say 'Y' here if you want your kernel to support the
21 Buffalo WXL Nas. 30 Buffalo WXL Nas.
22 31
23endmenu
24
25endif 32endif
diff --git a/arch/arm/mach-mv78xx0/Makefile b/arch/arm/mach-mv78xx0/Makefile
index 7cd04634d302..ddb3aa98a3c7 100644
--- a/arch/arm/mach-mv78xx0/Makefile
+++ b/arch/arm/mach-mv78xx0/Makefile
@@ -1,3 +1,5 @@
1ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
2
1obj-y += common.o mpp.o irq.o pcie.o 3obj-y += common.o mpp.o irq.o pcie.o
2obj-$(CONFIG_MACH_DB78X00_BP) += db78x00-bp-setup.o 4obj-$(CONFIG_MACH_DB78X00_BP) += db78x00-bp-setup.o
3obj-$(CONFIG_MACH_RD78X00_MASA) += rd78x00-masa-setup.o 5obj-$(CONFIG_MACH_RD78X00_MASA) += rd78x00-masa-setup.o
diff --git a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h b/arch/arm/mach-mv78xx0/bridge-regs.h
index e20d6da234a6..2f54e1753d45 100644
--- a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
+++ b/arch/arm/mach-mv78xx0/bridge-regs.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
3 *
4 * This file is licensed under the terms of the GNU General Public 2 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any 3 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied. 4 * warranty of any kind, whether express or implied.
@@ -9,7 +7,7 @@
9#ifndef __ASM_ARCH_BRIDGE_REGS_H 7#ifndef __ASM_ARCH_BRIDGE_REGS_H
10#define __ASM_ARCH_BRIDGE_REGS_H 8#define __ASM_ARCH_BRIDGE_REGS_H
11 9
12#include <mach/mv78xx0.h> 10#include "mv78xx0.h"
13 11
14#define CPU_CONTROL (BRIDGE_VIRT_BASE + 0x0104) 12#define CPU_CONTROL (BRIDGE_VIRT_BASE + 0x0104)
15#define L2_WRITETHROUGH 0x00020000 13#define L2_WRITETHROUGH 0x00020000
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
index 1f2ef98b37c6..e112f2e7cc9a 100644
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
@@ -17,9 +17,9 @@
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/ethtool.h> 18#include <linux/ethtool.h>
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <mach/mv78xx0.h>
21#include <asm/mach-types.h> 20#include <asm/mach-types.h>
22#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include "mv78xx0.h"
23#include "common.h" 23#include "common.h"
24#include "mpp.h" 24#include "mpp.h"
25 25
@@ -146,6 +146,7 @@ subsys_initcall(wxl_pci_init);
146MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL") 146MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
147 /* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */ 147 /* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */
148 .atag_offset = 0x100, 148 .atag_offset = 0x100,
149 .nr_irqs = MV78XX0_NR_IRQS,
149 .init_machine = wxl_init, 150 .init_machine = wxl_init,
150 .map_io = mv78xx0_map_io, 151 .map_io = mv78xx0_map_io,
151 .init_early = mv78xx0_init_early, 152 .init_early = mv78xx0_init_early,
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index e6ac679bece9..a1a04df9c05c 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -18,13 +18,13 @@
18#include <asm/hardware/cache-feroceon-l2.h> 18#include <asm/hardware/cache-feroceon-l2.h>
19#include <asm/mach/map.h> 19#include <asm/mach/map.h>
20#include <asm/mach/time.h> 20#include <asm/mach/time.h>
21#include <mach/mv78xx0.h>
22#include <mach/bridge-regs.h>
23#include <linux/platform_data/usb-ehci-orion.h> 21#include <linux/platform_data/usb-ehci-orion.h>
24#include <linux/platform_data/mtd-orion_nand.h> 22#include <linux/platform_data/mtd-orion_nand.h>
25#include <plat/time.h> 23#include <plat/time.h>
26#include <plat/common.h> 24#include <plat/common.h>
27#include <plat/addr-map.h> 25#include <plat/addr-map.h>
26#include "mv78xx0.h"
27#include "bridge-regs.h"
28#include "common.h" 28#include "common.h"
29 29
30static int get_tclk(void); 30static int get_tclk(void);
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index 4e0f22b30bc8..cf16e08d4cf5 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -15,9 +15,9 @@
15#include <linux/mv643xx_eth.h> 15#include <linux/mv643xx_eth.h>
16#include <linux/ethtool.h> 16#include <linux/ethtool.h>
17#include <linux/i2c.h> 17#include <linux/i2c.h>
18#include <mach/mv78xx0.h>
19#include <asm/mach-types.h> 18#include <asm/mach-types.h>
20#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20#include "mv78xx0.h"
21#include "common.h" 21#include "common.h"
22 22
23static struct mv643xx_eth_platform_data db78x00_ge00_data = { 23static struct mv643xx_eth_platform_data db78x00_ge00_data = {
@@ -94,6 +94,7 @@ subsys_initcall(db78x00_pci_init);
94MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board") 94MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")
95 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ 95 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
96 .atag_offset = 0x100, 96 .atag_offset = 0x100,
97 .nr_irqs = MV78XX0_NR_IRQS,
97 .init_machine = db78x00_init, 98 .init_machine = db78x00_init,
98 .map_io = mv78xx0_map_io, 99 .map_io = mv78xx0_map_io,
99 .init_early = mv78xx0_init_early, 100 .init_early = mv78xx0_init_early,
diff --git a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S b/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
deleted file mode 100644
index 6b1f088e0597..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
+++ /dev/null
@@ -1,41 +0,0 @@
1/*
2 * arch/arm/mach-mv78xx0/include/mach/entry-macro.S
3 *
4 * Low-level IRQ helper macros for Marvell MV78xx0 platforms
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <mach/bridge-regs.h>
12
13 .macro get_irqnr_preamble, base, tmp
14 ldr \base, =IRQ_VIRT_BASE
15 .endm
16
17 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
18 @ check low interrupts
19 ldr \irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
20 ldr \tmp, [\base, #IRQ_MASK_LOW_OFF]
21 mov \irqnr, #31
22 ands \irqstat, \irqstat, \tmp
23 bne 1001f
24
25 @ if no low interrupts set, check high interrupts
26 ldr \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
27 ldr \tmp, [\base, #IRQ_MASK_HIGH_OFF]
28 mov \irqnr, #63
29 ands \irqstat, \irqstat, \tmp
30 bne 1001f
31
32 @ if no high interrupts set, check error interrupts
33 ldr \irqstat, [\base, #IRQ_CAUSE_ERR_OFF]
34 ldr \tmp, [\base, #IRQ_MASK_ERR_OFF]
35 mov \irqnr, #95
36 ands \irqstat, \irqstat, \tmp
37
38 @ find first active interrupt source
391001: clzne \irqstat, \irqstat
40 subne \irqnr, \irqnr, \irqstat
41 .endm
diff --git a/arch/arm/mach-mv78xx0/include/mach/hardware.h b/arch/arm/mach-mv78xx0/include/mach/hardware.h
deleted file mode 100644
index 67cab0a08e07..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/hardware.h
+++ /dev/null
@@ -1,14 +0,0 @@
1/*
2 * arch/arm/mach-mv78xx0/include/mach/hardware.h
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9#ifndef __ASM_ARCH_HARDWARE_H
10#define __ASM_ARCH_HARDWARE_H
11
12#include "mv78xx0.h"
13
14#endif
diff --git a/arch/arm/mach-mv78xx0/include/mach/uncompress.h b/arch/arm/mach-mv78xx0/include/mach/uncompress.h
deleted file mode 100644
index 6a761c44a296..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/uncompress.h
+++ /dev/null
@@ -1,46 +0,0 @@
1/*
2 * arch/arm/mach-mv78xx0/include/mach/uncompress.h
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9#include <linux/serial_reg.h>
10#include <mach/mv78xx0.h>
11
12#define SERIAL_BASE ((unsigned char *)UART0_PHYS_BASE)
13
14static void putc(const char c)
15{
16 unsigned char *base = SERIAL_BASE;
17 int i;
18
19 for (i = 0; i < 0x1000; i++) {
20 if (base[UART_LSR << 2] & UART_LSR_THRE)
21 break;
22 barrier();
23 }
24
25 base[UART_TX << 2] = c;
26}
27
28static void flush(void)
29{
30 unsigned char *base = SERIAL_BASE;
31 unsigned char mask;
32 int i;
33
34 mask = UART_LSR_TEMT | UART_LSR_THRE;
35
36 for (i = 0; i < 0x1000; i++) {
37 if ((base[UART_LSR << 2] & mask) == mask)
38 break;
39 barrier();
40 }
41}
42
43/*
44 * nothing to do
45 */
46#define arch_decomp_setup()
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
index 32073444024b..788569e960e1 100644
--- a/arch/arm/mach-mv78xx0/irq.c
+++ b/arch/arm/mach-mv78xx0/irq.c
@@ -11,9 +11,10 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/irq.h> 12#include <linux/irq.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <mach/bridge-regs.h> 14#include <asm/exception.h>
15#include <plat/orion-gpio.h> 15#include <plat/orion-gpio.h>
16#include <plat/irq.h> 16#include <plat/irq.h>
17#include "bridge-regs.h"
17#include "common.h" 18#include "common.h"
18 19
19static int __initdata gpio0_irqs[4] = { 20static int __initdata gpio0_irqs[4] = {
@@ -23,12 +24,44 @@ static int __initdata gpio0_irqs[4] = {
23 IRQ_MV78XX0_GPIO_24_31, 24 IRQ_MV78XX0_GPIO_24_31,
24}; 25};
25 26
27static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
28
29static asmlinkage void
30__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
31{
32 u32 stat;
33
34 stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
35 stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
36 if (stat) {
37 unsigned int hwirq = __fls(stat);
38 handle_IRQ(hwirq, regs);
39 return;
40 }
41 stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
42 stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
43 if (stat) {
44 unsigned int hwirq = 32 + __fls(stat);
45 handle_IRQ(hwirq, regs);
46 return;
47 }
48 stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
49 stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
50 if (stat) {
51 unsigned int hwirq = 64 + __fls(stat);
52 handle_IRQ(hwirq, regs);
53 return;
54 }
55}
56
26void __init mv78xx0_init_irq(void) 57void __init mv78xx0_init_irq(void)
27{ 58{
28 orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF); 59 orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
29 orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF); 60 orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
30 orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF); 61 orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
31 62
63 set_handle_irq(mv78xx0_legacy_handle_irq);
64
32 /* 65 /*
33 * Initialize gpiolib for GPIOs 0-31. (The GPIO interrupt mask 66 * Initialize gpiolib for GPIOs 0-31. (The GPIO interrupt mask
34 * registers for core #1 are at an offset of 0x18 from those of 67 * registers for core #1 are at an offset of 0x18 from those of
diff --git a/arch/arm/mach-mv78xx0/include/mach/irqs.h b/arch/arm/mach-mv78xx0/irqs.h
index fa1d422196c2..67e0fe730a13 100644
--- a/arch/arm/mach-mv78xx0/include/mach/irqs.h
+++ b/arch/arm/mach-mv78xx0/irqs.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-mv78xx0/include/mach/irqs.h
3 *
4 * IRQ definitions for Marvell MV78xx0 SoCs 2 * IRQ definitions for Marvell MV78xx0 SoCs
5 * 3 *
6 * This file is licensed under the terms of the GNU General Public 4 * This file is licensed under the terms of the GNU General Public
@@ -88,7 +86,7 @@
88#define IRQ_MV78XX0_GPIO_START 96 86#define IRQ_MV78XX0_GPIO_START 96
89#define NR_GPIO_IRQS 32 87#define NR_GPIO_IRQS 32
90 88
91#define NR_IRQS (IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS) 89#define MV78XX0_NR_IRQS (IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
92 90
93 91
94#endif 92#endif
diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c
index df50342179e2..72843c02e95a 100644
--- a/arch/arm/mach-mv78xx0/mpp.c
+++ b/arch/arm/mach-mv78xx0/mpp.c
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <plat/mpp.h> 14#include <plat/mpp.h>
15#include <mach/hardware.h> 15#include "mv78xx0.h"
16#include "common.h" 16#include "common.h"
17#include "mpp.h" 17#include "mpp.h"
18 18
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/mv78xx0.h
index 723748d8ba7d..2db1265ec121 100644
--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+++ b/arch/arm/mach-mv78xx0/mv78xx0.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
3 *
4 * Generic definitions for Marvell MV78xx0 SoC flavors: 2 * Generic definitions for Marvell MV78xx0 SoC flavors:
5 * MV781x0 and MV782x0. 3 * MV781x0 and MV782x0.
6 * 4 *
@@ -12,6 +10,8 @@
12#ifndef __ASM_ARCH_MV78XX0_H 10#ifndef __ASM_ARCH_MV78XX0_H
13#define __ASM_ARCH_MV78XX0_H 11#define __ASM_ARCH_MV78XX0_H
14 12
13#include "irqs.h"
14
15/* 15/*
16 * Marvell MV78xx0 address maps. 16 * Marvell MV78xx0 address maps.
17 * 17 *
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
index 097ea4cb1136..13a7d72ee0c4 100644
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ b/arch/arm/mach-mv78xx0/pcie.c
@@ -15,7 +15,7 @@
15#include <asm/irq.h> 15#include <asm/irq.h>
16#include <asm/mach/pci.h> 16#include <asm/mach/pci.h>
17#include <plat/pcie.h> 17#include <plat/pcie.h>
18#include <mach/mv78xx0.h> 18#include "mv78xx0.h"
19#include "common.h" 19#include "common.h"
20 20
21#define MV78XX0_MBUS_PCIE_MEM_TARGET(port, lane) ((port) ? 8 : 4) 21#define MV78XX0_MBUS_PCIE_MEM_TARGET(port, lane) ((port) ? 8 : 4)
diff --git a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
index d2d06f3957f3..308ab71ec822 100644
--- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
+++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
@@ -14,9 +14,9 @@
14#include <linux/ata_platform.h> 14#include <linux/ata_platform.h>
15#include <linux/mv643xx_eth.h> 15#include <linux/mv643xx_eth.h>
16#include <linux/ethtool.h> 16#include <linux/ethtool.h>
17#include <mach/mv78xx0.h>
18#include <asm/mach-types.h> 17#include <asm/mach-types.h>
19#include <asm/mach/arch.h> 18#include <asm/mach/arch.h>
19#include "mv78xx0.h"
20#include "common.h" 20#include "common.h"
21 21
22static struct mv643xx_eth_platform_data rd78x00_masa_ge00_data = { 22static struct mv643xx_eth_platform_data rd78x00_masa_ge00_data = {
@@ -79,6 +79,7 @@ subsys_initcall(rd78x00_pci_init);
79MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board") 79MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")
80 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ 80 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
81 .atag_offset = 0x100, 81 .atag_offset = 0x100,
82 .nr_irqs = MV78XX0_NR_IRQS,
82 .init_machine = rd78x00_masa_init, 83 .init_machine = rd78x00_masa_init,
83 .map_io = mv78xx0_map_io, 84 .map_io = mv78xx0_map_io,
84 .init_early = mv78xx0_init_early, 85 .init_early = mv78xx0_init_early,
diff --git a/arch/arm/mach-netx/include/mach/param.h b/arch/arm/mach-netx/include/mach/param.h
deleted file mode 100644
index a771459206aa..000000000000
--- a/arch/arm/mach-netx/include/mach/param.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/*
2 * arch/arm/mach-netx/include/mach/param.h
3 *
4 * Copyright (C) 2005 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2
8 * as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 97e66558c238..6613a6ff5dbc 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -41,7 +41,7 @@
41 41
42#include <mach/hardware.h> 42#include <mach/hardware.h>
43#include <mach/ams-delta-fiq.h> 43#include <mach/ams-delta-fiq.h>
44#include <mach/camera.h> 44#include "camera.h"
45#include <mach/usb.h> 45#include <mach/usb.h>
46 46
47#include "iomap.h" 47#include "iomap.h"
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c
index 0fb51d22c8b5..fad95b74bb65 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -29,7 +29,7 @@
29 29
30#include <mach/tc.h> 30#include <mach/tc.h>
31#include <mach/mux.h> 31#include <mach/mux.h>
32#include <mach/flash.h> 32#include "flash.h"
33#include <linux/platform_data/keypad-omap.h> 33#include <linux/platform_data/keypad-omap.h>
34 34
35#include <mach/hardware.h> 35#include <mach/hardware.h>
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 8340d684d8b6..cd146ed0538d 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -42,7 +42,7 @@
42#include <linux/omap-dma.h> 42#include <linux/omap-dma.h>
43#include <mach/tc.h> 43#include <mach/tc.h>
44#include <linux/platform_data/keypad-omap.h> 44#include <linux/platform_data/keypad-omap.h>
45#include <mach/flash.h> 45#include "flash.h"
46 46
47#include <mach/hardware.h> 47#include <mach/hardware.h>
48#include <mach/usb.h> 48#include <mach/usb.h>
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index 086ff34e072b..f7c8c63dd532 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -44,7 +44,7 @@
44#include <mach/tc.h> 44#include <mach/tc.h>
45#include <linux/platform_data/keypad-omap.h> 45#include <linux/platform_data/keypad-omap.h>
46#include <linux/omap-dma.h> 46#include <linux/omap-dma.h>
47#include <mach/flash.h> 47#include "flash.h"
48 48
49#include <mach/hardware.h> 49#include <mach/hardware.h>
50#include <mach/irqs.h> 50#include <mach/irqs.h>
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index ed4e045c2ad8..ae90bd02b3bf 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -32,7 +32,7 @@
32#include <asm/mach/map.h> 32#include <asm/mach/map.h>
33 33
34#include <mach/mux.h> 34#include <mach/mux.h>
35#include <mach/flash.h> 35#include "flash.h"
36#include <mach/tc.h> 36#include <mach/tc.h>
37#include <linux/platform_data/keypad-omap.h> 37#include <linux/platform_data/keypad-omap.h>
38 38
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 0efd165b8227..209aecb0df68 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -46,7 +46,7 @@
46#include <asm/mach/arch.h> 46#include <asm/mach/arch.h>
47#include <asm/mach/map.h> 47#include <asm/mach/map.h>
48 48
49#include <mach/flash.h> 49#include "flash.h"
50#include <mach/mux.h> 50#include <mach/mux.h>
51#include <mach/tc.h> 51#include <mach/tc.h>
52 52
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c
index 1142ae431fe0..e5288cda1a6a 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -34,7 +34,7 @@
34#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
35#include <asm/mach/map.h> 35#include <asm/mach/map.h>
36 36
37#include <mach/flash.h> 37#include "flash.h"
38#include <mach/mux.h> 38#include <mach/mux.h>
39#include <mach/tc.h> 39#include <mach/tc.h>
40#include <linux/omap-dma.h> 40#include <linux/omap-dma.h>
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c
index 54a547a96950..d672495f7441 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -34,7 +34,7 @@
34#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
35#include <asm/mach/map.h> 35#include <asm/mach/map.h>
36 36
37#include <mach/flash.h> 37#include "flash.h"
38#include <mach/mux.h> 38#include <mach/mux.h>
39#include <linux/omap-dma.h> 39#include <linux/omap-dma.h>
40#include <mach/tc.h> 40#include <mach/tc.h>
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c
index 87ec04ae40dd..aaf741b0aff6 100644
--- a/arch/arm/mach-omap1/board-palmz71.c
+++ b/arch/arm/mach-omap1/board-palmz71.c
@@ -36,7 +36,7 @@
36#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
37#include <asm/mach/map.h> 37#include <asm/mach/map.h>
38 38
39#include <mach/flash.h> 39#include "flash.h"
40#include <mach/mux.h> 40#include <mach/mux.h>
41#include <linux/omap-dma.h> 41#include <linux/omap-dma.h>
42#include <mach/tc.h> 42#include <mach/tc.h>
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
index 3d76f05407f0..150b57ba42bf 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -30,7 +30,7 @@
30 30
31#include <mach/tc.h> 31#include <mach/tc.h>
32#include <mach/mux.h> 32#include <mach/mux.h>
33#include <mach/flash.h> 33#include "flash.h"
34 34
35#include <mach/hardware.h> 35#include <mach/hardware.h>
36 36
diff --git a/arch/arm/mach-omap1/board-sx1-mmc.c b/arch/arm/mach-omap1/board-sx1-mmc.c
index 4fcf19c78a08..a9373570bbb1 100644
--- a/arch/arm/mach-omap1/board-sx1-mmc.c
+++ b/arch/arm/mach-omap1/board-sx1-mmc.c
@@ -16,7 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17 17
18#include <mach/hardware.h> 18#include <mach/hardware.h>
19#include <mach/board-sx1.h> 19#include "board-sx1.h"
20 20
21#include "mmc.h" 21#include "mmc.h"
22 22
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c
index 939991ea33d5..6c482254b37c 100644
--- a/arch/arm/mach-omap1/board-sx1.c
+++ b/arch/arm/mach-omap1/board-sx1.c
@@ -34,11 +34,11 @@
34#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
35#include <asm/mach/map.h> 35#include <asm/mach/map.h>
36 36
37#include <mach/flash.h> 37#include "flash.h"
38#include <mach/mux.h> 38#include <mach/mux.h>
39#include <linux/omap-dma.h> 39#include <linux/omap-dma.h>
40#include <mach/tc.h> 40#include <mach/tc.h>
41#include <mach/board-sx1.h> 41#include "board-sx1.h"
42 42
43#include <mach/hardware.h> 43#include <mach/hardware.h>
44#include <mach/usb.h> 44#include <mach/usb.h>
diff --git a/arch/arm/mach-omap1/include/mach/board-sx1.h b/arch/arm/mach-omap1/board-sx1.h
index 355adbdaae33..355adbdaae33 100644
--- a/arch/arm/mach-omap1/include/mach/board-sx1.h
+++ b/arch/arm/mach-omap1/board-sx1.h
diff --git a/arch/arm/mach-omap1/include/mach/camera.h b/arch/arm/mach-omap1/camera.h
index caa6c0d6f0ac..caa6c0d6f0ac 100644
--- a/arch/arm/mach-omap1/include/mach/camera.h
+++ b/arch/arm/mach-omap1/camera.h
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index 325e6030095e..263c07a566cb 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -25,7 +25,7 @@
25#include <mach/mux.h> 25#include <mach/mux.h>
26 26
27#include <mach/omap7xx.h> 27#include <mach/omap7xx.h>
28#include <mach/camera.h> 28#include "camera.h"
29#include <mach/hardware.h> 29#include <mach/hardware.h>
30 30
31#include "common.h" 31#include "common.h"
diff --git a/arch/arm/mach-omap1/flash.c b/arch/arm/mach-omap1/flash.c
index b3fb531af94e..99cda402e1e2 100644
--- a/arch/arm/mach-omap1/flash.c
+++ b/arch/arm/mach-omap1/flash.c
@@ -11,7 +11,7 @@
11#include <linux/mtd/map.h> 11#include <linux/mtd/map.h>
12 12
13#include <mach/tc.h> 13#include <mach/tc.h>
14#include <mach/flash.h> 14#include "flash.h"
15 15
16#include <mach/hardware.h> 16#include <mach/hardware.h>
17 17
diff --git a/arch/arm/mach-omap1/include/mach/flash.h b/arch/arm/mach-omap1/flash.h
index 0d88499b79e9..0d88499b79e9 100644
--- a/arch/arm/mach-omap1/include/mach/flash.h
+++ b/arch/arm/mach-omap1/flash.h
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
index 66f1c952c048..a9ad95f000a1 100644
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -1,6 +1,18 @@
1if ARCH_ORION5X 1menuconfig ARCH_ORION5X
2 bool "Marvell Orion"
3 depends on MMU && ARCH_MULTI_V5
4 select ARCH_REQUIRE_GPIOLIB
5 select CPU_FEROCEON
6 select GENERIC_CLOCKEVENTS
7 select MVEBU_MBUS
8 select PCI
9 select PLAT_ORION_LEGACY
10 help
11 Support for the following Marvell Orion 5x series SoCs:
12 Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
13 Orion-2 (5281), Orion-1-90 (6183).
2 14
3menu "Orion Implementations" 15if ARCH_ORION5X
4 16
5config ARCH_ORION5X_DT 17config ARCH_ORION5X_DT
6 bool "Marvell Orion5x Flattened Device Tree" 18 bool "Marvell Orion5x Flattened Device Tree"
@@ -163,6 +175,4 @@ config MACH_RD88F6183AP_GE
163 Say 'Y' here if you want your kernel to support the 175 Say 'Y' here if you want your kernel to support the
164 Marvell Orion-1-90 (88F6183) AP GE RD. 176 Marvell Orion-1-90 (88F6183) AP GE RD.
165 177
166endmenu
167
168endif 178endif
diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
index a1e0fbe6a7a1..4b2502b4ca0d 100644
--- a/arch/arm/mach-orion5x/Makefile
+++ b/arch/arm/mach-orion5x/Makefile
@@ -1,3 +1,5 @@
1ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
2
1obj-y += common.o pci.o irq.o mpp.o 3obj-y += common.o pci.o irq.o mpp.o
2obj-$(CONFIG_MACH_DB88F5281) += db88f5281-setup.o 4obj-$(CONFIG_MACH_DB88F5281) += db88f5281-setup.o
3obj-$(CONFIG_MACH_RD88F5182) += rd88f5182-setup.o 5obj-$(CONFIG_MACH_RD88F5182) += rd88f5182-setup.o
diff --git a/arch/arm/mach-orion5x/board-d2net.c b/arch/arm/mach-orion5x/board-d2net.c
index 8a7284124153..a89376a5cd92 100644
--- a/arch/arm/mach-orion5x/board-d2net.c
+++ b/arch/arm/mach-orion5x/board-d2net.c
@@ -20,9 +20,9 @@
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include <asm/mach/pci.h> 22#include <asm/mach/pci.h>
23#include <mach/orion5x.h>
24#include <plat/orion-gpio.h> 23#include <plat/orion-gpio.h>
25#include "common.h" 24#include "common.h"
25#include "orion5x.h"
26 26
27/***************************************************************************** 27/*****************************************************************************
28 * LaCie d2 Network Info 28 * LaCie d2 Network Info
diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
index d0871786dd8a..6f4c2c4ae2a5 100644
--- a/arch/arm/mach-orion5x/board-dt.c
+++ b/arch/arm/mach-orion5x/board-dt.c
@@ -20,10 +20,10 @@
20#include <asm/system_misc.h> 20#include <asm/system_misc.h>
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include <asm/mach/map.h> 22#include <asm/mach/map.h>
23#include <mach/orion5x.h>
24#include <mach/bridge-regs.h>
25#include <plat/irq.h> 23#include <plat/irq.h>
26#include <plat/time.h> 24#include <plat/time.h>
25#include "orion5x.h"
26#include "bridge-regs.h"
27#include "common.h" 27#include "common.h"
28 28
29static struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = { 29static struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = {
diff --git a/arch/arm/mach-orion5x/board-mss2.c b/arch/arm/mach-orion5x/board-mss2.c
index 66f9c3ba86cc..79202fd626df 100644
--- a/arch/arm/mach-orion5x/board-mss2.c
+++ b/arch/arm/mach-orion5x/board-mss2.c
@@ -17,8 +17,8 @@
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18#include <asm/mach/arch.h> 18#include <asm/mach/arch.h>
19#include <asm/mach/pci.h> 19#include <asm/mach/pci.h>
20#include <mach/orion5x.h> 20#include "orion5x.h"
21#include <mach/bridge-regs.h> 21#include "bridge-regs.h"
22#include "common.h" 22#include "common.h"
23 23
24/***************************************************************************** 24/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/board-rd88f5182.c b/arch/arm/mach-orion5x/board-rd88f5182.c
index 270824b0e50f..b7b0f52f4c0a 100644
--- a/arch/arm/mach-orion5x/board-rd88f5182.c
+++ b/arch/arm/mach-orion5x/board-rd88f5182.c
@@ -18,8 +18,8 @@
18#include <asm/mach-types.h> 18#include <asm/mach-types.h>
19#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20#include <asm/mach/pci.h> 20#include <asm/mach/pci.h>
21#include <mach/orion5x.h>
22#include "common.h" 21#include "common.h"
22#include "orion5x.h"
23 23
24/***************************************************************************** 24/*****************************************************************************
25 * RD-88F5182 Info 25 * RD-88F5182 Info
diff --git a/arch/arm/mach-orion5x/include/mach/bridge-regs.h b/arch/arm/mach-orion5x/bridge-regs.h
index 5766e3fbff69..305598eaaee1 100644
--- a/arch/arm/mach-orion5x/include/mach/bridge-regs.h
+++ b/arch/arm/mach-orion5x/bridge-regs.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-orion5x/include/mach/bridge-regs.h
3 *
4 * Orion CPU Bridge Registers 2 * Orion CPU Bridge Registers
5 * 3 *
6 * This file is licensed under the terms of the GNU General Public 4 * This file is licensed under the terms of the GNU General Public
@@ -11,7 +9,7 @@
11#ifndef __ASM_ARCH_BRIDGE_REGS_H 9#ifndef __ASM_ARCH_BRIDGE_REGS_H
12#define __ASM_ARCH_BRIDGE_REGS_H 10#define __ASM_ARCH_BRIDGE_REGS_H
13 11
14#include <mach/orion5x.h> 12#include "orion5x.h"
15 13
16#define CPU_CONF (ORION5X_BRIDGE_VIRT_BASE + 0x100) 14#define CPU_CONF (ORION5X_BRIDGE_VIRT_BASE + 0x100)
17 15
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 6bbb7b55c6d1..70c3366c8d03 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -27,14 +27,14 @@
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28#include <asm/mach/map.h> 28#include <asm/mach/map.h>
29#include <asm/mach/time.h> 29#include <asm/mach/time.h>
30#include <mach/bridge-regs.h>
31#include <mach/hardware.h>
32#include <mach/orion5x.h>
33#include <linux/platform_data/mtd-orion_nand.h> 30#include <linux/platform_data/mtd-orion_nand.h>
34#include <linux/platform_data/usb-ehci-orion.h> 31#include <linux/platform_data/usb-ehci-orion.h>
35#include <plat/time.h> 32#include <plat/time.h>
36#include <plat/common.h> 33#include <plat/common.h>
34
35#include "bridge-regs.h"
37#include "common.h" 36#include "common.h"
37#include "orion5x.h"
38 38
39/***************************************************************************** 39/*****************************************************************************
40 * I/O Address Mapping 40 * I/O Address Mapping
@@ -184,9 +184,21 @@ static void __init orion5x_crypto_init(void)
184/***************************************************************************** 184/*****************************************************************************
185 * Watchdog 185 * Watchdog
186 ****************************************************************************/ 186 ****************************************************************************/
187static struct resource orion_wdt_resource[] = {
188 DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
189 DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
190};
191
192static struct platform_device orion_wdt_device = {
193 .name = "orion_wdt",
194 .id = -1,
195 .num_resources = ARRAY_SIZE(orion_wdt_resource),
196 .resource = orion_wdt_resource,
197};
198
187static void __init orion5x_wdt_init(void) 199static void __init orion5x_wdt_init(void)
188{ 200{
189 orion_wdt_init(); 201 platform_device_register(&orion_wdt_device);
190} 202}
191 203
192 204
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index dc01c4ffc9a8..12f74b46e2ff 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -23,10 +23,10 @@
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <asm/mach/pci.h> 25#include <asm/mach/pci.h>
26#include <mach/orion5x.h>
27#include <linux/platform_data/mtd-orion_nand.h> 26#include <linux/platform_data/mtd-orion_nand.h>
28#include "common.h" 27#include "common.h"
29#include "mpp.h" 28#include "mpp.h"
29#include "orion5x.h"
30 30
31/***************************************************************************** 31/*****************************************************************************
32 * DB-88F5281 on board devices 32 * DB-88F5281 on board devices
@@ -369,6 +369,7 @@ static void __init db88f5281_init(void)
369MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board") 369MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
370 /* Maintainer: Tzachi Perelstein <tzachi@marvell.com> */ 370 /* Maintainer: Tzachi Perelstein <tzachi@marvell.com> */
371 .atag_offset = 0x100, 371 .atag_offset = 0x100,
372 .nr_irqs = ORION5X_NR_IRQS,
372 .init_machine = db88f5281_init, 373 .init_machine = db88f5281_init,
373 .map_io = orion5x_map_io, 374 .map_io = orion5x_map_io,
374 .init_early = orion5x_init_early, 375 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index bc279a853075..cd483bfb5ca8 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -33,8 +33,8 @@
33#include <asm/mach/arch.h> 33#include <asm/mach/arch.h>
34#include <asm/mach/pci.h> 34#include <asm/mach/pci.h>
35#include <asm/system_info.h> 35#include <asm/system_info.h>
36#include <mach/orion5x.h>
37#include <plat/orion-gpio.h> 36#include <plat/orion-gpio.h>
37#include "orion5x.h"
38#include "common.h" 38#include "common.h"
39#include "mpp.h" 39#include "mpp.h"
40 40
@@ -666,6 +666,7 @@ static void __init dns323_init(void)
666MACHINE_START(DNS323, "D-Link DNS-323") 666MACHINE_START(DNS323, "D-Link DNS-323")
667 /* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */ 667 /* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */
668 .atag_offset = 0x100, 668 .atag_offset = 0x100,
669 .nr_irqs = ORION5X_NR_IRQS,
669 .init_machine = dns323_init, 670 .init_machine = dns323_init,
670 .map_io = orion5x_map_io, 671 .map_io = orion5x_map_io,
671 .init_early = orion5x_init_early, 672 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/include/mach/entry-macro.S b/arch/arm/mach-orion5x/include/mach/entry-macro.S
deleted file mode 100644
index 73919a36b577..000000000000
--- a/arch/arm/mach-orion5x/include/mach/entry-macro.S
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * arch/arm/mach-orion5x/include/mach/entry-macro.S
3 *
4 * Low-level IRQ helper macros for Orion platforms
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <mach/bridge-regs.h>
12
13 .macro get_irqnr_preamble, base, tmp
14 ldr \base, =MAIN_IRQ_CAUSE
15 .endm
16
17 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
18 ldr \irqstat, [\base, #0] @ main cause
19 ldr \tmp, [\base, #(MAIN_IRQ_MASK - MAIN_IRQ_CAUSE)] @ main mask
20 mov \irqnr, #0 @ default irqnr
21 @ find cause bits that are unmasked
22 ands \irqstat, \irqstat, \tmp @ clear Z flag if any
23 clzne \irqnr, \irqstat @ calc irqnr
24 rsbne \irqnr, \irqnr, #32
25 .endm
diff --git a/arch/arm/mach-orion5x/include/mach/hardware.h b/arch/arm/mach-orion5x/include/mach/hardware.h
deleted file mode 100644
index 395735482473..000000000000
--- a/arch/arm/mach-orion5x/include/mach/hardware.h
+++ /dev/null
@@ -1,14 +0,0 @@
1/*
2 * arch/arm/mach-orion5x/include/mach/hardware.h
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#ifndef __ASM_ARCH_HARDWARE_H
10#define __ASM_ARCH_HARDWARE_H
11
12#include "orion5x.h"
13
14#endif
diff --git a/arch/arm/mach-orion5x/include/mach/uncompress.h b/arch/arm/mach-orion5x/include/mach/uncompress.h
deleted file mode 100644
index abd26b542c3c..000000000000
--- a/arch/arm/mach-orion5x/include/mach/uncompress.h
+++ /dev/null
@@ -1,48 +0,0 @@
1/*
2 * arch/arm/mach-orion5x/include/mach/uncompress.h
3 *
4 * Tzachi Perelstein <tzachi@marvell.com>
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/serial_reg.h>
12#include <mach/orion5x.h>
13
14#define SERIAL_BASE ((unsigned char *)UART0_PHYS_BASE)
15
16static void putc(const char c)
17{
18 unsigned char *base = SERIAL_BASE;
19 int i;
20
21 for (i = 0; i < 0x1000; i++) {
22 if (base[UART_LSR << 2] & UART_LSR_THRE)
23 break;
24 barrier();
25 }
26
27 base[UART_TX << 2] = c;
28}
29
30static void flush(void)
31{
32 unsigned char *base = SERIAL_BASE;
33 unsigned char mask;
34 int i;
35
36 mask = UART_LSR_TEMT | UART_LSR_THRE;
37
38 for (i = 0; i < 0x1000; i++) {
39 if ((base[UART_LSR << 2] & mask) == mask)
40 break;
41 barrier();
42 }
43}
44
45/*
46 * nothing to do
47 */
48#define arch_decomp_setup()
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index 086ecb87d885..de980ef9cda1 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -13,10 +13,10 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <mach/bridge-regs.h>
17#include <plat/orion-gpio.h> 16#include <plat/orion-gpio.h>
18#include <plat/irq.h> 17#include <plat/irq.h>
19#include <asm/exception.h> 18#include <asm/exception.h>
19#include "bridge-regs.h"
20#include "common.h" 20#include "common.h"
21 21
22static int __initdata gpio0_irqs[4] = { 22static int __initdata gpio0_irqs[4] = {
@@ -26,14 +26,6 @@ static int __initdata gpio0_irqs[4] = {
26 IRQ_ORION5X_GPIO_24_31, 26 IRQ_ORION5X_GPIO_24_31,
27}; 27};
28 28
29#ifdef CONFIG_MULTI_IRQ_HANDLER
30/*
31 * Compiling with both non-DT and DT support enabled, will
32 * break asm irq handler used by non-DT boards. Therefore,
33 * we provide a C-style irq handler even for non-DT boards,
34 * if MULTI_IRQ_HANDLER is set.
35 */
36
37asmlinkage void 29asmlinkage void
38__exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs) 30__exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
39{ 31{
@@ -47,15 +39,12 @@ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
47 return; 39 return;
48 } 40 }
49} 41}
50#endif
51 42
52void __init orion5x_init_irq(void) 43void __init orion5x_init_irq(void)
53{ 44{
54 orion_irq_init(1, MAIN_IRQ_MASK); 45 orion_irq_init(1, MAIN_IRQ_MASK);
55 46
56#ifdef CONFIG_MULTI_IRQ_HANDLER
57 set_handle_irq(orion5x_legacy_handle_irq); 47 set_handle_irq(orion5x_legacy_handle_irq);
58#endif
59 48
60 /* 49 /*
61 * Initialize gpiolib for GPIOs 0-31. 50 * Initialize gpiolib for GPIOs 0-31.
diff --git a/arch/arm/mach-orion5x/include/mach/irqs.h b/arch/arm/mach-orion5x/irqs.h
index 2431d9923427..506c8e0b30c4 100644
--- a/arch/arm/mach-orion5x/include/mach/irqs.h
+++ b/arch/arm/mach-orion5x/irqs.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-orion5x/include/mach/irqs.h
3 *
4 * IRQ definitions for Orion SoC 2 * IRQ definitions for Orion SoC
5 * 3 *
6 * Maintainer: Tzachi Perelstein <tzachi@marvell.com> 4 * Maintainer: Tzachi Perelstein <tzachi@marvell.com>
@@ -54,7 +52,7 @@
54#define IRQ_ORION5X_GPIO_START 33 52#define IRQ_ORION5X_GPIO_START 33
55#define NR_GPIO_IRQS 32 53#define NR_GPIO_IRQS 32
56 54
57#define NR_IRQS (IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS) 55#define ORION5X_NR_IRQS (IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
58 56
59 57
60#endif 58#endif
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index fe6a48a325e8..9dc3f59bed9c 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -23,10 +23,10 @@
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <asm/mach/pci.h> 25#include <asm/mach/pci.h>
26#include <mach/orion5x.h>
27#include <linux/platform_data/mtd-orion_nand.h> 26#include <linux/platform_data/mtd-orion_nand.h>
28#include "common.h" 27#include "common.h"
29#include "mpp.h" 28#include "mpp.h"
29#include "orion5x.h"
30 30
31/***************************************************************************** 31/*****************************************************************************
32 * KUROBOX-PRO Info 32 * KUROBOX-PRO Info
@@ -383,6 +383,7 @@ static void __init kurobox_pro_init(void)
383MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro") 383MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
384 /* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */ 384 /* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
385 .atag_offset = 0x100, 385 .atag_offset = 0x100,
386 .nr_irqs = ORION5X_NR_IRQS,
386 .init_machine = kurobox_pro_init, 387 .init_machine = kurobox_pro_init,
387 .map_io = orion5x_map_io, 388 .map_io = orion5x_map_io,
388 .init_early = orion5x_init_early, 389 .init_early = orion5x_init_early,
@@ -397,6 +398,7 @@ MACHINE_END
397MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live") 398MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
398 /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */ 399 /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
399 .atag_offset = 0x100, 400 .atag_offset = 0x100,
401 .nr_irqs = ORION5X_NR_IRQS,
400 .init_machine = kurobox_pro_init, 402 .init_machine = kurobox_pro_init,
401 .map_io = orion5x_map_io, 403 .map_io = orion5x_map_io,
402 .init_early = orion5x_init_early, 404 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c
index 028ea038d404..dfdaa8a498a4 100644
--- a/arch/arm/mach-orion5x/ls-chl-setup.c
+++ b/arch/arm/mach-orion5x/ls-chl-setup.c
@@ -22,9 +22,9 @@
22#include <linux/gpio.h> 22#include <linux/gpio.h>
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <mach/orion5x.h>
26#include "common.h" 25#include "common.h"
27#include "mpp.h" 26#include "mpp.h"
27#include "orion5x.h"
28 28
29/***************************************************************************** 29/*****************************************************************************
30 * Linkstation LS-CHL Info 30 * Linkstation LS-CHL Info
@@ -320,6 +320,7 @@ static void __init lschl_init(void)
320MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") 320MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")
321 /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ 321 /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */
322 .atag_offset = 0x100, 322 .atag_offset = 0x100,
323 .nr_irqs = ORION5X_NR_IRQS,
323 .init_machine = lschl_init, 324 .init_machine = lschl_init,
324 .map_io = orion5x_map_io, 325 .map_io = orion5x_map_io,
325 .init_early = orion5x_init_early, 326 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c
index 32b7129b767d..47ba6e0502f5 100644
--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
+++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
@@ -21,9 +21,9 @@
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <mach/orion5x.h>
25#include "common.h" 24#include "common.h"
26#include "mpp.h" 25#include "mpp.h"
26#include "orion5x.h"
27 27
28/***************************************************************************** 28/*****************************************************************************
29 * Linkstation LS-HGL Info 29 * Linkstation LS-HGL Info
@@ -267,6 +267,7 @@ static void __init ls_hgl_init(void)
267MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL") 267MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")
268 /* Maintainer: Zhu Qingsen <zhuqs@cn.fujistu.com> */ 268 /* Maintainer: Zhu Qingsen <zhuqs@cn.fujistu.com> */
269 .atag_offset = 0x100, 269 .atag_offset = 0x100,
270 .nr_irqs = ORION5X_NR_IRQS,
270 .init_machine = ls_hgl_init, 271 .init_machine = ls_hgl_init,
271 .map_io = orion5x_map_io, 272 .map_io = orion5x_map_io,
272 .init_early = orion5x_init_early, 273 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/mpp.c b/arch/arm/mach-orion5x/mpp.c
index 5b70026f478c..19ef18594415 100644
--- a/arch/arm/mach-orion5x/mpp.c
+++ b/arch/arm/mach-orion5x/mpp.c
@@ -11,8 +11,8 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <mach/hardware.h>
15#include <plat/mpp.h> 14#include <plat/mpp.h>
15#include "orion5x.h"
16#include "mpp.h" 16#include "mpp.h"
17#include "common.h" 17#include "common.h"
18 18
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index e032f01da49e..2bf8ec75e908 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -21,9 +21,9 @@
21#include <linux/ata_platform.h> 21#include <linux/ata_platform.h>
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <mach/orion5x.h>
25#include "common.h" 24#include "common.h"
26#include "mpp.h" 25#include "mpp.h"
26#include "orion5x.h"
27 27
28#define MV2120_NOR_BOOT_BASE 0xf4000000 28#define MV2120_NOR_BOOT_BASE 0xf4000000
29#define MV2120_NOR_BOOT_SIZE SZ_512K 29#define MV2120_NOR_BOOT_SIZE SZ_512K
@@ -232,6 +232,7 @@ static void __init mv2120_init(void)
232MACHINE_START(MV2120, "HP Media Vault mv2120") 232MACHINE_START(MV2120, "HP Media Vault mv2120")
233 /* Maintainer: Martin Michlmayr <tbm@cyrius.com> */ 233 /* Maintainer: Martin Michlmayr <tbm@cyrius.com> */
234 .atag_offset = 0x100, 234 .atag_offset = 0x100,
235 .nr_irqs = ORION5X_NR_IRQS,
235 .init_machine = mv2120_init, 236 .init_machine = mv2120_init,
236 .map_io = orion5x_map_io, 237 .map_io = orion5x_map_io,
237 .init_early = orion5x_init_early, 238 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
index ba73dc7ffb9e..bf6be4cfd238 100644
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ b/arch/arm/mach-orion5x/net2big-setup.c
@@ -24,10 +24,10 @@
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
27#include <mach/orion5x.h>
28#include <plat/orion-gpio.h> 27#include <plat/orion-gpio.h>
29#include "common.h" 28#include "common.h"
30#include "mpp.h" 29#include "mpp.h"
30#include "orion5x.h"
31 31
32/***************************************************************************** 32/*****************************************************************************
33 * LaCie 2Big Network Info 33 * LaCie 2Big Network Info
@@ -423,6 +423,7 @@ static void __init net2big_init(void)
423/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */ 423/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
424MACHINE_START(NET2BIG, "LaCie 2Big Network") 424MACHINE_START(NET2BIG, "LaCie 2Big Network")
425 .atag_offset = 0x100, 425 .atag_offset = 0x100,
426 .nr_irqs = ORION5X_NR_IRQS,
426 .init_machine = net2big_init, 427 .init_machine = net2big_init,
427 .map_io = orion5x_map_io, 428 .map_io = orion5x_map_io,
428 .init_early = orion5x_init_early, 429 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/orion5x.h
index b78ff3248868..3364df331f01 100644
--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
+++ b/arch/arm/mach-orion5x/orion5x.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-orion5x/include/mach/orion5x.h
3 *
4 * Generic definitions of Orion SoC flavors: 2 * Generic definitions of Orion SoC flavors:
5 * Orion-1, Orion-VoIP, Orion-NAS, Orion-2, and Orion-1-90. 3 * Orion-1, Orion-VoIP, Orion-NAS, Orion-2, and Orion-1-90.
6 * 4 *
@@ -14,6 +12,8 @@
14#ifndef __ASM_ARCH_ORION5X_H 12#ifndef __ASM_ARCH_ORION5X_H
15#define __ASM_ARCH_ORION5X_H 13#define __ASM_ARCH_ORION5X_H
16 14
15#include "irqs.h"
16
17/***************************************************************************** 17/*****************************************************************************
18 * Orion Address Maps 18 * Orion Address Maps
19 * 19 *
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
index b02f3947be51..ecb998e7f8dc 100644
--- a/arch/arm/mach-orion5x/pci.c
+++ b/arch/arm/mach-orion5x/pci.c
@@ -19,8 +19,8 @@
19#include <asm/mach/pci.h> 19#include <asm/mach/pci.h>
20#include <plat/pcie.h> 20#include <plat/pcie.h>
21#include <plat/addr-map.h> 21#include <plat/addr-map.h>
22#include <mach/orion5x.h>
23#include "common.h" 22#include "common.h"
23#include "orion5x.h"
24 24
25/***************************************************************************** 25/*****************************************************************************
26 * Orion has one PCIe controller and one PCI controller. 26 * Orion has one PCIe controller and one PCI controller.
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 213b3e143c57..c742e7b40b0d 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -20,9 +20,9 @@
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include <asm/mach/pci.h> 22#include <asm/mach/pci.h>
23#include <mach/orion5x.h>
24#include "common.h" 23#include "common.h"
25#include "mpp.h" 24#include "mpp.h"
25#include "orion5x.h"
26 26
27/***************************************************************************** 27/*****************************************************************************
28 * RD-88F5181L FXO Info 28 * RD-88F5181L FXO Info
@@ -169,6 +169,7 @@ subsys_initcall(rd88f5181l_fxo_pci_init);
169MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design") 169MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")
170 /* Maintainer: Nicolas Pitre <nico@marvell.com> */ 170 /* Maintainer: Nicolas Pitre <nico@marvell.com> */
171 .atag_offset = 0x100, 171 .atag_offset = 0x100,
172 .nr_irqs = ORION5X_NR_IRQS,
172 .init_machine = rd88f5181l_fxo_init, 173 .init_machine = rd88f5181l_fxo_init,
173 .map_io = orion5x_map_io, 174 .map_io = orion5x_map_io,
174 .init_early = orion5x_init_early, 175 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index 594800e1d691..7e977b794b0c 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -21,9 +21,9 @@
21#include <asm/mach-types.h> 21#include <asm/mach-types.h>
22#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
23#include <asm/mach/pci.h> 23#include <asm/mach/pci.h>
24#include <mach/orion5x.h>
25#include "common.h" 24#include "common.h"
26#include "mpp.h" 25#include "mpp.h"
26#include "orion5x.h"
27 27
28/***************************************************************************** 28/*****************************************************************************
29 * RD-88F5181L GE Info 29 * RD-88F5181L GE Info
@@ -181,6 +181,7 @@ subsys_initcall(rd88f5181l_ge_pci_init);
181MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design") 181MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")
182 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ 182 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
183 .atag_offset = 0x100, 183 .atag_offset = 0x100,
184 .nr_irqs = ORION5X_NR_IRQS,
184 .init_machine = rd88f5181l_ge_init, 185 .init_machine = rd88f5181l_ge_init,
185 .map_io = orion5x_map_io, 186 .map_io = orion5x_map_io,
186 .init_early = orion5x_init_early, 187 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index b576ef5f18a1..fe3e67c81fb8 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -23,9 +23,9 @@
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <asm/mach/pci.h> 25#include <asm/mach/pci.h>
26#include <mach/orion5x.h>
27#include "common.h" 26#include "common.h"
28#include "mpp.h" 27#include "mpp.h"
28#include "orion5x.h"
29 29
30/***************************************************************************** 30/*****************************************************************************
31 * RD-88F5182 Info 31 * RD-88F5182 Info
@@ -281,6 +281,7 @@ static void __init rd88f5182_init(void)
281MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design") 281MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
282 /* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */ 282 /* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
283 .atag_offset = 0x100, 283 .atag_offset = 0x100,
284 .nr_irqs = ORION5X_NR_IRQS,
284 .init_machine = rd88f5182_init, 285 .init_machine = rd88f5182_init,
285 .map_io = orion5x_map_io, 286 .map_io = orion5x_map_io,
286 .init_early = orion5x_init_early, 287 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index 78a1e6ab1b9d..4bf80dd5478c 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -22,8 +22,8 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 24#include <asm/mach/pci.h>
25#include <mach/orion5x.h>
26#include "common.h" 25#include "common.h"
26#include "orion5x.h"
27 27
28static struct mv643xx_eth_platform_data rd88f6183ap_ge_eth_data = { 28static struct mv643xx_eth_platform_data rd88f6183ap_ge_eth_data = {
29 .phy_addr = -1, 29 .phy_addr = -1,
@@ -119,6 +119,7 @@ subsys_initcall(rd88f6183ap_ge_pci_init);
119MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design") 119MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")
120 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ 120 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
121 .atag_offset = 0x100, 121 .atag_offset = 0x100,
122 .nr_irqs = ORION5X_NR_IRQS,
122 .init_machine = rd88f6183ap_ge_init, 123 .init_machine = rd88f6183ap_ge_init,
123 .map_io = orion5x_map_io, 124 .map_io = orion5x_map_io,
124 .init_early = orion5x_init_early, 125 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
index 12086745c9fd..deb5e29ac669 100644
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
@@ -22,9 +22,9 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 24#include <asm/mach/pci.h>
25#include <mach/orion5x.h>
26#include "common.h" 25#include "common.h"
27#include "mpp.h" 26#include "mpp.h"
27#include "orion5x.h"
28 28
29/***************************************************************************** 29/*****************************************************************************
30 * Terastation Pro 2/Live Info 30 * Terastation Pro 2/Live Info
@@ -359,6 +359,7 @@ static void __init tsp2_init(void)
359MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live") 359MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
360 /* Maintainer: Sylver Bruneau <sylver.bruneau@googlemail.com> */ 360 /* Maintainer: Sylver Bruneau <sylver.bruneau@googlemail.com> */
361 .atag_offset = 0x100, 361 .atag_offset = 0x100,
362 .nr_irqs = ORION5X_NR_IRQS,
362 .init_machine = tsp2_init, 363 .init_machine = tsp2_init,
363 .map_io = orion5x_map_io, 364 .map_io = orion5x_map_io,
364 .init_early = orion5x_init_early, 365 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index c725b7cb9875..7bd671b2854c 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -25,9 +25,9 @@
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
27#include <asm/mach/pci.h> 27#include <asm/mach/pci.h>
28#include <mach/orion5x.h>
29#include "common.h" 28#include "common.h"
30#include "mpp.h" 29#include "mpp.h"
30#include "orion5x.h"
31#include "tsx09-common.h" 31#include "tsx09-common.h"
32 32
33#define QNAP_TS209_NOR_BOOT_BASE 0xf4000000 33#define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
@@ -324,6 +324,7 @@ static void __init qnap_ts209_init(void)
324MACHINE_START(TS209, "QNAP TS-109/TS-209") 324MACHINE_START(TS209, "QNAP TS-109/TS-209")
325 /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */ 325 /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
326 .atag_offset = 0x100, 326 .atag_offset = 0x100,
327 .nr_irqs = ORION5X_NR_IRQS,
327 .init_machine = qnap_ts209_init, 328 .init_machine = qnap_ts209_init,
328 .map_io = orion5x_map_io, 329 .map_io = orion5x_map_io,
329 .init_early = orion5x_init_early, 330 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index cf2ab531cabc..a77613b14db5 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -27,9 +27,9 @@
27#include <asm/mach-types.h> 27#include <asm/mach-types.h>
28#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
29#include <asm/mach/pci.h> 29#include <asm/mach/pci.h>
30#include <mach/orion5x.h>
31#include "common.h" 30#include "common.h"
32#include "mpp.h" 31#include "mpp.h"
32#include "orion5x.h"
33#include "tsx09-common.h" 33#include "tsx09-common.h"
34 34
35/***************************************************************************** 35/*****************************************************************************
@@ -313,6 +313,7 @@ static void __init qnap_ts409_init(void)
313MACHINE_START(TS409, "QNAP TS-409") 313MACHINE_START(TS409, "QNAP TS-409")
314 /* Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com> */ 314 /* Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com> */
315 .atag_offset = 0x100, 315 .atag_offset = 0x100,
316 .nr_irqs = ORION5X_NR_IRQS,
316 .init_machine = qnap_ts409_init, 317 .init_machine = qnap_ts409_init,
317 .map_io = orion5x_map_io, 318 .map_io = orion5x_map_io,
318 .init_early = orion5x_init_early, 319 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index 96cf6b51eddc..3a58a5d4a28a 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -23,9 +23,9 @@
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
25#include <asm/mach/map.h> 25#include <asm/mach/map.h>
26#include <mach/orion5x.h>
27#include "common.h" 26#include "common.h"
28#include "mpp.h" 27#include "mpp.h"
28#include "orion5x.h"
29#include "ts78xx-fpga.h" 29#include "ts78xx-fpga.h"
30 30
31/***************************************************************************** 31/*****************************************************************************
@@ -615,6 +615,7 @@ static void __init ts78xx_init(void)
615MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC") 615MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
616 /* Maintainer: Alexander Clouter <alex@digriz.org.uk> */ 616 /* Maintainer: Alexander Clouter <alex@digriz.org.uk> */
617 .atag_offset = 0x100, 617 .atag_offset = 0x100,
618 .nr_irqs = ORION5X_NR_IRQS,
618 .init_machine = ts78xx_init, 619 .init_machine = ts78xx_init,
619 .map_io = ts78xx_map_io, 620 .map_io = ts78xx_map_io,
620 .init_early = orion5x_init_early, 621 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
index d42e006597c7..89774985d380 100644
--- a/arch/arm/mach-orion5x/tsx09-common.c
+++ b/arch/arm/mach-orion5x/tsx09-common.c
@@ -15,7 +15,7 @@
15#include <linux/mv643xx_eth.h> 15#include <linux/mv643xx_eth.h>
16#include <linux/timex.h> 16#include <linux/timex.h>
17#include <linux/serial_reg.h> 17#include <linux/serial_reg.h>
18#include <mach/orion5x.h> 18#include "orion5x.h"
19#include "tsx09-common.h" 19#include "tsx09-common.h"
20#include "common.h" 20#include "common.h"
21 21
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index 80a56ee245b3..4e1e5c8f6111 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -19,7 +19,7 @@
19#include <asm/mach-types.h> 19#include <asm/mach-types.h>
20#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
21#include <asm/mach/pci.h> 21#include <asm/mach/pci.h>
22#include <mach/orion5x.h> 22#include "orion5x.h"
23#include "common.h" 23#include "common.h"
24#include "mpp.h" 24#include "mpp.h"
25 25
@@ -174,6 +174,7 @@ subsys_initcall(wnr854t_pci_init);
174MACHINE_START(WNR854T, "Netgear WNR854T") 174MACHINE_START(WNR854T, "Netgear WNR854T")
175 /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ 175 /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
176 .atag_offset = 0x100, 176 .atag_offset = 0x100,
177 .nr_irqs = ORION5X_NR_IRQS,
177 .init_machine = wnr854t_init, 178 .init_machine = wnr854t_init,
178 .map_io = orion5x_map_io, 179 .map_io = orion5x_map_io,
179 .init_early = orion5x_init_early, 180 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 670e30dc0d1b..61e9027ef224 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -22,7 +22,7 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 24#include <asm/mach/pci.h>
25#include <mach/orion5x.h> 25#include "orion5x.h"
26#include "common.h" 26#include "common.h"
27#include "mpp.h" 27#include "mpp.h"
28 28
@@ -262,6 +262,7 @@ subsys_initcall(wrt350n_v2_pci_init);
262MACHINE_START(WRT350N_V2, "Linksys WRT350N v2") 262MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")
263 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ 263 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
264 .atag_offset = 0x100, 264 .atag_offset = 0x100,
265 .nr_irqs = ORION5X_NR_IRQS,
265 .init_machine = wrt350n_v2_init, 266 .init_machine = wrt350n_v2_init,
266 .map_io = orion5x_map_io, 267 .map_io = orion5x_map_io,
267 .init_early = orion5x_init_early, 268 .init_early = orion5x_init_early,
diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c
index 12fb0f4ae359..50e18ed37fa6 100644
--- a/arch/arm/mach-pxa/am200epd.c
+++ b/arch/arm/mach-pxa/am200epd.c
@@ -30,8 +30,8 @@
30#include <linux/irq.h> 30#include <linux/irq.h>
31#include <linux/gpio.h> 31#include <linux/gpio.h>
32 32
33#include <mach/pxa25x.h> 33#include "pxa25x.h"
34#include <mach/gumstix.h> 34#include "gumstix.h"
35#include <linux/platform_data/video-pxafb.h> 35#include <linux/platform_data/video-pxafb.h>
36 36
37#include "generic.h" 37#include "generic.h"
diff --git a/arch/arm/mach-pxa/am300epd.c b/arch/arm/mach-pxa/am300epd.c
index 8b90c4f2d430..17d08abeeb17 100644
--- a/arch/arm/mach-pxa/am300epd.c
+++ b/arch/arm/mach-pxa/am300epd.c
@@ -28,8 +28,8 @@
28#include <linux/irq.h> 28#include <linux/irq.h>
29#include <linux/gpio.h> 29#include <linux/gpio.h>
30 30
31#include <mach/gumstix.h> 31#include "gumstix.h"
32#include <mach/mfp-pxa25x.h> 32#include "mfp-pxa25x.h"
33#include <mach/irqs.h> 33#include <mach/irqs.h>
34#include <linux/platform_data/video-pxafb.h> 34#include <linux/platform_data/video-pxafb.h>
35 35
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index 7734ec4f1385..8a3c409294bf 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -42,13 +42,13 @@
42#include <asm/mach/irq.h> 42#include <asm/mach/irq.h>
43#include <asm/mach/flash.h> 43#include <asm/mach/flash.h>
44 44
45#include <mach/pxa27x.h> 45#include "pxa27x.h"
46#include <mach/balloon3.h> 46#include <mach/balloon3.h>
47#include <mach/audio.h> 47#include <mach/audio.h>
48#include <linux/platform_data/video-pxafb.h> 48#include <linux/platform_data/video-pxafb.h>
49#include <linux/platform_data/mmc-pxamci.h> 49#include <linux/platform_data/mmc-pxamci.h>
50#include <mach/udc.h> 50#include "udc.h"
51#include <mach/pxa27x-udc.h> 51#include "pxa27x-udc.h"
52#include <linux/platform_data/irda-pxaficp.h> 52#include <linux/platform_data/irda-pxaficp.h>
53#include <linux/platform_data/usb-ohci-pxa27x.h> 53#include <linux/platform_data/usb-ohci-pxa27x.h>
54 54
diff --git a/arch/arm/mach-pxa/capc7117.c b/arch/arm/mach-pxa/capc7117.c
index bf366b39fa61..1c3cbfca9f40 100644
--- a/arch/arm/mach-pxa/capc7117.c
+++ b/arch/arm/mach-pxa/capc7117.c
@@ -29,8 +29,8 @@
29#include <asm/mach-types.h> 29#include <asm/mach-types.h>
30#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
31 31
32#include <mach/pxa320.h> 32#include "pxa320.h"
33#include <mach/mxm8x10.h> 33#include "mxm8x10.h"
34 34
35#include "generic.h" 35#include "generic.h"
36 36
diff --git a/arch/arm/mach-pxa/cm-x255.c b/arch/arm/mach-pxa/cm-x255.c
index be751470d37b..b592f79a1742 100644
--- a/arch/arm/mach-pxa/cm-x255.c
+++ b/arch/arm/mach-pxa/cm-x255.c
@@ -22,7 +22,7 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/map.h> 23#include <asm/mach/map.h>
24 24
25#include <mach/pxa25x.h> 25#include "pxa25x.h"
26 26
27#include "generic.h" 27#include "generic.h"
28 28
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index 2503db9e3253..fa5f51d633a3 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -21,7 +21,7 @@
21#include <linux/spi/pxa2xx_spi.h> 21#include <linux/spi/pxa2xx_spi.h>
22#include <linux/spi/libertas_spi.h> 22#include <linux/spi/libertas_spi.h>
23 23
24#include <mach/pxa27x.h> 24#include "pxa27x.h"
25#include <linux/platform_data/usb-ohci-pxa27x.h> 25#include <linux/platform_data/usb-ohci-pxa27x.h>
26#include <linux/platform_data/mmc-pxamci.h> 26#include <linux/platform_data/mmc-pxamci.h>
27 27
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index a17a91eb8e9a..7202022ee243 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -22,9 +22,18 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/map.h> 23#include <asm/mach/map.h>
24 24
25#include <mach/pxa25x.h> 25#include "pxa25x.h"
26#undef GPIO24_SSP1_SFRM 26#undef GPIO24_SSP1_SFRM
27#include <mach/pxa27x.h> 27#undef GPIO86_GPIO
28#undef GPIO87_GPIO
29#undef GPIO88_GPIO
30#undef GPIO89_GPIO
31#include "pxa27x.h"
32#undef GPIO24_SSP1_SFRM
33#undef GPIO86_GPIO
34#undef GPIO87_GPIO
35#undef GPIO88_GPIO
36#undef GPIO89_GPIO
28#include <mach/audio.h> 37#include <mach/audio.h>
29#include <linux/platform_data/video-pxafb.h> 38#include <linux/platform_data/video-pxafb.h>
30#include <mach/smemc.h> 39#include <mach/smemc.h>
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c
index a7dae60810e8..5f5ac7c8faf0 100644
--- a/arch/arm/mach-pxa/cm-x300.c
+++ b/arch/arm/mach-pxa/cm-x300.c
@@ -47,8 +47,8 @@
47#include <asm/setup.h> 47#include <asm/setup.h>
48#include <asm/system_info.h> 48#include <asm/system_info.h>
49 49
50#include <mach/pxa300.h> 50#include "pxa300.h"
51#include <mach/pxa27x-udc.h> 51#include "pxa27x-udc.h"
52#include <linux/platform_data/video-pxafb.h> 52#include <linux/platform_data/video-pxafb.h>
53#include <linux/platform_data/mmc-pxamci.h> 53#include <linux/platform_data/mmc-pxamci.h>
54#include <linux/platform_data/usb-ohci-pxa27x.h> 54#include <linux/platform_data/usb-ohci-pxa27x.h>
diff --git a/arch/arm/mach-pxa/colibri-evalboard.c b/arch/arm/mach-pxa/colibri-evalboard.c
index 638b0bb88426..dc44fbbe5073 100644
--- a/arch/arm/mach-pxa/colibri-evalboard.c
+++ b/arch/arm/mach-pxa/colibri-evalboard.c
@@ -22,11 +22,11 @@
22#include <linux/i2c/pxa-i2c.h> 22#include <linux/i2c/pxa-i2c.h>
23#include <asm/io.h> 23#include <asm/io.h>
24 24
25#include <mach/pxa27x.h> 25#include "pxa27x.h"
26#include <mach/colibri.h> 26#include "colibri.h"
27#include <linux/platform_data/mmc-pxamci.h> 27#include <linux/platform_data/mmc-pxamci.h>
28#include <linux/platform_data/usb-ohci-pxa27x.h> 28#include <linux/platform_data/usb-ohci-pxa27x.h>
29#include <mach/pxa27x-udc.h> 29#include "pxa27x-udc.h"
30 30
31#include "generic.h" 31#include "generic.h"
32#include "devices.h" 32#include "devices.h"
diff --git a/arch/arm/mach-pxa/colibri-pxa270-income.c b/arch/arm/mach-pxa/colibri-pxa270-income.c
index db20d25daaab..8cff770e6a00 100644
--- a/arch/arm/mach-pxa/colibri-pxa270-income.c
+++ b/arch/arm/mach-pxa/colibri-pxa270-income.c
@@ -30,8 +30,8 @@
30#include <mach/hardware.h> 30#include <mach/hardware.h>
31#include <linux/platform_data/mmc-pxamci.h> 31#include <linux/platform_data/mmc-pxamci.h>
32#include <linux/platform_data/usb-ohci-pxa27x.h> 32#include <linux/platform_data/usb-ohci-pxa27x.h>
33#include <mach/pxa27x.h> 33#include "pxa27x.h"
34#include <mach/pxa27x-udc.h> 34#include "pxa27x-udc.h"
35#include <linux/platform_data/video-pxafb.h> 35#include <linux/platform_data/video-pxafb.h>
36 36
37#include "devices.h" 37#include "devices.h"
diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c
index 3503826333c7..e68acdd0cdbb 100644
--- a/arch/arm/mach-pxa/colibri-pxa270.c
+++ b/arch/arm/mach-pxa/colibri-pxa270.c
@@ -27,8 +27,8 @@
27#include <asm/sizes.h> 27#include <asm/sizes.h>
28 28
29#include <mach/audio.h> 29#include <mach/audio.h>
30#include <mach/colibri.h> 30#include "colibri.h"
31#include <mach/pxa27x.h> 31#include "pxa27x.h"
32 32
33#include "devices.h" 33#include "devices.h"
34#include "generic.h" 34#include "generic.h"
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index f1a1ac1fbd85..6a5558d95d4e 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -22,8 +22,8 @@
22#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
23#include <asm/mach/irq.h> 23#include <asm/mach/irq.h>
24 24
25#include <mach/pxa300.h> 25#include "pxa300.h"
26#include <mach/colibri.h> 26#include "colibri.h"
27#include <linux/platform_data/usb-ohci-pxa27x.h> 27#include <linux/platform_data/usb-ohci-pxa27x.h>
28#include <linux/platform_data/video-pxafb.h> 28#include <linux/platform_data/video-pxafb.h>
29#include <mach/audio.h> 29#include <mach/audio.h>
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index f6cc8b0ab82f..17067a3039a8 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -23,13 +23,13 @@
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/irq.h> 24#include <asm/mach/irq.h>
25 25
26#include <mach/pxa320.h> 26#include "pxa320.h"
27#include <mach/colibri.h> 27#include "colibri.h"
28#include <linux/platform_data/video-pxafb.h> 28#include <linux/platform_data/video-pxafb.h>
29#include <linux/platform_data/usb-ohci-pxa27x.h> 29#include <linux/platform_data/usb-ohci-pxa27x.h>
30#include <mach/audio.h> 30#include <mach/audio.h>
31#include <mach/pxa27x-udc.h> 31#include "pxa27x-udc.h"
32#include <mach/udc.h> 32#include "udc.h"
33 33
34#include "generic.h" 34#include "generic.h"
35#include "devices.h" 35#include "devices.h"
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c
index 8240291ab8cf..b04431bb4ba7 100644
--- a/arch/arm/mach-pxa/colibri-pxa3xx.c
+++ b/arch/arm/mach-pxa/colibri-pxa3xx.c
@@ -22,8 +22,8 @@
22#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
23#include <asm/mach/irq.h> 23#include <asm/mach/irq.h>
24#include <mach/pxa3xx-regs.h> 24#include <mach/pxa3xx-regs.h>
25#include <mach/mfp-pxa300.h> 25#include "mfp-pxa300.h"
26#include <mach/colibri.h> 26#include "colibri.h"
27#include <linux/platform_data/mmc-pxamci.h> 27#include <linux/platform_data/mmc-pxamci.h>
28#include <linux/platform_data/video-pxafb.h> 28#include <linux/platform_data/video-pxafb.h>
29#include <linux/platform_data/mtd-nand-pxa3xx.h> 29#include <linux/platform_data/mtd-nand-pxa3xx.h>
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/colibri.h
index cb4236e98a0f..cb4236e98a0f 100644
--- a/arch/arm/mach-pxa/include/mach/colibri.h
+++ b/arch/arm/mach-pxa/colibri.h
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 89f790dda93e..dc109dc3a622 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -48,12 +48,12 @@
48#include <asm/mach/map.h> 48#include <asm/mach/map.h>
49#include <asm/mach/irq.h> 49#include <asm/mach/irq.h>
50 50
51#include <mach/pxa25x.h> 51#include "pxa25x.h"
52#include <linux/platform_data/irda-pxaficp.h> 52#include <linux/platform_data/irda-pxaficp.h>
53#include <linux/platform_data/mmc-pxamci.h> 53#include <linux/platform_data/mmc-pxamci.h>
54#include <mach/udc.h> 54#include "udc.h"
55#include <mach/corgi.h> 55#include <mach/corgi.h>
56#include <mach/sharpsl_pm.h> 56#include "sharpsl_pm.h"
57 57
58#include <asm/mach/sharpsl_param.h> 58#include <asm/mach/sharpsl_param.h>
59#include <asm/hardware/scoop.h> 59#include <asm/hardware/scoop.h>
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c
index 7a39efc50865..d9206811be9b 100644
--- a/arch/arm/mach-pxa/corgi_pm.c
+++ b/arch/arm/mach-pxa/corgi_pm.c
@@ -27,7 +27,7 @@
27 27
28#include <mach/corgi.h> 28#include <mach/corgi.h>
29#include <mach/pxa2xx-regs.h> 29#include <mach/pxa2xx-regs.h>
30#include <mach/sharpsl_pm.h> 30#include "sharpsl_pm.h"
31 31
32#include "generic.h" 32#include "generic.h"
33 33
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c
index fadfff8feaef..bf19b8426d2c 100644
--- a/arch/arm/mach-pxa/csb726.c
+++ b/arch/arm/mach-pxa/csb726.c
@@ -21,8 +21,8 @@
21 21
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <mach/csb726.h> 24#include "csb726.h"
25#include <mach/pxa27x.h> 25#include "pxa27x.h"
26#include <linux/platform_data/mmc-pxamci.h> 26#include <linux/platform_data/mmc-pxamci.h>
27#include <linux/platform_data/usb-ohci-pxa27x.h> 27#include <linux/platform_data/usb-ohci-pxa27x.h>
28#include <mach/audio.h> 28#include <mach/audio.h>
diff --git a/arch/arm/mach-pxa/include/mach/csb726.h b/arch/arm/mach-pxa/csb726.h
index 00cfbbbf73f7..f1f2a78cfd16 100644
--- a/arch/arm/mach-pxa/include/mach/csb726.h
+++ b/arch/arm/mach-pxa/csb726.h
@@ -11,7 +11,7 @@
11#ifndef CSB726_H 11#ifndef CSB726_H
12#define CSB726_H 12#define CSB726_H
13 13
14#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 14#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
15 15
16#define CSB726_GPIO_IRQ_LAN 52 16#define CSB726_GPIO_IRQ_LAN 52
17#define CSB726_GPIO_IRQ_SM501 53 17#define CSB726_GPIO_IRQ_SM501 53
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index d1211a40f400..37d8d85662f0 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -6,7 +6,7 @@
6#include <linux/spi/pxa2xx_spi.h> 6#include <linux/spi/pxa2xx_spi.h>
7#include <linux/i2c/pxa-i2c.h> 7#include <linux/i2c/pxa-i2c.h>
8 8
9#include <mach/udc.h> 9#include "udc.h"
10#include <linux/platform_data/usb-pxa3xx-ulpi.h> 10#include <linux/platform_data/usb-pxa3xx-ulpi.h>
11#include <linux/platform_data/video-pxafb.h> 11#include <linux/platform_data/video-pxafb.h>
12#include <linux/platform_data/mmc-pxamci.h> 12#include <linux/platform_data/mmc-pxamci.h>
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 2a76c4ef8d03..6e0268deec43 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -39,8 +39,8 @@
39#include <asm/mach-types.h> 39#include <asm/mach-types.h>
40#include <asm/mach/arch.h> 40#include <asm/mach/arch.h>
41 41
42#include <mach/pxa27x.h> 42#include "pxa27x.h"
43#include <mach/pxa27x-udc.h> 43#include "pxa27x-udc.h"
44#include <mach/audio.h> 44#include <mach/audio.h>
45#include <linux/platform_data/video-pxafb.h> 45#include <linux/platform_data/video-pxafb.h>
46#include <linux/platform_data/usb-ohci-pxa27x.h> 46#include <linux/platform_data/usb-ohci-pxa27x.h>
diff --git a/arch/arm/mach-pxa/include/mach/eseries-irq.h b/arch/arm/mach-pxa/eseries-irq.h
index de292b269c63..de292b269c63 100644
--- a/arch/arm/mach-pxa/include/mach/eseries-irq.h
+++ b/arch/arm/mach-pxa/eseries-irq.h
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c
index 16dc95f68125..0b00b226f54b 100644
--- a/arch/arm/mach-pxa/eseries.c
+++ b/arch/arm/mach-pxa/eseries.c
@@ -31,12 +31,12 @@
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
32#include <asm/mach-types.h> 32#include <asm/mach-types.h>
33 33
34#include <mach/pxa25x.h> 34#include "pxa25x.h"
35#include <mach/eseries-gpio.h> 35#include <mach/eseries-gpio.h>
36#include <mach/eseries-irq.h> 36#include "eseries-irq.h"
37#include <mach/audio.h> 37#include <mach/audio.h>
38#include <linux/platform_data/video-pxafb.h> 38#include <linux/platform_data/video-pxafb.h>
39#include <mach/udc.h> 39#include "udc.h"
40#include <linux/platform_data/irda-pxaficp.h> 40#include <linux/platform_data/irda-pxaficp.h>
41 41
42#include "devices.h" 42#include "devices.h"
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index cd6224032109..34ad0a89d4a9 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -29,7 +29,7 @@
29#include <asm/mach-types.h> 29#include <asm/mach-types.h>
30#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
31 31
32#include <mach/pxa27x.h> 32#include "pxa27x.h"
33#include <linux/platform_data/video-pxafb.h> 33#include <linux/platform_data/video-pxafb.h>
34#include <linux/platform_data/usb-ohci-pxa27x.h> 34#include <linux/platform_data/usb-ohci-pxa27x.h>
35#include <mach/hardware.h> 35#include <mach/hardware.h>
@@ -50,7 +50,7 @@
50#define GPIO19_GEN1_CAM_RST 19 50#define GPIO19_GEN1_CAM_RST 19
51#define GPIO28_GEN2_CAM_RST 28 51#define GPIO28_GEN2_CAM_RST 28
52 52
53static struct pwm_lookup ezx_pwm_lookup[] = { 53static struct pwm_lookup ezx_pwm_lookup[] __maybe_unused = {
54 PWM_LOOKUP("pxa27x-pwm.0", 0, "pwm-backlight.0", NULL, 78700, 54 PWM_LOOKUP("pxa27x-pwm.0", 0, "pwm-backlight.0", NULL, 78700,
55 PWM_POLARITY_NORMAL), 55 PWM_POLARITY_NORMAL),
56}; 56};
@@ -83,7 +83,7 @@ static struct pxafb_mode_info mode_ezx_old = {
83 .sync = 0, 83 .sync = 0,
84}; 84};
85 85
86static struct pxafb_mach_info ezx_fb_info_1 = { 86static struct pxafb_mach_info ezx_fb_info_1 __maybe_unused = {
87 .modes = &mode_ezx_old, 87 .modes = &mode_ezx_old,
88 .num_modes = 1, 88 .num_modes = 1,
89 .lcd_conn = LCD_COLOR_TFT_16BPP, 89 .lcd_conn = LCD_COLOR_TFT_16BPP,
@@ -104,17 +104,17 @@ static struct pxafb_mode_info mode_72r89803y01 = {
104 .sync = 0, 104 .sync = 0,
105}; 105};
106 106
107static struct pxafb_mach_info ezx_fb_info_2 = { 107static struct pxafb_mach_info ezx_fb_info_2 __maybe_unused = {
108 .modes = &mode_72r89803y01, 108 .modes = &mode_72r89803y01,
109 .num_modes = 1, 109 .num_modes = 1,
110 .lcd_conn = LCD_COLOR_TFT_18BPP, 110 .lcd_conn = LCD_COLOR_TFT_18BPP,
111}; 111};
112 112
113static struct platform_device *ezx_devices[] __initdata = { 113static struct platform_device *ezx_devices[] __initdata __maybe_unused = {
114 &ezx_backlight_device, 114 &ezx_backlight_device,
115}; 115};
116 116
117static unsigned long ezx_pin_config[] __initdata = { 117static unsigned long ezx_pin_config[] __initdata __maybe_unused = {
118 /* PWM backlight */ 118 /* PWM backlight */
119 GPIO16_PWM0_OUT, 119 GPIO16_PWM0_OUT,
120 120
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
index f6c76a3ee3b2..6815a9357774 100644
--- a/arch/arm/mach-pxa/gumstix.c
+++ b/arch/arm/mach-pxa/gumstix.c
@@ -40,10 +40,10 @@
40#include <asm/mach/irq.h> 40#include <asm/mach/irq.h>
41#include <asm/mach/flash.h> 41#include <asm/mach/flash.h>
42 42
43#include <mach/pxa25x.h> 43#include "pxa25x.h"
44#include <linux/platform_data/mmc-pxamci.h> 44#include <linux/platform_data/mmc-pxamci.h>
45#include <mach/udc.h> 45#include "udc.h"
46#include <mach/gumstix.h> 46#include "gumstix.h"
47 47
48#include "generic.h" 48#include "generic.h"
49 49
diff --git a/arch/arm/mach-pxa/include/mach/gumstix.h b/arch/arm/mach-pxa/gumstix.h
index f7df27bbb42e..825f2d1260ae 100644
--- a/arch/arm/mach-pxa/include/mach/gumstix.h
+++ b/arch/arm/mach-pxa/gumstix.h
@@ -6,7 +6,7 @@
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8 8
9#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 9#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
10 10
11/* BTRESET - Reset line to Bluetooth module, active low signal. */ 11/* BTRESET - Reset line to Bluetooth module, active low signal. */
12#define GPIO_GUMSTIX_BTRESET 7 12#define GPIO_GUMSTIX_BTRESET 7
diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c
index 875ec3351499..be2a9c3fd55b 100644
--- a/arch/arm/mach-pxa/h5000.c
+++ b/arch/arm/mach-pxa/h5000.c
@@ -30,9 +30,9 @@
30#include <asm/mach/map.h> 30#include <asm/mach/map.h>
31#include <asm/irq.h> 31#include <asm/irq.h>
32 32
33#include <mach/pxa25x.h> 33#include "pxa25x.h"
34#include <mach/h5000.h> 34#include "h5000.h"
35#include <mach/udc.h> 35#include "udc.h"
36#include <mach/smemc.h> 36#include <mach/smemc.h>
37 37
38#include "generic.h" 38#include "generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/h5000.h b/arch/arm/mach-pxa/h5000.h
index 2a5ae3802787..252461fd2ac8 100644
--- a/arch/arm/mach-pxa/include/mach/h5000.h
+++ b/arch/arm/mach-pxa/h5000.h
@@ -18,7 +18,7 @@
18#ifndef __ASM_ARCH_H5000_H 18#ifndef __ASM_ARCH_H5000_H
19#define __ASM_ARCH_H5000_H 19#define __ASM_ARCH_H5000_H
20 20
21#include <mach/mfp-pxa25x.h> 21#include "mfp-pxa25x.h"
22 22
23/* 23/*
24 * CPU GPIOs 24 * CPU GPIOs
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c
index 7a8d749a07b8..70e9c06595f6 100644
--- a/arch/arm/mach-pxa/himalaya.c
+++ b/arch/arm/mach-pxa/himalaya.c
@@ -24,7 +24,7 @@
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26 26
27#include <mach/pxa25x.h> 27#include "pxa25x.h"
28 28
29#include "generic.h" 29#include "generic.h"
30 30
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index b076a835eb21..4a2f9aba93ea 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -44,7 +44,7 @@
44#include <asm/mach-types.h> 44#include <asm/mach-types.h>
45#include <asm/mach/arch.h> 45#include <asm/mach/arch.h>
46 46
47#include <mach/pxa27x.h> 47#include "pxa27x.h"
48#include <mach/hx4700.h> 48#include <mach/hx4700.h>
49#include <linux/platform_data/irda-pxaficp.h> 49#include <linux/platform_data/irda-pxaficp.h>
50 50
diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c
index a1869f9b6219..cbaf4f6edcda 100644
--- a/arch/arm/mach-pxa/icontrol.c
+++ b/arch/arm/mach-pxa/icontrol.c
@@ -20,8 +20,8 @@
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22 22
23#include <mach/pxa320.h> 23#include "pxa320.h"
24#include <mach/mxm8x10.h> 24#include "mxm8x10.h"
25 25
26#include <linux/spi/spi.h> 26#include <linux/spi/spi.h>
27#include <linux/spi/pxa2xx_spi.h> 27#include <linux/spi/pxa2xx_spi.h>
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index f6d02e4cbcda..c410d84b243d 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -31,8 +31,8 @@
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
32#include <asm/mach/map.h> 32#include <asm/mach/map.h>
33 33
34#include <mach/pxa25x.h> 34#include "pxa25x.h"
35#include <mach/idp.h> 35#include "idp.h"
36#include <linux/platform_data/video-pxafb.h> 36#include <linux/platform_data/video-pxafb.h>
37#include <mach/bitfield.h> 37#include <mach/bitfield.h>
38#include <linux/platform_data/mmc-pxamci.h> 38#include <linux/platform_data/mmc-pxamci.h>
diff --git a/arch/arm/mach-pxa/include/mach/idp.h b/arch/arm/mach-pxa/idp.h
index 7e63f4680271..7182ff92b732 100644
--- a/arch/arm/mach-pxa/include/mach/idp.h
+++ b/arch/arm/mach-pxa/idp.h
@@ -23,7 +23,7 @@
23 * IDP hardware. 23 * IDP hardware.
24 */ 24 */
25 25
26#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 26#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
27 27
28#define IDP_FLASH_PHYS (PXA_CS0_PHYS) 28#define IDP_FLASH_PHYS (PXA_CS0_PHYS)
29#define IDP_ALT_FLASH_PHYS (PXA_CS1_PHYS) 29#define IDP_ALT_FLASH_PHYS (PXA_CS1_PHYS)
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index 5d665588c7eb..051c554776a6 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -41,11 +41,11 @@
41#include <asm/mach/map.h> 41#include <asm/mach/map.h>
42#include <asm/mach/irq.h> 42#include <asm/mach/irq.h>
43 43
44#include <mach/pxa300.h> 44#include "pxa300.h"
45#include <linux/platform_data/video-pxafb.h> 45#include <linux/platform_data/video-pxafb.h>
46#include <linux/platform_data/mmc-pxamci.h> 46#include <linux/platform_data/mmc-pxamci.h>
47#include <linux/platform_data/keypad-pxa27x.h> 47#include <linux/platform_data/keypad-pxa27x.h>
48#include <mach/littleton.h> 48#include "littleton.h"
49#include <linux/platform_data/mtd-nand-pxa3xx.h> 49#include <linux/platform_data/mtd-nand-pxa3xx.h>
50 50
51#include "generic.h" 51#include "generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/littleton.h b/arch/arm/mach-pxa/littleton.h
index 8066be54e9f5..8066be54e9f5 100644
--- a/arch/arm/mach-pxa/include/mach/littleton.h
+++ b/arch/arm/mach-pxa/littleton.h
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index 5fcd4f094900..e9f401b0a432 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -40,8 +40,8 @@
40#include <asm/mach/irq.h> 40#include <asm/mach/irq.h>
41#include <asm/mach/flash.h> 41#include <asm/mach/flash.h>
42 42
43#include <mach/pxa27x.h> 43#include "pxa27x.h"
44#include <mach/lpd270.h> 44#include "lpd270.h"
45#include <mach/audio.h> 45#include <mach/audio.h>
46#include <linux/platform_data/video-pxafb.h> 46#include <linux/platform_data/video-pxafb.h>
47#include <linux/platform_data/mmc-pxamci.h> 47#include <linux/platform_data/mmc-pxamci.h>
diff --git a/arch/arm/mach-pxa/include/mach/lpd270.h b/arch/arm/mach-pxa/lpd270.h
index 4edc712a2de8..4edc712a2de8 100644
--- a/arch/arm/mach-pxa/include/mach/lpd270.h
+++ b/arch/arm/mach-pxa/lpd270.h
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 6de32fa0e251..7245f3359564 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -47,14 +47,14 @@
47 47
48#include <asm/hardware/sa1111.h> 48#include <asm/hardware/sa1111.h>
49 49
50#include <mach/pxa25x.h> 50#include "pxa25x.h"
51#include <mach/audio.h> 51#include <mach/audio.h>
52#include <mach/lubbock.h> 52#include <mach/lubbock.h>
53#include <mach/udc.h> 53#include "udc.h"
54#include <linux/platform_data/irda-pxaficp.h> 54#include <linux/platform_data/irda-pxaficp.h>
55#include <linux/platform_data/video-pxafb.h> 55#include <linux/platform_data/video-pxafb.h>
56#include <linux/platform_data/mmc-pxamci.h> 56#include <linux/platform_data/mmc-pxamci.h>
57#include <mach/pm.h> 57#include "pm.h"
58#include <mach/smemc.h> 58#include <mach/smemc.h>
59 59
60#include "generic.h" 60#include "generic.h"
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 896b268c3ab7..abc918169367 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -38,7 +38,7 @@
38#include <asm/mach/arch.h> 38#include <asm/mach/arch.h>
39#include <asm/system_info.h> 39#include <asm/system_info.h>
40 40
41#include <mach/pxa27x.h> 41#include "pxa27x.h"
42#include <mach/magician.h> 42#include <mach/magician.h>
43#include <linux/platform_data/video-pxafb.h> 43#include <linux/platform_data/video-pxafb.h>
44#include <linux/platform_data/mmc-pxamci.h> 44#include <linux/platform_data/mmc-pxamci.h>
@@ -48,9 +48,9 @@
48#include <linux/regulator/max1586.h> 48#include <linux/regulator/max1586.h>
49 49
50#include <linux/platform_data/pxa2xx_udc.h> 50#include <linux/platform_data/pxa2xx_udc.h>
51#include <mach/udc.h>
52#include <mach/pxa27x-udc.h>
53 51
52#include "udc.h"
53#include "pxa27x-udc.h"
54#include "devices.h" 54#include "devices.h"
55#include "generic.h" 55#include "generic.h"
56 56
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index c3a87c176d72..40964069a17c 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -46,7 +46,7 @@
46#include <asm/mach/irq.h> 46#include <asm/mach/irq.h>
47#include <asm/mach/flash.h> 47#include <asm/mach/flash.h>
48 48
49#include <mach/pxa27x.h> 49#include "pxa27x.h"
50#include <mach/mainstone.h> 50#include <mach/mainstone.h>
51#include <mach/audio.h> 51#include <mach/audio.h>
52#include <linux/platform_data/video-pxafb.h> 52#include <linux/platform_data/video-pxafb.h>
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h b/arch/arm/mach-pxa/mfp-pxa25x.h
index cafadc33dfd8..1c59d4b3b19b 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h
+++ b/arch/arm/mach-pxa/mfp-pxa25x.h
@@ -1,7 +1,7 @@
1#ifndef __ASM_ARCH_MFP_PXA25X_H 1#ifndef __ASM_ARCH_MFP_PXA25X_H
2#define __ASM_ARCH_MFP_PXA25X_H 2#define __ASM_ARCH_MFP_PXA25X_H
3 3
4#include <mach/mfp-pxa2xx.h> 4#include "mfp-pxa2xx.h"
5 5
6/* GPIO */ 6/* GPIO */
7#define GPIO2_GPIO MFP_CFG_IN(GPIO2, AF0) 7#define GPIO2_GPIO MFP_CFG_IN(GPIO2, AF0)
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h b/arch/arm/mach-pxa/mfp-pxa27x.h
index b6132aa95dc0..9fe5601ce668 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
+++ b/arch/arm/mach-pxa/mfp-pxa27x.h
@@ -8,7 +8,7 @@
8 * specific controller, and this should work in most cases. 8 * specific controller, and this should work in most cases.
9 */ 9 */
10 10
11#include <mach/mfp-pxa2xx.h> 11#include "mfp-pxa2xx.h"
12 12
13/* Note: GPIO3/GPIO4 will be driven by Power I2C when PCFR/PI2C_EN 13/* Note: GPIO3/GPIO4 will be driven by Power I2C when PCFR/PI2C_EN
14 * bit is set, regardless of the GPIO configuration 14 * bit is set, regardless of the GPIO configuration
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c
index 666b78972c40..3732aec76750 100644
--- a/arch/arm/mach-pxa/mfp-pxa2xx.c
+++ b/arch/arm/mach-pxa/mfp-pxa2xx.c
@@ -21,7 +21,7 @@
21#include <linux/syscore_ops.h> 21#include <linux/syscore_ops.h>
22 22
23#include <mach/pxa2xx-regs.h> 23#include <mach/pxa2xx-regs.h>
24#include <mach/mfp-pxa2xx.h> 24#include "mfp-pxa2xx.h"
25 25
26#include "generic.h" 26#include "generic.h"
27 27
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h b/arch/arm/mach-pxa/mfp-pxa2xx.h
index cbf51ae81855..cbf51ae81855 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h
+++ b/arch/arm/mach-pxa/mfp-pxa2xx.h
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h b/arch/arm/mach-pxa/mfp-pxa300.h
index 4e1287070d21..5ee51e28304d 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h
+++ b/arch/arm/mach-pxa/mfp-pxa300.h
@@ -15,7 +15,7 @@
15#ifndef __ASM_ARCH_MFP_PXA300_H 15#ifndef __ASM_ARCH_MFP_PXA300_H
16#define __ASM_ARCH_MFP_PXA300_H 16#define __ASM_ARCH_MFP_PXA300_H
17 17
18#include <mach/mfp-pxa3xx.h> 18#include "mfp-pxa3xx.h"
19 19
20/* GPIO */ 20/* GPIO */
21#define GPIO46_GPIO MFP_CFG(GPIO46, AF1) 21#define GPIO46_GPIO MFP_CFG(GPIO46, AF1)
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa320.h b/arch/arm/mach-pxa/mfp-pxa320.h
index 3ce4682eabb6..e8797cfc72e0 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa320.h
+++ b/arch/arm/mach-pxa/mfp-pxa320.h
@@ -15,7 +15,7 @@
15#ifndef __ASM_ARCH_MFP_PXA320_H 15#ifndef __ASM_ARCH_MFP_PXA320_H
16#define __ASM_ARCH_MFP_PXA320_H 16#define __ASM_ARCH_MFP_PXA320_H
17 17
18#include <mach/mfp-pxa3xx.h> 18#include "mfp-pxa3xx.h"
19 19
20/* GPIO */ 20/* GPIO */
21#define GPIO46_GPIO MFP_CFG(GPIO46, AF0) 21#define GPIO46_GPIO MFP_CFG(GPIO46, AF0)
diff --git a/arch/arm/mach-pxa/mfp-pxa3xx.c b/arch/arm/mach-pxa/mfp-pxa3xx.c
index 89863a01ecd7..994edc0158d4 100644
--- a/arch/arm/mach-pxa/mfp-pxa3xx.c
+++ b/arch/arm/mach-pxa/mfp-pxa3xx.c
@@ -20,7 +20,7 @@
20#include <linux/syscore_ops.h> 20#include <linux/syscore_ops.h>
21 21
22#include <mach/hardware.h> 22#include <mach/hardware.h>
23#include <mach/mfp-pxa3xx.h> 23#include "mfp-pxa3xx.h"
24#include <mach/pxa3xx-regs.h> 24#include <mach/pxa3xx-regs.h>
25 25
26#ifdef CONFIG_PM 26#ifdef CONFIG_PM
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h b/arch/arm/mach-pxa/mfp-pxa3xx.h
index d375195d982b..d375195d982b 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h
+++ b/arch/arm/mach-pxa/mfp-pxa3xx.h
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa930.h b/arch/arm/mach-pxa/mfp-pxa930.h
index 04f7c97044f3..113967beeb67 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa930.h
+++ b/arch/arm/mach-pxa/mfp-pxa930.h
@@ -13,7 +13,7 @@
13#ifndef __ASM_ARCH_MFP_PXA9xx_H 13#ifndef __ASM_ARCH_MFP_PXA9xx_H
14#define __ASM_ARCH_MFP_PXA9xx_H 14#define __ASM_ARCH_MFP_PXA9xx_H
15 15
16#include <mach/mfp-pxa3xx.h> 16#include "mfp-pxa3xx.h"
17 17
18/* GPIO */ 18/* GPIO */
19#define GPIO46_GPIO MFP_CFG(GPIO46, AF0) 19#define GPIO46_GPIO MFP_CFG(GPIO46, AF0)
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index ccfd2b63c6a4..38a96a193dc4 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -47,19 +47,19 @@
47#include <asm/mach-types.h> 47#include <asm/mach-types.h>
48#include <asm/mach/arch.h> 48#include <asm/mach/arch.h>
49 49
50#include <mach/pxa27x.h> 50#include "pxa27x.h"
51#include <mach/regs-rtc.h> 51#include "regs-rtc.h"
52#include <linux/platform_data/keypad-pxa27x.h> 52#include <linux/platform_data/keypad-pxa27x.h>
53#include <linux/platform_data/video-pxafb.h> 53#include <linux/platform_data/video-pxafb.h>
54#include <linux/platform_data/mmc-pxamci.h> 54#include <linux/platform_data/mmc-pxamci.h>
55#include <mach/udc.h> 55#include "udc.h"
56#include <mach/pxa27x-udc.h> 56#include "pxa27x-udc.h"
57#include <linux/platform_data/media/camera-pxa.h> 57#include <linux/platform_data/media/camera-pxa.h>
58#include <mach/audio.h> 58#include <mach/audio.h>
59#include <mach/smemc.h> 59#include <mach/smemc.h>
60#include <media/soc_camera.h> 60#include <media/soc_camera.h>
61 61
62#include <mach/mioa701.h> 62#include "mioa701.h"
63 63
64#include "generic.h" 64#include "generic.h"
65#include "devices.h" 65#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/mioa701.h b/arch/arm/mach-pxa/mioa701.h
index e57f5c724e8a..e57f5c724e8a 100644
--- a/arch/arm/mach-pxa/include/mach/mioa701.h
+++ b/arch/arm/mach-pxa/mioa701.h
diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c
index 14f6aaf8fcc9..4d89029e5401 100644
--- a/arch/arm/mach-pxa/mp900.c
+++ b/arch/arm/mach-pxa/mp900.c
@@ -22,7 +22,7 @@
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24 24
25#include <mach/pxa25x.h> 25#include "pxa25x.h"
26#include "generic.h" 26#include "generic.h"
27 27
28static void isp116x_pfm_delay(struct device *dev, int delay) 28static void isp116x_pfm_delay(struct device *dev, int delay)
diff --git a/arch/arm/mach-pxa/mxm8x10.c b/arch/arm/mach-pxa/mxm8x10.c
index d04ed4961e60..9a22ae0ad8c9 100644
--- a/arch/arm/mach-pxa/mxm8x10.c
+++ b/arch/arm/mach-pxa/mxm8x10.c
@@ -29,9 +29,9 @@
29#include <linux/platform_data/video-pxafb.h> 29#include <linux/platform_data/video-pxafb.h>
30#include <linux/platform_data/mmc-pxamci.h> 30#include <linux/platform_data/mmc-pxamci.h>
31#include <linux/platform_data/usb-ohci-pxa27x.h> 31#include <linux/platform_data/usb-ohci-pxa27x.h>
32#include <mach/pxa320.h> 32#include "pxa320.h"
33 33
34#include <mach/mxm8x10.h> 34#include "mxm8x10.h"
35 35
36#include "devices.h" 36#include "devices.h"
37#include "generic.h" 37#include "generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/mxm8x10.h b/arch/arm/mach-pxa/mxm8x10.h
index ffa15665a418..ffa15665a418 100644
--- a/arch/arm/mach-pxa/include/mach/mxm8x10.h
+++ b/arch/arm/mach-pxa/mxm8x10.h
diff --git a/arch/arm/mach-pxa/palm27x.c b/arch/arm/mach-pxa/palm27x.c
index 8fbfb10047ec..e5ae99db1de4 100644
--- a/arch/arm/mach-pxa/palm27x.c
+++ b/arch/arm/mach-pxa/palm27x.c
@@ -28,14 +28,14 @@
28#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
29#include <asm/mach/map.h> 29#include <asm/mach/map.h>
30 30
31#include <mach/pxa27x.h> 31#include "pxa27x.h"
32#include <mach/audio.h> 32#include <mach/audio.h>
33#include <linux/platform_data/mmc-pxamci.h> 33#include <linux/platform_data/mmc-pxamci.h>
34#include <linux/platform_data/video-pxafb.h> 34#include <linux/platform_data/video-pxafb.h>
35#include <linux/platform_data/irda-pxaficp.h> 35#include <linux/platform_data/irda-pxaficp.h>
36#include <mach/udc.h> 36#include "udc.h"
37#include <linux/platform_data/asoc-palm27x.h> 37#include <linux/platform_data/asoc-palm27x.h>
38#include <mach/palm27x.h> 38#include "palm27x.h"
39 39
40#include "generic.h" 40#include "generic.h"
41#include "devices.h" 41#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/palm27x.h b/arch/arm/mach-pxa/palm27x.h
index d4eac3d6ffb5..d4eac3d6ffb5 100644
--- a/arch/arm/mach-pxa/include/mach/palm27x.h
+++ b/arch/arm/mach-pxa/palm27x.h
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index cf210b11ffcc..980f2847f5b5 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -32,7 +32,7 @@
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33#include <asm/mach/map.h> 33#include <asm/mach/map.h>
34 34
35#include <mach/pxa27x.h> 35#include "pxa27x.h"
36#include <mach/audio.h> 36#include <mach/audio.h>
37#include <mach/palmld.h> 37#include <mach/palmld.h>
38#include <linux/platform_data/mmc-pxamci.h> 38#include <linux/platform_data/mmc-pxamci.h>
@@ -40,7 +40,7 @@
40#include <linux/platform_data/irda-pxaficp.h> 40#include <linux/platform_data/irda-pxaficp.h>
41#include <linux/platform_data/keypad-pxa27x.h> 41#include <linux/platform_data/keypad-pxa27x.h>
42#include <linux/platform_data/asoc-palm27x.h> 42#include <linux/platform_data/asoc-palm27x.h>
43#include <mach/palm27x.h> 43#include "palm27x.h"
44 44
45#include "generic.h" 45#include "generic.h"
46#include "devices.h" 46#include "devices.h"
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 3ed9b029428b..876144aa3564 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -33,16 +33,16 @@
33#include <asm/mach/arch.h> 33#include <asm/mach/arch.h>
34#include <asm/mach/map.h> 34#include <asm/mach/map.h>
35 35
36#include <mach/pxa27x.h> 36#include "pxa27x.h"
37#include <mach/audio.h> 37#include <mach/audio.h>
38#include <mach/palmt5.h> 38#include "palmt5.h"
39#include <linux/platform_data/mmc-pxamci.h> 39#include <linux/platform_data/mmc-pxamci.h>
40#include <linux/platform_data/video-pxafb.h> 40#include <linux/platform_data/video-pxafb.h>
41#include <linux/platform_data/irda-pxaficp.h> 41#include <linux/platform_data/irda-pxaficp.h>
42#include <linux/platform_data/keypad-pxa27x.h> 42#include <linux/platform_data/keypad-pxa27x.h>
43#include <mach/udc.h> 43#include "udc.h"
44#include <linux/platform_data/asoc-palm27x.h> 44#include <linux/platform_data/asoc-palm27x.h>
45#include <mach/palm27x.h> 45#include "palm27x.h"
46 46
47#include "generic.h" 47#include "generic.h"
48#include "devices.h" 48#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/palmt5.h b/arch/arm/mach-pxa/palmt5.h
index e342c5921405..f850cc9de1b4 100644
--- a/arch/arm/mach-pxa/include/mach/palmt5.h
+++ b/arch/arm/mach-pxa/palmt5.h
@@ -15,7 +15,7 @@
15#ifndef _INCLUDE_PALMT5_H_ 15#ifndef _INCLUDE_PALMT5_H_
16#define _INCLUDE_PALMT5_H_ 16#define _INCLUDE_PALMT5_H_
17 17
18#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 18#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
19 19
20/** HERE ARE GPIOs **/ 20/** HERE ARE GPIOs **/
21 21
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
index 0b5c3876720c..18946594a7c8 100644
--- a/arch/arm/mach-pxa/palmtc.c
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -32,13 +32,13 @@
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33#include <asm/mach/map.h> 33#include <asm/mach/map.h>
34 34
35#include <mach/pxa25x.h> 35#include "pxa25x.h"
36#include <mach/audio.h> 36#include <mach/audio.h>
37#include <mach/palmtc.h> 37#include <mach/palmtc.h>
38#include <linux/platform_data/mmc-pxamci.h> 38#include <linux/platform_data/mmc-pxamci.h>
39#include <linux/platform_data/video-pxafb.h> 39#include <linux/platform_data/video-pxafb.h>
40#include <linux/platform_data/irda-pxaficp.h> 40#include <linux/platform_data/irda-pxaficp.h>
41#include <mach/udc.h> 41#include "udc.h"
42 42
43#include "generic.h" 43#include "generic.h"
44#include "devices.h" 44#include "devices.h"
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index e64bb4326e69..36b46141a28b 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -32,13 +32,13 @@
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33#include <asm/mach/map.h> 33#include <asm/mach/map.h>
34 34
35#include <mach/pxa25x.h> 35#include "pxa25x.h"
36#include <mach/audio.h> 36#include <mach/audio.h>
37#include <mach/palmte2.h> 37#include "palmte2.h"
38#include <linux/platform_data/mmc-pxamci.h> 38#include <linux/platform_data/mmc-pxamci.h>
39#include <linux/platform_data/video-pxafb.h> 39#include <linux/platform_data/video-pxafb.h>
40#include <linux/platform_data/irda-pxaficp.h> 40#include <linux/platform_data/irda-pxaficp.h>
41#include <mach/udc.h> 41#include "udc.h"
42#include <linux/platform_data/asoc-palm27x.h> 42#include <linux/platform_data/asoc-palm27x.h>
43 43
44#include "generic.h" 44#include "generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/palmte2.h b/arch/arm/mach-pxa/palmte2.h
index f89e989a7637..f89e989a7637 100644
--- a/arch/arm/mach-pxa/include/mach/palmte2.h
+++ b/arch/arm/mach-pxa/palmte2.h
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
index 2dc56062fb7e..4cc05ecce618 100644
--- a/arch/arm/mach-pxa/palmtreo.c
+++ b/arch/arm/mach-pxa/palmtreo.c
@@ -31,20 +31,20 @@
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
32#include <asm/mach/map.h> 32#include <asm/mach/map.h>
33 33
34#include <mach/pxa27x.h> 34#include "pxa27x.h"
35#include <mach/pxa27x-udc.h> 35#include "pxa27x-udc.h"
36#include <mach/audio.h> 36#include <mach/audio.h>
37#include <mach/palmtreo.h> 37#include "palmtreo.h"
38#include <linux/platform_data/mmc-pxamci.h> 38#include <linux/platform_data/mmc-pxamci.h>
39#include <linux/platform_data/video-pxafb.h> 39#include <linux/platform_data/video-pxafb.h>
40#include <linux/platform_data/irda-pxaficp.h> 40#include <linux/platform_data/irda-pxaficp.h>
41#include <linux/platform_data/keypad-pxa27x.h> 41#include <linux/platform_data/keypad-pxa27x.h>
42#include <mach/udc.h> 42#include "udc.h"
43#include <linux/platform_data/usb-ohci-pxa27x.h> 43#include <linux/platform_data/usb-ohci-pxa27x.h>
44#include <mach/pxa2xx-regs.h> 44#include <mach/pxa2xx-regs.h>
45#include <linux/platform_data/asoc-palm27x.h> 45#include <linux/platform_data/asoc-palm27x.h>
46#include <linux/platform_data/media/camera-pxa.h> 46#include <linux/platform_data/media/camera-pxa.h>
47#include <mach/palm27x.h> 47#include "palm27x.h"
48 48
49#include <sound/pxa2xx-lib.h> 49#include <sound/pxa2xx-lib.h>
50 50
diff --git a/arch/arm/mach-pxa/include/mach/palmtreo.h b/arch/arm/mach-pxa/palmtreo.h
index 714b6574393e..714b6574393e 100644
--- a/arch/arm/mach-pxa/include/mach/palmtreo.h
+++ b/arch/arm/mach-pxa/palmtreo.h
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index d787dd17f6b2..36646975b5d2 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -37,16 +37,16 @@
37#include <asm/mach/arch.h> 37#include <asm/mach/arch.h>
38#include <asm/mach/map.h> 38#include <asm/mach/map.h>
39 39
40#include <mach/pxa27x.h> 40#include "pxa27x.h"
41#include <mach/audio.h> 41#include <mach/audio.h>
42#include <mach/palmtx.h> 42#include <mach/palmtx.h>
43#include <linux/platform_data/mmc-pxamci.h> 43#include <linux/platform_data/mmc-pxamci.h>
44#include <linux/platform_data/video-pxafb.h> 44#include <linux/platform_data/video-pxafb.h>
45#include <linux/platform_data/irda-pxaficp.h> 45#include <linux/platform_data/irda-pxaficp.h>
46#include <linux/platform_data/keypad-pxa27x.h> 46#include <linux/platform_data/keypad-pxa27x.h>
47#include <mach/udc.h> 47#include "udc.h"
48#include <linux/platform_data/asoc-palm27x.h> 48#include <linux/platform_data/asoc-palm27x.h>
49#include <mach/palm27x.h> 49#include "palm27x.h"
50 50
51#include "generic.h" 51#include "generic.h"
52#include "devices.h" 52#include "devices.h"
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index e3df17a7e8d4..9c308de158c6 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -37,18 +37,18 @@
37#include <asm/mach/arch.h> 37#include <asm/mach/arch.h>
38#include <asm/mach/map.h> 38#include <asm/mach/map.h>
39 39
40#include <mach/pxa27x.h> 40#include "pxa27x.h"
41#include <mach/audio.h> 41#include <mach/audio.h>
42#include <mach/palmz72.h> 42#include "palmz72.h"
43#include <linux/platform_data/mmc-pxamci.h> 43#include <linux/platform_data/mmc-pxamci.h>
44#include <linux/platform_data/video-pxafb.h> 44#include <linux/platform_data/video-pxafb.h>
45#include <linux/platform_data/irda-pxaficp.h> 45#include <linux/platform_data/irda-pxaficp.h>
46#include <linux/platform_data/keypad-pxa27x.h> 46#include <linux/platform_data/keypad-pxa27x.h>
47#include <mach/udc.h> 47#include "udc.h"
48#include <linux/platform_data/asoc-palm27x.h> 48#include <linux/platform_data/asoc-palm27x.h>
49#include <mach/palm27x.h> 49#include "palm27x.h"
50 50
51#include <mach/pm.h> 51#include "pm.h"
52#include <linux/platform_data/media/camera-pxa.h> 52#include <linux/platform_data/media/camera-pxa.h>
53 53
54#include <media/soc_camera.h> 54#include <media/soc_camera.h>
diff --git a/arch/arm/mach-pxa/include/mach/palmz72.h b/arch/arm/mach-pxa/palmz72.h
index 0d4700a79612..0d4700a79612 100644
--- a/arch/arm/mach-pxa/include/mach/palmz72.h
+++ b/arch/arm/mach-pxa/palmz72.h
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c
index 69918c7e3f1f..ccca9f7575c3 100644
--- a/arch/arm/mach-pxa/pcm027.c
+++ b/arch/arm/mach-pxa/pcm027.c
@@ -30,8 +30,8 @@
30 30
31#include <asm/mach-types.h> 31#include <asm/mach-types.h>
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33#include <mach/pxa27x.h> 33#include "pxa27x.h"
34#include <mach/pcm027.h> 34#include "pcm027.h"
35#include "generic.h" 35#include "generic.h"
36 36
37/* 37/*
diff --git a/arch/arm/mach-pxa/include/mach/pcm027.h b/arch/arm/mach-pxa/pcm027.h
index 86ebd7b6c960..047cdf234f25 100644
--- a/arch/arm/mach-pxa/include/mach/pcm027.h
+++ b/arch/arm/mach-pxa/pcm027.h
@@ -23,7 +23,7 @@
23 * Definitions of CPU card resources only 23 * Definitions of CPU card resources only
24 */ 24 */
25 25
26#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 26#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
27 27
28/* phyCORE-PXA270 (PCM027) Interrupts */ 28/* phyCORE-PXA270 (PCM027) Interrupts */
29#define PCM027_IRQ(x) (IRQ_BOARD_START + (x)) 29#define PCM027_IRQ(x) (IRQ_BOARD_START + (x))
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 8459239a093c..0bd5959ef7d5 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -32,11 +32,11 @@
32 32
33#include <linux/platform_data/media/camera-pxa.h> 33#include <linux/platform_data/media/camera-pxa.h>
34#include <asm/mach/map.h> 34#include <asm/mach/map.h>
35#include <mach/pxa27x.h> 35#include "pxa27x.h"
36#include <mach/audio.h> 36#include <mach/audio.h>
37#include <linux/platform_data/mmc-pxamci.h> 37#include <linux/platform_data/mmc-pxamci.h>
38#include <linux/platform_data/usb-ohci-pxa27x.h> 38#include <linux/platform_data/usb-ohci-pxa27x.h>
39#include <mach/pcm990_baseboard.h> 39#include "pcm990_baseboard.h"
40#include <linux/platform_data/video-pxafb.h> 40#include <linux/platform_data/video-pxafb.h>
41 41
42#include "devices.h" 42#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h b/arch/arm/mach-pxa/pcm990_baseboard.h
index 7e544c14967e..79d35adfa786 100644
--- a/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h
+++ b/arch/arm/mach-pxa/pcm990_baseboard.h
@@ -19,8 +19,8 @@
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */ 20 */
21 21
22#include <mach/pcm027.h> 22#include "pcm027.h"
23#include "irqs.h" /* PXA_GPIO_TO_IRQ */ 23#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
24 24
25/* 25/*
26 * definitions relevant only when the PCM-990 26 * definitions relevant only when the PCM-990
diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c
index 37178a8559b1..388463b99090 100644
--- a/arch/arm/mach-pxa/pm.c
+++ b/arch/arm/mach-pxa/pm.c
@@ -16,7 +16,7 @@
16#include <linux/errno.h> 16#include <linux/errno.h>
17#include <linux/slab.h> 17#include <linux/slab.h>
18 18
19#include <mach/pm.h> 19#include "pm.h"
20 20
21struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; 21struct pxa_cpu_pm_fns *pxa_cpu_pm_fns;
22static unsigned long *sleep_save; 22static unsigned long *sleep_save;
diff --git a/arch/arm/mach-pxa/include/mach/pm.h b/arch/arm/mach-pxa/pm.h
index 51558bcee999..51558bcee999 100644
--- a/arch/arm/mach-pxa/include/mach/pm.h
+++ b/arch/arm/mach-pxa/pm.h
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 195b1121c8f1..62a119137be7 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -41,9 +41,9 @@
41#include <asm/mach/map.h> 41#include <asm/mach/map.h>
42#include <asm/mach/irq.h> 42#include <asm/mach/irq.h>
43 43
44#include <mach/pxa25x.h> 44#include "pxa25x.h"
45#include <linux/platform_data/mmc-pxamci.h> 45#include <linux/platform_data/mmc-pxamci.h>
46#include <mach/udc.h> 46#include "udc.h"
47#include <linux/platform_data/irda-pxaficp.h> 47#include <linux/platform_data/irda-pxaficp.h>
48#include <mach/poodle.h> 48#include <mach/poodle.h>
49#include <linux/platform_data/video-pxafb.h> 49#include <linux/platform_data/video-pxafb.h>
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
index 1dc85ffc3e20..a177bf45feef 100644
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@ -30,9 +30,9 @@
30#include <asm/suspend.h> 30#include <asm/suspend.h>
31#include <mach/hardware.h> 31#include <mach/hardware.h>
32#include <mach/irqs.h> 32#include <mach/irqs.h>
33#include <mach/pxa25x.h> 33#include "pxa25x.h"
34#include <mach/reset.h> 34#include <mach/reset.h>
35#include <mach/pm.h> 35#include "pm.h"
36#include <mach/dma.h> 36#include <mach/dma.h>
37#include <mach/smemc.h> 37#include <mach/smemc.h>
38 38
diff --git a/arch/arm/mach-pxa/include/mach/pxa25x.h b/arch/arm/mach-pxa/pxa25x.h
index 5a341752e32c..2011e8da0592 100644
--- a/arch/arm/mach-pxa/include/mach/pxa25x.h
+++ b/arch/arm/mach-pxa/pxa25x.h
@@ -3,7 +3,7 @@
3 3
4#include <mach/hardware.h> 4#include <mach/hardware.h>
5#include <mach/pxa2xx-regs.h> 5#include <mach/pxa2xx-regs.h>
6#include <mach/mfp-pxa25x.h> 6#include "mfp-pxa25x.h"
7#include <mach/irqs.h> 7#include <mach/irqs.h>
8 8
9#endif /* __MACH_PXA25x_H */ 9#endif /* __MACH_PXA25x_H */
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x-udc.h b/arch/arm/mach-pxa/pxa27x-udc.h
index 4cf28f670706..4cf28f670706 100644
--- a/arch/arm/mach-pxa/include/mach/pxa27x-udc.h
+++ b/arch/arm/mach-pxa/pxa27x-udc.h
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index ffc424028557..8dfd1755c659 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -28,10 +28,10 @@
28#include <asm/irq.h> 28#include <asm/irq.h>
29#include <asm/suspend.h> 29#include <asm/suspend.h>
30#include <mach/irqs.h> 30#include <mach/irqs.h>
31#include <mach/pxa27x.h> 31#include "pxa27x.h"
32#include <mach/reset.h> 32#include <mach/reset.h>
33#include <linux/platform_data/usb-ohci-pxa27x.h> 33#include <linux/platform_data/usb-ohci-pxa27x.h>
34#include <mach/pm.h> 34#include "pm.h"
35#include <mach/dma.h> 35#include <mach/dma.h>
36#include <mach/smemc.h> 36#include <mach/smemc.h>
37 37
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x.h b/arch/arm/mach-pxa/pxa27x.h
index 1a4291936c58..075131d83eab 100644
--- a/arch/arm/mach-pxa/include/mach/pxa27x.h
+++ b/arch/arm/mach-pxa/pxa27x.h
@@ -4,7 +4,7 @@
4#include <linux/suspend.h> 4#include <linux/suspend.h>
5#include <mach/hardware.h> 5#include <mach/hardware.h>
6#include <mach/pxa2xx-regs.h> 6#include <mach/pxa2xx-regs.h>
7#include <mach/mfp-pxa27x.h> 7#include "mfp-pxa27x.h"
8#include <mach/irqs.h> 8#include <mach/irqs.h>
9 9
10#define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ 10#define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */
diff --git a/arch/arm/mach-pxa/pxa2xx.c b/arch/arm/mach-pxa/pxa2xx.c
index 447dcbb22f6f..6b5e566f52c8 100644
--- a/arch/arm/mach-pxa/pxa2xx.c
+++ b/arch/arm/mach-pxa/pxa2xx.c
@@ -17,7 +17,7 @@
17 17
18#include <mach/hardware.h> 18#include <mach/hardware.h>
19#include <mach/pxa2xx-regs.h> 19#include <mach/pxa2xx-regs.h>
20#include <mach/mfp-pxa25x.h> 20#include "mfp-pxa25x.h"
21#include <mach/reset.h> 21#include <mach/reset.h>
22#include <linux/platform_data/irda-pxaficp.h> 22#include <linux/platform_data/irda-pxaficp.h>
23 23
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
index 28c5b5686638..df83b1bddf34 100644
--- a/arch/arm/mach-pxa/pxa300.c
+++ b/arch/arm/mach-pxa/pxa300.c
@@ -18,7 +18,7 @@
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/io.h> 19#include <linux/io.h>
20 20
21#include <mach/pxa300.h> 21#include "pxa300.h"
22 22
23#include "generic.h" 23#include "generic.h"
24#include "devices.h" 24#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/pxa300.h b/arch/arm/mach-pxa/pxa300.h
index 733b6412c3df..59fa41025c80 100644
--- a/arch/arm/mach-pxa/include/mach/pxa300.h
+++ b/arch/arm/mach-pxa/pxa300.h
@@ -1,7 +1,7 @@
1#ifndef __MACH_PXA300_H 1#ifndef __MACH_PXA300_H
2#define __MACH_PXA300_H 2#define __MACH_PXA300_H
3 3
4#include <mach/pxa3xx.h> 4#include "pxa3xx.h"
5#include <mach/mfp-pxa300.h> 5#include "mfp-pxa300.h"
6 6
7#endif /* __MACH_PXA300_H */ 7#endif /* __MACH_PXA300_H */
diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c
index 2f55bb4b9087..a26eec57eec6 100644
--- a/arch/arm/mach-pxa/pxa320.c
+++ b/arch/arm/mach-pxa/pxa320.c
@@ -18,7 +18,7 @@
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/io.h> 19#include <linux/io.h>
20 20
21#include <mach/pxa320.h> 21#include "pxa320.h"
22 22
23#include "generic.h" 23#include "generic.h"
24#include "devices.h" 24#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/pxa320.h b/arch/arm/mach-pxa/pxa320.h
index b6204e470d89..b9e5115a1c30 100644
--- a/arch/arm/mach-pxa/include/mach/pxa320.h
+++ b/arch/arm/mach-pxa/pxa320.h
@@ -1,8 +1,8 @@
1#ifndef __MACH_PXA320_H 1#ifndef __MACH_PXA320_H
2#define __MACH_PXA320_H 2#define __MACH_PXA320_H
3 3
4#include <mach/pxa3xx.h> 4#include "pxa3xx.h"
5#include <mach/mfp-pxa320.h> 5#include "mfp-pxa320.h"
6 6
7#endif /* __MACH_PXA320_H */ 7#endif /* __MACH_PXA320_H */
8 8
diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c
index 1c85275cb768..eba595fac8ca 100644
--- a/arch/arm/mach-pxa/pxa3xx-ulpi.c
+++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c
@@ -26,7 +26,7 @@
26#include <linux/usb/otg.h> 26#include <linux/usb/otg.h>
27 27
28#include <mach/hardware.h> 28#include <mach/hardware.h>
29#include <mach/regs-u2d.h> 29#include "regs-u2d.h"
30#include <linux/platform_data/usb-pxa3xx-ulpi.h> 30#include <linux/platform_data/usb-pxa3xx-ulpi.h>
31 31
32struct pxa3xx_u2d_ulpi { 32struct pxa3xx_u2d_ulpi {
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 20ce2d386f17..a1c4c888f246 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -30,7 +30,7 @@
30#include <mach/pxa3xx-regs.h> 30#include <mach/pxa3xx-regs.h>
31#include <mach/reset.h> 31#include <mach/reset.h>
32#include <linux/platform_data/usb-ohci-pxa27x.h> 32#include <linux/platform_data/usb-ohci-pxa27x.h>
33#include <mach/pm.h> 33#include "pm.h"
34#include <mach/dma.h> 34#include <mach/dma.h>
35#include <mach/smemc.h> 35#include <mach/smemc.h>
36#include <mach/irqs.h> 36#include <mach/irqs.h>
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx.h b/arch/arm/mach-pxa/pxa3xx.h
index b4143fb6631f..b4143fb6631f 100644
--- a/arch/arm/mach-pxa/include/mach/pxa3xx.h
+++ b/arch/arm/mach-pxa/pxa3xx.h
diff --git a/arch/arm/mach-pxa/pxa930.c b/arch/arm/mach-pxa/pxa930.c
index ab624487cf39..da912be6eae7 100644
--- a/arch/arm/mach-pxa/pxa930.c
+++ b/arch/arm/mach-pxa/pxa930.c
@@ -17,7 +17,7 @@
17#include <linux/gpio-pxa.h> 17#include <linux/gpio-pxa.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19 19
20#include <mach/pxa930.h> 20#include "pxa930.h"
21 21
22#include "devices.h" 22#include "devices.h"
23 23
diff --git a/arch/arm/mach-pxa/include/mach/pxa930.h b/arch/arm/mach-pxa/pxa930.h
index 190363b98d01..4eceb02978e8 100644
--- a/arch/arm/mach-pxa/include/mach/pxa930.h
+++ b/arch/arm/mach-pxa/pxa930.h
@@ -1,7 +1,7 @@
1#ifndef __MACH_PXA930_H 1#ifndef __MACH_PXA930_H
2#define __MACH_PXA930_H 2#define __MACH_PXA930_H
3 3
4#include <mach/pxa3xx.h> 4#include "pxa3xx.h"
5#include <mach/mfp-pxa930.h> 5#include "mfp-pxa930.h"
6 6
7#endif /* __MACH_PXA930_H */ 7#endif /* __MACH_PXA930_H */
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
index 36571a9a44fe..8347d87a713d 100644
--- a/arch/arm/mach-pxa/raumfeld.c
+++ b/arch/arm/mach-pxa/raumfeld.c
@@ -49,7 +49,7 @@
49#include <asm/mach-types.h> 49#include <asm/mach-types.h>
50#include <asm/mach/arch.h> 50#include <asm/mach/arch.h>
51 51
52#include <mach/pxa300.h> 52#include "pxa300.h"
53#include <linux/platform_data/usb-ohci-pxa27x.h> 53#include <linux/platform_data/usb-ohci-pxa27x.h>
54#include <linux/platform_data/video-pxafb.h> 54#include <linux/platform_data/video-pxafb.h>
55#include <linux/platform_data/mmc-pxamci.h> 55#include <linux/platform_data/mmc-pxamci.h>
@@ -1046,7 +1046,7 @@ static void __init raumfeld_common_init(void)
1046 i2c_register_board_info(1, &raumfeld_pwri2c_board_info, 1); 1046 i2c_register_board_info(1, &raumfeld_pwri2c_board_info, 1);
1047} 1047}
1048 1048
1049static void __init raumfeld_controller_init(void) 1049static void __init __maybe_unused raumfeld_controller_init(void)
1050{ 1050{
1051 int ret; 1051 int ret;
1052 1052
@@ -1067,7 +1067,7 @@ static void __init raumfeld_controller_init(void)
1067 raumfeld_w1_init(); 1067 raumfeld_w1_init();
1068} 1068}
1069 1069
1070static void __init raumfeld_connector_init(void) 1070static void __init __maybe_unused raumfeld_connector_init(void)
1071{ 1071{
1072 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_connector_pin_config)); 1072 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_connector_pin_config));
1073 spi_register_board_info(ARRAY_AND_SIZE(connector_spi_devices)); 1073 spi_register_board_info(ARRAY_AND_SIZE(connector_spi_devices));
@@ -1079,7 +1079,7 @@ static void __init raumfeld_connector_init(void)
1079 raumfeld_common_init(); 1079 raumfeld_common_init();
1080} 1080}
1081 1081
1082static void __init raumfeld_speaker_init(void) 1082static void __init __maybe_unused raumfeld_speaker_init(void)
1083{ 1083{
1084 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_speaker_pin_config)); 1084 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_speaker_pin_config));
1085 spi_register_board_info(ARRAY_AND_SIZE(speaker_spi_devices)); 1085 spi_register_board_info(ARRAY_AND_SIZE(speaker_spi_devices));
diff --git a/arch/arm/mach-pxa/include/mach/regs-rtc.h b/arch/arm/mach-pxa/regs-rtc.h
index f0e4a589bbe1..f0e4a589bbe1 100644
--- a/arch/arm/mach-pxa/include/mach/regs-rtc.h
+++ b/arch/arm/mach-pxa/regs-rtc.h
diff --git a/arch/arm/mach-pxa/include/mach/regs-u2d.h b/arch/arm/mach-pxa/regs-u2d.h
index c15c0c57de08..c15c0c57de08 100644
--- a/arch/arm/mach-pxa/include/mach/regs-u2d.h
+++ b/arch/arm/mach-pxa/regs-u2d.h
diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c
index 710c493eac89..1414b5f29114 100644
--- a/arch/arm/mach-pxa/saar.c
+++ b/arch/arm/mach-pxa/saar.c
@@ -31,7 +31,7 @@
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
32#include <asm/mach/flash.h> 32#include <asm/mach/flash.h>
33 33
34#include <mach/pxa930.h> 34#include "pxa930.h"
35#include <linux/platform_data/video-pxafb.h> 35#include <linux/platform_data/video-pxafb.h>
36 36
37#include "devices.h" 37#include "devices.h"
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index bdc0c41bc4fd..b80eab9993c5 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -27,10 +27,10 @@
27#include <linux/io.h> 27#include <linux/io.h>
28 28
29#include <asm/mach-types.h> 29#include <asm/mach-types.h>
30#include <mach/pm.h> 30#include "pm.h"
31#include <mach/pxa2xx-regs.h> 31#include <mach/pxa2xx-regs.h>
32#include <mach/regs-rtc.h> 32#include "regs-rtc.h"
33#include <mach/sharpsl_pm.h> 33#include "sharpsl_pm.h"
34 34
35/* 35/*
36 * Constants 36 * Constants
diff --git a/arch/arm/mach-pxa/include/mach/sharpsl_pm.h b/arch/arm/mach-pxa/sharpsl_pm.h
index 905be6755f04..905be6755f04 100644
--- a/arch/arm/mach-pxa/include/mach/sharpsl_pm.h
+++ b/arch/arm/mach-pxa/sharpsl_pm.h
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index f4e2e2719580..825f903ab77e 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -40,15 +40,15 @@
40#include <asm/mach/sharpsl_param.h> 40#include <asm/mach/sharpsl_param.h>
41#include <asm/hardware/scoop.h> 41#include <asm/hardware/scoop.h>
42 42
43#include <mach/pxa27x.h> 43#include "pxa27x.h"
44#include <mach/pxa27x-udc.h> 44#include "pxa27x-udc.h"
45#include <mach/reset.h> 45#include <mach/reset.h>
46#include <linux/platform_data/irda-pxaficp.h> 46#include <linux/platform_data/irda-pxaficp.h>
47#include <linux/platform_data/mmc-pxamci.h> 47#include <linux/platform_data/mmc-pxamci.h>
48#include <linux/platform_data/usb-ohci-pxa27x.h> 48#include <linux/platform_data/usb-ohci-pxa27x.h>
49#include <linux/platform_data/video-pxafb.h> 49#include <linux/platform_data/video-pxafb.h>
50#include <mach/spitz.h> 50#include <mach/spitz.h>
51#include <mach/sharpsl_pm.h> 51#include "sharpsl_pm.h"
52#include <mach/smemc.h> 52#include <mach/smemc.h>
53 53
54#include "generic.h" 54#include "generic.h"
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
index e191f9996b26..ea9f9034cb54 100644
--- a/arch/arm/mach-pxa/spitz_pm.c
+++ b/arch/arm/mach-pxa/spitz_pm.c
@@ -25,8 +25,8 @@
25#include <mach/hardware.h> 25#include <mach/hardware.h>
26 26
27#include <mach/spitz.h> 27#include <mach/spitz.h>
28#include <mach/pxa27x.h> 28#include "pxa27x.h"
29#include <mach/sharpsl_pm.h> 29#include "sharpsl_pm.h"
30 30
31#include "generic.h" 31#include "generic.h"
32 32
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index 01de542432a6..702f4f14b708 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -43,10 +43,10 @@
43#include <asm/mach/irq.h> 43#include <asm/mach/irq.h>
44#include <asm/mach/flash.h> 44#include <asm/mach/flash.h>
45 45
46#include <mach/pxa27x.h> 46#include "pxa27x.h"
47#include <linux/platform_data/mmc-pxamci.h> 47#include <linux/platform_data/mmc-pxamci.h>
48#include <mach/udc.h> 48#include "udc.h"
49#include <mach/pxa27x-udc.h> 49#include "pxa27x-udc.h"
50#include <mach/smemc.h> 50#include <mach/smemc.h>
51 51
52#include <linux/spi/spi.h> 52#include <linux/spi/spi.h>
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c
index 349a13a76215..4b38e821ac9c 100644
--- a/arch/arm/mach-pxa/tavorevb.c
+++ b/arch/arm/mach-pxa/tavorevb.c
@@ -24,7 +24,7 @@
24#include <asm/mach-types.h> 24#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
26 26
27#include <mach/pxa930.h> 27#include "pxa930.h"
28#include <linux/platform_data/video-pxafb.h> 28#include <linux/platform_data/video-pxafb.h>
29#include <linux/platform_data/keypad-pxa27x.h> 29#include <linux/platform_data/keypad-pxa27x.h>
30 30
diff --git a/arch/arm/mach-pxa/tosa-bt.c b/arch/arm/mach-pxa/tosa-bt.c
index e0a53208880a..107f37210fb9 100644
--- a/arch/arm/mach-pxa/tosa-bt.c
+++ b/arch/arm/mach-pxa/tosa-bt.c
@@ -16,7 +16,7 @@
16#include <linux/delay.h> 16#include <linux/delay.h>
17#include <linux/rfkill.h> 17#include <linux/rfkill.h>
18 18
19#include <mach/tosa_bt.h> 19#include "tosa_bt.h"
20 20
21static void tosa_bt_on(struct tosa_bt_data *data) 21static void tosa_bt_on(struct tosa_bt_data *data)
22{ 22{
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index e6e27c0468e4..13de6602966f 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -43,12 +43,12 @@
43#include <asm/setup.h> 43#include <asm/setup.h>
44#include <asm/mach-types.h> 44#include <asm/mach-types.h>
45 45
46#include <mach/pxa25x.h> 46#include "pxa25x.h"
47#include <mach/reset.h> 47#include <mach/reset.h>
48#include <linux/platform_data/irda-pxaficp.h> 48#include <linux/platform_data/irda-pxaficp.h>
49#include <linux/platform_data/mmc-pxamci.h> 49#include <linux/platform_data/mmc-pxamci.h>
50#include <mach/udc.h> 50#include "udc.h"
51#include <mach/tosa_bt.h> 51#include "tosa_bt.h"
52#include <mach/audio.h> 52#include <mach/audio.h>
53#include <mach/smemc.h> 53#include <mach/smemc.h>
54 54
diff --git a/arch/arm/mach-pxa/include/mach/tosa_bt.h b/arch/arm/mach-pxa/tosa_bt.h
index efc3c3d3b75d..efc3c3d3b75d 100644
--- a/arch/arm/mach-pxa/include/mach/tosa_bt.h
+++ b/arch/arm/mach-pxa/tosa_bt.h
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 066e3a250ee0..ea78bc5c4198 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -41,7 +41,7 @@
41#include <asm/mach/irq.h> 41#include <asm/mach/irq.h>
42#include <asm/mach/flash.h> 42#include <asm/mach/flash.h>
43 43
44#include <mach/pxa27x.h> 44#include "pxa27x.h"
45#include <mach/trizeps4.h> 45#include <mach/trizeps4.h>
46#include <mach/audio.h> 46#include <mach/audio.h>
47#include <linux/platform_data/video-pxafb.h> 47#include <linux/platform_data/video-pxafb.h>
diff --git a/arch/arm/mach-pxa/include/mach/udc.h b/arch/arm/mach-pxa/udc.h
index 9a827e32db98..9a827e32db98 100644
--- a/arch/arm/mach-pxa/include/mach/udc.h
+++ b/arch/arm/mach-pxa/udc.h
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index 7ecc61ad2bed..8e89d91b206b 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -47,12 +47,12 @@
47#include <linux/mtd/physmap.h> 47#include <linux/mtd/physmap.h>
48#include <linux/syscore_ops.h> 48#include <linux/syscore_ops.h>
49 49
50#include <mach/pxa25x.h> 50#include "pxa25x.h"
51#include <mach/audio.h> 51#include <mach/audio.h>
52#include <linux/platform_data/video-pxafb.h> 52#include <linux/platform_data/video-pxafb.h>
53#include <mach/regs-uart.h> 53#include <mach/regs-uart.h>
54#include <linux/platform_data/pcmcia-pxa2xx_viper.h> 54#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
55#include <mach/viper.h> 55#include "viper.h"
56 56
57#include <asm/setup.h> 57#include <asm/setup.h>
58#include <asm/mach-types.h> 58#include <asm/mach-types.h>
diff --git a/arch/arm/mach-pxa/include/mach/viper.h b/arch/arm/mach-pxa/viper.h
index 5f5fbf1f6489..5f5fbf1f6489 100644
--- a/arch/arm/mach-pxa/include/mach/viper.h
+++ b/arch/arm/mach-pxa/viper.h
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c
index 54122a983ae3..c006ee902a8f 100644
--- a/arch/arm/mach-pxa/vpac270.c
+++ b/arch/arm/mach-pxa/vpac270.c
@@ -31,14 +31,14 @@
31#include <asm/mach-types.h> 31#include <asm/mach-types.h>
32#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
33 33
34#include <mach/pxa27x.h> 34#include "pxa27x.h"
35#include <mach/audio.h> 35#include <mach/audio.h>
36#include <mach/vpac270.h> 36#include <mach/vpac270.h>
37#include <linux/platform_data/mmc-pxamci.h> 37#include <linux/platform_data/mmc-pxamci.h>
38#include <linux/platform_data/video-pxafb.h> 38#include <linux/platform_data/video-pxafb.h>
39#include <linux/platform_data/usb-ohci-pxa27x.h> 39#include <linux/platform_data/usb-ohci-pxa27x.h>
40#include <mach/pxa27x-udc.h> 40#include "pxa27x-udc.h"
41#include <mach/udc.h> 41#include "udc.h"
42#include <linux/platform_data/ata-pxa.h> 42#include <linux/platform_data/ata-pxa.h>
43 43
44#include "generic.h" 44#include "generic.h"
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c
index 13b1d4586d7d..3f06cd90567a 100644
--- a/arch/arm/mach-pxa/xcep.c
+++ b/arch/arm/mach-pxa/xcep.c
@@ -28,7 +28,7 @@
28#include <asm/mach/map.h> 28#include <asm/mach/map.h>
29 29
30#include <mach/hardware.h> 30#include <mach/hardware.h>
31#include <mach/pxa25x.h> 31#include "pxa25x.h"
32#include <mach/smemc.h> 32#include <mach/smemc.h>
33 33
34#include "generic.h" 34#include "generic.h"
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c
index d9899d73e46b..510e533871f3 100644
--- a/arch/arm/mach-pxa/z2.c
+++ b/arch/arm/mach-pxa/z2.c
@@ -35,13 +35,13 @@
35#include <asm/mach-types.h> 35#include <asm/mach-types.h>
36#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
37 37
38#include <mach/pxa27x.h> 38#include "pxa27x.h"
39#include <mach/mfp-pxa27x.h> 39#include "mfp-pxa27x.h"
40#include <mach/z2.h> 40#include <mach/z2.h>
41#include <linux/platform_data/video-pxafb.h> 41#include <linux/platform_data/video-pxafb.h>
42#include <linux/platform_data/mmc-pxamci.h> 42#include <linux/platform_data/mmc-pxamci.h>
43#include <linux/platform_data/keypad-pxa27x.h> 43#include <linux/platform_data/keypad-pxa27x.h>
44#include <mach/pm.h> 44#include "pm.h"
45 45
46#include "generic.h" 46#include "generic.h"
47#include "devices.h" 47#include "devices.h"
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index 30e62a3f0701..515b7ddda8aa 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -38,17 +38,17 @@
38#include <asm/mach/arch.h> 38#include <asm/mach/arch.h>
39#include <asm/mach/map.h> 39#include <asm/mach/map.h>
40 40
41#include <mach/pxa27x.h> 41#include "pxa27x.h"
42#include <mach/regs-uart.h> 42#include <mach/regs-uart.h>
43#include <linux/platform_data/usb-ohci-pxa27x.h> 43#include <linux/platform_data/usb-ohci-pxa27x.h>
44#include <linux/platform_data/mmc-pxamci.h> 44#include <linux/platform_data/mmc-pxamci.h>
45#include <mach/pxa27x-udc.h> 45#include "pxa27x-udc.h"
46#include <mach/udc.h> 46#include "udc.h"
47#include <linux/platform_data/video-pxafb.h> 47#include <linux/platform_data/video-pxafb.h>
48#include <mach/pm.h> 48#include "pm.h"
49#include <mach/audio.h> 49#include <mach/audio.h>
50#include <linux/platform_data/pcmcia-pxa2xx_viper.h> 50#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
51#include <mach/zeus.h> 51#include "zeus.h"
52#include <mach/smemc.h> 52#include <mach/smemc.h>
53 53
54#include "generic.h" 54#include "generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/zeus.h b/arch/arm/mach-pxa/zeus.h
index 56024f81d57e..56024f81d57e 100644
--- a/arch/arm/mach-pxa/include/mach/zeus.h
+++ b/arch/arm/mach-pxa/zeus.h
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index e20359a7433c..3642389b301a 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -25,10 +25,10 @@
25 25
26#include <asm/mach-types.h> 26#include <asm/mach-types.h>
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28#include <mach/pxa3xx.h> 28#include "pxa3xx.h"
29#include <mach/audio.h> 29#include <mach/audio.h>
30#include <linux/platform_data/video-pxafb.h> 30#include <linux/platform_data/video-pxafb.h>
31#include <mach/zylonite.h> 31#include "zylonite.h"
32#include <linux/platform_data/mmc-pxamci.h> 32#include <linux/platform_data/mmc-pxamci.h>
33#include <linux/platform_data/usb-ohci-pxa27x.h> 33#include <linux/platform_data/usb-ohci-pxa27x.h>
34#include <linux/platform_data/keypad-pxa27x.h> 34#include <linux/platform_data/keypad-pxa27x.h>
diff --git a/arch/arm/mach-pxa/include/mach/zylonite.h b/arch/arm/mach-pxa/zylonite.h
index ecca976f03d2..ecca976f03d2 100644
--- a/arch/arm/mach-pxa/include/mach/zylonite.h
+++ b/arch/arm/mach-pxa/zylonite.h
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c b/arch/arm/mach-pxa/zylonite_pxa300.c
index 869bce7c3f24..e247acf1400a 100644
--- a/arch/arm/mach-pxa/zylonite_pxa300.c
+++ b/arch/arm/mach-pxa/zylonite_pxa300.c
@@ -21,8 +21,8 @@
21#include <linux/platform_data/pca953x.h> 21#include <linux/platform_data/pca953x.h>
22#include <linux/gpio.h> 22#include <linux/gpio.h>
23 23
24#include <mach/pxa300.h> 24#include "pxa300.h"
25#include <mach/zylonite.h> 25#include "zylonite.h"
26 26
27#include "generic.h" 27#include "generic.h"
28 28
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c b/arch/arm/mach-pxa/zylonite_pxa320.c
index 9942bac4cf7d..47961ae0c448 100644
--- a/arch/arm/mach-pxa/zylonite_pxa320.c
+++ b/arch/arm/mach-pxa/zylonite_pxa320.c
@@ -18,8 +18,8 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/gpio.h> 19#include <linux/gpio.h>
20 20
21#include <mach/pxa320.h> 21#include "pxa320.h"
22#include <mach/zylonite.h> 22#include "zylonite.h"
23 23
24#include "generic.h" 24#include "generic.h"
25 25
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig
index 565925f37dc5..def40a0dd60c 100644
--- a/arch/arm/mach-realview/Kconfig
+++ b/arch/arm/mach-realview/Kconfig
@@ -1,13 +1,29 @@
1menu "RealView platform type" 1menuconfig ARCH_REALVIEW
2 depends on ARCH_REALVIEW 2 bool "ARM Ltd. RealView family" if ARCH_MULTI_V5 || ARCH_MULTI_V6 || ARCH_MULTI_V7
3 select ARM_AMBA
4 select ARM_TIMER_SP804
5 select COMMON_CLK_VERSATILE
6 select GPIO_PL061 if GPIOLIB
7 select ICST
8 select PLAT_VERSATILE
9 select PLAT_VERSATILE_SCHED_CLOCK
10 help
11 This enables support for ARM Ltd RealView boards.
12
13if ARCH_REALVIEW
3 14
4config REALVIEW_DT 15config REALVIEW_DT
5 bool "Support RealView(R) Device Tree based boot" 16 bool "Support RealView(R) Device Tree based boot"
6 select ARM_GIC 17 select ARM_GIC
18 select CLK_SP810
19 select HAVE_SMP
20 select ICST
21 select MACH_REALVIEW_EB if ARCH_MULTI_V5
7 select MFD_SYSCON 22 select MFD_SYSCON
8 select POWER_RESET 23 select POWER_RESET
9 select POWER_RESET_VERSATILE 24 select POWER_RESET_VERSATILE
10 select POWER_SUPPLY 25 select POWER_SUPPLY
26 select SMP_ON_UP if SMP
11 select SOC_REALVIEW 27 select SOC_REALVIEW
12 select USE_OF 28 select USE_OF
13 help 29 help
@@ -17,14 +33,32 @@ config REALVIEW_DT
17config MACH_REALVIEW_EB 33config MACH_REALVIEW_EB
18 bool "Support RealView(R) Emulation Baseboard" 34 bool "Support RealView(R) Emulation Baseboard"
19 select ARM_GIC 35 select ARM_GIC
36 select CPU_ARM926T if ARCH_MULTI_V5
20 help 37 help
21 Include support for the ARM(R) RealView(R) Emulation Baseboard 38 Include support for the ARM(R) RealView(R) Emulation Baseboard
22 platform. 39 platform. On an ARMv5 kernel, this will include support for
40 the ARM926EJ-S core tile, while on an ARMv6/v7 kernel, at least
41 one of the ARM1136, ARM1176, ARM11MPCore or Cortex-A9MPCore
42 core tile options should be enabled.
43
44config REALVIEW_EB_ARM1136
45 bool "Support ARM1136J(F)-S Tile"
46 depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
47 select CPU_V6
48 help
49 Enable support for the ARM1136 tile fitted to the
50 Realview(R) Emulation Baseboard platform.
51
52config REALVIEW_EB_ARM1176
53 bool "Support ARM1176JZ(F)-S Tile"
54 depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
55 help
56 Enable support for the ARM1176 tile fitted to the
57 Realview(R) Emulation Baseboard platform.
23 58
24config REALVIEW_EB_A9MP 59config REALVIEW_EB_A9MP
25 bool "Support Multicore Cortex-A9 Tile" 60 bool "Support Multicore Cortex-A9 Tile"
26 depends on MACH_REALVIEW_EB 61 depends on MACH_REALVIEW_EB && ARCH_MULTI_V7
27 select CPU_V7
28 select HAVE_ARM_SCU if SMP 62 select HAVE_ARM_SCU if SMP
29 select HAVE_ARM_TWD if SMP 63 select HAVE_ARM_TWD if SMP
30 select HAVE_SMP 64 select HAVE_SMP
@@ -35,9 +69,7 @@ config REALVIEW_EB_A9MP
35 69
36config REALVIEW_EB_ARM11MP 70config REALVIEW_EB_ARM11MP
37 bool "Support ARM11MPCore Tile" 71 bool "Support ARM11MPCore Tile"
38 depends on MACH_REALVIEW_EB 72 depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
39 select ARCH_HAS_BARRIERS if SMP
40 select CPU_V6K
41 select HAVE_ARM_SCU if SMP 73 select HAVE_ARM_SCU if SMP
42 select HAVE_ARM_TWD if SMP 74 select HAVE_ARM_TWD if SMP
43 select HAVE_SMP 75 select HAVE_SMP
@@ -48,7 +80,7 @@ config REALVIEW_EB_ARM11MP
48 80
49config REALVIEW_EB_ARM11MP_REVB 81config REALVIEW_EB_ARM11MP_REVB
50 bool "Support ARM11MPCore RevB Tile" 82 bool "Support ARM11MPCore RevB Tile"
51 depends on REALVIEW_EB_ARM11MP 83 depends on REALVIEW_EB_ARM11MP && ARCH_MULTI_V6
52 help 84 help
53 Enable support for the ARM11MPCore Revision B tile on the 85 Enable support for the ARM11MPCore Revision B tile on the
54 Realview(R) Emulation Baseboard platform. Since there are device 86 Realview(R) Emulation Baseboard platform. Since there are device
@@ -57,9 +89,8 @@ config REALVIEW_EB_ARM11MP_REVB
57 89
58config MACH_REALVIEW_PB11MP 90config MACH_REALVIEW_PB11MP
59 bool "Support RealView(R) Platform Baseboard for ARM11MPCore" 91 bool "Support RealView(R) Platform Baseboard for ARM11MPCore"
60 select ARCH_HAS_BARRIERS if SMP 92 depends on ARCH_MULTI_V6
61 select ARM_GIC 93 select ARM_GIC
62 select CPU_V6K
63 select HAVE_ARM_SCU if SMP 94 select HAVE_ARM_SCU if SMP
64 select HAVE_ARM_TWD if SMP 95 select HAVE_ARM_TWD if SMP
65 select HAVE_PATA_PLATFORM 96 select HAVE_PATA_PLATFORM
@@ -73,6 +104,7 @@ config MACH_REALVIEW_PB11MP
73# ARMv6 CPU without K extensions, but does have the new exclusive ops 104# ARMv6 CPU without K extensions, but does have the new exclusive ops
74config MACH_REALVIEW_PB1176 105config MACH_REALVIEW_PB1176
75 bool "Support RealView(R) Platform Baseboard for ARM1176JZF-S" 106 bool "Support RealView(R) Platform Baseboard for ARM1176JZF-S"
107 depends on ARCH_MULTI_V6
76 select ARM_GIC 108 select ARM_GIC
77 select CPU_V6 109 select CPU_V6
78 select HAVE_TCM 110 select HAVE_TCM
@@ -92,8 +124,8 @@ config REALVIEW_PB1176_SECURE_FLASH
92 124
93config MACH_REALVIEW_PBA8 125config MACH_REALVIEW_PBA8
94 bool "Support RealView(R) Platform Baseboard for Cortex(tm)-A8 platform" 126 bool "Support RealView(R) Platform Baseboard for Cortex(tm)-A8 platform"
127 depends on ARCH_MULTI_V7
95 select ARM_GIC 128 select ARM_GIC
96 select CPU_V7
97 select HAVE_PATA_PLATFORM 129 select HAVE_PATA_PLATFORM
98 help 130 help
99 Include support for the ARM(R) RealView Platform Baseboard for 131 Include support for the ARM(R) RealView Platform Baseboard for
@@ -101,15 +133,15 @@ config MACH_REALVIEW_PBA8
101 support for PCI-E and Compact Flash. 133 support for PCI-E and Compact Flash.
102 134
103config MACH_REALVIEW_PBX 135config MACH_REALVIEW_PBX
104 bool "Support RealView(R) Platform Baseboard Explore" 136 bool "Support RealView(R) Platform Baseboard Explore for Cortex-A9"
105 select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET 137 depends on ARCH_MULTI_V7
106 select ARM_GIC 138 select ARM_GIC
107 select HAVE_ARM_SCU if SMP 139 select HAVE_ARM_SCU if SMP
108 select HAVE_ARM_TWD if SMP 140 select HAVE_ARM_TWD if SMP
109 select HAVE_PATA_PLATFORM 141 select HAVE_PATA_PLATFORM
110 select HAVE_SMP 142 select HAVE_SMP
111 select MIGHT_HAVE_CACHE_L2X0 143 select MIGHT_HAVE_CACHE_L2X0
112 select ZONE_DMA if SPARSEMEM 144 select ZONE_DMA
113 help 145 help
114 Include support for the ARM(R) RealView(R) Platform Baseboard 146 Include support for the ARM(R) RealView(R) Platform Baseboard
115 Explore. 147 Explore.
@@ -124,6 +156,6 @@ config REALVIEW_HIGH_PHYS_OFFSET
124 the board supports 512MB of RAM, this option allows the 156 the board supports 512MB of RAM, this option allows the
125 memory to be accessed contiguously at the high physical 157 memory to be accessed contiguously at the high physical
126 offset. On the PBX board, disabling this option allows 1GB of 158 offset. On the PBX board, disabling this option allows 1GB of
127 RAM to be used with SPARSEMEM. 159 RAM to be used with HIGHMEM.
128 160
129endmenu 161endif
diff --git a/arch/arm/mach-realview/Makefile b/arch/arm/mach-realview/Makefile
index e07fdf7ae8a7..8be6632407d8 100644
--- a/arch/arm/mach-realview/Makefile
+++ b/arch/arm/mach-realview/Makefile
@@ -1,13 +1,20 @@
1# 1#
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
5 -I$(srctree)/arch/arm/plat-versatile/include
6
4 7
5obj-y := core.o
6obj-$(CONFIG_REALVIEW_DT) += realview-dt.o 8obj-$(CONFIG_REALVIEW_DT) += realview-dt.o
9obj-$(CONFIG_SMP) += platsmp-dt.o
10obj-y := core.o
11
12ifdef CONFIG_ATAGS
7obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o 13obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o
8obj-$(CONFIG_MACH_REALVIEW_PB11MP) += realview_pb11mp.o 14obj-$(CONFIG_MACH_REALVIEW_PB11MP) += realview_pb11mp.o
9obj-$(CONFIG_MACH_REALVIEW_PB1176) += realview_pb1176.o 15obj-$(CONFIG_MACH_REALVIEW_PB1176) += realview_pb1176.o
10obj-$(CONFIG_MACH_REALVIEW_PBA8) += realview_pba8.o 16obj-$(CONFIG_MACH_REALVIEW_PBA8) += realview_pba8.o
11obj-$(CONFIG_MACH_REALVIEW_PBX) += realview_pbx.o 17obj-$(CONFIG_MACH_REALVIEW_PBX) += realview_pbx.o
12obj-$(CONFIG_SMP) += platsmp.o 18obj-$(CONFIG_SMP) += platsmp.o
19endif
13obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o 20obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
diff --git a/arch/arm/mach-realview/include/mach/board-eb.h b/arch/arm/mach-realview/board-eb.h
index a301e61a5554..a850ae6945b0 100644
--- a/arch/arm/mach-realview/include/mach/board-eb.h
+++ b/arch/arm/mach-realview/board-eb.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/board-eb.h
3 *
4 * Copyright (C) 2007 ARM Limited 2 * Copyright (C) 2007 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,7 +19,7 @@
21#ifndef __ASM_ARCH_BOARD_EB_H 19#ifndef __ASM_ARCH_BOARD_EB_H
22#define __ASM_ARCH_BOARD_EB_H 20#define __ASM_ARCH_BOARD_EB_H
23 21
24#include <mach/platform.h> 22#include "platform.h"
25 23
26/* 24/*
27 * RealView EB + ARM11MPCore peripheral addresses 25 * RealView EB + ARM11MPCore peripheral addresses
diff --git a/arch/arm/mach-realview/include/mach/board-pb1176.h b/arch/arm/mach-realview/board-pb1176.h
index 2a15fef94730..29c04a9e1344 100644
--- a/arch/arm/mach-realview/include/mach/board-pb1176.h
+++ b/arch/arm/mach-realview/board-pb1176.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/board-pb1176.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,7 +19,7 @@
21#ifndef __ASM_ARCH_BOARD_PB1176_H 19#ifndef __ASM_ARCH_BOARD_PB1176_H
22#define __ASM_ARCH_BOARD_PB1176_H 20#define __ASM_ARCH_BOARD_PB1176_H
23 21
24#include <mach/platform.h> 22#include "platform.h"
25 23
26/* 24/*
27 * Peripheral addresses 25 * Peripheral addresses
diff --git a/arch/arm/mach-realview/include/mach/board-pb11mp.h b/arch/arm/mach-realview/board-pb11mp.h
index aa2d4e02ea2c..b16e6e85e92d 100644
--- a/arch/arm/mach-realview/include/mach/board-pb11mp.h
+++ b/arch/arm/mach-realview/board-pb11mp.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/board-pb11mp.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,7 +19,7 @@
21#ifndef __ASM_ARCH_BOARD_PB11MP_H 19#ifndef __ASM_ARCH_BOARD_PB11MP_H
22#define __ASM_ARCH_BOARD_PB11MP_H 20#define __ASM_ARCH_BOARD_PB11MP_H
23 21
24#include <mach/platform.h> 22#include "platform.h"
25 23
26/* 24/*
27 * Peripheral addresses 25 * Peripheral addresses
diff --git a/arch/arm/mach-realview/include/mach/board-pba8.h b/arch/arm/mach-realview/board-pba8.h
index 4dfc67a4f45f..6a1391f50373 100644
--- a/arch/arm/mach-realview/include/mach/board-pba8.h
+++ b/arch/arm/mach-realview/board-pba8.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-arm/arch-realview/board-pba8.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,7 +19,7 @@
21#ifndef __ASM_ARCH_BOARD_PBA8_H 19#ifndef __ASM_ARCH_BOARD_PBA8_H
22#define __ASM_ARCH_BOARD_PBA8_H 20#define __ASM_ARCH_BOARD_PBA8_H
23 21
24#include <mach/platform.h> 22#include "platform.h"
25 23
26/* 24/*
27 * Peripheral addresses 25 * Peripheral addresses
diff --git a/arch/arm/mach-realview/include/mach/board-pbx.h b/arch/arm/mach-realview/board-pbx.h
index 848bfff6d8f1..5cda480b12bb 100644
--- a/arch/arm/mach-realview/include/mach/board-pbx.h
+++ b/arch/arm/mach-realview/board-pbx.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/board-pbx.h
3 *
4 * Copyright (C) 2009 ARM Limited 2 * Copyright (C) 2009 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -20,7 +18,7 @@
20#ifndef __ASM_ARCH_BOARD_PBX_H 18#ifndef __ASM_ARCH_BOARD_PBX_H
21#define __ASM_ARCH_BOARD_PBX_H 19#define __ASM_ARCH_BOARD_PBX_H
22 20
23#include <mach/platform.h> 21#include "platform.h"
24 22
25/* 23/*
26 * Peripheral addresses 24 * Peripheral addresses
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index 44575edc44b1..baf174542e36 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -36,8 +36,7 @@
36#include <linux/memblock.h> 36#include <linux/memblock.h>
37 37
38#include <clocksource/timer-sp804.h> 38#include <clocksource/timer-sp804.h>
39 39#include "hardware.h"
40#include <mach/hardware.h>
41#include <asm/irq.h> 40#include <asm/irq.h>
42#include <asm/mach-types.h> 41#include <asm/mach-types.h>
43#include <asm/hardware/icst.h> 42#include <asm/hardware/icst.h>
@@ -46,8 +45,7 @@
46#include <asm/mach/irq.h> 45#include <asm/mach/irq.h>
47#include <asm/mach/map.h> 46#include <asm/mach/map.h>
48 47
49#include <mach/platform.h> 48#include "platform.h"
50#include <mach/irqs.h>
51 49
52#include <plat/sched_clock.h> 50#include <plat/sched_clock.h>
53 51
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index 670ee0eb844a..05a995ea16d3 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/arm/mach-realview/core.h
3 *
4 * Copyright (C) 2004 ARM Limited 2 * Copyright (C) 2004 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd 3 * Copyright (C) 2000 Deep Blue Solutions Ltd
6 * 4 *
diff --git a/arch/arm/mach-realview/include/mach/hardware.h b/arch/arm/mach-realview/hardware.h
index 281e71c97525..957a230aadf4 100644
--- a/arch/arm/mach-realview/include/mach/hardware.h
+++ b/arch/arm/mach-realview/hardware.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/hardware.h
3 *
4 * This file contains the hardware definitions of the RealView boards. 2 * This file contains the hardware definitions of the RealView boards.
5 * 3 *
6 * Copyright (C) 2003 ARM Limited. 4 * Copyright (C) 2003 ARM Limited.
diff --git a/arch/arm/mach-realview/include/mach/barriers.h b/arch/arm/mach-realview/include/mach/barriers.h
deleted file mode 100644
index 9a732195aa1c..000000000000
--- a/arch/arm/mach-realview/include/mach/barriers.h
+++ /dev/null
@@ -1,8 +0,0 @@
1/*
2 * Barriers redefined for RealView ARM11MPCore platforms with L220 cache
3 * controller to work around hardware errata causing the outer_sync()
4 * operation to deadlock the system.
5 */
6#define mb() dsb()
7#define rmb() dsb()
8#define wmb() mb()
diff --git a/arch/arm/mach-realview/include/mach/irqs.h b/arch/arm/mach-realview/include/mach/irqs.h
deleted file mode 100644
index 78854f2fa323..000000000000
--- a/arch/arm/mach-realview/include/mach/irqs.h
+++ /dev/null
@@ -1,40 +0,0 @@
1/*
2 * arch/arm/mach-realview/include/mach/irqs.h
3 *
4 * Copyright (C) 2003 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#ifndef __ASM_ARCH_IRQS_H
23#define __ASM_ARCH_IRQS_H
24
25#include <mach/irqs-eb.h>
26#include <mach/irqs-pb11mp.h>
27#include <mach/irqs-pb1176.h>
28#include <mach/irqs-pba8.h>
29#include <mach/irqs-pbx.h>
30
31#define IRQ_LOCALTIMER 29
32#define IRQ_LOCALWDOG 30
33
34#define IRQ_GIC_START 32
35
36#ifndef NR_IRQS
37#error "NR_IRQS not defined by the board-specific files"
38#endif
39
40#endif
diff --git a/arch/arm/mach-realview/include/mach/memory.h b/arch/arm/mach-realview/include/mach/memory.h
deleted file mode 100644
index 23e7a313f75d..000000000000
--- a/arch/arm/mach-realview/include/mach/memory.h
+++ /dev/null
@@ -1,64 +0,0 @@
1/*
2 * arch/arm/mach-realview/include/mach/memory.h
3 *
4 * Copyright (C) 2003 ARM Limited
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#ifndef __ASM_ARCH_MEMORY_H
21#define __ASM_ARCH_MEMORY_H
22
23#ifdef CONFIG_SPARSEMEM
24
25/*
26 * Sparsemem definitions for RealView PBX.
27 *
28 * The RealView PBX board has another block of 512MB of RAM at 0x20000000,
29 * however only the block at 0x70000000 (or the 256MB mirror at 0x00000000)
30 * may be used for DMA.
31 *
32 * The macros below define a section size of 256MB and a non-linear virtual to
33 * physical mapping:
34 *
35 * 256MB @ 0x00000000 -> PAGE_OFFSET
36 * 512MB @ 0x20000000 -> PAGE_OFFSET + 0x10000000
37 * 256MB @ 0x80000000 -> PAGE_OFFSET + 0x30000000
38 */
39#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET
40#error "SPARSEMEM not available with REALVIEW_HIGH_PHYS_OFFSET"
41#endif
42
43#define MAX_PHYSMEM_BITS 32
44#define SECTION_SIZE_BITS 28
45
46/* bank page offsets */
47#define PAGE_OFFSET1 (PAGE_OFFSET + 0x10000000)
48#define PAGE_OFFSET2 (PAGE_OFFSET + 0x30000000)
49
50#define PHYS_OFFSET PLAT_PHYS_OFFSET
51
52#define __phys_to_virt(phys) \
53 ((phys) >= 0x80000000 ? (phys) - 0x80000000 + PAGE_OFFSET2 : \
54 (phys) >= 0x20000000 ? (phys) - 0x20000000 + PAGE_OFFSET1 : \
55 (phys) + PAGE_OFFSET)
56
57#define __virt_to_phys(virt) \
58 ((virt) >= PAGE_OFFSET2 ? (virt) - PAGE_OFFSET2 + 0x80000000 : \
59 (virt) >= PAGE_OFFSET1 ? (virt) - PAGE_OFFSET1 + 0x20000000 : \
60 (virt) - PAGE_OFFSET)
61
62#endif /* CONFIG_SPARSEMEM */
63
64#endif
diff --git a/arch/arm/mach-realview/include/mach/uncompress.h b/arch/arm/mach-realview/include/mach/uncompress.h
deleted file mode 100644
index cfa30d21783b..000000000000
--- a/arch/arm/mach-realview/include/mach/uncompress.h
+++ /dev/null
@@ -1,77 +0,0 @@
1/*
2 * arch/arm/mach-realview/include/mach/uncompress.h
3 *
4 * Copyright (C) 2003 ARM Limited
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#include <mach/hardware.h>
21#include <asm/mach-types.h>
22
23#include <mach/board-eb.h>
24#include <mach/board-pb11mp.h>
25#include <mach/board-pb1176.h>
26#include <mach/board-pba8.h>
27#include <mach/board-pbx.h>
28
29#define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00))
30#define AMBA_UART_LCRH(base) (*(volatile unsigned char *)((base) + 0x2c))
31#define AMBA_UART_CR(base) (*(volatile unsigned char *)((base) + 0x30))
32#define AMBA_UART_FR(base) (*(volatile unsigned char *)((base) + 0x18))
33
34/*
35 * Return the UART base address
36 */
37static inline unsigned long get_uart_base(void)
38{
39 if (machine_is_realview_eb())
40 return REALVIEW_EB_UART0_BASE;
41 else if (machine_is_realview_pb11mp())
42 return REALVIEW_PB11MP_UART0_BASE;
43 else if (machine_is_realview_pb1176())
44 return REALVIEW_PB1176_UART0_BASE;
45 else if (machine_is_realview_pba8())
46 return REALVIEW_PBA8_UART0_BASE;
47 else if (machine_is_realview_pbx())
48 return REALVIEW_PBX_UART0_BASE;
49 else
50 return 0;
51}
52
53/*
54 * This does not append a newline
55 */
56static inline void putc(int c)
57{
58 unsigned long base = get_uart_base();
59
60 while (AMBA_UART_FR(base) & (1 << 5))
61 barrier();
62
63 AMBA_UART_DR(base) = c;
64}
65
66static inline void flush(void)
67{
68 unsigned long base = get_uart_base();
69
70 while (AMBA_UART_FR(base) & (1 << 3))
71 barrier();
72}
73
74/*
75 * nothing to do
76 */
77#define arch_decomp_setup()
diff --git a/arch/arm/mach-realview/include/mach/irqs-eb.h b/arch/arm/mach-realview/irqs-eb.h
index 44754230fdcc..61e31680a749 100644
--- a/arch/arm/mach-realview/include/mach/irqs-eb.h
+++ b/arch/arm/mach-realview/irqs-eb.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/irqs-eb.h
3 *
4 * Copyright (C) 2007 ARM Limited 2 * Copyright (C) 2007 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,6 +19,7 @@
21#ifndef __MACH_IRQS_EB_H 19#ifndef __MACH_IRQS_EB_H
22#define __MACH_IRQS_EB_H 20#define __MACH_IRQS_EB_H
23 21
22#define IRQ_LOCALTIMER 29
24#define IRQ_EB_GIC_START 32 23#define IRQ_EB_GIC_START 32
25 24
26/* 25/*
@@ -112,21 +111,4 @@
112 111
113#define NR_GIC_EB11MP 2 112#define NR_GIC_EB11MP 2
114 113
115/*
116 * Only define NR_IRQS if less than NR_IRQS_EB
117 */
118#define NR_IRQS_EB (IRQ_EB_GIC_START + 128)
119
120#if defined(CONFIG_MACH_REALVIEW_EB) \
121 && (!defined(NR_IRQS) || (NR_IRQS < NR_IRQS_EB))
122#undef NR_IRQS
123#define NR_IRQS NR_IRQS_EB
124#endif
125
126#if defined(CONFIG_REALVIEW_EB_ARM11MP) || defined(CONFIG_REALVIEW_EB_A9MP) \
127 && (!defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_EB11MP))
128#undef MAX_GIC_NR
129#define MAX_GIC_NR NR_GIC_EB11MP
130#endif
131
132#endif /* __MACH_IRQS_EB_H */ 114#endif /* __MACH_IRQS_EB_H */
diff --git a/arch/arm/mach-realview/include/mach/irqs-pb1176.h b/arch/arm/mach-realview/irqs-pb1176.h
index 708f84156f2c..778edfd430e7 100644
--- a/arch/arm/mach-realview/include/mach/irqs-pb1176.h
+++ b/arch/arm/mach-realview/irqs-pb1176.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/irqs-pb1176.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -76,25 +74,4 @@
76 74
77#define IRQ_PB1176_SCTL -1 75#define IRQ_PB1176_SCTL -1
78 76
79#define NR_GIC_PB1176 2
80
81/*
82 * Only define NR_IRQS if less than NR_IRQS_PB1176
83 */
84#define NR_IRQS_PB1176 (IRQ_DC1176_GIC_START + 96)
85
86#if defined(CONFIG_MACH_REALVIEW_PB1176)
87
88#if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_PB1176)
89#undef NR_IRQS
90#define NR_IRQS NR_IRQS_PB1176
91#endif
92
93#if !defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_PB1176)
94#undef MAX_GIC_NR
95#define MAX_GIC_NR NR_GIC_PB1176
96#endif
97
98#endif /* CONFIG_MACH_REALVIEW_PB1176 */
99
100#endif /* __MACH_IRQS_PB1176_H */ 77#endif /* __MACH_IRQS_PB1176_H */
diff --git a/arch/arm/mach-realview/include/mach/irqs-pb11mp.h b/arch/arm/mach-realview/irqs-pb11mp.h
index 34e255add21e..938898a3df9f 100644
--- a/arch/arm/mach-realview/include/mach/irqs-pb11mp.h
+++ b/arch/arm/mach-realview/irqs-pb11mp.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/irqs-pb11mp.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -21,6 +19,7 @@
21#ifndef __MACH_IRQS_PB11MP_H 19#ifndef __MACH_IRQS_PB11MP_H
22#define __MACH_IRQS_PB11MP_H 20#define __MACH_IRQS_PB11MP_H
23 21
22#define IRQ_LOCALTIMER 29
24#define IRQ_TC11MP_GIC_START 32 23#define IRQ_TC11MP_GIC_START 32
25#define IRQ_PB11MP_GIC_START 64 24#define IRQ_PB11MP_GIC_START 64
26 25
@@ -95,28 +94,4 @@
95#define IRQ_PB11MP_TSPEN (IRQ_PB11MP_GIC_START + 30) /* Touchscreen pen */ 94#define IRQ_PB11MP_TSPEN (IRQ_PB11MP_GIC_START + 30) /* Touchscreen pen */
96#define IRQ_PB11MP_TSKPAD (IRQ_PB11MP_GIC_START + 31) /* Touchscreen keypad */ 95#define IRQ_PB11MP_TSKPAD (IRQ_PB11MP_GIC_START + 31) /* Touchscreen keypad */
97 96
98#define IRQ_PB11MP_SMC -1
99#define IRQ_PB11MP_SCTL -1
100
101#define NR_GIC_PB11MP 2
102
103/*
104 * Only define NR_IRQS if less than NR_IRQS_PB11MP
105 */
106#define NR_IRQS_PB11MP (IRQ_TC11MP_GIC_START + 96)
107
108#if defined(CONFIG_MACH_REALVIEW_PB11MP)
109
110#if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_PB11MP)
111#undef NR_IRQS
112#define NR_IRQS NR_IRQS_PB11MP
113#endif
114
115#if !defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_PB11MP)
116#undef MAX_GIC_NR
117#define MAX_GIC_NR NR_GIC_PB11MP
118#endif
119
120#endif /* CONFIG_MACH_REALVIEW_PB11MP */
121
122#endif /* __MACH_IRQS_PB11MP_H */ 97#endif /* __MACH_IRQS_PB11MP_H */
diff --git a/arch/arm/mach-realview/include/mach/irqs-pba8.h b/arch/arm/mach-realview/irqs-pba8.h
index 4a88a4edb651..262e321938b8 100644
--- a/arch/arm/mach-realview/include/mach/irqs-pba8.h
+++ b/arch/arm/mach-realview/irqs-pba8.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/irqs-pba8.h
3 *
4 * Copyright (C) 2008 ARM Limited 2 * Copyright (C) 2008 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -70,25 +68,4 @@
70#define IRQ_PBA8_SMC -1 68#define IRQ_PBA8_SMC -1
71#define IRQ_PBA8_SCTL -1 69#define IRQ_PBA8_SCTL -1
72 70
73#define NR_GIC_PBA8 1
74
75/*
76 * Only define NR_IRQS if less than NR_IRQS_PBA8
77 */
78#define NR_IRQS_PBA8 (IRQ_PBA8_GIC_START + 64)
79
80#if defined(CONFIG_MACH_REALVIEW_PBA8)
81
82#if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_PBA8)
83#undef NR_IRQS
84#define NR_IRQS NR_IRQS_PBA8
85#endif
86
87#if !defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_PBA8)
88#undef MAX_GIC_NR
89#define MAX_GIC_NR NR_GIC_PBA8
90#endif
91
92#endif /* CONFIG_MACH_REALVIEW_PBA8 */
93
94#endif /* __MACH_IRQS_PBA8_H */ 71#endif /* __MACH_IRQS_PBA8_H */
diff --git a/arch/arm/mach-realview/include/mach/irqs-pbx.h b/arch/arm/mach-realview/irqs-pbx.h
index 206a3001f46b..4ef0567dec32 100644
--- a/arch/arm/mach-realview/include/mach/irqs-pbx.h
+++ b/arch/arm/mach-realview/irqs-pbx.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/irqs-pbx.h
3 *
4 * Copyright (C) 2009 ARM Limited 2 * Copyright (C) 2009 ARM Limited
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
@@ -20,6 +18,7 @@
20#ifndef __MACH_IRQS_PBX_H 18#ifndef __MACH_IRQS_PBX_H
21#define __MACH_IRQS_PBX_H 19#define __MACH_IRQS_PBX_H
22 20
21#define IRQ_LOCALTIMER 29
23#define IRQ_PBX_GIC_START 32 22#define IRQ_PBX_GIC_START 32
24 23
25/* 24/*
@@ -85,25 +84,4 @@
85#define IRQ_PBX_SMC -1 84#define IRQ_PBX_SMC -1
86#define IRQ_PBX_SCTL -1 85#define IRQ_PBX_SCTL -1
87 86
88#define NR_GIC_PBX 1
89
90/*
91 * Only define NR_IRQS if less than NR_IRQS_PBX
92 */
93#define NR_IRQS_PBX (IRQ_PBX_GIC_START + 96)
94
95#if defined(CONFIG_MACH_REALVIEW_PBX)
96
97#if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_PBX)
98#undef NR_IRQS
99#define NR_IRQS NR_IRQS_PBX
100#endif
101
102#if !defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_PBX)
103#undef MAX_GIC_NR
104#define MAX_GIC_NR NR_GIC_PBX
105#endif
106
107#endif /* CONFIG_MACH_REALVIEW_PBX */
108
109#endif /* __MACH_IRQS_PBX_H */ 87#endif /* __MACH_IRQS_PBX_H */
diff --git a/arch/arm/mach-realview/include/mach/platform.h b/arch/arm/mach-realview/platform.h
index 1b77a27badaf..11121739d371 100644
--- a/arch/arm/mach-realview/include/mach/platform.h
+++ b/arch/arm/mach-realview/platform.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/arm/mach-realview/include/mach/platform.h
3 *
4 * Copyright (c) ARM Limited 2003. All rights reserved. 2 * Copyright (c) ARM Limited 2003. All rights reserved.
5 * 3 *
6 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-realview/platsmp-dt.c b/arch/arm/mach-realview/platsmp-dt.c
new file mode 100644
index 000000000000..65585392655b
--- /dev/null
+++ b/arch/arm/mach-realview/platsmp-dt.c
@@ -0,0 +1,91 @@
1/*
2 * Copyright (C) 2015 Linus Walleij
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8#include <linux/smp.h>
9#include <linux/io.h>
10#include <linux/of.h>
11#include <linux/of_address.h>
12#include <linux/regmap.h>
13#include <linux/mfd/syscon.h>
14
15#include <asm/cacheflush.h>
16#include <asm/smp_plat.h>
17#include <asm/smp_scu.h>
18
19#include <plat/platsmp.h>
20
21#include "core.h"
22
23#define REALVIEW_SYS_FLAGSSET_OFFSET 0x30
24
25static const struct of_device_id realview_scu_match[] = {
26 { .compatible = "arm,arm11mp-scu", },
27 { .compatible = "arm,cortex-a9-scu", },
28 { .compatible = "arm,cortex-a5-scu", },
29 { }
30};
31
32static const struct of_device_id realview_syscon_match[] = {
33 { .compatible = "arm,core-module-integrator", },
34 { .compatible = "arm,realview-eb-syscon", },
35 { .compatible = "arm,realview-pb11mp-syscon", },
36 { .compatible = "arm,realview-pbx-syscon", },
37 { },
38};
39
40static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
41{
42 struct device_node *np;
43 void __iomem *scu_base;
44 struct regmap *map;
45 unsigned int ncores;
46 int i;
47
48 np = of_find_matching_node(NULL, realview_scu_match);
49 if (!np) {
50 pr_err("PLATSMP: No SCU base address\n");
51 return;
52 }
53 scu_base = of_iomap(np, 0);
54 of_node_put(np);
55 if (!scu_base) {
56 pr_err("PLATSMP: No SCU remap\n");
57 return;
58 }
59
60 scu_enable(scu_base);
61 ncores = scu_get_core_count(scu_base);
62 pr_info("SCU: %d cores detected\n", ncores);
63 for (i = 0; i < ncores; i++)
64 set_cpu_possible(i, true);
65 iounmap(scu_base);
66
67 /* The syscon contains the magic SMP start address registers */
68 np = of_find_matching_node(NULL, realview_syscon_match);
69 if (!np) {
70 pr_err("PLATSMP: No syscon match\n");
71 return;
72 }
73 map = syscon_node_to_regmap(np);
74 if (IS_ERR(map)) {
75 pr_err("PLATSMP: No syscon regmap\n");
76 return;
77 }
78 /* Put the boot address in this magic register */
79 regmap_write(map, REALVIEW_SYS_FLAGSSET_OFFSET,
80 virt_to_phys(versatile_secondary_startup));
81}
82
83struct smp_operations realview_dt_smp_ops __initdata = {
84 .smp_prepare_cpus = realview_smp_prepare_cpus,
85 .smp_secondary_init = versatile_secondary_init,
86 .smp_boot_secondary = versatile_boot_secondary,
87#ifdef CONFIG_HOTPLUG_CPU
88 .cpu_die = realview_cpu_die,
89#endif
90};
91CPU_METHOD_OF_DECLARE(realview_smp, "arm,realview-smp", &realview_dt_smp_ops);
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index dc2902911dce..e8ab69c7abfb 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -13,13 +13,13 @@
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/io.h> 14#include <linux/io.h>
15 15
16#include <mach/hardware.h> 16#include "hardware.h"
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18#include <asm/smp_scu.h> 18#include <asm/smp_scu.h>
19 19
20#include <mach/board-eb.h> 20#include "board-eb.h"
21#include <mach/board-pb11mp.h> 21#include "board-pb11mp.h"
22#include <mach/board-pbx.h> 22#include "board-pbx.h"
23 23
24#include <plat/platsmp.h> 24#include <plat/platsmp.h>
25 25
diff --git a/arch/arm/mach-realview/realview-dt.c b/arch/arm/mach-realview/realview-dt.c
index 382cc1b90519..88b67247945e 100644
--- a/arch/arm/mach-realview/realview-dt.c
+++ b/arch/arm/mach-realview/realview-dt.c
@@ -11,7 +11,6 @@
11#include <linux/of_platform.h> 11#include <linux/of_platform.h>
12#include <asm/mach/arch.h> 12#include <asm/mach/arch.h>
13#include <asm/hardware/cache-l2x0.h> 13#include <asm/hardware/cache-l2x0.h>
14#include "core.h"
15 14
16static const char *const realview_dt_platform_compat[] __initconst = { 15static const char *const realview_dt_platform_compat[] __initconst = {
17 "arm,realview-eb", 16 "arm,realview-eb",
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index b3869cbbcc68..b442fa61e943 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -31,20 +31,21 @@
31#include <linux/platform_data/clk-realview.h> 31#include <linux/platform_data/clk-realview.h>
32#include <linux/reboot.h> 32#include <linux/reboot.h>
33 33
34#include <mach/hardware.h> 34#include "hardware.h"
35#include <asm/irq.h> 35#include <asm/irq.h>
36#include <asm/mach-types.h> 36#include <asm/mach-types.h>
37#include <asm/pgtable.h> 37#include <asm/pgtable.h>
38#include <asm/hardware/cache-l2x0.h> 38#include <asm/hardware/cache-l2x0.h>
39#include <asm/smp_twd.h> 39#include <asm/smp_twd.h>
40#include <asm/system_info.h> 40#include <asm/system_info.h>
41#include <asm/outercache.h>
41 42
42#include <asm/mach/arch.h> 43#include <asm/mach/arch.h>
43#include <asm/mach/map.h> 44#include <asm/mach/map.h>
44#include <asm/mach/time.h> 45#include <asm/mach/time.h>
45 46
46#include <mach/board-eb.h> 47#include "board-eb.h"
47#include <mach/irqs.h> 48#include "irqs-eb.h"
48 49
49#include "core.h" 50#include "core.h"
50 51
@@ -450,6 +451,12 @@ static void __init realview_eb_init(void)
450 * Bits: .... ...0 0111 1001 0000 .... .... .... 451 * Bits: .... ...0 0111 1001 0000 .... .... ....
451 */ 452 */
452 l2x0_init(__io_address(REALVIEW_EB11MP_L220_BASE), 0x00790000, 0xfe000fff); 453 l2x0_init(__io_address(REALVIEW_EB11MP_L220_BASE), 0x00790000, 0xfe000fff);
454
455 /*
456 * due to a bug in the l220 cache controller, we must not call
457 * the sync function. stub it out here instead!
458 */
459 outer_cache.sync = NULL;
453#endif 460#endif
454 pmu_device.name = core_tile_a9mp() ? "armv7-pmu" : "armv6-pmu"; 461 pmu_device.name = core_tile_a9mp() ? "armv7-pmu" : "armv6-pmu";
455 platform_device_register(&pmu_device); 462 platform_device_register(&pmu_device);
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index ce92c1823494..537f3878d501 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -34,7 +34,7 @@
34#include <linux/reboot.h> 34#include <linux/reboot.h>
35#include <linux/memblock.h> 35#include <linux/memblock.h>
36 36
37#include <mach/hardware.h> 37#include "hardware.h"
38#include <asm/irq.h> 38#include <asm/irq.h>
39#include <asm/mach-types.h> 39#include <asm/mach-types.h>
40#include <asm/pgtable.h> 40#include <asm/pgtable.h>
@@ -45,8 +45,8 @@
45#include <asm/mach/map.h> 45#include <asm/mach/map.h>
46#include <asm/mach/time.h> 46#include <asm/mach/time.h>
47 47
48#include <mach/board-pb1176.h> 48#include "board-pb1176.h"
49#include <mach/irqs.h> 49#include "irqs-pb1176.h"
50 50
51#include "core.h" 51#include "core.h"
52 52
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 15c45e25095f..a90a0752f157 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -31,7 +31,7 @@
31#include <linux/platform_data/clk-realview.h> 31#include <linux/platform_data/clk-realview.h>
32#include <linux/reboot.h> 32#include <linux/reboot.h>
33 33
34#include <mach/hardware.h> 34#include "hardware.h"
35#include <asm/irq.h> 35#include <asm/irq.h>
36#include <asm/mach-types.h> 36#include <asm/mach-types.h>
37#include <asm/pgtable.h> 37#include <asm/pgtable.h>
@@ -42,9 +42,10 @@
42#include <asm/mach/flash.h> 42#include <asm/mach/flash.h>
43#include <asm/mach/map.h> 43#include <asm/mach/map.h>
44#include <asm/mach/time.h> 44#include <asm/mach/time.h>
45#include <asm/outercache.h>
45 46
46#include <mach/board-pb11mp.h> 47#include "board-pb11mp.h"
47#include <mach/irqs.h> 48#include "irqs-pb11mp.h"
48 49
49#include "core.h" 50#include "core.h"
50 51
@@ -345,6 +346,11 @@ static void __init realview_pb11mp_init(void)
345 * Bits: .... ...0 0111 1001 0000 .... .... .... 346 * Bits: .... ...0 0111 1001 0000 .... .... ....
346 */ 347 */
347 l2x0_init(__io_address(REALVIEW_TC11MP_L220_BASE), 0x00790000, 0xfe000fff); 348 l2x0_init(__io_address(REALVIEW_TC11MP_L220_BASE), 0x00790000, 0xfe000fff);
349 /*
350 * due to a bug in the l220 cache controller, we must not call
351 * the sync function. stub it out here instead!
352 */
353 outer_cache.sync = NULL;
348#endif 354#endif
349 355
350 realview_flash_register(realview_pb11mp_flash_resource, 356 realview_flash_register(realview_pb11mp_flash_resource,
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 4c64662f5437..ddafb67c2b6f 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -39,9 +39,9 @@
39#include <asm/mach/map.h> 39#include <asm/mach/map.h>
40#include <asm/mach/time.h> 40#include <asm/mach/time.h>
41 41
42#include <mach/hardware.h> 42#include "hardware.h"
43#include <mach/board-pba8.h> 43#include "board-pba8.h"
44#include <mach/irqs.h> 44#include "irqs-pba8.h"
45 45
46#include "core.h" 46#include "core.h"
47 47
@@ -77,14 +77,6 @@ static struct map_desc realview_pba8_io_desc[] __initdata = {
77 .length = SZ_4K, 77 .length = SZ_4K,
78 .type = MT_DEVICE, 78 .type = MT_DEVICE,
79 }, 79 },
80#ifdef CONFIG_PCI
81 {
82 .virtual = PCIX_UNIT_BASE,
83 .pfn = __phys_to_pfn(REALVIEW_PBA8_PCI_BASE),
84 .length = REALVIEW_PBA8_PCI_BASE_SIZE,
85 .type = MT_DEVICE
86 },
87#endif
88#ifdef CONFIG_DEBUG_LL 80#ifdef CONFIG_DEBUG_LL
89 { 81 {
90 .virtual = IO_ADDRESS(REALVIEW_PBA8_UART0_BASE), 82 .virtual = IO_ADDRESS(REALVIEW_PBA8_UART0_BASE),
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 9a22b864219f..b9f0757787ac 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -41,9 +41,9 @@
41#include <asm/mach/map.h> 41#include <asm/mach/map.h>
42#include <asm/mach/time.h> 42#include <asm/mach/time.h>
43 43
44#include <mach/hardware.h> 44#include "hardware.h"
45#include <mach/board-pbx.h> 45#include "board-pbx.h"
46#include <mach/irqs.h> 46#include "irqs-pbx.h"
47 47
48#include "core.h" 48#include "core.h"
49 49
@@ -79,14 +79,6 @@ static struct map_desc realview_pbx_io_desc[] __initdata = {
79 .length = SZ_4K, 79 .length = SZ_4K,
80 .type = MT_DEVICE, 80 .type = MT_DEVICE,
81 }, 81 },
82#ifdef CONFIG_PCI
83 {
84 .virtual = PCIX_UNIT_BASE,
85 .pfn = __phys_to_pfn(REALVIEW_PBX_PCI_BASE),
86 .length = REALVIEW_PBX_PCI_BASE_SIZE,
87 .type = MT_DEVICE,
88 },
89#endif
90#ifdef CONFIG_DEBUG_LL 82#ifdef CONFIG_DEBUG_LL
91 { 83 {
92 .virtual = IO_ADDRESS(REALVIEW_PBX_UART0_BASE), 84 .virtual = IO_ADDRESS(REALVIEW_PBX_UART0_BASE),
diff --git a/arch/arm/mach-s3c24xx/include/mach/pm-core.h b/arch/arm/mach-s3c24xx/include/mach/pm-core.h
index 69459dbbdcad..712333fec589 100644
--- a/arch/arm/mach-s3c24xx/include/mach/pm-core.h
+++ b/arch/arm/mach-s3c24xx/include/mach/pm-core.h
@@ -85,3 +85,17 @@ static inline void s3c_pm_arch_update_uart(void __iomem *regs,
85 85
86static inline void s3c_pm_restored_gpios(void) { } 86static inline void s3c_pm_restored_gpios(void) { }
87static inline void samsung_pm_saved_gpios(void) { } 87static inline void samsung_pm_saved_gpios(void) { }
88
89/* state for IRQs over sleep */
90
91/* default is to allow for EINT0..EINT15, and IRQ_RTC as wakeup sources
92 *
93 * set bit to 1 in allow bitfield to enable the wakeup settings on it
94*/
95#ifdef CONFIG_PM_SLEEP
96#define s3c_irqwake_intallow (1L << 30 | 0xfL)
97#define s3c_irqwake_eintallow (0x0000fff0L)
98#else
99#define s3c_irqwake_eintallow 0
100#define s3c_irqwake_intallow 0
101#endif
diff --git a/arch/arm/mach-s3c24xx/irq-pm.c b/arch/arm/mach-s3c24xx/irq-pm.c
index b91341ef2b2e..417b7a20c2d1 100644
--- a/arch/arm/mach-s3c24xx/irq-pm.c
+++ b/arch/arm/mach-s3c24xx/irq-pm.c
@@ -25,19 +25,10 @@
25 25
26#include <mach/regs-irq.h> 26#include <mach/regs-irq.h>
27#include <mach/regs-gpio.h> 27#include <mach/regs-gpio.h>
28#include <mach/pm-core.h>
28 29
29#include <asm/irq.h> 30#include <asm/irq.h>
30 31
31/* state for IRQs over sleep */
32
33/* default is to allow for EINT0..EINT15, and IRQ_RTC as wakeup sources
34 *
35 * set bit to 1 in allow bitfield to enable the wakeup settings on it
36*/
37
38unsigned long s3c_irqwake_intallow = 1L << 30 | 0xfL;
39unsigned long s3c_irqwake_eintallow = 0x0000fff0L;
40
41int s3c_irq_wake(struct irq_data *data, unsigned int state) 32int s3c_irq_wake(struct irq_data *data, unsigned int state)
42{ 33{
43 unsigned long irqbit = 1 << data->hwirq; 34 unsigned long irqbit = 1 << data->hwirq;
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index 28c7097e8506..7c0c420c3016 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -2,6 +2,26 @@
2# Simtec Electronics, Ben Dooks <ben@simtec.co.uk> 2# Simtec Electronics, Ben Dooks <ben@simtec.co.uk>
3# 3#
4# Licensed under GPLv2 4# Licensed under GPLv2
5menuconfig ARCH_S3C64XX
6 bool "Samsung S3C64XX" if ARCH_MULTI_V6
7 select ARCH_REQUIRE_GPIOLIB
8 select ARM_AMBA
9 select ARM_VIC
10 select CLKSRC_SAMSUNG_PWM
11 select COMMON_CLK_SAMSUNG
12 select GPIO_SAMSUNG if ATAGS
13 select HAVE_S3C2410_I2C if I2C
14 select HAVE_S3C2410_WATCHDOG if WATCHDOG
15 select HAVE_TCM
16 select PLAT_SAMSUNG
17 select PM_GENERIC_DOMAINS if PM
18 select S3C_DEV_NAND if ATAGS
19 select S3C_GPIO_TRACK if ATAGS
20 select SAMSUNG_ATAGS if ATAGS
21 select SAMSUNG_WAKEMASK if PM
22 select SAMSUNG_WDT_RESET
23 help
24 Samsung S3C64XX series based systems
5 25
6if ARCH_S3C64XX 26if ARCH_S3C64XX
7 27
@@ -90,6 +110,7 @@ config S3C64XX_SETUP_USB_PHY
90 110
91config MACH_SMDK6400 111config MACH_SMDK6400
92 bool "SMDK6400" 112 bool "SMDK6400"
113 depends on ATAGS
93 select CPU_S3C6400 114 select CPU_S3C6400
94 select S3C64XX_SETUP_SDHCI 115 select S3C64XX_SETUP_SDHCI
95 select S3C_DEV_HSMMC1 116 select S3C_DEV_HSMMC1
@@ -100,6 +121,7 @@ config MACH_SMDK6400
100 121
101config MACH_ANW6410 122config MACH_ANW6410
102 bool "A&W6410" 123 bool "A&W6410"
124 depends on ATAGS
103 select CPU_S3C6410 125 select CPU_S3C6410
104 select S3C64XX_SETUP_FB_24BPP 126 select S3C64XX_SETUP_FB_24BPP
105 select S3C_DEV_FB 127 select S3C_DEV_FB
@@ -108,6 +130,7 @@ config MACH_ANW6410
108 130
109config MACH_MINI6410 131config MACH_MINI6410
110 bool "MINI6410" 132 bool "MINI6410"
133 depends on ATAGS
111 select CPU_S3C6410 134 select CPU_S3C6410
112 select S3C64XX_SETUP_FB_24BPP 135 select S3C64XX_SETUP_FB_24BPP
113 select S3C64XX_SETUP_SDHCI 136 select S3C64XX_SETUP_SDHCI
@@ -123,6 +146,7 @@ config MACH_MINI6410
123 146
124config MACH_REAL6410 147config MACH_REAL6410
125 bool "REAL6410" 148 bool "REAL6410"
149 depends on ATAGS
126 select CPU_S3C6410 150 select CPU_S3C6410
127 select S3C64XX_SETUP_FB_24BPP 151 select S3C64XX_SETUP_FB_24BPP
128 select S3C64XX_SETUP_SDHCI 152 select S3C64XX_SETUP_SDHCI
@@ -138,6 +162,7 @@ config MACH_REAL6410
138 162
139config MACH_SMDK6410 163config MACH_SMDK6410
140 bool "SMDK6410" 164 bool "SMDK6410"
165 depends on ATAGS
141 select CPU_S3C6410 166 select CPU_S3C6410
142 select HAVE_S3C2410_WATCHDOG if WATCHDOG 167 select HAVE_S3C2410_WATCHDOG if WATCHDOG
143 select S3C64XX_SETUP_FB_24BPP 168 select S3C64XX_SETUP_FB_24BPP
@@ -225,6 +250,7 @@ config SMDK6410_WM1192_EV1
225 250
226config MACH_NCP 251config MACH_NCP
227 bool "NCP" 252 bool "NCP"
253 depends on ATAGS
228 select CPU_S3C6410 254 select CPU_S3C6410
229 select S3C64XX_SETUP_I2C1 255 select S3C64XX_SETUP_I2C1
230 select S3C_DEV_HSMMC1 256 select S3C_DEV_HSMMC1
@@ -234,6 +260,7 @@ config MACH_NCP
234 260
235config MACH_HMT 261config MACH_HMT
236 bool "Airgoo HMT" 262 bool "Airgoo HMT"
263 depends on ATAGS
237 select CPU_S3C6410 264 select CPU_S3C6410
238 select S3C64XX_SETUP_FB_24BPP 265 select S3C64XX_SETUP_FB_24BPP
239 select S3C_DEV_FB 266 select S3C_DEV_FB
@@ -265,18 +292,21 @@ config MACH_SMARTQ
265 292
266config MACH_SMARTQ5 293config MACH_SMARTQ5
267 bool "SmartQ 5" 294 bool "SmartQ 5"
295 depends on ATAGS
268 select MACH_SMARTQ 296 select MACH_SMARTQ
269 help 297 help
270 Machine support for the SmartQ 5 298 Machine support for the SmartQ 5
271 299
272config MACH_SMARTQ7 300config MACH_SMARTQ7
273 bool "SmartQ 7" 301 bool "SmartQ 7"
302 depends on ATAGS
274 select MACH_SMARTQ 303 select MACH_SMARTQ
275 help 304 help
276 Machine support for the SmartQ 7 305 Machine support for the SmartQ 7
277 306
278config MACH_WLF_CRAGG_6410 307config MACH_WLF_CRAGG_6410
279 bool "Wolfson Cragganmore 6410" 308 bool "Wolfson Cragganmore 6410"
309 depends on ATAGS
280 depends on I2C=y 310 depends on I2C=y
281 select CPU_S3C6410 311 select CPU_S3C6410
282 select LEDS_GPIO_REGISTER 312 select LEDS_GPIO_REGISTER
@@ -310,7 +340,6 @@ config MACH_S3C64XX_DT
310 select CPU_S3C6410 340 select CPU_S3C6410
311 select PINCTRL 341 select PINCTRL
312 select PINCTRL_S3C64XX 342 select PINCTRL_S3C64XX
313 select USE_OF
314 help 343 help
315 Machine support for Samsung S3C6400/S3C6410 machines with Device Tree 344 Machine support for Samsung S3C6400/S3C6410 machines with Device Tree
316 enabled. 345 enabled.
diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile
index bb233f342f31..256cd5b40c60 100644
--- a/arch/arm/mach-s3c64xx/Makefile
+++ b/arch/arm/mach-s3c64xx/Makefile
@@ -5,21 +5,25 @@
5# 5#
6# Licensed under GPLv2 6# Licensed under GPLv2
7 7
8# Core 8ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
9 9asflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
10obj-y += common.o
11
12# Core support
13
14obj-$(CONFIG_CPU_S3C6400) += s3c6400.o
15obj-$(CONFIG_CPU_S3C6410) += s3c6410.o
16 10
17# PM 11# PM
18 12
19obj-$(CONFIG_PM) += pm.o 13obj-$(CONFIG_PM) += pm.o
20obj-$(CONFIG_PM_SLEEP) += irq-pm.o sleep.o 14obj-$(CONFIG_PM_SLEEP) += sleep.o
21obj-$(CONFIG_CPU_IDLE) += cpuidle.o 15obj-$(CONFIG_CPU_IDLE) += cpuidle.o
22 16
17ifdef CONFIG_SAMSUNG_ATAGS
18
19obj-$(CONFIG_PM_SLEEP) += irq-pm.o
20
21# Core
22
23obj-y += common.o
24obj-$(CONFIG_CPU_S3C6400) += s3c6400.o
25obj-$(CONFIG_CPU_S3C6410) += s3c6410.o
26
23# DMA support 27# DMA support
24 28
25obj-$(CONFIG_S3C64XX_PL080) += pl080.o 29obj-$(CONFIG_S3C64XX_PL080) += pl080.o
@@ -55,4 +59,6 @@ obj-$(CONFIG_MACH_SMARTQ7) += mach-smartq7.o
55obj-$(CONFIG_MACH_SMDK6400) += mach-smdk6400.o 59obj-$(CONFIG_MACH_SMDK6400) += mach-smdk6400.o
56obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o 60obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o
57obj-$(CONFIG_MACH_WLF_CRAGG_6410) += mach-crag6410.o mach-crag6410-module.o 61obj-$(CONFIG_MACH_WLF_CRAGG_6410) += mach-crag6410.o mach-crag6410-module.o
62endif
63
58obj-$(CONFIG_MACH_S3C64XX_DT) += mach-s3c64xx-dt.o 64obj-$(CONFIG_MACH_S3C64XX_DT) += mach-s3c64xx-dt.o
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index ddb30b8434c5..7c66ce1a6bb6 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -39,6 +39,7 @@
39#include <asm/system_misc.h> 39#include <asm/system_misc.h>
40 40
41#include <mach/map.h> 41#include <mach/map.h>
42#include <mach/irqs.h>
42#include <mach/hardware.h> 43#include <mach/hardware.h>
43#include <mach/regs-gpio.h> 44#include <mach/regs-gpio.h>
44#include <mach/gpio-samsung.h> 45#include <mach/gpio-samsung.h>
@@ -208,7 +209,7 @@ void __init s3c64xx_init_io(struct map_desc *mach_desc, int size)
208static __init int s3c64xx_dev_init(void) 209static __init int s3c64xx_dev_init(void)
209{ 210{
210 /* Not applicable when using DT. */ 211 /* Not applicable when using DT. */
211 if (of_have_populated_dt()) 212 if (of_have_populated_dt() || !soc_is_s3c64xx())
212 return 0; 213 return 0;
213 214
214 subsys_system_register(&s3c64xx_subsys, NULL); 215 subsys_system_register(&s3c64xx_subsys, NULL);
@@ -413,7 +414,7 @@ static int __init s3c64xx_init_irq_eint(void)
413 int irq; 414 int irq;
414 415
415 /* On DT-enabled systems EINTs are handled by pinctrl-s3c64xx driver. */ 416 /* On DT-enabled systems EINTs are handled by pinctrl-s3c64xx driver. */
416 if (of_have_populated_dt()) 417 if (of_have_populated_dt() || !soc_is_s3c64xx())
417 return -ENODEV; 418 return -ENODEV;
418 419
419 for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) { 420 for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) {
diff --git a/arch/arm/mach-s3c64xx/cpuidle.c b/arch/arm/mach-s3c64xx/cpuidle.c
index 93aa8cb70195..5322db51150e 100644
--- a/arch/arm/mach-s3c64xx/cpuidle.c
+++ b/arch/arm/mach-s3c64xx/cpuidle.c
@@ -18,6 +18,7 @@
18 18
19#include <asm/cpuidle.h> 19#include <asm/cpuidle.h>
20 20
21#include <plat/cpu.h>
21#include <mach/map.h> 22#include <mach/map.h>
22 23
23#include "regs-sys.h" 24#include "regs-sys.h"
@@ -57,6 +58,8 @@ static struct cpuidle_driver s3c64xx_cpuidle_driver = {
57 58
58static int __init s3c64xx_init_cpuidle(void) 59static int __init s3c64xx_init_cpuidle(void)
59{ 60{
60 return cpuidle_register(&s3c64xx_cpuidle_driver, NULL); 61 if (soc_is_s3c64xx())
62 return cpuidle_register(&s3c64xx_cpuidle_driver, NULL);
63 return 0;
61} 64}
62device_initcall(s3c64xx_init_cpuidle); 65device_initcall(s3c64xx_init_cpuidle);
diff --git a/arch/arm/mach-s3c64xx/dev-uart.c b/arch/arm/mach-s3c64xx/dev-uart.c
index 46e18d77ea93..a0b4f0329811 100644
--- a/arch/arm/mach-s3c64xx/dev-uart.c
+++ b/arch/arm/mach-s3c64xx/dev-uart.c
@@ -23,6 +23,7 @@
23#include <asm/mach/irq.h> 23#include <asm/mach/irq.h>
24#include <mach/hardware.h> 24#include <mach/hardware.h>
25#include <mach/map.h> 25#include <mach/map.h>
26#include <mach/irqs.h>
26 27
27#include <plat/devs.h> 28#include <plat/devs.h>
28 29
diff --git a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S b/arch/arm/mach-s3c64xx/include/mach/debug-macro.S
deleted file mode 100644
index c9b95325b672..000000000000
--- a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S
+++ /dev/null
@@ -1,38 +0,0 @@
1/* arch/arm/mach-s3c6400/include/mach/debug-macro.S
2 *
3 * Copyright 2008 Openmoko, Inc.
4 * Copyright 2008 Simtec Electronics
5 * http://armlinux.simtec.co.uk/
6 * Ben Dooks <ben@simtec.co.uk>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11*/
12
13/* pull in the relevant register and map files. */
14
15#include <linux/serial_s3c.h>
16#include <mach/map.h>
17
18 /* note, for the boot process to work we have to keep the UART
19 * virtual address aligned to an 1MiB boundary for the L1
20 * mapping the head code makes. We keep the UART virtual address
21 * aligned and add in the offset when we load the value here.
22 */
23
24 .macro addruart, rp, rv, tmp
25 ldr \rp, = S3C_PA_UART
26 ldr \rv, = (S3C_VA_UART + S3C_PA_UART & 0xfffff)
27#if CONFIG_DEBUG_S3C_UART != 0
28 add \rp, \rp, #(0x400 * CONFIG_DEBUG_S3C_UART)
29 add \rv, \rv, #(0x400 * CONFIG_DEBUG_S3C_UART)
30#endif
31 .endm
32
33/* include the reset of the code which will do the work, we're only
34 * compiling for a single cpu processor type so the default of s3c2440
35 * will be fine with us.
36 */
37
38#include <debug/samsung.S>
diff --git a/arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h b/arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h
index 9c81fac3b2d5..1d3636512e33 100644
--- a/arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h
+++ b/arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h
@@ -14,6 +14,8 @@
14#ifndef GPIO_SAMSUNG_S3C64XX_H 14#ifndef GPIO_SAMSUNG_S3C64XX_H
15#define GPIO_SAMSUNG_S3C64XX_H 15#define GPIO_SAMSUNG_S3C64XX_H
16 16
17#ifdef CONFIG_GPIO_SAMSUNG
18
17/* GPIO bank sizes */ 19/* GPIO bank sizes */
18#define S3C64XX_GPIO_A_NR (8) 20#define S3C64XX_GPIO_A_NR (8)
19#define S3C64XX_GPIO_B_NR (7) 21#define S3C64XX_GPIO_B_NR (7)
@@ -90,5 +92,6 @@ enum s3c_gpio_number {
90/* define the number of gpios we need to the one after the GPQ() range */ 92/* define the number of gpios we need to the one after the GPQ() range */
91#define GPIO_BOARD_START (S3C64XX_GPQ(S3C64XX_GPIO_Q_NR) + 1) 93#define GPIO_BOARD_START (S3C64XX_GPQ(S3C64XX_GPIO_Q_NR) + 1)
92 94
95#endif /* GPIO_SAMSUNG */
93#endif /* GPIO_SAMSUNG_S3C64XX_H */ 96#endif /* GPIO_SAMSUNG_S3C64XX_H */
94 97
diff --git a/arch/arm/mach-s3c64xx/include/mach/irqs.h b/arch/arm/mach-s3c64xx/include/mach/irqs.h
index 67bbd1dd04c2..3ceb00b5de07 100644
--- a/arch/arm/mach-s3c64xx/include/mach/irqs.h
+++ b/arch/arm/mach-s3c64xx/include/mach/irqs.h
@@ -156,25 +156,11 @@
156 156
157#define IRQ_EINT_GROUP(group, no) (IRQ_EINT_GROUP##group##_BASE + (no)) 157#define IRQ_EINT_GROUP(group, no) (IRQ_EINT_GROUP##group##_BASE + (no))
158 158
159/* Define a group of interrupts for board-specific use (eg, for MFD 159/* Some boards have their own IRQs behind this */
160 * interrupt controllers). */
161#define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) 160#define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)
162 161
163#ifdef CONFIG_MACH_WLF_CRAGG_6410 162/* Set the default nr_irqs, boards can override if necessary */
164#define IRQ_BOARD_NR 160 163#define S3C64XX_NR_IRQS IRQ_BOARD_START
165#elif defined(CONFIG_SMDK6410_WM1190_EV1)
166#define IRQ_BOARD_NR 64
167#elif defined(CONFIG_SMDK6410_WM1192_EV1)
168#define IRQ_BOARD_NR 64
169#else
170#define IRQ_BOARD_NR 16
171#endif
172
173#define IRQ_BOARD_END (IRQ_BOARD_START + IRQ_BOARD_NR)
174
175/* Set the default NR_IRQS */
176
177#define NR_IRQS (IRQ_BOARD_END + 1)
178 164
179/* Compatibility */ 165/* Compatibility */
180 166
diff --git a/arch/arm/mach-s3c64xx/include/mach/pm-core.h b/arch/arm/mach-s3c64xx/include/mach/pm-core.h
index a30a1e3ffc6a..4a285e97afff 100644
--- a/arch/arm/mach-s3c64xx/include/mach/pm-core.h
+++ b/arch/arm/mach-s3c64xx/include/mach/pm-core.h
@@ -16,8 +16,11 @@
16#define __MACH_S3C64XX_PM_CORE_H __FILE__ 16#define __MACH_S3C64XX_PM_CORE_H __FILE__
17 17
18#include <linux/serial_s3c.h> 18#include <linux/serial_s3c.h>
19#include <linux/delay.h>
19 20
20#include <mach/regs-gpio.h> 21#include <mach/regs-gpio.h>
22#include <mach/regs-clock.h>
23#include <mach/map.h>
21 24
22static inline void s3c_pm_debug_init_uart(void) 25static inline void s3c_pm_debug_init_uart(void)
23{ 26{
@@ -56,9 +59,13 @@ static inline void s3c_pm_arch_show_resume_irqs(void)
56 59
57/* make these defines, we currently do not have any need to change 60/* make these defines, we currently do not have any need to change
58 * the IRQ wake controls depending on the CPU we are running on */ 61 * the IRQ wake controls depending on the CPU we are running on */
59 62#ifdef CONFIG_PM_SLEEP
60#define s3c_irqwake_eintallow ((1 << 28) - 1) 63#define s3c_irqwake_eintallow ((1 << 28) - 1)
61#define s3c_irqwake_intallow (~0) 64#define s3c_irqwake_intallow (~0)
65#else
66#define s3c_irqwake_eintallow 0
67#define s3c_irqwake_intallow 0
68#endif
62 69
63static inline void s3c_pm_arch_update_uart(void __iomem *regs, 70static inline void s3c_pm_arch_update_uart(void __iomem *regs,
64 struct pm_uart_save *save) 71 struct pm_uart_save *save)
diff --git a/arch/arm/mach-s3c64xx/irq-pm.c b/arch/arm/mach-s3c64xx/irq-pm.c
index ae4ea7601f60..0bbf1faaee42 100644
--- a/arch/arm/mach-s3c64xx/irq-pm.c
+++ b/arch/arm/mach-s3c64xx/irq-pm.c
@@ -113,7 +113,7 @@ static struct syscore_ops s3c64xx_irq_syscore_ops = {
113static __init int s3c64xx_syscore_init(void) 113static __init int s3c64xx_syscore_init(void)
114{ 114{
115 /* Appropriate drivers (pinctrl, uart) handle this when using DT. */ 115 /* Appropriate drivers (pinctrl, uart) handle this when using DT. */
116 if (of_have_populated_dt()) 116 if (of_have_populated_dt() || !soc_is_s3c64xx())
117 return 0; 117 return 0;
118 118
119 register_syscore_ops(&s3c64xx_irq_syscore_ops); 119 register_syscore_ops(&s3c64xx_irq_syscore_ops);
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c
index 6224c67f5061..347ce6009a8c 100644
--- a/arch/arm/mach-s3c64xx/mach-anw6410.c
+++ b/arch/arm/mach-s3c64xx/mach-anw6410.c
@@ -47,6 +47,7 @@
47 47
48#include <plat/devs.h> 48#include <plat/devs.h>
49#include <plat/cpu.h> 49#include <plat/cpu.h>
50#include <mach/irqs.h>
50#include <mach/regs-gpio.h> 51#include <mach/regs-gpio.h>
51#include <mach/gpio-samsung.h> 52#include <mach/gpio-samsung.h>
52#include <plat/samsung-time.h> 53#include <plat/samsung-time.h>
@@ -229,7 +230,7 @@ static void __init anw6410_machine_init(void)
229MACHINE_START(ANW6410, "A&W6410") 230MACHINE_START(ANW6410, "A&W6410")
230 /* Maintainer: Kwangwoo Lee <kwangwoo.lee@gmail.com> */ 231 /* Maintainer: Kwangwoo Lee <kwangwoo.lee@gmail.com> */
231 .atag_offset = 0x100, 232 .atag_offset = 0x100,
232 233 .nr_irqs = S3C64XX_NR_IRQS,
233 .init_irq = s3c6410_init_irq, 234 .init_irq = s3c6410_init_irq,
234 .map_io = anw6410_map_io, 235 .map_io = anw6410_map_io,
235 .init_machine = anw6410_machine_init, 236 .init_machine = anw6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
index 9c00d83f7151..571f95cc5a53 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
@@ -29,6 +29,9 @@
29 29
30#include <linux/platform_data/spi-s3c64xx.h> 30#include <linux/platform_data/spi-s3c64xx.h>
31 31
32#include <plat/cpu.h>
33#include <mach/irqs.h>
34
32#include "crag6410.h" 35#include "crag6410.h"
33 36
34static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = { 37static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = {
@@ -399,6 +402,9 @@ static struct i2c_driver wlf_gf_module_driver = {
399 402
400static int __init wlf_gf_module_register(void) 403static int __init wlf_gf_module_register(void)
401{ 404{
405 if (!soc_is_s3c64xx())
406 return 0;
407
402 return i2c_add_driver(&wlf_gf_module_driver); 408 return i2c_add_driver(&wlf_gf_module_driver);
403} 409}
404device_initcall(wlf_gf_module_register); 410device_initcall(wlf_gf_module_register);
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 723f47fefc81..d9d0440aed78 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -52,6 +52,7 @@
52#include <mach/map.h> 52#include <mach/map.h>
53#include <mach/regs-gpio.h> 53#include <mach/regs-gpio.h>
54#include <mach/gpio-samsung.h> 54#include <mach/gpio-samsung.h>
55#include <mach/irqs.h>
55 56
56#include <plat/fb.h> 57#include <plat/fb.h>
57#include <plat/sdhci.h> 58#include <plat/sdhci.h>
@@ -860,6 +861,7 @@ static void __init crag6410_machine_init(void)
860MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") 861MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
861 /* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */ 862 /* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */
862 .atag_offset = 0x100, 863 .atag_offset = 0x100,
864 .nr_irqs = S3C64XX_NR_IRQS,
863 .init_irq = s3c6410_init_irq, 865 .init_irq = s3c6410_init_irq,
864 .map_io = crag6410_map_io, 866 .map_io = crag6410_map_io,
865 .init_machine = crag6410_machine_init, 867 .init_machine = crag6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c
index 816b39d1e6d1..bc7dc1fcbf7d 100644
--- a/arch/arm/mach-s3c64xx/mach-hmt.c
+++ b/arch/arm/mach-s3c64xx/mach-hmt.c
@@ -31,6 +31,7 @@
31#include <video/samsung_fimd.h> 31#include <video/samsung_fimd.h>
32#include <mach/hardware.h> 32#include <mach/hardware.h>
33#include <mach/map.h> 33#include <mach/map.h>
34#include <mach/irqs.h>
34 35
35#include <asm/irq.h> 36#include <asm/irq.h>
36#include <asm/mach-types.h> 37#include <asm/mach-types.h>
@@ -279,6 +280,7 @@ static void __init hmt_machine_init(void)
279MACHINE_START(HMT, "Airgoo-HMT") 280MACHINE_START(HMT, "Airgoo-HMT")
280 /* Maintainer: Peter Korsgaard <jacmet@sunsite.dk> */ 281 /* Maintainer: Peter Korsgaard <jacmet@sunsite.dk> */
281 .atag_offset = 0x100, 282 .atag_offset = 0x100,
283 .nr_irqs = S3C64XX_NR_IRQS,
282 .init_irq = s3c6410_init_irq, 284 .init_irq = s3c6410_init_irq,
283 .map_io = hmt_map_io, 285 .map_io = hmt_map_io,
284 .init_machine = hmt_machine_init, 286 .init_machine = hmt_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c
index ab61af50bfb9..ae999fb3fe6d 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -41,6 +41,7 @@
41#include <linux/platform_data/mmc-sdhci-s3c.h> 41#include <linux/platform_data/mmc-sdhci-s3c.h>
42#include <plat/sdhci.h> 42#include <plat/sdhci.h>
43#include <linux/platform_data/touchscreen-s3c2410.h> 43#include <linux/platform_data/touchscreen-s3c2410.h>
44#include <mach/irqs.h>
44 45
45#include <video/platform_lcd.h> 46#include <video/platform_lcd.h>
46#include <video/samsung_fimd.h> 47#include <video/samsung_fimd.h>
@@ -233,7 +234,6 @@ static struct platform_device *mini6410_devices[] __initdata = {
233 &s3c_device_fb, 234 &s3c_device_fb,
234 &mini6410_lcd_powerdev, 235 &mini6410_lcd_powerdev,
235 &s3c_device_adc, 236 &s3c_device_adc,
236 &s3c_device_ts,
237}; 237};
238 238
239static void __init mini6410_map_io(void) 239static void __init mini6410_map_io(void)
@@ -332,7 +332,7 @@ static void __init mini6410_machine_init(void)
332 s3c_nand_set_platdata(&mini6410_nand_info); 332 s3c_nand_set_platdata(&mini6410_nand_info);
333 s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]); 333 s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
334 s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata); 334 s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
335 s3c24xx_ts_set_platdata(NULL); 335 s3c64xx_ts_set_platdata(NULL);
336 336
337 /* configure nCS1 width to 16 bits */ 337 /* configure nCS1 width to 16 bits */
338 338
@@ -363,6 +363,7 @@ static void __init mini6410_machine_init(void)
363MACHINE_START(MINI6410, "MINI6410") 363MACHINE_START(MINI6410, "MINI6410")
364 /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */ 364 /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */
365 .atag_offset = 0x100, 365 .atag_offset = 0x100,
366 .nr_irqs = S3C64XX_NR_IRQS,
366 .init_irq = s3c6410_init_irq, 367 .init_irq = s3c6410_init_irq,
367 .map_io = mini6410_map_io, 368 .map_io = mini6410_map_io,
368 .init_machine = mini6410_machine_init, 369 .init_machine = mini6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c
index 80cb1446f69f..23baaa04318c 100644
--- a/arch/arm/mach-s3c64xx/mach-ncp.c
+++ b/arch/arm/mach-s3c64xx/mach-ncp.c
@@ -31,6 +31,7 @@
31#include <asm/mach/map.h> 31#include <asm/mach/map.h>
32#include <asm/mach/irq.h> 32#include <asm/mach/irq.h>
33 33
34#include <mach/irqs.h>
34#include <mach/hardware.h> 35#include <mach/hardware.h>
35#include <mach/map.h> 36#include <mach/map.h>
36 37
@@ -100,6 +101,7 @@ static void __init ncp_machine_init(void)
100MACHINE_START(NCP, "NCP") 101MACHINE_START(NCP, "NCP")
101 /* Maintainer: Samsung Electronics */ 102 /* Maintainer: Samsung Electronics */
102 .atag_offset = 0x100, 103 .atag_offset = 0x100,
104 .nr_irqs = S3C64XX_NR_IRQS,
103 .init_irq = s3c6410_init_irq, 105 .init_irq = s3c6410_init_irq,
104 .map_io = ncp_map_io, 106 .map_io = ncp_map_io,
105 .init_machine = ncp_machine_init, 107 .init_machine = ncp_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c
index 85fa9598b980..4e240ffa7ac7 100644
--- a/arch/arm/mach-s3c64xx/mach-real6410.c
+++ b/arch/arm/mach-s3c64xx/mach-real6410.c
@@ -33,6 +33,7 @@
33#include <mach/map.h> 33#include <mach/map.h>
34#include <mach/regs-gpio.h> 34#include <mach/regs-gpio.h>
35#include <mach/gpio-samsung.h> 35#include <mach/gpio-samsung.h>
36#include <mach/irqs.h>
36 37
37#include <plat/adc.h> 38#include <plat/adc.h>
38#include <plat/cpu.h> 39#include <plat/cpu.h>
@@ -202,7 +203,6 @@ static struct platform_device *real6410_devices[] __initdata = {
202 &s3c_device_fb, 203 &s3c_device_fb,
203 &s3c_device_nand, 204 &s3c_device_nand,
204 &s3c_device_adc, 205 &s3c_device_adc,
205 &s3c_device_ts,
206 &s3c_device_ohci, 206 &s3c_device_ohci,
207}; 207};
208 208
@@ -301,7 +301,7 @@ static void __init real6410_machine_init(void)
301 301
302 s3c_fb_set_platdata(&real6410_lcd_pdata[features.lcd_index]); 302 s3c_fb_set_platdata(&real6410_lcd_pdata[features.lcd_index]);
303 s3c_nand_set_platdata(&real6410_nand_info); 303 s3c_nand_set_platdata(&real6410_nand_info);
304 s3c24xx_ts_set_platdata(NULL); 304 s3c64xx_ts_set_platdata(NULL);
305 305
306 /* configure nCS1 width to 16 bits */ 306 /* configure nCS1 width to 16 bits */
307 307
@@ -331,7 +331,7 @@ static void __init real6410_machine_init(void)
331MACHINE_START(REAL6410, "REAL6410") 331MACHINE_START(REAL6410, "REAL6410")
332 /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */ 332 /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */
333 .atag_offset = 0x100, 333 .atag_offset = 0x100,
334 334 .nr_irqs = S3C64XX_NR_IRQS,
335 .init_irq = s3c6410_init_irq, 335 .init_irq = s3c6410_init_irq,
336 .map_io = real6410_map_io, 336 .map_io = real6410_map_io,
337 .init_machine = real6410_machine_init, 337 .init_machine = real6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index acdfb5fac40f..936a63fc68d5 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -12,6 +12,7 @@
12#include <linux/delay.h> 12#include <linux/delay.h>
13#include <linux/fb.h> 13#include <linux/fb.h>
14#include <linux/gpio.h> 14#include <linux/gpio.h>
15#include <linux/gpio/machine.h>
15#include <linux/init.h> 16#include <linux/init.h>
16#include <linux/platform_device.h> 17#include <linux/platform_device.h>
17#include <linux/pwm.h> 18#include <linux/pwm.h>
@@ -252,7 +253,6 @@ static struct platform_device *smartq_devices[] __initdata = {
252 &s3c_device_ohci, 253 &s3c_device_ohci,
253 &s3c_device_rtc, 254 &s3c_device_rtc,
254 &samsung_device_pwm, 255 &samsung_device_pwm,
255 &s3c_device_ts,
256 &s3c_device_usb_hsotg, 256 &s3c_device_usb_hsotg,
257 &s3c64xx_device_iis0, 257 &s3c64xx_device_iis0,
258 &smartq_backlight_device, 258 &smartq_backlight_device,
@@ -383,6 +383,15 @@ void __init smartq_map_io(void)
383 smartq_lcd_mode_set(); 383 smartq_lcd_mode_set();
384} 384}
385 385
386static struct gpiod_lookup_table smartq_audio_gpios = {
387 .dev_id = "smartq-audio",
388 .table = {
389 GPIO_LOOKUP("GPL", 12, "headphone detect", 0),
390 GPIO_LOOKUP("GPK", 12, "amplifiers shutdown", 0),
391 { },
392 },
393};
394
386void __init smartq_machine_init(void) 395void __init smartq_machine_init(void)
387{ 396{
388 s3c_i2c0_set_platdata(NULL); 397 s3c_i2c0_set_platdata(NULL);
@@ -390,7 +399,7 @@ void __init smartq_machine_init(void)
390 s3c_hwmon_set_platdata(&smartq_hwmon_pdata); 399 s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
391 s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata); 400 s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
392 s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata); 401 s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
393 s3c24xx_ts_set_platdata(&smartq_touchscreen_pdata); 402 s3c64xx_ts_set_platdata(&smartq_touchscreen_pdata);
394 403
395 i2c_register_board_info(0, smartq_i2c_devs, 404 i2c_register_board_info(0, smartq_i2c_devs,
396 ARRAY_SIZE(smartq_i2c_devs)); 405 ARRAY_SIZE(smartq_i2c_devs));
@@ -402,4 +411,7 @@ void __init smartq_machine_init(void)
402 411
403 pwm_add_table(smartq_pwm_lookup, ARRAY_SIZE(smartq_pwm_lookup)); 412 pwm_add_table(smartq_pwm_lookup, ARRAY_SIZE(smartq_pwm_lookup));
404 platform_add_devices(smartq_devices, ARRAY_SIZE(smartq_devices)); 413 platform_add_devices(smartq_devices, ARRAY_SIZE(smartq_devices));
414
415 gpiod_add_lookup_table(&smartq_audio_gpios);
416 platform_device_register_simple("smartq-audio", -1, NULL, 0);
405} 417}
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c
index 33224ab36fac..0972b6ce0ef6 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq5.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq5.c
@@ -21,6 +21,7 @@
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22 22
23#include <video/samsung_fimd.h> 23#include <video/samsung_fimd.h>
24#include <mach/irqs.h>
24#include <mach/map.h> 25#include <mach/map.h>
25#include <mach/regs-gpio.h> 26#include <mach/regs-gpio.h>
26#include <mach/gpio-samsung.h> 27#include <mach/gpio-samsung.h>
@@ -153,6 +154,7 @@ static void __init smartq5_machine_init(void)
153MACHINE_START(SMARTQ5, "SmartQ 5") 154MACHINE_START(SMARTQ5, "SmartQ 5")
154 /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ 155 /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */
155 .atag_offset = 0x100, 156 .atag_offset = 0x100,
157 .nr_irqs = S3C64XX_NR_IRQS,
156 .init_irq = s3c6410_init_irq, 158 .init_irq = s3c6410_init_irq,
157 .map_io = smartq_map_io, 159 .map_io = smartq_map_io,
158 .init_machine = smartq5_machine_init, 160 .init_machine = smartq5_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c
index fc7fece22fb0..51ac1c6c654a 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq7.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq7.c
@@ -21,6 +21,7 @@
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22 22
23#include <video/samsung_fimd.h> 23#include <video/samsung_fimd.h>
24#include <mach/irqs.h>
24#include <mach/map.h> 25#include <mach/map.h>
25#include <mach/regs-gpio.h> 26#include <mach/regs-gpio.h>
26#include <mach/gpio-samsung.h> 27#include <mach/gpio-samsung.h>
@@ -169,6 +170,7 @@ static void __init smartq7_machine_init(void)
169MACHINE_START(SMARTQ7, "SmartQ 7") 170MACHINE_START(SMARTQ7, "SmartQ 7")
170 /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ 171 /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */
171 .atag_offset = 0x100, 172 .atag_offset = 0x100,
173 .nr_irqs = S3C64XX_NR_IRQS,
172 .init_irq = s3c6410_init_irq, 174 .init_irq = s3c6410_init_irq,
173 .map_io = smartq_map_io, 175 .map_io = smartq_map_io,
174 .init_machine = smartq7_machine_init, 176 .init_machine = smartq7_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c
index 6f425126a735..7d8a74fd8915 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6400.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c
@@ -27,6 +27,7 @@
27#include <asm/mach/map.h> 27#include <asm/mach/map.h>
28#include <asm/mach/irq.h> 28#include <asm/mach/irq.h>
29 29
30#include <mach/irqs.h>
30#include <mach/hardware.h> 31#include <mach/hardware.h>
31#include <mach/map.h> 32#include <mach/map.h>
32 33
@@ -88,7 +89,7 @@ static void __init smdk6400_machine_init(void)
88MACHINE_START(SMDK6400, "SMDK6400") 89MACHINE_START(SMDK6400, "SMDK6400")
89 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */ 90 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
90 .atag_offset = 0x100, 91 .atag_offset = 0x100,
91 92 .nr_irqs = S3C64XX_NR_IRQS,
92 .init_irq = s3c6400_init_irq, 93 .init_irq = s3c6400_init_irq,
93 .map_io = smdk6400_map_io, 94 .map_io = smdk6400_map_io,
94 .init_machine = smdk6400_machine_init, 95 .init_machine = smdk6400_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 30fd27853072..8a894ee3ee76 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -52,6 +52,7 @@
52#include <asm/mach/irq.h> 52#include <asm/mach/irq.h>
53 53
54#include <mach/hardware.h> 54#include <mach/hardware.h>
55#include <mach/irqs.h>
55#include <mach/map.h> 56#include <mach/map.h>
56 57
57#include <asm/irq.h> 58#include <asm/irq.h>
@@ -289,7 +290,6 @@ static struct platform_device *smdk6410_devices[] __initdata = {
289 &s3c_device_adc, 290 &s3c_device_adc,
290 &s3c_device_cfcon, 291 &s3c_device_cfcon,
291 &s3c_device_rtc, 292 &s3c_device_rtc,
292 &s3c_device_ts,
293 &s3c_device_wdt, 293 &s3c_device_wdt,
294}; 294};
295 295
@@ -668,7 +668,7 @@ static void __init smdk6410_machine_init(void)
668 668
669 samsung_keypad_set_platdata(&smdk6410_keypad_data); 669 samsung_keypad_set_platdata(&smdk6410_keypad_data);
670 670
671 s3c24xx_ts_set_platdata(NULL); 671 s3c64xx_ts_set_platdata(NULL);
672 672
673 /* configure nCS1 width to 16 bits */ 673 /* configure nCS1 width to 16 bits */
674 674
@@ -707,7 +707,7 @@ static void __init smdk6410_machine_init(void)
707MACHINE_START(SMDK6410, "SMDK6410") 707MACHINE_START(SMDK6410, "SMDK6410")
708 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */ 708 /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
709 .atag_offset = 0x100, 709 .atag_offset = 0x100,
710 710 .nr_irqs = S3C64XX_NR_IRQS,
711 .init_irq = s3c6410_init_irq, 711 .init_irq = s3c6410_init_irq,
712 .map_io = smdk6410_map_io, 712 .map_io = smdk6410_map_io,
713 .init_machine = smdk6410_machine_init, 713 .init_machine = smdk6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/pl080.c b/arch/arm/mach-s3c64xx/pl080.c
index 901a984bddc2..89c5a62830a7 100644
--- a/arch/arm/mach-s3c64xx/pl080.c
+++ b/arch/arm/mach-s3c64xx/pl080.c
@@ -14,6 +14,7 @@
14#include <linux/amba/pl08x.h> 14#include <linux/amba/pl08x.h>
15#include <linux/of.h> 15#include <linux/of.h>
16 16
17#include <plat/cpu.h>
17#include <mach/irqs.h> 18#include <mach/irqs.h>
18#include <mach/map.h> 19#include <mach/map.h>
19 20
@@ -230,6 +231,9 @@ static AMBA_AHB_DEVICE(s3c64xx_dma1, "dma-pl080s.1", 0,
230 231
231static int __init s3c64xx_pl080_init(void) 232static int __init s3c64xx_pl080_init(void)
232{ 233{
234 if (!soc_is_s3c64xx())
235 return 0;
236
233 /* Set all DMA configuration to be DMA, not SDMA */ 237 /* Set all DMA configuration to be DMA, not SDMA */
234 writel(0xffffff, S3C64XX_SDMA_SEL); 238 writel(0xffffff, S3C64XX_SDMA_SEL);
235 239
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c
index 75b14e756383..59d91b83b03d 100644
--- a/arch/arm/mach-s3c64xx/pm.c
+++ b/arch/arm/mach-s3c64xx/pm.c
@@ -22,6 +22,7 @@
22#include <mach/map.h> 22#include <mach/map.h>
23#include <mach/irqs.h> 23#include <mach/irqs.h>
24 24
25#include <plat/cpu.h>
25#include <plat/devs.h> 26#include <plat/devs.h>
26#include <plat/pm.h> 27#include <plat/pm.h>
27#include <plat/wakeup-mask.h> 28#include <plat/wakeup-mask.h>
@@ -332,6 +333,9 @@ int __init s3c64xx_pm_init(void)
332 333
333static __init int s3c64xx_pm_initcall(void) 334static __init int s3c64xx_pm_initcall(void)
334{ 335{
336 if (!soc_is_s3c64xx())
337 return 0;
338
335 pm_cpu_prep = s3c64xx_pm_prepare; 339 pm_cpu_prep = s3c64xx_pm_prepare;
336 pm_cpu_sleep = s3c64xx_cpu_suspend; 340 pm_cpu_sleep = s3c64xx_cpu_suspend;
337 341
diff --git a/arch/arm/mach-s3c64xx/s3c6400.c b/arch/arm/mach-s3c64xx/s3c6400.c
index 33273abef669..5ea82accc773 100644
--- a/arch/arm/mach-s3c64xx/s3c6400.c
+++ b/arch/arm/mach-s3c64xx/s3c6400.c
@@ -81,7 +81,7 @@ static struct device s3c6400_dev = {
81static int __init s3c6400_core_init(void) 81static int __init s3c6400_core_init(void)
82{ 82{
83 /* Not applicable when using DT. */ 83 /* Not applicable when using DT. */
84 if (of_have_populated_dt()) 84 if (of_have_populated_dt() || soc_is_s3c64xx())
85 return 0; 85 return 0;
86 86
87 return subsys_system_register(&s3c6400_subsys, NULL); 87 return subsys_system_register(&s3c6400_subsys, NULL);
diff --git a/arch/arm/mach-s3c64xx/s3c6410.c b/arch/arm/mach-s3c64xx/s3c6410.c
index eadc48dee0e4..92bb927c4478 100644
--- a/arch/arm/mach-s3c64xx/s3c6410.c
+++ b/arch/arm/mach-s3c64xx/s3c6410.c
@@ -84,7 +84,7 @@ static struct device s3c6410_dev = {
84static int __init s3c6410_core_init(void) 84static int __init s3c6410_core_init(void)
85{ 85{
86 /* Not applicable when using DT. */ 86 /* Not applicable when using DT. */
87 if (of_have_populated_dt()) 87 if (of_have_populated_dt() || !soc_is_s3c64xx())
88 return 0; 88 return 0;
89 89
90 return subsys_system_register(&s3c6410_subsys, NULL); 90 return subsys_system_register(&s3c6410_subsys, NULL);
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
index 1dba3688275f..e40f777ccf7d 100644
--- a/arch/arm/mach-versatile/Kconfig
+++ b/arch/arm/mach-versatile/Kconfig
@@ -1,33 +1,16 @@
1menu "Versatile platform type" 1config ARCH_VERSATILE
2 depends on ARCH_VERSATILE 2 bool "ARM Ltd. Versatile family"
3 3 depends on ARCH_MULTI_V5
4config ARCH_VERSATILE_PB 4 select ARM_AMBA
5 bool "Support Versatile Platform Baseboard for ARM926EJ-S" 5 select ARM_TIMER_SP804
6 default y 6 select ARM_VIC
7 select CLKSRC_VERSATILE
8 select COMMON_CLK_VERSATILE
7 select CPU_ARM926T 9 select CPU_ARM926T
10 select ICST
8 select MIGHT_HAVE_PCI 11 select MIGHT_HAVE_PCI
12 select PLAT_VERSATILE
13 select VERSATILE_FPGA_IRQ
9 help 14 help
10 Include support for the ARM(R) Versatile Platform Baseboard 15 This enables support for ARM Ltd Versatile board.
11 for the ARM926EJ-S.
12
13config MACH_VERSATILE_AB
14 bool "Support Versatile Application Baseboard for ARM926EJ-S"
15 select CPU_ARM926T
16 help
17 Include support for the ARM(R) Versatile Application Baseboard
18 for the ARM926EJ-S.
19
20config MACH_VERSATILE_DT
21 bool "Support Versatile platform from device tree"
22 select CPU_ARM926T
23 select USE_OF
24 help
25 Include support for the ARM(R) Versatile/PB platform,
26 using the device tree for discovery
27
28config MACH_VERSATILE_AUTO
29 def_bool y
30 depends on !ARCH_VERSATILE_PB && !MACH_VERSATILE_AB
31 select MACH_VERSATILE_DT
32 16
33endmenu
diff --git a/arch/arm/mach-versatile/Makefile b/arch/arm/mach-versatile/Makefile
index 81fa3fe25e1a..41b124b5107b 100644
--- a/arch/arm/mach-versatile/Makefile
+++ b/arch/arm/mach-versatile/Makefile
@@ -2,8 +2,4 @@
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
5obj-y := core.o 5obj-y := versatile_dt.o
6obj-$(CONFIG_ARCH_VERSATILE_PB) += versatile_pb.o
7obj-$(CONFIG_MACH_VERSATILE_AB) += versatile_ab.o
8obj-$(CONFIG_MACH_VERSATILE_DT) += versatile_dt.o
9obj-$(CONFIG_PCI) += pci.o
diff --git a/arch/arm/mach-versatile/Makefile.boot b/arch/arm/mach-versatile/Makefile.boot
deleted file mode 100644
index ff0a4b5b0a82..000000000000
--- a/arch/arm/mach-versatile/Makefile.boot
+++ /dev/null
@@ -1,4 +0,0 @@
1 zreladdr-y += 0x00008000
2params_phys-y := 0x00000100
3initrd_phys-y := 0x00800000
4
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
deleted file mode 100644
index 23a04fe5d2ad..000000000000
--- a/arch/arm/mach-versatile/core.c
+++ /dev/null
@@ -1,808 +0,0 @@
1/*
2 * linux/arch/arm/mach-versatile/core.c
3 *
4 * Copyright (C) 1999 - 2003 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21#include <linux/init.h>
22#include <linux/device.h>
23#include <linux/dma-mapping.h>
24#include <linux/platform_device.h>
25#include <linux/interrupt.h>
26#include <linux/irqdomain.h>
27#include <linux/of_address.h>
28#include <linux/of_platform.h>
29#include <linux/amba/bus.h>
30#include <linux/amba/clcd.h>
31#include <linux/platform_data/video-clcd-versatile.h>
32#include <linux/amba/pl061.h>
33#include <linux/amba/mmci.h>
34#include <linux/amba/pl022.h>
35#include <linux/io.h>
36#include <linux/irqchip/arm-vic.h>
37#include <linux/irqchip/versatile-fpga.h>
38#include <linux/gfp.h>
39#include <linux/clkdev.h>
40#include <linux/mtd/physmap.h>
41#include <linux/bitops.h>
42#include <linux/reboot.h>
43
44#include <clocksource/timer-sp804.h>
45
46#include <asm/irq.h>
47#include <asm/hardware/icst.h>
48#include <asm/mach-types.h>
49
50#include <asm/mach/arch.h>
51#include <asm/mach/irq.h>
52#include <asm/mach/time.h>
53#include <asm/mach/map.h>
54#include <mach/hardware.h>
55#include <mach/platform.h>
56
57#include <plat/sched_clock.h>
58
59#include "core.h"
60
61/*
62 * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx
63 * is the (PA >> 12).
64 *
65 * Setup a VA for the Versatile Vectored Interrupt Controller.
66 */
67#define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE)
68#define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE)
69
70/* These PIC IRQs are valid in each configuration */
71#define PIC_VALID_ALL BIT(SIC_INT_KMI0) | BIT(SIC_INT_KMI1) | \
72 BIT(SIC_INT_SCI3) | BIT(SIC_INT_UART3) | \
73 BIT(SIC_INT_CLCD) | BIT(SIC_INT_TOUCH) | \
74 BIT(SIC_INT_KEYPAD) | BIT(SIC_INT_DoC) | \
75 BIT(SIC_INT_USB) | BIT(SIC_INT_PCI0) | \
76 BIT(SIC_INT_PCI1) | BIT(SIC_INT_PCI2) | \
77 BIT(SIC_INT_PCI3)
78#if 1
79#define IRQ_MMCI0A IRQ_VICSOURCE22
80#define IRQ_AACI IRQ_VICSOURCE24
81#define IRQ_ETH IRQ_VICSOURCE25
82#define PIC_MASK 0xFFD00000
83#define PIC_VALID PIC_VALID_ALL
84#else
85#define IRQ_MMCI0A IRQ_SIC_MMCI0A
86#define IRQ_AACI IRQ_SIC_AACI
87#define IRQ_ETH IRQ_SIC_ETH
88#define PIC_MASK 0
89#define PIC_VALID PIC_VALID_ALL | BIT(SIC_INT_MMCI0A) | \
90 BIT(SIC_INT_MMCI1A) | BIT(SIC_INT_AACI) | \
91 BIT(SIC_INT_ETH)
92#endif
93
94/* Lookup table for finding a DT node that represents the vic instance */
95static const struct of_device_id vic_of_match[] __initconst = {
96 { .compatible = "arm,versatile-vic", },
97 {}
98};
99
100static const struct of_device_id sic_of_match[] __initconst = {
101 { .compatible = "arm,versatile-sic", },
102 {}
103};
104
105void __init versatile_init_irq(void)
106{
107 struct device_node *np;
108
109 np = of_find_matching_node_by_address(NULL, vic_of_match,
110 VERSATILE_VIC_BASE);
111 __vic_init(VA_VIC_BASE, 0, IRQ_VIC_START, ~0, 0, np);
112
113 writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR);
114
115 np = of_find_matching_node_by_address(NULL, sic_of_match,
116 VERSATILE_SIC_BASE);
117
118 fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START,
119 IRQ_VICSOURCE31, PIC_VALID, np);
120
121 /*
122 * Interrupts on secondary controller from 0 to 8 are routed to
123 * source 31 on PIC.
124 * Interrupts from 21 to 31 are routed directly to the VIC on
125 * the corresponding number on primary controller. This is controlled
126 * by setting PIC_ENABLEx.
127 */
128 writel(PIC_MASK, VA_SIC_BASE + SIC_INT_PIC_ENABLE);
129}
130
131static struct map_desc versatile_io_desc[] __initdata __maybe_unused = {
132 {
133 .virtual = IO_ADDRESS(VERSATILE_SYS_BASE),
134 .pfn = __phys_to_pfn(VERSATILE_SYS_BASE),
135 .length = SZ_4K,
136 .type = MT_DEVICE
137 }, {
138 .virtual = IO_ADDRESS(VERSATILE_SIC_BASE),
139 .pfn = __phys_to_pfn(VERSATILE_SIC_BASE),
140 .length = SZ_4K,
141 .type = MT_DEVICE
142 }, {
143 .virtual = IO_ADDRESS(VERSATILE_VIC_BASE),
144 .pfn = __phys_to_pfn(VERSATILE_VIC_BASE),
145 .length = SZ_4K,
146 .type = MT_DEVICE
147 }, {
148 .virtual = IO_ADDRESS(VERSATILE_SCTL_BASE),
149 .pfn = __phys_to_pfn(VERSATILE_SCTL_BASE),
150 .length = SZ_4K * 9,
151 .type = MT_DEVICE
152 },
153#ifdef CONFIG_MACH_VERSATILE_AB
154 {
155 .virtual = IO_ADDRESS(VERSATILE_IB2_BASE),
156 .pfn = __phys_to_pfn(VERSATILE_IB2_BASE),
157 .length = SZ_64M,
158 .type = MT_DEVICE
159 },
160#endif
161#ifdef CONFIG_DEBUG_LL
162 {
163 .virtual = IO_ADDRESS(VERSATILE_UART0_BASE),
164 .pfn = __phys_to_pfn(VERSATILE_UART0_BASE),
165 .length = SZ_4K,
166 .type = MT_DEVICE
167 },
168#endif
169#ifdef CONFIG_PCI
170 {
171 .virtual = IO_ADDRESS(VERSATILE_PCI_CORE_BASE),
172 .pfn = __phys_to_pfn(VERSATILE_PCI_CORE_BASE),
173 .length = SZ_4K,
174 .type = MT_DEVICE
175 }, {
176 .virtual = (unsigned long)VERSATILE_PCI_VIRT_BASE,
177 .pfn = __phys_to_pfn(VERSATILE_PCI_BASE),
178 .length = VERSATILE_PCI_BASE_SIZE,
179 .type = MT_DEVICE
180 }, {
181 .virtual = (unsigned long)VERSATILE_PCI_CFG_VIRT_BASE,
182 .pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE),
183 .length = VERSATILE_PCI_CFG_BASE_SIZE,
184 .type = MT_DEVICE
185 },
186#endif
187};
188
189void __init versatile_map_io(void)
190{
191 iotable_init(versatile_io_desc, ARRAY_SIZE(versatile_io_desc));
192}
193
194
195#define VERSATILE_FLASHCTRL (__io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_FLASH_OFFSET)
196
197static void versatile_flash_set_vpp(struct platform_device *pdev, int on)
198{
199 u32 val;
200
201 val = __raw_readl(VERSATILE_FLASHCTRL);
202 if (on)
203 val |= VERSATILE_FLASHPROG_FLVPPEN;
204 else
205 val &= ~VERSATILE_FLASHPROG_FLVPPEN;
206 __raw_writel(val, VERSATILE_FLASHCTRL);
207}
208
209static struct physmap_flash_data versatile_flash_data = {
210 .width = 4,
211 .set_vpp = versatile_flash_set_vpp,
212};
213
214static struct resource versatile_flash_resource = {
215 .start = VERSATILE_FLASH_BASE,
216 .end = VERSATILE_FLASH_BASE + VERSATILE_FLASH_SIZE - 1,
217 .flags = IORESOURCE_MEM,
218};
219
220static struct platform_device versatile_flash_device = {
221 .name = "physmap-flash",
222 .id = 0,
223 .dev = {
224 .platform_data = &versatile_flash_data,
225 },
226 .num_resources = 1,
227 .resource = &versatile_flash_resource,
228};
229
230static struct resource smc91x_resources[] = {
231 [0] = {
232 .start = VERSATILE_ETH_BASE,
233 .end = VERSATILE_ETH_BASE + SZ_64K - 1,
234 .flags = IORESOURCE_MEM,
235 },
236 [1] = {
237 .start = IRQ_ETH,
238 .end = IRQ_ETH,
239 .flags = IORESOURCE_IRQ,
240 },
241};
242
243static struct platform_device smc91x_device = {
244 .name = "smc91x",
245 .id = 0,
246 .num_resources = ARRAY_SIZE(smc91x_resources),
247 .resource = smc91x_resources,
248};
249
250static struct resource versatile_i2c_resource = {
251 .start = VERSATILE_I2C_BASE,
252 .end = VERSATILE_I2C_BASE + SZ_4K - 1,
253 .flags = IORESOURCE_MEM,
254};
255
256static struct platform_device versatile_i2c_device = {
257 .name = "versatile-i2c",
258 .id = 0,
259 .num_resources = 1,
260 .resource = &versatile_i2c_resource,
261};
262
263static struct i2c_board_info versatile_i2c_board_info[] = {
264 {
265 I2C_BOARD_INFO("ds1338", 0xd0 >> 1),
266 },
267};
268
269static int __init versatile_i2c_init(void)
270{
271 return i2c_register_board_info(0, versatile_i2c_board_info,
272 ARRAY_SIZE(versatile_i2c_board_info));
273}
274arch_initcall(versatile_i2c_init);
275
276#define VERSATILE_SYSMCI (__io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_MCI_OFFSET)
277
278unsigned int mmc_status(struct device *dev)
279{
280 struct amba_device *adev = container_of(dev, struct amba_device, dev);
281 u32 mask;
282
283 if (adev->res.start == VERSATILE_MMCI0_BASE)
284 mask = 1;
285 else
286 mask = 2;
287
288 return readl(VERSATILE_SYSMCI) & mask;
289}
290
291static struct mmci_platform_data mmc0_plat_data = {
292 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
293 .status = mmc_status,
294 .gpio_wp = -1,
295 .gpio_cd = -1,
296};
297
298static struct resource char_lcd_resources[] = {
299 {
300 .start = VERSATILE_CHAR_LCD_BASE,
301 .end = (VERSATILE_CHAR_LCD_BASE + SZ_4K - 1),
302 .flags = IORESOURCE_MEM,
303 },
304};
305
306static struct platform_device char_lcd_device = {
307 .name = "arm-charlcd",
308 .id = -1,
309 .num_resources = ARRAY_SIZE(char_lcd_resources),
310 .resource = char_lcd_resources,
311};
312
313static struct resource leds_resources[] = {
314 {
315 .start = VERSATILE_SYS_BASE + VERSATILE_SYS_LED_OFFSET,
316 .end = VERSATILE_SYS_BASE + VERSATILE_SYS_LED_OFFSET + 4,
317 .flags = IORESOURCE_MEM,
318 },
319};
320
321static struct platform_device leds_device = {
322 .name = "versatile-leds",
323 .id = -1,
324 .num_resources = ARRAY_SIZE(leds_resources),
325 .resource = leds_resources,
326};
327
328/*
329 * Clock handling
330 */
331static const struct icst_params versatile_oscvco_params = {
332 .ref = 24000000,
333 .vco_max = ICST307_VCO_MAX,
334 .vco_min = ICST307_VCO_MIN,
335 .vd_min = 4 + 8,
336 .vd_max = 511 + 8,
337 .rd_min = 1 + 2,
338 .rd_max = 127 + 2,
339 .s2div = icst307_s2div,
340 .idx2s = icst307_idx2s,
341};
342
343static void versatile_oscvco_set(struct clk *clk, struct icst_vco vco)
344{
345 void __iomem *sys_lock = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_LOCK_OFFSET;
346 u32 val;
347
348 val = readl(clk->vcoreg) & ~0x7ffff;
349 val |= vco.v | (vco.r << 9) | (vco.s << 16);
350
351 writel(0xa05f, sys_lock);
352 writel(val, clk->vcoreg);
353 writel(0, sys_lock);
354}
355
356static const struct clk_ops osc4_clk_ops = {
357 .round = icst_clk_round,
358 .set = icst_clk_set,
359 .setvco = versatile_oscvco_set,
360};
361
362static struct clk osc4_clk = {
363 .ops = &osc4_clk_ops,
364 .params = &versatile_oscvco_params,
365};
366
367/*
368 * These are fixed clocks.
369 */
370static struct clk ref24_clk = {
371 .rate = 24000000,
372};
373
374static struct clk sp804_clk = {
375 .rate = 1000000,
376};
377
378static struct clk dummy_apb_pclk;
379
380static struct clk_lookup lookups[] = {
381 { /* AMBA bus clock */
382 .con_id = "apb_pclk",
383 .clk = &dummy_apb_pclk,
384 }, { /* UART0 */
385 .dev_id = "dev:f1",
386 .clk = &ref24_clk,
387 }, { /* UART1 */
388 .dev_id = "dev:f2",
389 .clk = &ref24_clk,
390 }, { /* UART2 */
391 .dev_id = "dev:f3",
392 .clk = &ref24_clk,
393 }, { /* UART3 */
394 .dev_id = "fpga:09",
395 .clk = &ref24_clk,
396 }, { /* KMI0 */
397 .dev_id = "fpga:06",
398 .clk = &ref24_clk,
399 }, { /* KMI1 */
400 .dev_id = "fpga:07",
401 .clk = &ref24_clk,
402 }, { /* MMC0 */
403 .dev_id = "fpga:05",
404 .clk = &ref24_clk,
405 }, { /* MMC1 */
406 .dev_id = "fpga:0b",
407 .clk = &ref24_clk,
408 }, { /* SSP */
409 .dev_id = "dev:f4",
410 .clk = &ref24_clk,
411 }, { /* CLCD */
412 .dev_id = "dev:20",
413 .clk = &osc4_clk,
414 }, { /* SP804 timers */
415 .dev_id = "sp804",
416 .clk = &sp804_clk,
417 },
418};
419
420/*
421 * CLCD support.
422 */
423#define SYS_CLCD_MODE_MASK (3 << 0)
424#define SYS_CLCD_MODE_888 (0 << 0)
425#define SYS_CLCD_MODE_5551 (1 << 0)
426#define SYS_CLCD_MODE_565_RLSB (2 << 0)
427#define SYS_CLCD_MODE_565_BLSB (3 << 0)
428#define SYS_CLCD_NLCDIOON (1 << 2)
429#define SYS_CLCD_VDDPOSSWITCH (1 << 3)
430#define SYS_CLCD_PWR3V5SWITCH (1 << 4)
431#define SYS_CLCD_ID_MASK (0x1f << 8)
432#define SYS_CLCD_ID_SANYO_3_8 (0x00 << 8)
433#define SYS_CLCD_ID_UNKNOWN_8_4 (0x01 << 8)
434#define SYS_CLCD_ID_EPSON_2_2 (0x02 << 8)
435#define SYS_CLCD_ID_SANYO_2_5 (0x07 << 8)
436#define SYS_CLCD_ID_VGA (0x1f << 8)
437
438static bool is_sanyo_2_5_lcd;
439
440/*
441 * Disable all display connectors on the interface module.
442 */
443static void versatile_clcd_disable(struct clcd_fb *fb)
444{
445 void __iomem *sys_clcd = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_CLCD_OFFSET;
446 u32 val;
447
448 val = readl(sys_clcd);
449 val &= ~SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH;
450 writel(val, sys_clcd);
451
452#ifdef CONFIG_MACH_VERSATILE_AB
453 /*
454 * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off
455 */
456 if (machine_is_versatile_ab() && is_sanyo_2_5_lcd) {
457 void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
458 unsigned long ctrl;
459
460 ctrl = readl(versatile_ib2_ctrl);
461 ctrl &= ~0x01;
462 writel(ctrl, versatile_ib2_ctrl);
463 }
464#endif
465}
466
467/*
468 * Enable the relevant connector on the interface module.
469 */
470static void versatile_clcd_enable(struct clcd_fb *fb)
471{
472 struct fb_var_screeninfo *var = &fb->fb.var;
473 void __iomem *sys_clcd = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_CLCD_OFFSET;
474 u32 val;
475
476 val = readl(sys_clcd);
477 val &= ~SYS_CLCD_MODE_MASK;
478
479 switch (var->green.length) {
480 case 5:
481 val |= SYS_CLCD_MODE_5551;
482 break;
483 case 6:
484 if (var->red.offset == 0)
485 val |= SYS_CLCD_MODE_565_RLSB;
486 else
487 val |= SYS_CLCD_MODE_565_BLSB;
488 break;
489 case 8:
490 val |= SYS_CLCD_MODE_888;
491 break;
492 }
493
494 /*
495 * Set the MUX
496 */
497 writel(val, sys_clcd);
498
499 /*
500 * And now enable the PSUs
501 */
502 val |= SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH;
503 writel(val, sys_clcd);
504
505#ifdef CONFIG_MACH_VERSATILE_AB
506 /*
507 * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on
508 */
509 if (machine_is_versatile_ab() && is_sanyo_2_5_lcd) {
510 void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
511 unsigned long ctrl;
512
513 ctrl = readl(versatile_ib2_ctrl);
514 ctrl |= 0x01;
515 writel(ctrl, versatile_ib2_ctrl);
516 }
517#endif
518}
519
520/*
521 * Detect which LCD panel is connected, and return the appropriate
522 * clcd_panel structure. Note: we do not have any information on
523 * the required timings for the 8.4in panel, so we presently assume
524 * VGA timings.
525 */
526static int versatile_clcd_setup(struct clcd_fb *fb)
527{
528 void __iomem *sys_clcd = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_CLCD_OFFSET;
529 const char *panel_name;
530 u32 val;
531
532 is_sanyo_2_5_lcd = false;
533
534 val = readl(sys_clcd) & SYS_CLCD_ID_MASK;
535 if (val == SYS_CLCD_ID_SANYO_3_8)
536 panel_name = "Sanyo TM38QV67A02A";
537 else if (val == SYS_CLCD_ID_SANYO_2_5) {
538 panel_name = "Sanyo QVGA Portrait";
539 is_sanyo_2_5_lcd = true;
540 } else if (val == SYS_CLCD_ID_EPSON_2_2)
541 panel_name = "Epson L2F50113T00";
542 else if (val == SYS_CLCD_ID_VGA)
543 panel_name = "VGA";
544 else {
545 printk(KERN_ERR "CLCD: unknown LCD panel ID 0x%08x, using VGA\n",
546 val);
547 panel_name = "VGA";
548 }
549
550 fb->panel = versatile_clcd_get_panel(panel_name);
551 if (!fb->panel)
552 return -EINVAL;
553
554 return versatile_clcd_setup_dma(fb, SZ_1M);
555}
556
557static void versatile_clcd_decode(struct clcd_fb *fb, struct clcd_regs *regs)
558{
559 clcdfb_decode(fb, regs);
560
561 /* Always clear BGR for RGB565: we do the routing externally */
562 if (fb->fb.var.green.length == 6)
563 regs->cntl &= ~CNTL_BGR;
564}
565
566static struct clcd_board clcd_plat_data = {
567 .name = "Versatile",
568 .caps = CLCD_CAP_5551 | CLCD_CAP_565 | CLCD_CAP_888,
569 .check = clcdfb_check,
570 .decode = versatile_clcd_decode,
571 .disable = versatile_clcd_disable,
572 .enable = versatile_clcd_enable,
573 .setup = versatile_clcd_setup,
574 .mmap = versatile_clcd_mmap_dma,
575 .remove = versatile_clcd_remove_dma,
576};
577
578static struct pl061_platform_data gpio0_plat_data = {
579 .gpio_base = 0,
580 .irq_base = IRQ_GPIO0_START,
581};
582
583static struct pl061_platform_data gpio1_plat_data = {
584 .gpio_base = 8,
585 .irq_base = IRQ_GPIO1_START,
586};
587
588static struct pl061_platform_data gpio2_plat_data = {
589 .gpio_base = 16,
590 .irq_base = IRQ_GPIO2_START,
591};
592
593static struct pl061_platform_data gpio3_plat_data = {
594 .gpio_base = 24,
595 .irq_base = IRQ_GPIO3_START,
596};
597
598static struct pl022_ssp_controller ssp0_plat_data = {
599 .bus_id = 0,
600 .enable_dma = 0,
601 .num_chipselect = 1,
602};
603
604#define AACI_IRQ { IRQ_AACI }
605#define MMCI0_IRQ { IRQ_MMCI0A,IRQ_SIC_MMCI0B }
606#define KMI0_IRQ { IRQ_SIC_KMI0 }
607#define KMI1_IRQ { IRQ_SIC_KMI1 }
608
609/*
610 * These devices are connected directly to the multi-layer AHB switch
611 */
612#define SMC_IRQ { }
613#define MPMC_IRQ { }
614#define CLCD_IRQ { IRQ_CLCDINT }
615#define DMAC_IRQ { IRQ_DMAINT }
616
617/*
618 * These devices are connected via the core APB bridge
619 */
620#define SCTL_IRQ { }
621#define WATCHDOG_IRQ { IRQ_WDOGINT }
622#define GPIO0_IRQ { IRQ_GPIOINT0 }
623#define GPIO1_IRQ { IRQ_GPIOINT1 }
624#define GPIO2_IRQ { IRQ_GPIOINT2 }
625#define GPIO3_IRQ { IRQ_GPIOINT3 }
626#define RTC_IRQ { IRQ_RTCINT }
627
628/*
629 * These devices are connected via the DMA APB bridge
630 */
631#define SCI_IRQ { IRQ_SCIINT }
632#define UART0_IRQ { IRQ_UARTINT0 }
633#define UART1_IRQ { IRQ_UARTINT1 }
634#define UART2_IRQ { IRQ_UARTINT2 }
635#define SSP_IRQ { IRQ_SSPINT }
636
637/* FPGA Primecells */
638APB_DEVICE(aaci, "fpga:04", AACI, NULL);
639APB_DEVICE(mmc0, "fpga:05", MMCI0, &mmc0_plat_data);
640APB_DEVICE(kmi0, "fpga:06", KMI0, NULL);
641APB_DEVICE(kmi1, "fpga:07", KMI1, NULL);
642
643/* DevChip Primecells */
644AHB_DEVICE(smc, "dev:00", SMC, NULL);
645AHB_DEVICE(mpmc, "dev:10", MPMC, NULL);
646AHB_DEVICE(clcd, "dev:20", CLCD, &clcd_plat_data);
647AHB_DEVICE(dmac, "dev:30", DMAC, NULL);
648APB_DEVICE(sctl, "dev:e0", SCTL, NULL);
649APB_DEVICE(wdog, "dev:e1", WATCHDOG, NULL);
650APB_DEVICE(gpio0, "dev:e4", GPIO0, &gpio0_plat_data);
651APB_DEVICE(gpio1, "dev:e5", GPIO1, &gpio1_plat_data);
652APB_DEVICE(gpio2, "dev:e6", GPIO2, &gpio2_plat_data);
653APB_DEVICE(gpio3, "dev:e7", GPIO3, &gpio3_plat_data);
654APB_DEVICE(rtc, "dev:e8", RTC, NULL);
655APB_DEVICE(sci0, "dev:f0", SCI, NULL);
656APB_DEVICE(uart0, "dev:f1", UART0, NULL);
657APB_DEVICE(uart1, "dev:f2", UART1, NULL);
658APB_DEVICE(uart2, "dev:f3", UART2, NULL);
659APB_DEVICE(ssp0, "dev:f4", SSP, &ssp0_plat_data);
660
661static struct amba_device *amba_devs[] __initdata = {
662 &dmac_device,
663 &uart0_device,
664 &uart1_device,
665 &uart2_device,
666 &smc_device,
667 &mpmc_device,
668 &clcd_device,
669 &sctl_device,
670 &wdog_device,
671 &gpio0_device,
672 &gpio1_device,
673 &gpio2_device,
674 &gpio3_device,
675 &rtc_device,
676 &sci0_device,
677 &ssp0_device,
678 &aaci_device,
679 &mmc0_device,
680 &kmi0_device,
681 &kmi1_device,
682};
683
684#ifdef CONFIG_OF
685/*
686 * Lookup table for attaching a specific name and platform_data pointer to
687 * devices as they get created by of_platform_populate(). Ideally this table
688 * would not exist, but the current clock implementation depends on some devices
689 * having a specific name.
690 */
691struct of_dev_auxdata versatile_auxdata_lookup[] __initdata = {
692 OF_DEV_AUXDATA("arm,primecell", VERSATILE_MMCI0_BASE, "fpga:05", &mmc0_plat_data),
693 OF_DEV_AUXDATA("arm,primecell", VERSATILE_KMI0_BASE, "fpga:06", NULL),
694 OF_DEV_AUXDATA("arm,primecell", VERSATILE_KMI1_BASE, "fpga:07", NULL),
695 OF_DEV_AUXDATA("arm,primecell", VERSATILE_UART3_BASE, "fpga:09", NULL),
696 /* FIXME: this is buggy, the platform data is needed for this MMC instance too */
697 OF_DEV_AUXDATA("arm,primecell", VERSATILE_MMCI1_BASE, "fpga:0b", NULL),
698
699 OF_DEV_AUXDATA("arm,primecell", VERSATILE_CLCD_BASE, "dev:20", &clcd_plat_data),
700 OF_DEV_AUXDATA("arm,primecell", VERSATILE_UART0_BASE, "dev:f1", NULL),
701 OF_DEV_AUXDATA("arm,primecell", VERSATILE_UART1_BASE, "dev:f2", NULL),
702 OF_DEV_AUXDATA("arm,primecell", VERSATILE_UART2_BASE, "dev:f3", NULL),
703 OF_DEV_AUXDATA("arm,primecell", VERSATILE_SSP_BASE, "dev:f4", &ssp0_plat_data),
704
705#if 0
706 /*
707 * These entries are unnecessary because no clocks referencing
708 * them. I've left them in for now as place holders in case
709 * any of them need to be added back, but they should be
710 * removed before actually committing this patch. --gcl
711 */
712 OF_DEV_AUXDATA("arm,primecell", VERSATILE_AACI_BASE, "fpga:04", NULL),
713 OF_DEV_AUXDATA("arm,primecell", VERSATILE_SCI1_BASE, "fpga:0a", NULL),
714 OF_DEV_AUXDATA("arm,primecell", VERSATILE_SMC_BASE, "dev:00", NULL),
715 OF_DEV_AUXDATA("arm,primecell", VERSATILE_MPMC_BASE, "dev:10", NULL),
716 OF_DEV_AUXDATA("arm,primecell", VERSATILE_DMAC_BASE, "dev:30", NULL),
717
718 OF_DEV_AUXDATA("arm,primecell", VERSATILE_SCTL_BASE, "dev:e0", NULL),
719 OF_DEV_AUXDATA("arm,primecell", VERSATILE_WATCHDOG_BASE, "dev:e1", NULL),
720 OF_DEV_AUXDATA("arm,primecell", VERSATILE_GPIO0_BASE, "dev:e4", NULL),
721 OF_DEV_AUXDATA("arm,primecell", VERSATILE_GPIO1_BASE, "dev:e5", NULL),
722 OF_DEV_AUXDATA("arm,primecell", VERSATILE_GPIO2_BASE, "dev:e6", NULL),
723 OF_DEV_AUXDATA("arm,primecell", VERSATILE_GPIO3_BASE, "dev:e7", NULL),
724 OF_DEV_AUXDATA("arm,primecell", VERSATILE_RTC_BASE, "dev:e8", NULL),
725 OF_DEV_AUXDATA("arm,primecell", VERSATILE_SCI_BASE, "dev:f0", NULL),
726#endif
727 {}
728};
729#endif
730
731void versatile_restart(enum reboot_mode mode, const char *cmd)
732{
733 void __iomem *sys = __io_address(VERSATILE_SYS_BASE);
734 u32 val;
735
736 val = __raw_readl(sys + VERSATILE_SYS_RESETCTL_OFFSET);
737 val |= 0x105;
738
739 __raw_writel(0xa05f, sys + VERSATILE_SYS_LOCK_OFFSET);
740 __raw_writel(val, sys + VERSATILE_SYS_RESETCTL_OFFSET);
741 __raw_writel(0, sys + VERSATILE_SYS_LOCK_OFFSET);
742}
743
744/* Early initializations */
745void __init versatile_init_early(void)
746{
747 u32 val;
748 void __iomem *sys = __io_address(VERSATILE_SYS_BASE);
749
750 osc4_clk.vcoreg = sys + VERSATILE_SYS_OSCCLCD_OFFSET;
751 clkdev_add_table(lookups, ARRAY_SIZE(lookups));
752
753 versatile_sched_clock_init(sys + VERSATILE_SYS_24MHz_OFFSET, 24000000);
754
755 /*
756 * set clock frequency:
757 * VERSATILE_REFCLK is 32KHz
758 * VERSATILE_TIMCLK is 1MHz
759 */
760 val = readl(__io_address(VERSATILE_SCTL_BASE));
761 writel((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) |
762 (VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
763 (VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) |
764 (VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel) | val,
765 __io_address(VERSATILE_SCTL_BASE));
766}
767
768void __init versatile_init(void)
769{
770 int i;
771
772 platform_device_register(&versatile_flash_device);
773 platform_device_register(&versatile_i2c_device);
774 platform_device_register(&smc91x_device);
775 platform_device_register(&char_lcd_device);
776 platform_device_register(&leds_device);
777
778 for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
779 struct amba_device *d = amba_devs[i];
780 amba_device_register(d, &iomem_resource);
781 }
782}
783
784/*
785 * Where is the timer (VA)?
786 */
787#define TIMER0_VA_BASE __io_address(VERSATILE_TIMER0_1_BASE)
788#define TIMER1_VA_BASE (__io_address(VERSATILE_TIMER0_1_BASE) + 0x20)
789#define TIMER2_VA_BASE __io_address(VERSATILE_TIMER2_3_BASE)
790#define TIMER3_VA_BASE (__io_address(VERSATILE_TIMER2_3_BASE) + 0x20)
791
792/*
793 * Set up timer interrupt, and return the current time in seconds.
794 */
795void __init versatile_timer_init(void)
796{
797
798 /*
799 * Initialise to a known state (all timers off)
800 */
801 sp804_timer_disable(TIMER0_VA_BASE);
802 sp804_timer_disable(TIMER1_VA_BASE);
803 sp804_timer_disable(TIMER2_VA_BASE);
804 sp804_timer_disable(TIMER3_VA_BASE);
805
806 sp804_clocksource_init(TIMER3_VA_BASE, "timer3");
807 sp804_clockevents_init(TIMER0_VA_BASE, IRQ_TIMERINT0_1, "timer0");
808}
diff --git a/arch/arm/mach-versatile/core.h b/arch/arm/mach-versatile/core.h
deleted file mode 100644
index f06d5768e428..000000000000
--- a/arch/arm/mach-versatile/core.h
+++ /dev/null
@@ -1,46 +0,0 @@
1/*
2 * linux/arch/arm/mach-versatile/core.h
3 *
4 * Copyright (C) 2004 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#ifndef __ASM_ARCH_VERSATILE_H
23#define __ASM_ARCH_VERSATILE_H
24
25#include <linux/amba/bus.h>
26#include <linux/of_platform.h>
27#include <linux/reboot.h>
28
29extern void __init versatile_init(void);
30extern void __init versatile_init_early(void);
31extern void __init versatile_init_irq(void);
32extern void __init versatile_map_io(void);
33extern void versatile_timer_init(void);
34extern void versatile_restart(enum reboot_mode, const char *);
35extern unsigned int mmc_status(struct device *dev);
36#ifdef CONFIG_OF
37extern struct of_dev_auxdata versatile_auxdata_lookup[];
38#endif
39
40#define APB_DEVICE(name, busid, base, plat) \
41static AMBA_APB_DEVICE(name, busid, 0, VERSATILE_##base##_BASE, base##_IRQ, plat)
42
43#define AHB_DEVICE(name, busid, base, plat) \
44static AMBA_AHB_DEVICE(name, busid, 0, VERSATILE_##base##_BASE, base##_IRQ, plat)
45
46#endif
diff --git a/arch/arm/mach-versatile/include/mach/clkdev.h b/arch/arm/mach-versatile/include/mach/clkdev.h
deleted file mode 100644
index e58d0771b64e..000000000000
--- a/arch/arm/mach-versatile/include/mach/clkdev.h
+++ /dev/null
@@ -1,16 +0,0 @@
1#ifndef __ASM_MACH_CLKDEV_H
2#define __ASM_MACH_CLKDEV_H
3
4#include <plat/clock.h>
5
6struct clk {
7 unsigned long rate;
8 const struct clk_ops *ops;
9 const struct icst_params *params;
10 void __iomem *vcoreg;
11};
12
13#define __clk_get(clk) ({ 1; })
14#define __clk_put(clk) do { } while (0)
15
16#endif
diff --git a/arch/arm/mach-versatile/include/mach/hardware.h b/arch/arm/mach-versatile/include/mach/hardware.h
deleted file mode 100644
index 3e5d425e2a92..000000000000
--- a/arch/arm/mach-versatile/include/mach/hardware.h
+++ /dev/null
@@ -1,38 +0,0 @@
1/*
2 * arch/arm/mach-versatile/include/mach/hardware.h
3 *
4 * This file contains the hardware definitions of the Versatile boards.
5 *
6 * Copyright (C) 2003 ARM Limited.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22#ifndef __ASM_ARCH_HARDWARE_H
23#define __ASM_ARCH_HARDWARE_H
24
25#include <asm/sizes.h>
26
27/*
28 * PCI space virtual addresses
29 */
30#define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul
31#define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul
32
33/* macro to get at MMIO space when running virtually */
34#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
35
36#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
37
38#endif
diff --git a/arch/arm/mach-versatile/include/mach/irqs.h b/arch/arm/mach-versatile/include/mach/irqs.h
deleted file mode 100644
index 0fd771ca617b..000000000000
--- a/arch/arm/mach-versatile/include/mach/irqs.h
+++ /dev/null
@@ -1,134 +0,0 @@
1/*
2 * arch/arm/mach-versatile/include/mach/irqs.h
3 *
4 * Copyright (C) 2003 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#include <mach/platform.h>
23
24/*
25 * IRQ interrupts definitions are the same as the INT definitions
26 * held within platform.h
27 */
28#define IRQ_VIC_START 32
29#define IRQ_WDOGINT (IRQ_VIC_START + INT_WDOGINT)
30#define IRQ_SOFTINT (IRQ_VIC_START + INT_SOFTINT)
31#define IRQ_COMMRx (IRQ_VIC_START + INT_COMMRx)
32#define IRQ_COMMTx (IRQ_VIC_START + INT_COMMTx)
33#define IRQ_TIMERINT0_1 (IRQ_VIC_START + INT_TIMERINT0_1)
34#define IRQ_TIMERINT2_3 (IRQ_VIC_START + INT_TIMERINT2_3)
35#define IRQ_GPIOINT0 (IRQ_VIC_START + INT_GPIOINT0)
36#define IRQ_GPIOINT1 (IRQ_VIC_START + INT_GPIOINT1)
37#define IRQ_GPIOINT2 (IRQ_VIC_START + INT_GPIOINT2)
38#define IRQ_GPIOINT3 (IRQ_VIC_START + INT_GPIOINT3)
39#define IRQ_RTCINT (IRQ_VIC_START + INT_RTCINT)
40#define IRQ_SSPINT (IRQ_VIC_START + INT_SSPINT)
41#define IRQ_UARTINT0 (IRQ_VIC_START + INT_UARTINT0)
42#define IRQ_UARTINT1 (IRQ_VIC_START + INT_UARTINT1)
43#define IRQ_UARTINT2 (IRQ_VIC_START + INT_UARTINT2)
44#define IRQ_SCIINT (IRQ_VIC_START + INT_SCIINT)
45#define IRQ_CLCDINT (IRQ_VIC_START + INT_CLCDINT)
46#define IRQ_DMAINT (IRQ_VIC_START + INT_DMAINT)
47#define IRQ_PWRFAILINT (IRQ_VIC_START + INT_PWRFAILINT)
48#define IRQ_MBXINT (IRQ_VIC_START + INT_MBXINT)
49#define IRQ_GNDINT (IRQ_VIC_START + INT_GNDINT)
50#define IRQ_VICSOURCE21 (IRQ_VIC_START + INT_VICSOURCE21)
51#define IRQ_VICSOURCE22 (IRQ_VIC_START + INT_VICSOURCE22)
52#define IRQ_VICSOURCE23 (IRQ_VIC_START + INT_VICSOURCE23)
53#define IRQ_VICSOURCE24 (IRQ_VIC_START + INT_VICSOURCE24)
54#define IRQ_VICSOURCE25 (IRQ_VIC_START + INT_VICSOURCE25)
55#define IRQ_VICSOURCE26 (IRQ_VIC_START + INT_VICSOURCE26)
56#define IRQ_VICSOURCE27 (IRQ_VIC_START + INT_VICSOURCE27)
57#define IRQ_VICSOURCE28 (IRQ_VIC_START + INT_VICSOURCE28)
58#define IRQ_VICSOURCE29 (IRQ_VIC_START + INT_VICSOURCE29)
59#define IRQ_VICSOURCE30 (IRQ_VIC_START + INT_VICSOURCE30)
60#define IRQ_VICSOURCE31 (IRQ_VIC_START + INT_VICSOURCE31)
61#define IRQ_VIC_END (IRQ_VIC_START + 31)
62
63/*
64 * FIQ interrupts definitions are the same as the INT definitions.
65 */
66#define FIQ_WDOGINT INT_WDOGINT
67#define FIQ_SOFTINT INT_SOFTINT
68#define FIQ_COMMRx INT_COMMRx
69#define FIQ_COMMTx INT_COMMTx
70#define FIQ_TIMERINT0_1 INT_TIMERINT0_1
71#define FIQ_TIMERINT2_3 INT_TIMERINT2_3
72#define FIQ_GPIOINT0 INT_GPIOINT0
73#define FIQ_GPIOINT1 INT_GPIOINT1
74#define FIQ_GPIOINT2 INT_GPIOINT2
75#define FIQ_GPIOINT3 INT_GPIOINT3
76#define FIQ_RTCINT INT_RTCINT
77#define FIQ_SSPINT INT_SSPINT
78#define FIQ_UARTINT0 INT_UARTINT0
79#define FIQ_UARTINT1 INT_UARTINT1
80#define FIQ_UARTINT2 INT_UARTINT2
81#define FIQ_SCIINT INT_SCIINT
82#define FIQ_CLCDINT INT_CLCDINT
83#define FIQ_DMAINT INT_DMAINT
84#define FIQ_PWRFAILINT INT_PWRFAILINT
85#define FIQ_MBXINT INT_MBXINT
86#define FIQ_GNDINT INT_GNDINT
87#define FIQ_VICSOURCE21 INT_VICSOURCE21
88#define FIQ_VICSOURCE22 INT_VICSOURCE22
89#define FIQ_VICSOURCE23 INT_VICSOURCE23
90#define FIQ_VICSOURCE24 INT_VICSOURCE24
91#define FIQ_VICSOURCE25 INT_VICSOURCE25
92#define FIQ_VICSOURCE26 INT_VICSOURCE26
93#define FIQ_VICSOURCE27 INT_VICSOURCE27
94#define FIQ_VICSOURCE28 INT_VICSOURCE28
95#define FIQ_VICSOURCE29 INT_VICSOURCE29
96#define FIQ_VICSOURCE30 INT_VICSOURCE30
97#define FIQ_VICSOURCE31 INT_VICSOURCE31
98
99
100/*
101 * Secondary interrupt controller
102 */
103#define IRQ_SIC_START 64
104#define IRQ_SIC_MMCI0B (IRQ_SIC_START + SIC_INT_MMCI0B)
105#define IRQ_SIC_MMCI1B (IRQ_SIC_START + SIC_INT_MMCI1B)
106#define IRQ_SIC_KMI0 (IRQ_SIC_START + SIC_INT_KMI0)
107#define IRQ_SIC_KMI1 (IRQ_SIC_START + SIC_INT_KMI1)
108#define IRQ_SIC_SCI3 (IRQ_SIC_START + SIC_INT_SCI3)
109#define IRQ_SIC_UART3 (IRQ_SIC_START + SIC_INT_UART3)
110#define IRQ_SIC_CLCD (IRQ_SIC_START + SIC_INT_CLCD)
111#define IRQ_SIC_TOUCH (IRQ_SIC_START + SIC_INT_TOUCH)
112#define IRQ_SIC_KEYPAD (IRQ_SIC_START + SIC_INT_KEYPAD)
113#define IRQ_SIC_DoC (IRQ_SIC_START + SIC_INT_DoC)
114#define IRQ_SIC_MMCI0A (IRQ_SIC_START + SIC_INT_MMCI0A)
115#define IRQ_SIC_MMCI1A (IRQ_SIC_START + SIC_INT_MMCI1A)
116#define IRQ_SIC_AACI (IRQ_SIC_START + SIC_INT_AACI)
117#define IRQ_SIC_ETH (IRQ_SIC_START + SIC_INT_ETH)
118#define IRQ_SIC_USB (IRQ_SIC_START + SIC_INT_USB)
119#define IRQ_SIC_PCI0 (IRQ_SIC_START + SIC_INT_PCI0)
120#define IRQ_SIC_PCI1 (IRQ_SIC_START + SIC_INT_PCI1)
121#define IRQ_SIC_PCI2 (IRQ_SIC_START + SIC_INT_PCI2)
122#define IRQ_SIC_PCI3 (IRQ_SIC_START + SIC_INT_PCI3)
123#define IRQ_SIC_END 95
124
125#define IRQ_GPIO0_START (IRQ_SIC_END + 1)
126#define IRQ_GPIO0_END (IRQ_GPIO0_START + 31)
127#define IRQ_GPIO1_START (IRQ_GPIO0_END + 1)
128#define IRQ_GPIO1_END (IRQ_GPIO1_START + 31)
129#define IRQ_GPIO2_START (IRQ_GPIO1_END + 1)
130#define IRQ_GPIO2_END (IRQ_GPIO2_START + 31)
131#define IRQ_GPIO3_START (IRQ_GPIO2_END + 1)
132#define IRQ_GPIO3_END (IRQ_GPIO3_START + 31)
133
134#define NR_IRQS (IRQ_GPIO3_END + 1)
diff --git a/arch/arm/mach-versatile/include/mach/platform.h b/arch/arm/mach-versatile/include/mach/platform.h
deleted file mode 100644
index 6f938ccb0c54..000000000000
--- a/arch/arm/mach-versatile/include/mach/platform.h
+++ /dev/null
@@ -1,416 +0,0 @@
1/*
2 * arch/arm/mach-versatile/include/mach/platform.h
3 *
4 * Copyright (c) ARM Limited 2003. All rights reserved.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#ifndef __address_h
22#define __address_h 1
23
24/*
25 * Memory definitions
26 */
27#define VERSATILE_BOOT_ROM_LO 0x30000000 /* DoC Base (64Mb)...*/
28#define VERSATILE_BOOT_ROM_HI 0x30000000
29#define VERSATILE_BOOT_ROM_BASE VERSATILE_BOOT_ROM_HI /* Normal position */
30#define VERSATILE_BOOT_ROM_SIZE SZ_64M
31
32#define VERSATILE_SSRAM_BASE /* VERSATILE_SSMC_BASE ? */
33#define VERSATILE_SSRAM_SIZE SZ_2M
34
35#define VERSATILE_FLASH_BASE 0x34000000
36#define VERSATILE_FLASH_SIZE SZ_64M
37
38/*
39 * SDRAM
40 */
41#define VERSATILE_SDRAM_BASE 0x00000000
42
43/*
44 * Logic expansion modules
45 *
46 */
47
48
49/* ------------------------------------------------------------------------
50 * Versatile Registers
51 * ------------------------------------------------------------------------
52 *
53 */
54#define VERSATILE_SYS_ID_OFFSET 0x00
55#define VERSATILE_SYS_SW_OFFSET 0x04
56#define VERSATILE_SYS_LED_OFFSET 0x08
57#define VERSATILE_SYS_OSC0_OFFSET 0x0C
58
59#if defined(CONFIG_ARCH_VERSATILE_PB)
60#define VERSATILE_SYS_OSC1_OFFSET 0x10
61#define VERSATILE_SYS_OSC2_OFFSET 0x14
62#define VERSATILE_SYS_OSC3_OFFSET 0x18
63#define VERSATILE_SYS_OSC4_OFFSET 0x1C
64#elif defined(CONFIG_MACH_VERSATILE_AB)
65#define VERSATILE_SYS_OSC1_OFFSET 0x1C
66#endif
67
68#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
69
70#define VERSATILE_SYS_LOCK_OFFSET 0x20
71#define VERSATILE_SYS_100HZ_OFFSET 0x24
72#define VERSATILE_SYS_CFGDATA1_OFFSET 0x28
73#define VERSATILE_SYS_CFGDATA2_OFFSET 0x2C
74#define VERSATILE_SYS_FLAGS_OFFSET 0x30
75#define VERSATILE_SYS_FLAGSSET_OFFSET 0x30
76#define VERSATILE_SYS_FLAGSCLR_OFFSET 0x34
77#define VERSATILE_SYS_NVFLAGS_OFFSET 0x38
78#define VERSATILE_SYS_NVFLAGSSET_OFFSET 0x38
79#define VERSATILE_SYS_NVFLAGSCLR_OFFSET 0x3C
80#define VERSATILE_SYS_RESETCTL_OFFSET 0x40
81#define VERSATILE_SYS_PCICTL_OFFSET 0x44
82#define VERSATILE_SYS_MCI_OFFSET 0x48
83#define VERSATILE_SYS_FLASH_OFFSET 0x4C
84#define VERSATILE_SYS_CLCD_OFFSET 0x50
85#define VERSATILE_SYS_CLCDSER_OFFSET 0x54
86#define VERSATILE_SYS_BOOTCS_OFFSET 0x58
87#define VERSATILE_SYS_24MHz_OFFSET 0x5C
88#define VERSATILE_SYS_MISC_OFFSET 0x60
89#define VERSATILE_SYS_TEST_OSC0_OFFSET 0x80
90#define VERSATILE_SYS_TEST_OSC1_OFFSET 0x84
91#define VERSATILE_SYS_TEST_OSC2_OFFSET 0x88
92#define VERSATILE_SYS_TEST_OSC3_OFFSET 0x8C
93#define VERSATILE_SYS_TEST_OSC4_OFFSET 0x90
94
95#define VERSATILE_SYS_BASE 0x10000000
96#define VERSATILE_SYS_ID (VERSATILE_SYS_BASE + VERSATILE_SYS_ID_OFFSET)
97#define VERSATILE_SYS_SW (VERSATILE_SYS_BASE + VERSATILE_SYS_SW_OFFSET)
98#define VERSATILE_SYS_LED (VERSATILE_SYS_BASE + VERSATILE_SYS_LED_OFFSET)
99#define VERSATILE_SYS_OSC0 (VERSATILE_SYS_BASE + VERSATILE_SYS_OSC0_OFFSET)
100#define VERSATILE_SYS_OSC1 (VERSATILE_SYS_BASE + VERSATILE_SYS_OSC1_OFFSET)
101
102#if defined(CONFIG_ARCH_VERSATILE_PB)
103#define VERSATILE_SYS_OSC2 (VERSATILE_SYS_BASE + VERSATILE_SYS_OSC2_OFFSET)
104#define VERSATILE_SYS_OSC3 (VERSATILE_SYS_BASE + VERSATILE_SYS_OSC3_OFFSET)
105#define VERSATILE_SYS_OSC4 (VERSATILE_SYS_BASE + VERSATILE_SYS_OSC4_OFFSET)
106#endif
107
108#define VERSATILE_SYS_LOCK (VERSATILE_SYS_BASE + VERSATILE_SYS_LOCK_OFFSET)
109#define VERSATILE_SYS_100HZ (VERSATILE_SYS_BASE + VERSATILE_SYS_100HZ_OFFSET)
110#define VERSATILE_SYS_CFGDATA1 (VERSATILE_SYS_BASE + VERSATILE_SYS_CFGDATA1_OFFSET)
111#define VERSATILE_SYS_CFGDATA2 (VERSATILE_SYS_BASE + VERSATILE_SYS_CFGDATA2_OFFSET)
112#define VERSATILE_SYS_FLAGS (VERSATILE_SYS_BASE + VERSATILE_SYS_FLAGS_OFFSET)
113#define VERSATILE_SYS_FLAGSSET (VERSATILE_SYS_BASE + VERSATILE_SYS_FLAGSSET_OFFSET)
114#define VERSATILE_SYS_FLAGSCLR (VERSATILE_SYS_BASE + VERSATILE_SYS_FLAGSCLR_OFFSET)
115#define VERSATILE_SYS_NVFLAGS (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGS_OFFSET)
116#define VERSATILE_SYS_NVFLAGSSET (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSSET_OFFSET)
117#define VERSATILE_SYS_NVFLAGSCLR (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSCLR_OFFSET)
118#define VERSATILE_SYS_RESETCTL (VERSATILE_SYS_BASE + VERSATILE_SYS_RESETCTL_OFFSET)
119#define VERSATILE_SYS_PCICTL (VERSATILE_SYS_BASE + VERSATILE_SYS_PCICTL_OFFSET)
120#define VERSATILE_SYS_MCI (VERSATILE_SYS_BASE + VERSATILE_SYS_MCI_OFFSET)
121#define VERSATILE_SYS_FLASH (VERSATILE_SYS_BASE + VERSATILE_SYS_FLASH_OFFSET)
122#define VERSATILE_SYS_CLCD (VERSATILE_SYS_BASE + VERSATILE_SYS_CLCD_OFFSET)
123#define VERSATILE_SYS_CLCDSER (VERSATILE_SYS_BASE + VERSATILE_SYS_CLCDSER_OFFSET)
124#define VERSATILE_SYS_BOOTCS (VERSATILE_SYS_BASE + VERSATILE_SYS_BOOTCS_OFFSET)
125#define VERSATILE_SYS_24MHz (VERSATILE_SYS_BASE + VERSATILE_SYS_24MHz_OFFSET)
126#define VERSATILE_SYS_MISC (VERSATILE_SYS_BASE + VERSATILE_SYS_MISC_OFFSET)
127#define VERSATILE_SYS_TEST_OSC0 (VERSATILE_SYS_BASE + VERSATILE_SYS_TEST_OSC0_OFFSET)
128#define VERSATILE_SYS_TEST_OSC1 (VERSATILE_SYS_BASE + VERSATILE_SYS_TEST_OSC1_OFFSET)
129#define VERSATILE_SYS_TEST_OSC2 (VERSATILE_SYS_BASE + VERSATILE_SYS_TEST_OSC2_OFFSET)
130#define VERSATILE_SYS_TEST_OSC3 (VERSATILE_SYS_BASE + VERSATILE_SYS_TEST_OSC3_OFFSET)
131#define VERSATILE_SYS_TEST_OSC4 (VERSATILE_SYS_BASE + VERSATILE_SYS_TEST_OSC4_OFFSET)
132
133/*
134 * Values for VERSATILE_SYS_RESET_CTRL
135 */
136#define VERSATILE_SYS_CTRL_RESET_CONFIGCLR 0x01
137#define VERSATILE_SYS_CTRL_RESET_CONFIGINIT 0x02
138#define VERSATILE_SYS_CTRL_RESET_DLLRESET 0x03
139#define VERSATILE_SYS_CTRL_RESET_PLLRESET 0x04
140#define VERSATILE_SYS_CTRL_RESET_POR 0x05
141#define VERSATILE_SYS_CTRL_RESET_DoC 0x06
142
143#define VERSATILE_SYS_CTRL_LED (1 << 0)
144
145
146/* ------------------------------------------------------------------------
147 * Versatile control registers
148 * ------------------------------------------------------------------------
149 */
150
151/*
152 * VERSATILE_IDFIELD
153 *
154 * 31:24 = manufacturer (0x41 = ARM)
155 * 23:16 = architecture (0x08 = AHB system bus, ASB processor bus)
156 * 15:12 = FPGA (0x3 = XVC600 or XVC600E)
157 * 11:4 = build value
158 * 3:0 = revision number (0x1 = rev B (AHB))
159 */
160
161/*
162 * VERSATILE_SYS_LOCK
163 * control access to SYS_OSCx, SYS_CFGDATAx, SYS_RESETCTL,
164 * SYS_CLD, SYS_BOOTCS
165 */
166#define VERSATILE_SYS_LOCK_LOCKED (1 << 16)
167#define VERSATILE_SYS_LOCKVAL_MASK 0xFFFF /* write 0xA05F to enable write access */
168
169/*
170 * VERSATILE_SYS_FLASH
171 */
172#define VERSATILE_FLASHPROG_FLVPPEN (1 << 0) /* Enable writing to flash */
173
174/*
175 * VERSATILE_INTREG
176 * - used to acknowledge and control MMCI and UART interrupts
177 */
178#define VERSATILE_INTREG_WPROT 0x00 /* MMC protection status (no interrupt generated) */
179#define VERSATILE_INTREG_RI0 0x01 /* Ring indicator UART0 is asserted, */
180#define VERSATILE_INTREG_CARDIN 0x08 /* MMCI card in detect */
181 /* write 1 to acknowledge and clear */
182#define VERSATILE_INTREG_RI1 0x02 /* Ring indicator UART1 is asserted, */
183#define VERSATILE_INTREG_CARDINSERT 0x03 /* Signal insertion of MMC card */
184
185/*
186 * VERSATILE peripheral addresses
187 */
188#define VERSATILE_PCI_CORE_BASE 0x10001000 /* PCI core control */
189#define VERSATILE_I2C_BASE 0x10002000 /* I2C control */
190#define VERSATILE_SIC_BASE 0x10003000 /* Secondary interrupt controller */
191#define VERSATILE_AACI_BASE 0x10004000 /* Audio */
192#define VERSATILE_MMCI0_BASE 0x10005000 /* MMC interface */
193#define VERSATILE_KMI0_BASE 0x10006000 /* KMI interface */
194#define VERSATILE_KMI1_BASE 0x10007000 /* KMI 2nd interface */
195#define VERSATILE_CHAR_LCD_BASE 0x10008000 /* Character LCD */
196#define VERSATILE_UART3_BASE 0x10009000 /* UART 3 */
197#define VERSATILE_SCI1_BASE 0x1000A000
198#define VERSATILE_MMCI1_BASE 0x1000B000 /* MMC Interface */
199 /* 0x1000C000 - 0x1000CFFF = reserved */
200#define VERSATILE_ETH_BASE 0x10010000 /* Ethernet */
201#define VERSATILE_USB_BASE 0x10020000 /* USB */
202 /* 0x10030000 - 0x100FFFFF = reserved */
203#define VERSATILE_SMC_BASE 0x10100000 /* SMC */
204#define VERSATILE_MPMC_BASE 0x10110000 /* MPMC */
205#define VERSATILE_CLCD_BASE 0x10120000 /* CLCD */
206#define VERSATILE_DMAC_BASE 0x10130000 /* DMA controller */
207#define VERSATILE_VIC_BASE 0x10140000 /* Vectored interrupt controller */
208#define VERSATILE_PERIPH_BASE 0x10150000 /* off-chip peripherals alias from */
209 /* 0x10000000 - 0x100FFFFF */
210#define VERSATILE_AHBM_BASE 0x101D0000 /* AHB monitor */
211#define VERSATILE_SCTL_BASE 0x101E0000 /* System controller */
212#define VERSATILE_WATCHDOG_BASE 0x101E1000 /* Watchdog */
213#define VERSATILE_TIMER0_1_BASE 0x101E2000 /* Timer 0 and 1 */
214#define VERSATILE_TIMER2_3_BASE 0x101E3000 /* Timer 2 and 3 */
215#define VERSATILE_GPIO0_BASE 0x101E4000 /* GPIO port 0 */
216#define VERSATILE_GPIO1_BASE 0x101E5000 /* GPIO port 1 */
217#define VERSATILE_GPIO2_BASE 0x101E6000 /* GPIO port 2 */
218#define VERSATILE_GPIO3_BASE 0x101E7000 /* GPIO port 3 */
219#define VERSATILE_RTC_BASE 0x101E8000 /* Real Time Clock */
220 /* 0x101E9000 - reserved */
221#define VERSATILE_SCI_BASE 0x101F0000 /* Smart card controller */
222#define VERSATILE_UART0_BASE 0x101F1000 /* Uart 0 */
223#define VERSATILE_UART1_BASE 0x101F2000 /* Uart 1 */
224#define VERSATILE_UART2_BASE 0x101F3000 /* Uart 2 */
225#define VERSATILE_SSP_BASE 0x101F4000 /* Synchronous Serial Port */
226
227#define VERSATILE_SSMC_BASE 0x20000000 /* SSMC */
228#define VERSATILE_IB2_BASE 0x24000000 /* IB2 module */
229#define VERSATILE_MBX_BASE 0x40000000 /* MBX */
230
231/* PCI space */
232#define VERSATILE_PCI_BASE 0x41000000 /* PCI Interface */
233#define VERSATILE_PCI_CFG_BASE 0x42000000
234#define VERSATILE_PCI_IO_BASE 0x43000000
235#define VERSATILE_PCI_MEM_BASE0 0x44000000
236#define VERSATILE_PCI_MEM_BASE1 0x50000000
237#define VERSATILE_PCI_MEM_BASE2 0x60000000
238/* Sizes of above maps */
239#define VERSATILE_PCI_BASE_SIZE 0x01000000
240#define VERSATILE_PCI_CFG_BASE_SIZE 0x02000000
241#define VERSATILE_PCI_IO_BASE_SIZE 0x01000000
242#define VERSATILE_PCI_MEM_BASE0_SIZE 0x0c000000 /* 32Mb */
243#define VERSATILE_PCI_MEM_BASE1_SIZE 0x10000000 /* 256Mb */
244#define VERSATILE_PCI_MEM_BASE2_SIZE 0x10000000 /* 256Mb */
245
246#define VERSATILE_SDRAM67_BASE 0x70000000 /* SDRAM banks 6 and 7 */
247#define VERSATILE_LT_BASE 0x80000000 /* Logic Tile expansion */
248
249/*
250 * Disk on Chip
251 */
252#define VERSATILE_DOC_BASE 0x2C000000
253#define VERSATILE_DOC_SIZE (16 << 20)
254#define VERSATILE_DOC_PAGE_SIZE 512
255#define VERSATILE_DOC_TOTAL_PAGES (DOC_SIZE / PAGE_SIZE)
256
257#define ERASE_UNIT_PAGES 32
258#define START_PAGE 0x80
259
260/*
261 * LED settings, bits [7:0]
262 */
263#define VERSATILE_SYS_LED0 (1 << 0)
264#define VERSATILE_SYS_LED1 (1 << 1)
265#define VERSATILE_SYS_LED2 (1 << 2)
266#define VERSATILE_SYS_LED3 (1 << 3)
267#define VERSATILE_SYS_LED4 (1 << 4)
268#define VERSATILE_SYS_LED5 (1 << 5)
269#define VERSATILE_SYS_LED6 (1 << 6)
270#define VERSATILE_SYS_LED7 (1 << 7)
271
272#define ALL_LEDS 0xFF
273
274#define LED_BANK VERSATILE_SYS_LED
275
276/*
277 * Control registers
278 */
279#define VERSATILE_IDFIELD_OFFSET 0x0 /* Versatile build information */
280#define VERSATILE_FLASHPROG_OFFSET 0x4 /* Flash devices */
281#define VERSATILE_INTREG_OFFSET 0x8 /* Interrupt control */
282#define VERSATILE_DECODE_OFFSET 0xC /* Fitted logic modules */
283
284
285/* ------------------------------------------------------------------------
286 * Versatile Interrupt Controller - control registers
287 * ------------------------------------------------------------------------
288 *
289 * Offsets from interrupt controller base
290 *
291 * System Controller interrupt controller base is
292 *
293 * VERSATILE_IC_BASE
294 *
295 * Core Module interrupt controller base is
296 *
297 * VERSATILE_SYS_IC
298 *
299 */
300/* VIC definitions in include/asm-arm/hardware/vic.h */
301
302#define SIC_IRQ_STATUS 0
303#define SIC_IRQ_RAW_STATUS 0x04
304#define SIC_IRQ_ENABLE 0x08
305#define SIC_IRQ_ENABLE_SET 0x08
306#define SIC_IRQ_ENABLE_CLEAR 0x0C
307#define SIC_INT_SOFT_SET 0x10
308#define SIC_INT_SOFT_CLEAR 0x14
309#define SIC_INT_PIC_ENABLE 0x20 /* read status of pass through mask */
310#define SIC_INT_PIC_ENABLES 0x20 /* set interrupt pass through bits */
311#define SIC_INT_PIC_ENABLEC 0x24 /* Clear interrupt pass through bits */
312
313/* ------------------------------------------------------------------------
314 * Interrupts - bit assignment (primary)
315 * ------------------------------------------------------------------------
316 */
317
318#define INT_WDOGINT 0 /* Watchdog timer */
319#define INT_SOFTINT 1 /* Software interrupt */
320#define INT_COMMRx 2 /* Debug Comm Rx interrupt */
321#define INT_COMMTx 3 /* Debug Comm Tx interrupt */
322#define INT_TIMERINT0_1 4 /* Timer 0 and 1 */
323#define INT_TIMERINT2_3 5 /* Timer 2 and 3 */
324#define INT_GPIOINT0 6 /* GPIO 0 */
325#define INT_GPIOINT1 7 /* GPIO 1 */
326#define INT_GPIOINT2 8 /* GPIO 2 */
327#define INT_GPIOINT3 9 /* GPIO 3 */
328#define INT_RTCINT 10 /* Real Time Clock */
329#define INT_SSPINT 11 /* Synchronous Serial Port */
330#define INT_UARTINT0 12 /* UART 0 on development chip */
331#define INT_UARTINT1 13 /* UART 1 on development chip */
332#define INT_UARTINT2 14 /* UART 2 on development chip */
333#define INT_SCIINT 15 /* Smart Card Interface */
334#define INT_CLCDINT 16 /* CLCD controller */
335#define INT_DMAINT 17 /* DMA controller */
336#define INT_PWRFAILINT 18 /* Power failure */
337#define INT_MBXINT 19 /* Graphics processor */
338#define INT_GNDINT 20 /* Reserved */
339 /* External interrupt signals from logic tiles or secondary controller */
340#define INT_VICSOURCE21 21 /* Disk on Chip */
341#define INT_VICSOURCE22 22 /* MCI0A */
342#define INT_VICSOURCE23 23 /* MCI1A */
343#define INT_VICSOURCE24 24 /* AACI */
344#define INT_VICSOURCE25 25 /* Ethernet */
345#define INT_VICSOURCE26 26 /* USB */
346#define INT_VICSOURCE27 27 /* PCI 0 */
347#define INT_VICSOURCE28 28 /* PCI 1 */
348#define INT_VICSOURCE29 29 /* PCI 2 */
349#define INT_VICSOURCE30 30 /* PCI 3 */
350#define INT_VICSOURCE31 31 /* SIC source */
351
352#define VERSATILE_SC_VALID_INT 0x003FFFFF
353
354#define MAXIRQNUM 31
355#define MAXFIQNUM 31
356#define MAXSWINUM 31
357
358/* ------------------------------------------------------------------------
359 * Interrupts - bit assignment (secondary)
360 * ------------------------------------------------------------------------
361 */
362#define SIC_INT_MMCI0B 1 /* Multimedia Card 0B */
363#define SIC_INT_MMCI1B 2 /* Multimedia Card 1B */
364#define SIC_INT_KMI0 3 /* Keyboard/Mouse port 0 */
365#define SIC_INT_KMI1 4 /* Keyboard/Mouse port 1 */
366#define SIC_INT_SCI3 5 /* Smart Card interface */
367#define SIC_INT_UART3 6 /* UART 3 empty or data available */
368#define SIC_INT_CLCD 7 /* Character LCD */
369#define SIC_INT_TOUCH 8 /* Touchscreen */
370#define SIC_INT_KEYPAD 9 /* Key pressed on display keypad */
371 /* 10:20 - reserved */
372#define SIC_INT_DoC 21 /* Disk on Chip memory controller */
373#define SIC_INT_MMCI0A 22 /* MMC 0A */
374#define SIC_INT_MMCI1A 23 /* MMC 1A */
375#define SIC_INT_AACI 24 /* Audio Codec */
376#define SIC_INT_ETH 25 /* Ethernet controller */
377#define SIC_INT_USB 26 /* USB controller */
378#define SIC_INT_PCI0 27
379#define SIC_INT_PCI1 28
380#define SIC_INT_PCI2 29
381#define SIC_INT_PCI3 30
382
383
384/*
385 * System controller bit assignment
386 */
387#define VERSATILE_REFCLK 0
388#define VERSATILE_TIMCLK 1
389
390#define VERSATILE_TIMER1_EnSel 15
391#define VERSATILE_TIMER2_EnSel 17
392#define VERSATILE_TIMER3_EnSel 19
393#define VERSATILE_TIMER4_EnSel 21
394
395
396#define VERSATILE_CSR_BASE 0x10000000
397#define VERSATILE_CSR_SIZE 0x10000000
398
399#ifdef CONFIG_MACH_VERSATILE_AB
400/*
401 * IB2 Versatile/AB expansion board definitions
402 */
403#define VERSATILE_IB2_CAMERA_BANK VERSATILE_IB2_BASE
404#define VERSATILE_IB2_KBD_DATAREG (VERSATILE_IB2_BASE + 0x01000000)
405
406/* VICINTSOURCE27 */
407#define VERSATILE_IB2_INT_BASE (VERSATILE_IB2_BASE + 0x02000000)
408#define VERSATILE_IB2_IER (VERSATILE_IB2_INT_BASE + 0)
409#define VERSATILE_IB2_ISR (VERSATILE_IB2_INT_BASE + 4)
410
411#define VERSATILE_IB2_CTL_BASE (VERSATILE_IB2_BASE + 0x03000000)
412#define VERSATILE_IB2_CTRL (VERSATILE_IB2_CTL_BASE + 0)
413#define VERSATILE_IB2_STAT (VERSATILE_IB2_CTL_BASE + 4)
414#endif
415
416#endif
diff --git a/arch/arm/mach-versatile/include/mach/uncompress.h b/arch/arm/mach-versatile/include/mach/uncompress.h
deleted file mode 100644
index 986e3d303f3c..000000000000
--- a/arch/arm/mach-versatile/include/mach/uncompress.h
+++ /dev/null
@@ -1,45 +0,0 @@
1/*
2 * arch/arm/mach-versatile/include/mach/uncompress.h
3 *
4 * Copyright (C) 2003 ARM Limited
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#define AMBA_UART_DR (*(volatile unsigned char *)0x101F1000)
21#define AMBA_UART_LCRH (*(volatile unsigned char *)0x101F102C)
22#define AMBA_UART_CR (*(volatile unsigned char *)0x101F1030)
23#define AMBA_UART_FR (*(volatile unsigned char *)0x101F1018)
24
25/*
26 * This does not append a newline
27 */
28static inline void putc(int c)
29{
30 while (AMBA_UART_FR & (1 << 5))
31 barrier();
32
33 AMBA_UART_DR = c;
34}
35
36static inline void flush(void)
37{
38 while (AMBA_UART_FR & (1 << 3))
39 barrier();
40}
41
42/*
43 * nothing to do
44 */
45#define arch_decomp_setup()
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c
deleted file mode 100644
index c97be4ea76d2..000000000000
--- a/arch/arm/mach-versatile/pci.c
+++ /dev/null
@@ -1,368 +0,0 @@
1/*
2 * linux/arch/arm/mach-versatile/pci.c
3 *
4 * (C) Copyright Koninklijke Philips Electronics NV 2004. All rights reserved.
5 * You can redistribute and/or modify this software under the terms of version 2
6 * of the GNU General Public License as published by the Free Software Foundation.
7 * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED
8 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 * General Public License for more details.
10 * Koninklijke Philips Electronics nor its subsidiaries is obligated to provide any support for this software.
11 *
12 * ARM Versatile PCI driver.
13 *
14 * 14/04/2005 Initial version, colin.king@philips.com
15 *
16 */
17#include <linux/kernel.h>
18#include <linux/pci.h>
19#include <linux/ioport.h>
20#include <linux/interrupt.h>
21#include <linux/spinlock.h>
22#include <linux/init.h>
23#include <linux/io.h>
24
25#include <mach/hardware.h>
26#include <mach/irqs.h>
27#include <asm/irq.h>
28#include <asm/mach/pci.h>
29
30/*
31 * these spaces are mapped using the following base registers:
32 *
33 * Usage Local Bus Memory Base/Map registers used
34 *
35 * Mem 50000000 - 5FFFFFFF LB_BASE0/LB_MAP0, non prefetch
36 * Mem 60000000 - 6FFFFFFF LB_BASE1/LB_MAP1, prefetch
37 * IO 44000000 - 4FFFFFFF LB_BASE2/LB_MAP2, IO
38 * Cfg 42000000 - 42FFFFFF PCI config
39 *
40 */
41#define __IO_ADDRESS(n) ((void __iomem *)(unsigned long)IO_ADDRESS(n))
42#define SYS_PCICTL __IO_ADDRESS(VERSATILE_SYS_PCICTL)
43#define PCI_IMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0)
44#define PCI_IMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4)
45#define PCI_IMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8)
46#define PCI_SMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14)
47#define PCI_SMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18)
48#define PCI_SMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x1c)
49#define PCI_SELFID __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc)
50
51#define DEVICE_ID_OFFSET 0x00
52#define CSR_OFFSET 0x04
53#define CLASS_ID_OFFSET 0x08
54
55#define VP_PCI_DEVICE_ID 0x030010ee
56#define VP_PCI_CLASS_ID 0x0b400000
57
58static unsigned long pci_slot_ignore = 0;
59
60static int __init versatile_pci_slot_ignore(char *str)
61{
62 int retval;
63 int slot;
64
65 while ((retval = get_option(&str,&slot))) {
66 if ((slot < 0) || (slot > 31)) {
67 printk("Illegal slot value: %d\n",slot);
68 } else {
69 pci_slot_ignore |= (1 << slot);
70 }
71 }
72 return 1;
73}
74
75__setup("pci_slot_ignore=", versatile_pci_slot_ignore);
76
77
78static void __iomem *__pci_addr(struct pci_bus *bus,
79 unsigned int devfn, int offset)
80{
81 unsigned int busnr = bus->number;
82
83 /*
84 * Trap out illegal values
85 */
86 if (offset > 255)
87 BUG();
88 if (busnr > 255)
89 BUG();
90 if (devfn > 255)
91 BUG();
92
93 return VERSATILE_PCI_CFG_VIRT_BASE + ((busnr << 16) |
94 (PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset);
95}
96
97static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where,
98 int size, u32 *val)
99{
100 void __iomem *addr = __pci_addr(bus, devfn, where & ~3);
101 u32 v;
102 int slot = PCI_SLOT(devfn);
103
104 if (pci_slot_ignore & (1 << slot)) {
105 /* Ignore this slot */
106 switch (size) {
107 case 1:
108 v = 0xff;
109 break;
110 case 2:
111 v = 0xffff;
112 break;
113 default:
114 v = 0xffffffff;
115 }
116 } else {
117 switch (size) {
118 case 1:
119 v = __raw_readl(addr);
120 if (where & 2) v >>= 16;
121 if (where & 1) v >>= 8;
122 v &= 0xff;
123 break;
124
125 case 2:
126 v = __raw_readl(addr);
127 if (where & 2) v >>= 16;
128 v &= 0xffff;
129 break;
130
131 default:
132 v = __raw_readl(addr);
133 break;
134 }
135 }
136
137 *val = v;
138 return PCIBIOS_SUCCESSFUL;
139}
140
141static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where,
142 int size, u32 val)
143{
144 void __iomem *addr = __pci_addr(bus, devfn, where);
145 int slot = PCI_SLOT(devfn);
146
147 if (pci_slot_ignore & (1 << slot)) {
148 return PCIBIOS_SUCCESSFUL;
149 }
150
151 switch (size) {
152 case 1:
153 __raw_writeb((u8)val, addr);
154 break;
155
156 case 2:
157 __raw_writew((u16)val, addr);
158 break;
159
160 case 4:
161 __raw_writel(val, addr);
162 break;
163 }
164
165 return PCIBIOS_SUCCESSFUL;
166}
167
168static struct pci_ops pci_versatile_ops = {
169 .read = versatile_read_config,
170 .write = versatile_write_config,
171};
172
173static struct resource unused_mem = {
174 .name = "PCI unused",
175 .start = VERSATILE_PCI_MEM_BASE0,
176 .end = VERSATILE_PCI_MEM_BASE0+VERSATILE_PCI_MEM_BASE0_SIZE-1,
177 .flags = IORESOURCE_MEM,
178};
179
180static struct resource non_mem = {
181 .name = "PCI non-prefetchable",
182 .start = VERSATILE_PCI_MEM_BASE1,
183 .end = VERSATILE_PCI_MEM_BASE1+VERSATILE_PCI_MEM_BASE1_SIZE-1,
184 .flags = IORESOURCE_MEM,
185};
186
187static struct resource pre_mem = {
188 .name = "PCI prefetchable",
189 .start = VERSATILE_PCI_MEM_BASE2,
190 .end = VERSATILE_PCI_MEM_BASE2+VERSATILE_PCI_MEM_BASE2_SIZE-1,
191 .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH,
192};
193
194static int __init pci_versatile_setup_resources(struct pci_sys_data *sys)
195{
196 int ret = 0;
197
198 ret = request_resource(&iomem_resource, &unused_mem);
199 if (ret) {
200 printk(KERN_ERR "PCI: unable to allocate unused "
201 "memory region (%d)\n", ret);
202 goto out;
203 }
204 ret = request_resource(&iomem_resource, &non_mem);
205 if (ret) {
206 printk(KERN_ERR "PCI: unable to allocate non-prefetchable "
207 "memory region (%d)\n", ret);
208 goto release_unused_mem;
209 }
210 ret = request_resource(&iomem_resource, &pre_mem);
211 if (ret) {
212 printk(KERN_ERR "PCI: unable to allocate prefetchable "
213 "memory region (%d)\n", ret);
214 goto release_non_mem;
215 }
216
217 /*
218 * the mem resource for this bus
219 * the prefetch mem resource for this bus
220 */
221 pci_add_resource_offset(&sys->resources, &non_mem, sys->mem_offset);
222 pci_add_resource_offset(&sys->resources, &pre_mem, sys->mem_offset);
223
224 goto out;
225
226 release_non_mem:
227 release_resource(&non_mem);
228 release_unused_mem:
229 release_resource(&unused_mem);
230 out:
231 return ret;
232}
233
234int __init pci_versatile_setup(int nr, struct pci_sys_data *sys)
235{
236 int ret = 0;
237 int i;
238 int myslot = -1;
239 unsigned long val;
240 void __iomem *local_pci_cfg_base;
241
242 val = __raw_readl(SYS_PCICTL);
243 if (!(val & 1)) {
244 printk("Not plugged into PCI backplane!\n");
245 ret = -EIO;
246 goto out;
247 }
248
249 ret = pci_ioremap_io(0, VERSATILE_PCI_IO_BASE);
250 if (ret)
251 goto out;
252
253 if (nr == 0) {
254 ret = pci_versatile_setup_resources(sys);
255 if (ret < 0) {
256 printk("pci_versatile_setup: resources... oops?\n");
257 goto out;
258 }
259 } else {
260 printk("pci_versatile_setup: resources... nr == 0??\n");
261 goto out;
262 }
263
264 /*
265 * We need to discover the PCI core first to configure itself
266 * before the main PCI probing is performed
267 */
268 for (i=0; i<32; i++)
269 if ((__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+DEVICE_ID_OFFSET) == VP_PCI_DEVICE_ID) &&
270 (__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+CLASS_ID_OFFSET) == VP_PCI_CLASS_ID)) {
271 myslot = i;
272 break;
273 }
274
275 if (myslot == -1) {
276 printk("Cannot find PCI core!\n");
277 ret = -EIO;
278 goto out;
279 }
280
281 printk("PCI core found (slot %d)\n",myslot);
282
283 __raw_writel(myslot, PCI_SELFID);
284 local_pci_cfg_base = VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11);
285
286 val = __raw_readl(local_pci_cfg_base + CSR_OFFSET);
287 val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE;
288 __raw_writel(val, local_pci_cfg_base + CSR_OFFSET);
289
290 /*
291 * Configure the PCI inbound memory windows to be 1:1 mapped to SDRAM
292 */
293 __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_0);
294 __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_1);
295 __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_2);
296
297 /*
298 * For many years the kernel and QEMU were symbiotically buggy
299 * in that they both assumed the same broken IRQ mapping.
300 * QEMU therefore attempts to auto-detect old broken kernels
301 * so that they still work on newer QEMU as they did on old
302 * QEMU. Since we now use the correct (ie matching-hardware)
303 * IRQ mapping we write a definitely different value to a
304 * PCI_INTERRUPT_LINE register to tell QEMU that we expect
305 * real hardware behaviour and it need not be backwards
306 * compatible for us. This write is harmless on real hardware.
307 */
308 __raw_writel(0, VERSATILE_PCI_VIRT_BASE+PCI_INTERRUPT_LINE);
309
310 /*
311 * Do not to map Versatile FPGA PCI device into memory space
312 */
313 pci_slot_ignore |= (1 << myslot);
314 ret = 1;
315
316 out:
317 return ret;
318}
319
320
321void __init pci_versatile_preinit(void)
322{
323 pcibios_min_mem = 0x50000000;
324
325 __raw_writel(VERSATILE_PCI_MEM_BASE0 >> 28, PCI_IMAP0);
326 __raw_writel(VERSATILE_PCI_MEM_BASE1 >> 28, PCI_IMAP1);
327 __raw_writel(VERSATILE_PCI_MEM_BASE2 >> 28, PCI_IMAP2);
328
329 __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP0);
330 __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP1);
331 __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP2);
332
333 __raw_writel(1, SYS_PCICTL);
334}
335
336/*
337 * map the specified device/slot/pin to an IRQ. Different backplanes may need to modify this.
338 */
339static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
340{
341 int irq;
342
343 /*
344 * Slot INTA INTB INTC INTD
345 * 31 PCI1 PCI2 PCI3 PCI0
346 * 30 PCI0 PCI1 PCI2 PCI3
347 * 29 PCI3 PCI0 PCI1 PCI2
348 */
349 irq = IRQ_SIC_PCI0 + ((slot + 2 + pin - 1) & 3);
350
351 return irq;
352}
353
354static struct hw_pci versatile_pci __initdata = {
355 .map_irq = versatile_map_irq,
356 .nr_controllers = 1,
357 .ops = &pci_versatile_ops,
358 .setup = pci_versatile_setup,
359 .preinit = pci_versatile_preinit,
360};
361
362static int __init versatile_pci_init(void)
363{
364 pci_common_init(&versatile_pci);
365 return 0;
366}
367
368subsys_initcall(versatile_pci_init);
diff --git a/arch/arm/mach-versatile/versatile_ab.c b/arch/arm/mach-versatile/versatile_ab.c
deleted file mode 100644
index 1caef1093793..000000000000
--- a/arch/arm/mach-versatile/versatile_ab.c
+++ /dev/null
@@ -1,44 +0,0 @@
1/*
2 * linux/arch/arm/mach-versatile/versatile_ab.c
3 *
4 * Copyright (C) 2004 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#include <linux/init.h>
23#include <linux/device.h>
24#include <linux/amba/bus.h>
25#include <linux/io.h>
26
27#include <mach/hardware.h>
28#include <asm/irq.h>
29#include <asm/mach-types.h>
30
31#include <asm/mach/arch.h>
32
33#include "core.h"
34
35MACHINE_START(VERSATILE_AB, "ARM-Versatile AB")
36 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
37 .atag_offset = 0x100,
38 .map_io = versatile_map_io,
39 .init_early = versatile_init_early,
40 .init_irq = versatile_init_irq,
41 .init_time = versatile_timer_init,
42 .init_machine = versatile_init,
43 .restart = versatile_restart,
44MACHINE_END
diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c
index 7de3e92a13b0..c44871851255 100644
--- a/arch/arm/mach-versatile/versatile_dt.c
+++ b/arch/arm/mach-versatile/versatile_dt.c
@@ -22,15 +22,389 @@
22 */ 22 */
23 23
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/io.h>
26#include <linux/of.h>
27#include <linux/of_address.h>
25#include <linux/of_irq.h> 28#include <linux/of_irq.h>
26#include <linux/of_platform.h> 29#include <linux/of_platform.h>
30#include <linux/slab.h>
31#include <linux/amba/bus.h>
32#include <linux/amba/clcd.h>
33#include <linux/platform_data/video-clcd-versatile.h>
34#include <linux/amba/mmci.h>
35#include <linux/mtd/physmap.h>
27#include <asm/mach-types.h> 36#include <asm/mach-types.h>
28#include <asm/mach/arch.h> 37#include <asm/mach/arch.h>
38#include <asm/mach/map.h>
29 39
30#include "core.h" 40/* macro to get at MMIO space when running virtually */
41#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
42#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
43
44/*
45 * Memory definitions
46 */
47#define VERSATILE_FLASH_BASE 0x34000000
48#define VERSATILE_FLASH_SIZE SZ_64M
49
50/*
51 * ------------------------------------------------------------------------
52 * Versatile Registers
53 * ------------------------------------------------------------------------
54 */
55#define VERSATILE_SYS_LOCK_OFFSET 0x20
56#define VERSATILE_SYS_RESETCTL_OFFSET 0x40
57#define VERSATILE_SYS_PCICTL_OFFSET 0x44
58#define VERSATILE_SYS_MCI_OFFSET 0x48
59#define VERSATILE_SYS_FLASH_OFFSET 0x4C
60#define VERSATILE_SYS_CLCD_OFFSET 0x50
61
62/*
63 * VERSATILE_SYS_FLASH
64 */
65#define VERSATILE_FLASHPROG_FLVPPEN (1 << 0) /* Enable writing to flash */
66
67/*
68 * VERSATILE peripheral addresses
69 */
70#define VERSATILE_MMCI0_BASE 0x10005000 /* MMC interface */
71#define VERSATILE_MMCI1_BASE 0x1000B000 /* MMC Interface */
72#define VERSATILE_CLCD_BASE 0x10120000 /* CLCD */
73#define VERSATILE_SCTL_BASE 0x101E0000 /* System controller */
74#define VERSATILE_IB2_BASE 0x24000000 /* IB2 module */
75#define VERSATILE_IB2_CTL_BASE (VERSATILE_IB2_BASE + 0x03000000)
76
77/*
78 * System controller bit assignment
79 */
80#define VERSATILE_REFCLK 0
81#define VERSATILE_TIMCLK 1
82
83#define VERSATILE_TIMER1_EnSel 15
84#define VERSATILE_TIMER2_EnSel 17
85#define VERSATILE_TIMER3_EnSel 19
86#define VERSATILE_TIMER4_EnSel 21
87
88static void __iomem *versatile_sys_base;
89static void __iomem *versatile_ib2_ctrl;
90
91static void versatile_flash_set_vpp(struct platform_device *pdev, int on)
92{
93 u32 val;
94
95 val = readl(versatile_sys_base + VERSATILE_SYS_FLASH_OFFSET);
96 if (on)
97 val |= VERSATILE_FLASHPROG_FLVPPEN;
98 else
99 val &= ~VERSATILE_FLASHPROG_FLVPPEN;
100 writel(val, versatile_sys_base + VERSATILE_SYS_FLASH_OFFSET);
101}
102
103static struct physmap_flash_data versatile_flash_data = {
104 .width = 4,
105 .set_vpp = versatile_flash_set_vpp,
106};
107
108static struct resource versatile_flash_resource = {
109 .start = VERSATILE_FLASH_BASE,
110 .end = VERSATILE_FLASH_BASE + VERSATILE_FLASH_SIZE - 1,
111 .flags = IORESOURCE_MEM,
112};
113
114struct platform_device versatile_flash_device = {
115 .name = "physmap-flash",
116 .id = 0,
117 .dev = {
118 .platform_data = &versatile_flash_data,
119 },
120 .num_resources = 1,
121 .resource = &versatile_flash_resource,
122};
123
124unsigned int mmc_status(struct device *dev)
125{
126 struct amba_device *adev = container_of(dev, struct amba_device, dev);
127 u32 mask;
128
129 if (adev->res.start == VERSATILE_MMCI0_BASE)
130 mask = 1;
131 else
132 mask = 2;
133
134 return readl(versatile_sys_base + VERSATILE_SYS_MCI_OFFSET) & mask;
135}
136
137static struct mmci_platform_data mmc0_plat_data = {
138 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
139 .status = mmc_status,
140 .gpio_wp = -1,
141 .gpio_cd = -1,
142};
143
144static struct mmci_platform_data mmc1_plat_data = {
145 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
146 .status = mmc_status,
147 .gpio_wp = -1,
148 .gpio_cd = -1,
149};
150
151/*
152 * CLCD support.
153 */
154#define SYS_CLCD_MODE_MASK (3 << 0)
155#define SYS_CLCD_MODE_888 (0 << 0)
156#define SYS_CLCD_MODE_5551 (1 << 0)
157#define SYS_CLCD_MODE_565_RLSB (2 << 0)
158#define SYS_CLCD_MODE_565_BLSB (3 << 0)
159#define SYS_CLCD_NLCDIOON (1 << 2)
160#define SYS_CLCD_VDDPOSSWITCH (1 << 3)
161#define SYS_CLCD_PWR3V5SWITCH (1 << 4)
162#define SYS_CLCD_ID_MASK (0x1f << 8)
163#define SYS_CLCD_ID_SANYO_3_8 (0x00 << 8)
164#define SYS_CLCD_ID_UNKNOWN_8_4 (0x01 << 8)
165#define SYS_CLCD_ID_EPSON_2_2 (0x02 << 8)
166#define SYS_CLCD_ID_SANYO_2_5 (0x07 << 8)
167#define SYS_CLCD_ID_VGA (0x1f << 8)
168
169static bool is_sanyo_2_5_lcd;
170
171/*
172 * Disable all display connectors on the interface module.
173 */
174static void versatile_clcd_disable(struct clcd_fb *fb)
175{
176 void __iomem *sys_clcd = versatile_sys_base + VERSATILE_SYS_CLCD_OFFSET;
177 u32 val;
178
179 val = readl(sys_clcd);
180 val &= ~SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH;
181 writel(val, sys_clcd);
182
183 /*
184 * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off
185 */
186 if (of_machine_is_compatible("arm,versatile-ab") && is_sanyo_2_5_lcd) {
187 unsigned long ctrl;
188
189 ctrl = readl(versatile_ib2_ctrl);
190 ctrl &= ~0x01;
191 writel(ctrl, versatile_ib2_ctrl);
192 }
193}
194
195/*
196 * Enable the relevant connector on the interface module.
197 */
198static void versatile_clcd_enable(struct clcd_fb *fb)
199{
200 struct fb_var_screeninfo *var = &fb->fb.var;
201 void __iomem *sys_clcd = versatile_sys_base + VERSATILE_SYS_CLCD_OFFSET;
202 u32 val;
203
204 val = readl(sys_clcd);
205 val &= ~SYS_CLCD_MODE_MASK;
206
207 switch (var->green.length) {
208 case 5:
209 val |= SYS_CLCD_MODE_5551;
210 break;
211 case 6:
212 if (var->red.offset == 0)
213 val |= SYS_CLCD_MODE_565_RLSB;
214 else
215 val |= SYS_CLCD_MODE_565_BLSB;
216 break;
217 case 8:
218 val |= SYS_CLCD_MODE_888;
219 break;
220 }
221
222 /*
223 * Set the MUX
224 */
225 writel(val, sys_clcd);
226
227 /*
228 * And now enable the PSUs
229 */
230 val |= SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH;
231 writel(val, sys_clcd);
232
233 /*
234 * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on
235 */
236 if (of_machine_is_compatible("arm,versatile-ab") && is_sanyo_2_5_lcd) {
237 unsigned long ctrl;
238
239 ctrl = readl(versatile_ib2_ctrl);
240 ctrl |= 0x01;
241 writel(ctrl, versatile_ib2_ctrl);
242 }
243}
244
245/*
246 * Detect which LCD panel is connected, and return the appropriate
247 * clcd_panel structure. Note: we do not have any information on
248 * the required timings for the 8.4in panel, so we presently assume
249 * VGA timings.
250 */
251static int versatile_clcd_setup(struct clcd_fb *fb)
252{
253 void __iomem *sys_clcd = versatile_sys_base + VERSATILE_SYS_CLCD_OFFSET;
254 const char *panel_name;
255 u32 val;
256
257 is_sanyo_2_5_lcd = false;
258
259 val = readl(sys_clcd) & SYS_CLCD_ID_MASK;
260 if (val == SYS_CLCD_ID_SANYO_3_8)
261 panel_name = "Sanyo TM38QV67A02A";
262 else if (val == SYS_CLCD_ID_SANYO_2_5) {
263 panel_name = "Sanyo QVGA Portrait";
264 is_sanyo_2_5_lcd = true;
265 } else if (val == SYS_CLCD_ID_EPSON_2_2)
266 panel_name = "Epson L2F50113T00";
267 else if (val == SYS_CLCD_ID_VGA)
268 panel_name = "VGA";
269 else {
270 printk(KERN_ERR "CLCD: unknown LCD panel ID 0x%08x, using VGA\n",
271 val);
272 panel_name = "VGA";
273 }
274
275 fb->panel = versatile_clcd_get_panel(panel_name);
276 if (!fb->panel)
277 return -EINVAL;
278
279 return versatile_clcd_setup_dma(fb, SZ_1M);
280}
281
282static void versatile_clcd_decode(struct clcd_fb *fb, struct clcd_regs *regs)
283{
284 clcdfb_decode(fb, regs);
285
286 /* Always clear BGR for RGB565: we do the routing externally */
287 if (fb->fb.var.green.length == 6)
288 regs->cntl &= ~CNTL_BGR;
289}
290
291static struct clcd_board clcd_plat_data = {
292 .name = "Versatile",
293 .caps = CLCD_CAP_5551 | CLCD_CAP_565 | CLCD_CAP_888,
294 .check = clcdfb_check,
295 .decode = versatile_clcd_decode,
296 .disable = versatile_clcd_disable,
297 .enable = versatile_clcd_enable,
298 .setup = versatile_clcd_setup,
299 .mmap = versatile_clcd_mmap_dma,
300 .remove = versatile_clcd_remove_dma,
301};
302
303/*
304 * Lookup table for attaching a specific name and platform_data pointer to
305 * devices as they get created by of_platform_populate(). Ideally this table
306 * would not exist, but the current clock implementation depends on some devices
307 * having a specific name.
308 */
309struct of_dev_auxdata versatile_auxdata_lookup[] __initdata = {
310 OF_DEV_AUXDATA("arm,primecell", VERSATILE_MMCI0_BASE, "fpga:05", &mmc0_plat_data),
311 OF_DEV_AUXDATA("arm,primecell", VERSATILE_MMCI1_BASE, "fpga:0b", &mmc1_plat_data),
312 OF_DEV_AUXDATA("arm,primecell", VERSATILE_CLCD_BASE, "dev:20", &clcd_plat_data),
313 {}
314};
315
316static struct map_desc versatile_io_desc[] __initdata __maybe_unused = {
317 {
318 .virtual = IO_ADDRESS(VERSATILE_SCTL_BASE),
319 .pfn = __phys_to_pfn(VERSATILE_SCTL_BASE),
320 .length = SZ_4K * 9,
321 .type = MT_DEVICE
322 }
323};
324
325static void __init versatile_map_io(void)
326{
327 debug_ll_io_init();
328 iotable_init(versatile_io_desc, ARRAY_SIZE(versatile_io_desc));
329}
330
331static void __init versatile_init_early(void)
332{
333 u32 val;
334
335 /*
336 * set clock frequency:
337 * VERSATILE_REFCLK is 32KHz
338 * VERSATILE_TIMCLK is 1MHz
339 */
340 val = readl(__io_address(VERSATILE_SCTL_BASE));
341 writel((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) |
342 (VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
343 (VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) |
344 (VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel) | val,
345 __io_address(VERSATILE_SCTL_BASE));
346}
347
348static void versatile_restart(enum reboot_mode mode, const char *cmd)
349{
350 u32 val;
351
352 val = readl(versatile_sys_base + VERSATILE_SYS_RESETCTL_OFFSET);
353 val |= 0x105;
354
355 writel(0xa05f, versatile_sys_base + VERSATILE_SYS_LOCK_OFFSET);
356 writel(val, versatile_sys_base + VERSATILE_SYS_RESETCTL_OFFSET);
357 writel(0, versatile_sys_base + VERSATILE_SYS_LOCK_OFFSET);
358}
359
360static void __init versatile_dt_pci_init(void)
361{
362 u32 val;
363 struct device_node *np;
364 struct property *newprop;
365
366 np = of_find_compatible_node(NULL, NULL, "arm,versatile-pci");
367 if (!np)
368 return;
369
370 /* Check if PCI backplane is detected */
371 val = readl(versatile_sys_base + VERSATILE_SYS_PCICTL_OFFSET);
372 if (val & 1) {
373 /*
374 * Enable PCI accesses. Note that the documentaton is
375 * inconsistent whether or not this is needed, but the old
376 * driver had it so we will keep it.
377 */
378 writel(1, versatile_sys_base + VERSATILE_SYS_PCICTL_OFFSET);
379 return;
380 }
381
382 newprop = kzalloc(sizeof(*newprop), GFP_KERNEL);
383 if (!newprop)
384 return;
385
386 newprop->name = kstrdup("status", GFP_KERNEL);
387 newprop->value = kstrdup("disabled", GFP_KERNEL);
388 newprop->length = sizeof("disabled");
389 of_update_property(np, newprop);
390
391 pr_info("Not plugged into PCI backplane!\n");
392}
31 393
32static void __init versatile_dt_init(void) 394static void __init versatile_dt_init(void)
33{ 395{
396 struct device_node *np;
397
398 np = of_find_compatible_node(NULL, NULL, "arm,core-module-versatile");
399 if (np)
400 versatile_sys_base = of_iomap(np, 0);
401 WARN_ON(!versatile_sys_base);
402
403 versatile_ib2_ctrl = ioremap(VERSATILE_IB2_CTL_BASE, SZ_4K);
404
405 versatile_dt_pci_init();
406
407 platform_device_register(&versatile_flash_device);
34 of_platform_populate(NULL, of_default_bus_match_table, 408 of_platform_populate(NULL, of_default_bus_match_table,
35 versatile_auxdata_lookup, NULL); 409 versatile_auxdata_lookup, NULL);
36} 410}
diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c
deleted file mode 100644
index 9a53d0bd9144..000000000000
--- a/arch/arm/mach-versatile/versatile_pb.c
+++ /dev/null
@@ -1,91 +0,0 @@
1/*
2 * linux/arch/arm/mach-versatile/versatile_pb.c
3 *
4 * Copyright (C) 2004 ARM Limited
5 * Copyright (C) 2000 Deep Blue Solutions Ltd
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#include <linux/init.h>
23#include <linux/device.h>
24#include <linux/amba/bus.h>
25#include <linux/amba/pl061.h>
26#include <linux/amba/mmci.h>
27#include <linux/io.h>
28
29#include <mach/hardware.h>
30#include <asm/irq.h>
31#include <asm/mach-types.h>
32
33#include <asm/mach/arch.h>
34
35#include "core.h"
36
37#if 1
38#define IRQ_MMCI1A IRQ_VICSOURCE23
39#else
40#define IRQ_MMCI1A IRQ_SIC_MMCI1A
41#endif
42
43static struct mmci_platform_data mmc1_plat_data = {
44 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
45 .status = mmc_status,
46 .gpio_wp = -1,
47 .gpio_cd = -1,
48};
49
50#define UART3_IRQ { IRQ_SIC_UART3 }
51#define SCI1_IRQ { IRQ_SIC_SCI3 }
52#define MMCI1_IRQ { IRQ_MMCI1A, IRQ_SIC_MMCI1B }
53
54/*
55 * These devices are connected via the DMA APB bridge
56 */
57
58/* FPGA Primecells */
59APB_DEVICE(uart3, "fpga:09", UART3, NULL);
60APB_DEVICE(sci1, "fpga:0a", SCI1, NULL);
61APB_DEVICE(mmc1, "fpga:0b", MMCI1, &mmc1_plat_data);
62
63
64static struct amba_device *amba_devs[] __initdata = {
65 &uart3_device,
66 &sci1_device,
67 &mmc1_device,
68};
69
70static void __init versatile_pb_init(void)
71{
72 int i;
73
74 versatile_init();
75
76 for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
77 struct amba_device *d = amba_devs[i];
78 amba_device_register(d, &iomem_resource);
79 }
80}
81
82MACHINE_START(VERSATILE_PB, "ARM-Versatile PB")
83 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
84 .atag_offset = 0x100,
85 .map_io = versatile_map_io,
86 .init_early = versatile_init_early,
87 .init_irq = versatile_init_irq,
88 .init_time = versatile_timer_init,
89 .init_machine = versatile_pb_init,
90 .restart = versatile_restart,
91MACHINE_END
diff --git a/arch/arm/mach-w90x900/cpu.c b/arch/arm/mach-w90x900/cpu.c
index 213230ee57d1..ca763251ffe0 100644
--- a/arch/arm/mach-w90x900/cpu.c
+++ b/arch/arm/mach-w90x900/cpu.c
@@ -33,8 +33,8 @@
33#include <mach/hardware.h> 33#include <mach/hardware.h>
34#include <mach/regs-serial.h> 34#include <mach/regs-serial.h>
35#include <mach/regs-clock.h> 35#include <mach/regs-clock.h>
36#include <mach/regs-ebi.h> 36#include "regs-ebi.h"
37#include <mach/regs-timer.h> 37#include "regs-timer.h"
38 38
39#include "cpu.h" 39#include "cpu.h"
40#include "clock.h" 40#include "clock.h"
diff --git a/arch/arm/mach-w90x900/include/mach/regs-ebi.h b/arch/arm/mach-w90x900/regs-ebi.h
index b68455e7f88b..b68455e7f88b 100644
--- a/arch/arm/mach-w90x900/include/mach/regs-ebi.h
+++ b/arch/arm/mach-w90x900/regs-ebi.h
diff --git a/arch/arm/mach-w90x900/include/mach/regs-gcr.h b/arch/arm/mach-w90x900/regs-gcr.h
index 6087abd93ef5..6087abd93ef5 100644
--- a/arch/arm/mach-w90x900/include/mach/regs-gcr.h
+++ b/arch/arm/mach-w90x900/regs-gcr.h
diff --git a/arch/arm/mach-w90x900/include/mach/regs-timer.h b/arch/arm/mach-w90x900/regs-timer.h
index 8f390620c0e4..8f390620c0e4 100644
--- a/arch/arm/mach-w90x900/include/mach/regs-timer.h
+++ b/arch/arm/mach-w90x900/regs-timer.h
diff --git a/arch/arm/mach-w90x900/include/mach/regs-usb.h b/arch/arm/mach-w90x900/regs-usb.h
index ab74b0c2480b..ab74b0c2480b 100644
--- a/arch/arm/mach-w90x900/include/mach/regs-usb.h
+++ b/arch/arm/mach-w90x900/regs-usb.h
diff --git a/arch/arm/mach-w90x900/time.c b/arch/arm/mach-w90x900/time.c
index cd1966ec9143..cda085245e34 100644
--- a/arch/arm/mach-w90x900/time.c
+++ b/arch/arm/mach-w90x900/time.c
@@ -31,7 +31,7 @@
31#include <asm/mach/time.h> 31#include <asm/mach/time.h>
32 32
33#include <mach/map.h> 33#include <mach/map.h>
34#include <mach/regs-timer.h> 34#include "regs-timer.h"
35 35
36#include "nuc9xx.h" 36#include "nuc9xx.h"
37 37
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 41218867a9a6..549f6d3aec5b 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -21,7 +21,7 @@ config CPU_ARM7TDMI
21 21
22# ARM720T 22# ARM720T
23config CPU_ARM720T 23config CPU_ARM720T
24 bool "Support ARM720T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) 24 bool
25 select CPU_32v4T 25 select CPU_32v4T
26 select CPU_ABRT_LV4T 26 select CPU_ABRT_LV4T
27 select CPU_CACHE_V4 27 select CPU_CACHE_V4
@@ -39,7 +39,7 @@ config CPU_ARM720T
39 39
40# ARM740T 40# ARM740T
41config CPU_ARM740T 41config CPU_ARM740T
42 bool "Support ARM740T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) 42 bool
43 depends on !MMU 43 depends on !MMU
44 select CPU_32v4T 44 select CPU_32v4T
45 select CPU_ABRT_LV4T 45 select CPU_ABRT_LV4T
@@ -71,7 +71,7 @@ config CPU_ARM9TDMI
71 71
72# ARM920T 72# ARM920T
73config CPU_ARM920T 73config CPU_ARM920T
74 bool "Support ARM920T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) 74 bool
75 select CPU_32v4T 75 select CPU_32v4T
76 select CPU_ABRT_EV4T 76 select CPU_ABRT_EV4T
77 select CPU_CACHE_V4WT 77 select CPU_CACHE_V4WT
@@ -89,7 +89,7 @@ config CPU_ARM920T
89 89
90# ARM922T 90# ARM922T
91config CPU_ARM922T 91config CPU_ARM922T
92 bool "Support ARM922T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) 92 bool
93 select CPU_32v4T 93 select CPU_32v4T
94 select CPU_ABRT_EV4T 94 select CPU_ABRT_EV4T
95 select CPU_CACHE_V4WT 95 select CPU_CACHE_V4WT
@@ -108,7 +108,7 @@ config CPU_ARM922T
108 108
109# ARM925T 109# ARM925T
110config CPU_ARM925T 110config CPU_ARM925T
111 bool "Support ARM925T processor" if ARCH_OMAP1 111 bool
112 select CPU_32v4T 112 select CPU_32v4T
113 select CPU_ABRT_EV4T 113 select CPU_ABRT_EV4T
114 select CPU_CACHE_V4WT 114 select CPU_CACHE_V4WT
@@ -127,7 +127,7 @@ config CPU_ARM925T
127 127
128# ARM926T 128# ARM926T
129config CPU_ARM926T 129config CPU_ARM926T
130 bool "Support ARM926T processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V5) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB) 130 bool
131 select CPU_32v5 131 select CPU_32v5
132 select CPU_ABRT_EV5TJ 132 select CPU_ABRT_EV5TJ
133 select CPU_CACHE_VIVT 133 select CPU_CACHE_VIVT
@@ -163,7 +163,7 @@ config CPU_FA526
163 163
164# ARM940T 164# ARM940T
165config CPU_ARM940T 165config CPU_ARM940T
166 bool "Support ARM940T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) 166 bool
167 depends on !MMU 167 depends on !MMU
168 select CPU_32v4T 168 select CPU_32v4T
169 select CPU_ABRT_NOMMU 169 select CPU_ABRT_NOMMU
@@ -181,7 +181,7 @@ config CPU_ARM940T
181 181
182# ARM946E-S 182# ARM946E-S
183config CPU_ARM946E 183config CPU_ARM946E
184 bool "Support ARM946E-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR) 184 bool
185 depends on !MMU 185 depends on !MMU
186 select CPU_32v5 186 select CPU_32v5
187 select CPU_ABRT_NOMMU 187 select CPU_ABRT_NOMMU
@@ -198,7 +198,7 @@ config CPU_ARM946E
198 198
199# ARM1020 - needs validating 199# ARM1020 - needs validating
200config CPU_ARM1020 200config CPU_ARM1020
201 bool "Support ARM1020T (rev 0) processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR) 201 bool
202 select CPU_32v5 202 select CPU_32v5
203 select CPU_ABRT_EV4T 203 select CPU_ABRT_EV4T
204 select CPU_CACHE_V4WT 204 select CPU_CACHE_V4WT
@@ -216,7 +216,7 @@ config CPU_ARM1020
216 216
217# ARM1020E - needs validating 217# ARM1020E - needs validating
218config CPU_ARM1020E 218config CPU_ARM1020E
219 bool "Support ARM1020E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR) 219 bool
220 depends on n 220 depends on n
221 select CPU_32v5 221 select CPU_32v5
222 select CPU_ABRT_EV4T 222 select CPU_ABRT_EV4T
@@ -229,7 +229,7 @@ config CPU_ARM1020E
229 229
230# ARM1022E 230# ARM1022E
231config CPU_ARM1022 231config CPU_ARM1022
232 bool "Support ARM1022E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR) 232 bool
233 select CPU_32v5 233 select CPU_32v5
234 select CPU_ABRT_EV4T 234 select CPU_ABRT_EV4T
235 select CPU_CACHE_VIVT 235 select CPU_CACHE_VIVT
@@ -247,7 +247,7 @@ config CPU_ARM1022
247 247
248# ARM1026EJ-S 248# ARM1026EJ-S
249config CPU_ARM1026 249config CPU_ARM1026
250 bool "Support ARM1026EJ-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR) 250 bool
251 select CPU_32v5 251 select CPU_32v5
252 select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10 252 select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
253 select CPU_CACHE_VIVT 253 select CPU_CACHE_VIVT
@@ -358,7 +358,7 @@ config CPU_PJ4B
358 358
359# ARMv6 359# ARMv6
360config CPU_V6 360config CPU_V6
361 bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX) 361 bool
362 select CPU_32v6 362 select CPU_32v6
363 select CPU_ABRT_EV6 363 select CPU_ABRT_EV6
364 select CPU_CACHE_V6 364 select CPU_CACHE_V6
@@ -371,7 +371,7 @@ config CPU_V6
371 371
372# ARMv6k 372# ARMv6k
373config CPU_V6K 373config CPU_V6K
374 bool "Support ARM V6K processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX) 374 bool
375 select CPU_32v6 375 select CPU_32v6
376 select CPU_32v6K 376 select CPU_32v6K
377 select CPU_ABRT_EV6 377 select CPU_ABRT_EV6
@@ -385,7 +385,7 @@ config CPU_V6K
385 385
386# ARMv7 386# ARMv7
387config CPU_V7 387config CPU_V7
388 bool "Support ARM V7 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V7) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX) 388 bool
389 select CPU_32v6K 389 select CPU_32v6K
390 select CPU_32v7 390 select CPU_32v7
391 select CPU_ABRT_EV7 391 select CPU_ABRT_EV7
@@ -1005,8 +1005,6 @@ config ARM_L1_CACHE_SHIFT
1005 1005
1006config ARM_DMA_MEM_BUFFERABLE 1006config ARM_DMA_MEM_BUFFERABLE
1007 bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7 1007 bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7
1008 depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \
1009 MACH_REALVIEW_PB11MP)
1010 default y if CPU_V6 || CPU_V6K || CPU_V7 1008 default y if CPU_V6 || CPU_V6K || CPU_V7
1011 help 1009 help
1012 Historically, the kernel has used strongly ordered mappings to 1010 Historically, the kernel has used strongly ordered mappings to
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
index e7a81cebbb2e..d65909697165 100644
--- a/arch/arm/mm/idmap.c
+++ b/arch/arm/mm/idmap.c
@@ -86,7 +86,7 @@ static void identity_mapping_add(pgd_t *pgd, const char *text_start,
86 86
87 prot |= PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AF; 87 prot |= PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AF;
88 88
89 if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale()) 89 if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale_family())
90 prot |= PMD_BIT4; 90 prot |= PMD_BIT4;
91 91
92 pgd += pgd_index(addr); 92 pgd += pgd_index(addr);
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index a87f6cc3fa2b..434d76f0b363 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -477,7 +477,7 @@ static void __init build_mem_type_table(void)
477 * "update-able on write" bit on ARM610). However, Xscale and 477 * "update-able on write" bit on ARM610). However, Xscale and
478 * Xscale3 require this bit to be cleared. 478 * Xscale3 require this bit to be cleared.
479 */ 479 */
480 if (cpu_is_xscale() || cpu_is_xsc3()) { 480 if (cpu_is_xscale_family()) {
481 for (i = 0; i < ARRAY_SIZE(mem_types); i++) { 481 for (i = 0; i < ARRAY_SIZE(mem_types); i++) {
482 mem_types[i].prot_sect &= ~PMD_BIT4; 482 mem_types[i].prot_sect &= ~PMD_BIT4;
483 mem_types[i].prot_l1 &= ~PMD_BIT4; 483 mem_types[i].prot_l1 &= ~PMD_BIT4;
diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S
index d65edf717bf7..6f07d2ef4ff2 100644
--- a/arch/arm/mm/proc-mohawk.S
+++ b/arch/arm/mm/proc-mohawk.S
@@ -342,11 +342,13 @@ ENTRY(cpu_mohawk_switch_mm)
342 */ 342 */
343 .align 5 343 .align 5
344ENTRY(cpu_mohawk_set_pte_ext) 344ENTRY(cpu_mohawk_set_pte_ext)
345#ifdef CONFIG_MMU
345 armv3_set_pte_ext 346 armv3_set_pte_ext
346 mov r0, r0 347 mov r0, r0
347 mcr p15, 0, r0, c7, c10, 1 @ clean D entry 348 mcr p15, 0, r0, c7, c10, 1 @ clean D entry
348 mcr p15, 0, r0, c7, c10, 4 @ drain WB 349 mcr p15, 0, r0, c7, c10, 4 @ drain WB
349 ret lr 350 ret lr
351#endif
350 352
351.globl cpu_mohawk_suspend_size 353.globl cpu_mohawk_suspend_size
352.equ cpu_mohawk_suspend_size, 4 * 6 354.equ cpu_mohawk_suspend_size, 4 * 6
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index 8861c367d061..78c8bf4043c0 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -21,7 +21,6 @@
21#include <net/dsa.h> 21#include <net/dsa.h>
22#include <linux/platform_data/dma-mv_xor.h> 22#include <linux/platform_data/dma-mv_xor.h>
23#include <linux/platform_data/usb-ehci-orion.h> 23#include <linux/platform_data/usb-ehci-orion.h>
24#include <mach/bridge-regs.h>
25#include <plat/common.h> 24#include <plat/common.h>
26 25
27/* Create a clkdev entry for a given device/clk */ 26/* Create a clkdev entry for a given device/clk */
@@ -589,26 +588,6 @@ void __init orion_spi_1_init(unsigned long mapbase)
589} 588}
590 589
591/***************************************************************************** 590/*****************************************************************************
592 * Watchdog
593 ****************************************************************************/
594static struct resource orion_wdt_resource[] = {
595 DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
596 DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
597};
598
599static struct platform_device orion_wdt_device = {
600 .name = "orion_wdt",
601 .id = -1,
602 .num_resources = ARRAY_SIZE(orion_wdt_resource),
603 .resource = orion_wdt_resource,
604};
605
606void __init orion_wdt_init(void)
607{
608 platform_device_register(&orion_wdt_device);
609}
610
611/*****************************************************************************
612 * XOR 591 * XOR
613 ****************************************************************************/ 592 ****************************************************************************/
614static u64 orion_xor_dmamask = DMA_BIT_MASK(32); 593static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
index d9a24f605a2b..9e6d76ad48a9 100644
--- a/arch/arm/plat-orion/include/plat/common.h
+++ b/arch/arm/plat-orion/include/plat/common.h
@@ -75,8 +75,6 @@ void __init orion_spi_init(unsigned long mapbase);
75 75
76void __init orion_spi_1_init(unsigned long mapbase); 76void __init orion_spi_1_init(unsigned long mapbase);
77 77
78void __init orion_wdt_init(void);
79
80void __init orion_xor0_init(unsigned long mapbase_low, 78void __init orion_xor0_init(unsigned long mapbase_low,
81 unsigned long mapbase_high, 79 unsigned long mapbase_high,
82 unsigned long irq_0, 80 unsigned long irq_0,
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c
index 8c1fc06007c0..5b63b28b00ac 100644
--- a/arch/arm/plat-orion/irq.c
+++ b/arch/arm/plat-orion/irq.c
@@ -18,7 +18,6 @@
18#include <asm/exception.h> 18#include <asm/exception.h>
19#include <plat/irq.h> 19#include <plat/irq.h>
20#include <plat/orion-gpio.h> 20#include <plat/orion-gpio.h>
21#include <mach/bridge-regs.h>
22 21
23void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr) 22void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
24{ 23{
diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c
index 7310bcfb299f..5b4ff9373c89 100644
--- a/arch/arm/plat-orion/mpp.c
+++ b/arch/arm/plat-orion/mpp.c
@@ -13,7 +13,6 @@
13#include <linux/mbus.h> 13#include <linux/mbus.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <linux/gpio.h> 15#include <linux/gpio.h>
16#include <mach/hardware.h>
17#include <plat/orion-gpio.h> 16#include <plat/orion-gpio.h>
18#include <plat/mpp.h> 17#include <plat/mpp.h>
19 18
diff --git a/arch/arm/plat-pxa/Makefile b/arch/arm/plat-pxa/Makefile
index 1fc941944912..557b134db772 100644
--- a/arch/arm/plat-pxa/Makefile
+++ b/arch/arm/plat-pxa/Makefile
@@ -1,8 +1,9 @@
1# 1#
2# Makefile for code common across different PXA processor families 2# Makefile for code common across different PXA processor families
3# 3#
4ccflags-$(CONFIG_ARCH_MMP) := -I$(srctree)/$(src)/include
4 5
5obj-y := dma.o 6obj-$(CONFIG_ARCH_PXA) := dma.o
6 7
7obj-$(CONFIG_PXA3xx) += mfp.o 8obj-$(CONFIG_PXA3xx) += mfp.o
8obj-$(CONFIG_ARCH_MMP) += mfp.o 9obj-$(CONFIG_ARCH_MMP) += mfp.o
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c
index daa1a65f2eb7..ba13f793fbce 100644
--- a/arch/arm/plat-pxa/ssp.c
+++ b/arch/arm/plat-pxa/ssp.c
@@ -34,7 +34,6 @@
34#include <linux/of_device.h> 34#include <linux/of_device.h>
35 35
36#include <asm/irq.h> 36#include <asm/irq.h>
37#include <mach/hardware.h>
38 37
39static DEFINE_MUTEX(ssp_lock); 38static DEFINE_MUTEX(ssp_lock);
40static LIST_HEAD(ssp_list); 39static LIST_HEAD(ssp_list);
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 57729b915003..e8229b9fee4a 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -39,7 +39,6 @@ config S3C_LOWLEVEL_UART_PORT
39 39
40config SAMSUNG_ATAGS 40config SAMSUNG_ATAGS
41 def_bool n 41 def_bool n
42 depends on !ARCH_MULTIPLATFORM
43 depends on ATAGS 42 depends on ATAGS
44 help 43 help
45 This option enables ATAGS based boot support code for 44 This option enables ATAGS based boot support code for
@@ -70,6 +69,7 @@ config S3C_GPIO_TRACK
70 69
71config S3C_ADC 70config S3C_ADC
72 bool "ADC common driver support" 71 bool "ADC common driver support"
72 depends on !ARCH_MULTIPLATFORM
73 help 73 help
74 Core support for the ADC block found in the Samsung SoC systems 74 Core support for the ADC block found in the Samsung SoC systems
75 for drivers such as the touchscreen and hwmon to use to share 75 for drivers such as the touchscreen and hwmon to use to share
@@ -225,6 +225,9 @@ config S3C24XX_PWM
225 Support for exporting the PWM timer blocks via the pwm device 225 Support for exporting the PWM timer blocks via the pwm device
226 system 226 system
227 227
228config GPIO_SAMSUNG
229 def_bool y
230
228config SAMSUNG_PM_GPIO 231config SAMSUNG_PM_GPIO
229 bool 232 bool
230 default y if GPIO_SAMSUNG && PM 233 default y if GPIO_SAMSUNG && PM
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 8c911760f55f..be172efec15c 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -4,7 +4,8 @@
4# 4#
5# Licensed under GPLv2 5# Licensed under GPLv2
6 6
7ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include 7ccflags-$(CONFIG_ARCH_S3C64XX) := -I$(srctree)/arch/arm/mach-s3c64xx/include
8ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include
8 9
9# Objects we always build independent of SoC choice 10# Objects we always build independent of SoC choice
10 11
@@ -21,6 +22,8 @@ obj-$(CONFIG_SAMSUNG_ATAGS) += platformdata.o
21obj-$(CONFIG_SAMSUNG_ATAGS) += devs.o 22obj-$(CONFIG_SAMSUNG_ATAGS) += devs.o
22obj-$(CONFIG_SAMSUNG_ATAGS) += dev-uart.o 23obj-$(CONFIG_SAMSUNG_ATAGS) += dev-uart.o
23 24
25obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o
26
24# PM support 27# PM support
25 28
26obj-$(CONFIG_PM_SLEEP) += pm-common.o 29obj-$(CONFIG_PM_SLEEP) += pm-common.o
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
index f39938fa9ef6..b53d4ff3befb 100644
--- a/arch/arm/plat-samsung/devs.c
+++ b/arch/arm/plat-samsung/devs.c
@@ -119,12 +119,12 @@ struct platform_device s3c_device_adc = {
119#if defined(CONFIG_SAMSUNG_DEV_ADC) 119#if defined(CONFIG_SAMSUNG_DEV_ADC)
120static struct resource s3c_adc_resource[] = { 120static struct resource s3c_adc_resource[] = {
121 [0] = DEFINE_RES_MEM(SAMSUNG_PA_ADC, SZ_256), 121 [0] = DEFINE_RES_MEM(SAMSUNG_PA_ADC, SZ_256),
122 [1] = DEFINE_RES_IRQ(IRQ_TC), 122 [1] = DEFINE_RES_IRQ(IRQ_ADC),
123 [2] = DEFINE_RES_IRQ(IRQ_ADC), 123 [2] = DEFINE_RES_IRQ(IRQ_TC),
124}; 124};
125 125
126struct platform_device s3c_device_adc = { 126struct platform_device s3c_device_adc = {
127 .name = "samsung-adc", 127 .name = "exynos-adc",
128 .id = -1, 128 .id = -1,
129 .num_resources = ARRAY_SIZE(s3c_adc_resource), 129 .num_resources = ARRAY_SIZE(s3c_adc_resource),
130 .resource = s3c_adc_resource, 130 .resource = s3c_adc_resource,
@@ -956,31 +956,19 @@ void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_
956#endif /* CONFIG_PLAT_S3C24XX */ 956#endif /* CONFIG_PLAT_S3C24XX */
957 957
958#ifdef CONFIG_SAMSUNG_DEV_TS 958#ifdef CONFIG_SAMSUNG_DEV_TS
959static struct resource s3c_ts_resource[] = {
960 [0] = DEFINE_RES_MEM(SAMSUNG_PA_ADC, SZ_256),
961 [1] = DEFINE_RES_IRQ(IRQ_TC),
962};
963
964static struct s3c2410_ts_mach_info default_ts_data __initdata = { 959static struct s3c2410_ts_mach_info default_ts_data __initdata = {
965 .delay = 10000, 960 .delay = 10000,
966 .presc = 49, 961 .presc = 49,
967 .oversampling_shift = 2, 962 .oversampling_shift = 2,
968}; 963};
969 964
970struct platform_device s3c_device_ts = { 965void __init s3c64xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
971 .name = "s3c64xx-ts",
972 .id = -1,
973 .num_resources = ARRAY_SIZE(s3c_ts_resource),
974 .resource = s3c_ts_resource,
975};
976
977void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
978{ 966{
979 if (!pd) 967 if (!pd)
980 pd = &default_ts_data; 968 pd = &default_ts_data;
981 969
982 s3c_set_platdata(pd, sizeof(struct s3c2410_ts_mach_info), 970 s3c_set_platdata(pd, sizeof(struct s3c2410_ts_mach_info),
983 &s3c_device_ts); 971 &s3c_device_adc);
984} 972}
985#endif /* CONFIG_SAMSUNG_DEV_TS */ 973#endif /* CONFIG_SAMSUNG_DEV_TS */
986 974
diff --git a/drivers/gpio/gpio-samsung.c b/arch/arm/plat-samsung/gpio-samsung.c
index 4cb4a314c02b..7861488f7ca0 100644
--- a/drivers/gpio/gpio-samsung.c
+++ b/arch/arm/plat-samsung/gpio-samsung.c
@@ -30,6 +30,7 @@
30 30
31#include <asm/irq.h> 31#include <asm/irq.h>
32 32
33#include <mach/irqs.h>
33#include <mach/map.h> 34#include <mach/map.h>
34#include <mach/regs-gpio.h> 35#include <mach/regs-gpio.h>
35#include <mach/gpio-samsung.h> 36#include <mach/gpio-samsung.h>
@@ -1176,14 +1177,16 @@ static __init int samsung_gpiolib_init(void)
1176 * interfaces. For legacy (non-DT) platforms this driver is used. 1177 * interfaces. For legacy (non-DT) platforms this driver is used.
1177 */ 1178 */
1178 if (of_have_populated_dt()) 1179 if (of_have_populated_dt())
1179 return -ENODEV; 1180 return 0;
1180
1181 samsung_gpiolib_set_cfg(samsung_gpio_cfgs, ARRAY_SIZE(samsung_gpio_cfgs));
1182 1181
1183 if (soc_is_s3c24xx()) { 1182 if (soc_is_s3c24xx()) {
1183 samsung_gpiolib_set_cfg(samsung_gpio_cfgs,
1184 ARRAY_SIZE(samsung_gpio_cfgs));
1184 s3c24xx_gpiolib_add_chips(s3c24xx_gpios, 1185 s3c24xx_gpiolib_add_chips(s3c24xx_gpios,
1185 ARRAY_SIZE(s3c24xx_gpios), S3C24XX_VA_GPIO); 1186 ARRAY_SIZE(s3c24xx_gpios), S3C24XX_VA_GPIO);
1186 } else if (soc_is_s3c64xx()) { 1187 } else if (soc_is_s3c64xx()) {
1188 samsung_gpiolib_set_cfg(samsung_gpio_cfgs,
1189 ARRAY_SIZE(samsung_gpio_cfgs));
1187 samsung_gpiolib_add_2bit_chips(s3c64xx_gpios_2bit, 1190 samsung_gpiolib_add_2bit_chips(s3c64xx_gpios_2bit,
1188 ARRAY_SIZE(s3c64xx_gpios_2bit), 1191 ARRAY_SIZE(s3c64xx_gpios_2bit),
1189 S3C64XX_VA_GPIO + 0xE0, 0x20); 1192 S3C64XX_VA_GPIO + 0xE0, 0x20);
@@ -1192,9 +1195,6 @@ static __init int samsung_gpiolib_init(void)
1192 S3C64XX_VA_GPIO); 1195 S3C64XX_VA_GPIO);
1193 samsung_gpiolib_add_4bit2_chips(s3c64xx_gpios_4bit2, 1196 samsung_gpiolib_add_4bit2_chips(s3c64xx_gpios_4bit2,
1194 ARRAY_SIZE(s3c64xx_gpios_4bit2)); 1197 ARRAY_SIZE(s3c64xx_gpios_4bit2));
1195 } else {
1196 WARN(1, "Unknown SoC in gpio-samsung, no GPIOs added\n");
1197 return -ENODEV;
1198 } 1198 }
1199 1199
1200 return 0; 1200 return 0;
diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-samsung/include/plat/pm.h
index 7f415ce74591..9dd562ab0841 100644
--- a/arch/arm/plat-samsung/include/plat/pm.h
+++ b/arch/arm/plat-samsung/include/plat/pm.h
@@ -41,14 +41,6 @@ static inline int s3c64xx_pm_init(void)
41extern unsigned long s3c_irqwake_intmask; 41extern unsigned long s3c_irqwake_intmask;
42extern unsigned long s3c_irqwake_eintmask; 42extern unsigned long s3c_irqwake_eintmask;
43 43
44/* IRQ masks for IRQs allowed to go to sleep (see irq.c) */
45extern unsigned long s3c_irqwake_intallow;
46#ifdef CONFIG_PM_SLEEP
47extern unsigned long s3c_irqwake_eintallow;
48#else
49#define s3c_irqwake_eintallow 0
50#endif
51
52/* per-cpu sleep functions */ 44/* per-cpu sleep functions */
53 45
54extern void (*pm_cpu_prep)(void); 46extern void (*pm_cpu_prep)(void);
diff --git a/arch/arm/plat-samsung/init.c b/arch/arm/plat-samsung/init.c
index 11fbbc26e49f..3776f7e752f0 100644
--- a/arch/arm/plat-samsung/init.c
+++ b/arch/arm/plat-samsung/init.c
@@ -152,6 +152,11 @@ static int __init s3c_arch_init(void)
152{ 152{
153 int ret; 153 int ret;
154 154
155 /* init is only needed for ATAGS based platforms */
156 if (!IS_ENABLED(CONFIG_ATAGS) ||
157 (!soc_is_s3c24xx() && !soc_is_s3c64xx()))
158 return 0;
159
155 // do the correct init for cpu 160 // do the correct init for cpu
156 161
157 if (cpu == NULL) { 162 if (cpu == NULL) {
diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c
index 82777c649774..d7803b434732 100644
--- a/arch/arm/plat-samsung/pm.c
+++ b/arch/arm/plat-samsung/pm.c
@@ -23,14 +23,10 @@
23#include <asm/cacheflush.h> 23#include <asm/cacheflush.h>
24#include <asm/suspend.h> 24#include <asm/suspend.h>
25 25
26#ifdef CONFIG_SAMSUNG_ATAGS
27#include <mach/map.h> 26#include <mach/map.h>
28#ifndef CONFIG_ARCH_EXYNOS
29#include <mach/regs-clock.h> 27#include <mach/regs-clock.h>
30#include <mach/regs-irq.h> 28#include <mach/regs-irq.h>
31#endif
32#include <mach/irqs.h> 29#include <mach/irqs.h>
33#endif
34 30
35#include <asm/irq.h> 31#include <asm/irq.h>
36 32
diff --git a/drivers/clk/mmp/clk-mmp2.c b/drivers/clk/mmp/clk-mmp2.c
index 71fd29348f28..38931dbd1eff 100644
--- a/drivers/clk/mmp/clk-mmp2.c
+++ b/drivers/clk/mmp/clk-mmp2.c
@@ -17,8 +17,6 @@
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/err.h> 18#include <linux/err.h>
19 19
20#include <mach/addr-map.h>
21
22#include "clk.h" 20#include "clk.h"
23 21
24#define APBC_RTC 0x0 22#define APBC_RTC 0x0
@@ -74,7 +72,8 @@ static const char *sdh_parent[] = {"pll1_4", "pll2", "usb_pll", "pll1"};
74static const char *disp_parent[] = {"pll1", "pll1_16", "pll2", "vctcxo"}; 72static const char *disp_parent[] = {"pll1", "pll1_16", "pll2", "vctcxo"};
75static const char *ccic_parent[] = {"pll1_2", "pll1_16", "vctcxo"}; 73static const char *ccic_parent[] = {"pll1_2", "pll1_16", "vctcxo"};
76 74
77void __init mmp2_clk_init(void) 75void __init mmp2_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
76 phys_addr_t apbc_phys)
78{ 77{
79 struct clk *clk; 78 struct clk *clk;
80 struct clk *vctcxo; 79 struct clk *vctcxo;
@@ -82,19 +81,19 @@ void __init mmp2_clk_init(void)
82 void __iomem *apmu_base; 81 void __iomem *apmu_base;
83 void __iomem *apbc_base; 82 void __iomem *apbc_base;
84 83
85 mpmu_base = ioremap(APB_PHYS_BASE + 0x50000, SZ_4K); 84 mpmu_base = ioremap(mpmu_phys, SZ_4K);
86 if (mpmu_base == NULL) { 85 if (mpmu_base == NULL) {
87 pr_err("error to ioremap MPMU base\n"); 86 pr_err("error to ioremap MPMU base\n");
88 return; 87 return;
89 } 88 }
90 89
91 apmu_base = ioremap(AXI_PHYS_BASE + 0x82800, SZ_4K); 90 apmu_base = ioremap(apmu_phys, SZ_4K);
92 if (apmu_base == NULL) { 91 if (apmu_base == NULL) {
93 pr_err("error to ioremap APMU base\n"); 92 pr_err("error to ioremap APMU base\n");
94 return; 93 return;
95 } 94 }
96 95
97 apbc_base = ioremap(APB_PHYS_BASE + 0x15000, SZ_4K); 96 apbc_base = ioremap(apbc_phys, SZ_4K);
98 if (apbc_base == NULL) { 97 if (apbc_base == NULL) {
99 pr_err("error to ioremap APBC base\n"); 98 pr_err("error to ioremap APBC base\n");
100 return; 99 return;
diff --git a/drivers/clk/mmp/clk-pxa168.c b/drivers/clk/mmp/clk-pxa168.c
index 75244915df05..0dd83fb950c9 100644
--- a/drivers/clk/mmp/clk-pxa168.c
+++ b/drivers/clk/mmp/clk-pxa168.c
@@ -17,8 +17,6 @@
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/err.h> 18#include <linux/err.h>
19 19
20#include <mach/addr-map.h>
21
22#include "clk.h" 20#include "clk.h"
23 21
24#define APBC_RTC 0x28 22#define APBC_RTC 0x28
@@ -67,7 +65,8 @@ static const char *disp_parent[] = {"pll1_2", "pll1_12"};
67static const char *ccic_parent[] = {"pll1_2", "pll1_12"}; 65static const char *ccic_parent[] = {"pll1_2", "pll1_12"};
68static const char *ccic_phy_parent[] = {"pll1_6", "pll1_12"}; 66static const char *ccic_phy_parent[] = {"pll1_6", "pll1_12"};
69 67
70void __init pxa168_clk_init(void) 68void __init pxa168_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
69 phys_addr_t apbc_phys)
71{ 70{
72 struct clk *clk; 71 struct clk *clk;
73 struct clk *uart_pll; 72 struct clk *uart_pll;
@@ -75,19 +74,19 @@ void __init pxa168_clk_init(void)
75 void __iomem *apmu_base; 74 void __iomem *apmu_base;
76 void __iomem *apbc_base; 75 void __iomem *apbc_base;
77 76
78 mpmu_base = ioremap(APB_PHYS_BASE + 0x50000, SZ_4K); 77 mpmu_base = ioremap(mpmu_phys, SZ_4K);
79 if (mpmu_base == NULL) { 78 if (mpmu_base == NULL) {
80 pr_err("error to ioremap MPMU base\n"); 79 pr_err("error to ioremap MPMU base\n");
81 return; 80 return;
82 } 81 }
83 82
84 apmu_base = ioremap(AXI_PHYS_BASE + 0x82800, SZ_4K); 83 apmu_base = ioremap(apmu_phys, SZ_4K);
85 if (apmu_base == NULL) { 84 if (apmu_base == NULL) {
86 pr_err("error to ioremap APMU base\n"); 85 pr_err("error to ioremap APMU base\n");
87 return; 86 return;
88 } 87 }
89 88
90 apbc_base = ioremap(APB_PHYS_BASE + 0x15000, SZ_4K); 89 apbc_base = ioremap(apbc_phys, SZ_4K);
91 if (apbc_base == NULL) { 90 if (apbc_base == NULL) {
92 pr_err("error to ioremap APBC base\n"); 91 pr_err("error to ioremap APBC base\n");
93 return; 92 return;
diff --git a/drivers/clk/mmp/clk-pxa910.c b/drivers/clk/mmp/clk-pxa910.c
index 37ba04ba1368..e1d2ce22cdf1 100644
--- a/drivers/clk/mmp/clk-pxa910.c
+++ b/drivers/clk/mmp/clk-pxa910.c
@@ -17,8 +17,6 @@
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/err.h> 18#include <linux/err.h>
19 19
20#include <mach/addr-map.h>
21
22#include "clk.h" 20#include "clk.h"
23 21
24#define APBC_RTC 0x28 22#define APBC_RTC 0x28
@@ -65,7 +63,8 @@ static const char *disp_parent[] = {"pll1_2", "pll1_12"};
65static const char *ccic_parent[] = {"pll1_2", "pll1_12"}; 63static const char *ccic_parent[] = {"pll1_2", "pll1_12"};
66static const char *ccic_phy_parent[] = {"pll1_6", "pll1_12"}; 64static const char *ccic_phy_parent[] = {"pll1_6", "pll1_12"};
67 65
68void __init pxa910_clk_init(void) 66void __init pxa910_clk_init(phys_addr_t mpmu_phys, phys_addr_t apmu_phys,
67 phys_addr_t apbc_phys, phys_addr_t apbcp_phys)
69{ 68{
70 struct clk *clk; 69 struct clk *clk;
71 struct clk *uart_pll; 70 struct clk *uart_pll;
@@ -74,25 +73,25 @@ void __init pxa910_clk_init(void)
74 void __iomem *apbcp_base; 73 void __iomem *apbcp_base;
75 void __iomem *apbc_base; 74 void __iomem *apbc_base;
76 75
77 mpmu_base = ioremap(APB_PHYS_BASE + 0x50000, SZ_4K); 76 mpmu_base = ioremap(mpmu_phys, SZ_4K);
78 if (mpmu_base == NULL) { 77 if (mpmu_base == NULL) {
79 pr_err("error to ioremap MPMU base\n"); 78 pr_err("error to ioremap MPMU base\n");
80 return; 79 return;
81 } 80 }
82 81
83 apmu_base = ioremap(AXI_PHYS_BASE + 0x82800, SZ_4K); 82 apmu_base = ioremap(apmu_phys, SZ_4K);
84 if (apmu_base == NULL) { 83 if (apmu_base == NULL) {
85 pr_err("error to ioremap APMU base\n"); 84 pr_err("error to ioremap APMU base\n");
86 return; 85 return;
87 } 86 }
88 87
89 apbcp_base = ioremap(APB_PHYS_BASE + 0x3b000, SZ_4K); 88 apbcp_base = ioremap(apbcp_phys, SZ_4K);
90 if (apbcp_base == NULL) { 89 if (apbcp_base == NULL) {
91 pr_err("error to ioremap APBC extension base\n"); 90 pr_err("error to ioremap APBC extension base\n");
92 return; 91 return;
93 } 92 }
94 93
95 apbc_base = ioremap(APB_PHYS_BASE + 0x15000, SZ_4K); 94 apbc_base = ioremap(apbc_phys, SZ_4K);
96 if (apbc_base == NULL) { 95 if (apbc_base == NULL) {
97 pr_err("error to ioremap APBC base\n"); 96 pr_err("error to ioremap APBC base\n");
98 return; 97 return;
diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 542e45ef5087..b7747229db9a 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -17,7 +17,6 @@
17#include <linux/clkdev.h> 17#include <linux/clkdev.h>
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/of.h> 19#include <linux/of.h>
20#include <mach/pxa25x.h>
21#include <mach/pxa2xx-regs.h> 20#include <mach/pxa2xx-regs.h>
22 21
23#include <dt-bindings/clock/pxa-clock.h> 22#include <dt-bindings/clock/pxa-clock.h>
diff --git a/drivers/clk/versatile/Kconfig b/drivers/clk/versatile/Kconfig
index fc50b6264bed..a6da2aa09f83 100644
--- a/drivers/clk/versatile/Kconfig
+++ b/drivers/clk/versatile/Kconfig
@@ -1,6 +1,9 @@
1config COMMON_CLK_VERSATILE 1config COMMON_CLK_VERSATILE
2 bool "Clock driver for ARM Reference designs" 2 bool "Clock driver for ARM Reference designs"
3 depends on ARCH_INTEGRATOR || ARCH_REALVIEW || ARCH_VEXPRESS || ARM64 || COMPILE_TEST 3 depends on ARCH_INTEGRATOR || ARCH_REALVIEW || \
4 ARCH_VERSATILE || ARCH_VEXPRESS || ARM64 || \
5 COMPILE_TEST
6 select REGMAP_MMIO
4 ---help--- 7 ---help---
5 Supports clocking on ARM Reference designs: 8 Supports clocking on ARM Reference designs:
6 - Integrator/AP and Integrator/CP 9 - Integrator/AP and Integrator/CP
diff --git a/drivers/clk/versatile/clk-icst.c b/drivers/clk/versatile/clk-icst.c
index 08c5ee976879..e62f8cb2c9b5 100644
--- a/drivers/clk/versatile/clk-icst.c
+++ b/drivers/clk/versatile/clk-icst.c
@@ -3,7 +3,7 @@
3 * We wrap the custom interface from <asm/hardware/icst.h> into the generic 3 * We wrap the custom interface from <asm/hardware/icst.h> into the generic
4 * clock framework. 4 * clock framework.
5 * 5 *
6 * Copyright (C) 2012 Linus Walleij 6 * Copyright (C) 2012-2015 Linus Walleij
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
@@ -19,9 +19,14 @@
19#include <linux/err.h> 19#include <linux/err.h>
20#include <linux/clk-provider.h> 20#include <linux/clk-provider.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/regmap.h>
23#include <linux/mfd/syscon.h>
22 24
23#include "clk-icst.h" 25#include "clk-icst.h"
24 26
27/* Magic unlocking token used on all Versatile boards */
28#define VERSATILE_LOCK_VAL 0xA05F
29
25/** 30/**
26 * struct clk_icst - ICST VCO clock wrapper 31 * struct clk_icst - ICST VCO clock wrapper
27 * @hw: corresponding clock hardware entry 32 * @hw: corresponding clock hardware entry
@@ -32,8 +37,9 @@
32 */ 37 */
33struct clk_icst { 38struct clk_icst {
34 struct clk_hw hw; 39 struct clk_hw hw;
35 void __iomem *vcoreg; 40 struct regmap *map;
36 void __iomem *lockreg; 41 u32 vcoreg_off;
42 u32 lockreg_off;
37 struct icst_params *params; 43 struct icst_params *params;
38 unsigned long rate; 44 unsigned long rate;
39}; 45};
@@ -41,53 +47,67 @@ struct clk_icst {
41#define to_icst(_hw) container_of(_hw, struct clk_icst, hw) 47#define to_icst(_hw) container_of(_hw, struct clk_icst, hw)
42 48
43/** 49/**
44 * vco_get() - get ICST VCO settings from a certain register 50 * vco_get() - get ICST VCO settings from a certain ICST
45 * @vcoreg: register containing the VCO settings 51 * @icst: the ICST clock to get
52 * @vco: the VCO struct to return the value in
46 */ 53 */
47static struct icst_vco vco_get(void __iomem *vcoreg) 54static int vco_get(struct clk_icst *icst, struct icst_vco *vco)
48{ 55{
49 u32 val; 56 u32 val;
50 struct icst_vco vco; 57 int ret;
51 58
52 val = readl(vcoreg); 59 ret = regmap_read(icst->map, icst->vcoreg_off, &val);
53 vco.v = val & 0x1ff; 60 if (ret)
54 vco.r = (val >> 9) & 0x7f; 61 return ret;
55 vco.s = (val >> 16) & 03; 62 vco->v = val & 0x1ff;
56 return vco; 63 vco->r = (val >> 9) & 0x7f;
64 vco->s = (val >> 16) & 03;
65 return 0;
57} 66}
58 67
59/** 68/**
60 * vco_set() - commit changes to an ICST VCO 69 * vco_set() - commit changes to an ICST VCO
61 * @locreg: register to poke to unlock the VCO for writing 70 * @icst: the ICST clock to set
62 * @vcoreg: register containing the VCO settings 71 * @vco: the VCO struct to set the changes from
63 * @vco: ICST VCO parameters to commit
64 */ 72 */
65static void vco_set(void __iomem *lockreg, 73static int vco_set(struct clk_icst *icst, struct icst_vco vco)
66 void __iomem *vcoreg,
67 struct icst_vco vco)
68{ 74{
69 u32 val; 75 u32 val;
76 int ret;
70 77
71 val = readl(vcoreg) & ~0x7ffff; 78 ret = regmap_read(icst->map, icst->vcoreg_off, &val);
79 if (ret)
80 return ret;
72 val |= vco.v | (vco.r << 9) | (vco.s << 16); 81 val |= vco.v | (vco.r << 9) | (vco.s << 16);
73 82
74 /* This magic unlocks the VCO so it can be controlled */ 83 /* This magic unlocks the VCO so it can be controlled */
75 writel(0xa05f, lockreg); 84 ret = regmap_write(icst->map, icst->lockreg_off, VERSATILE_LOCK_VAL);
76 writel(val, vcoreg); 85 if (ret)
86 return ret;
87 ret = regmap_write(icst->map, icst->vcoreg_off, val);
88 if (ret)
89 return ret;
77 /* This locks the VCO again */ 90 /* This locks the VCO again */
78 writel(0, lockreg); 91 ret = regmap_write(icst->map, icst->lockreg_off, 0);
92 if (ret)
93 return ret;
94 return 0;
79} 95}
80 96
81
82static unsigned long icst_recalc_rate(struct clk_hw *hw, 97static unsigned long icst_recalc_rate(struct clk_hw *hw,
83 unsigned long parent_rate) 98 unsigned long parent_rate)
84{ 99{
85 struct clk_icst *icst = to_icst(hw); 100 struct clk_icst *icst = to_icst(hw);
86 struct icst_vco vco; 101 struct icst_vco vco;
102 int ret;
87 103
88 if (parent_rate) 104 if (parent_rate)
89 icst->params->ref = parent_rate; 105 icst->params->ref = parent_rate;
90 vco = vco_get(icst->vcoreg); 106 ret = vco_get(icst, &vco);
107 if (ret) {
108 pr_err("ICST: could not get VCO setting\n");
109 return 0;
110 }
91 icst->rate = icst_hz(icst->params, vco); 111 icst->rate = icst_hz(icst->params, vco);
92 return icst->rate; 112 return icst->rate;
93} 113}
@@ -112,8 +132,7 @@ static int icst_set_rate(struct clk_hw *hw, unsigned long rate,
112 icst->params->ref = parent_rate; 132 icst->params->ref = parent_rate;
113 vco = icst_hz_to_vco(icst->params, rate); 133 vco = icst_hz_to_vco(icst->params, rate);
114 icst->rate = icst_hz(icst->params, vco); 134 icst->rate = icst_hz(icst->params, vco);
115 vco_set(icst->lockreg, icst->vcoreg, vco); 135 return vco_set(icst, vco);
116 return 0;
117} 136}
118 137
119static const struct clk_ops icst_ops = { 138static const struct clk_ops icst_ops = {
@@ -122,11 +141,11 @@ static const struct clk_ops icst_ops = {
122 .set_rate = icst_set_rate, 141 .set_rate = icst_set_rate,
123}; 142};
124 143
125struct clk *icst_clk_register(struct device *dev, 144static struct clk *icst_clk_setup(struct device *dev,
126 const struct clk_icst_desc *desc, 145 const struct clk_icst_desc *desc,
127 const char *name, 146 const char *name,
128 const char *parent_name, 147 const char *parent_name,
129 void __iomem *base) 148 struct regmap *map)
130{ 149{
131 struct clk *clk; 150 struct clk *clk;
132 struct clk_icst *icst; 151 struct clk_icst *icst;
@@ -151,10 +170,11 @@ struct clk *icst_clk_register(struct device *dev,
151 init.flags = CLK_IS_ROOT; 170 init.flags = CLK_IS_ROOT;
152 init.parent_names = (parent_name ? &parent_name : NULL); 171 init.parent_names = (parent_name ? &parent_name : NULL);
153 init.num_parents = (parent_name ? 1 : 0); 172 init.num_parents = (parent_name ? 1 : 0);
173 icst->map = map;
154 icst->hw.init = &init; 174 icst->hw.init = &init;
155 icst->params = pclone; 175 icst->params = pclone;
156 icst->vcoreg = base + desc->vco_offset; 176 icst->vcoreg_off = desc->vco_offset;
157 icst->lockreg = base + desc->lock_offset; 177 icst->lockreg_off = desc->lock_offset;
158 178
159 clk = clk_register(dev, &icst->hw); 179 clk = clk_register(dev, &icst->hw);
160 if (IS_ERR(clk)) { 180 if (IS_ERR(clk)) {
@@ -164,4 +184,112 @@ struct clk *icst_clk_register(struct device *dev,
164 184
165 return clk; 185 return clk;
166} 186}
187
188struct clk *icst_clk_register(struct device *dev,
189 const struct clk_icst_desc *desc,
190 const char *name,
191 const char *parent_name,
192 void __iomem *base)
193{
194 struct regmap_config icst_regmap_conf = {
195 .reg_bits = 32,
196 .val_bits = 32,
197 .reg_stride = 4,
198 };
199 struct regmap *map;
200
201 map = regmap_init_mmio(dev, base, &icst_regmap_conf);
202 if (IS_ERR(map)) {
203 pr_err("could not initialize ICST regmap\n");
204 return ERR_CAST(map);
205 }
206 return icst_clk_setup(dev, desc, name, parent_name, map);
207}
167EXPORT_SYMBOL_GPL(icst_clk_register); 208EXPORT_SYMBOL_GPL(icst_clk_register);
209
210#ifdef CONFIG_OF
211/*
212 * In a device tree, an memory-mapped ICST clock appear as a child
213 * of a syscon node. Assume this and probe it only as a child of a
214 * syscon.
215 */
216
217static const struct icst_params icst525_params = {
218 .vco_max = ICST525_VCO_MAX_5V,
219 .vco_min = ICST525_VCO_MIN,
220 .vd_min = 8,
221 .vd_max = 263,
222 .rd_min = 3,
223 .rd_max = 65,
224 .s2div = icst525_s2div,
225 .idx2s = icst525_idx2s,
226};
227
228static const struct icst_params icst307_params = {
229 .vco_max = ICST307_VCO_MAX,
230 .vco_min = ICST307_VCO_MIN,
231 .vd_min = 4 + 8,
232 .vd_max = 511 + 8,
233 .rd_min = 1 + 2,
234 .rd_max = 127 + 2,
235 .s2div = icst307_s2div,
236 .idx2s = icst307_idx2s,
237};
238
239static void __init of_syscon_icst_setup(struct device_node *np)
240{
241 struct device_node *parent;
242 struct regmap *map;
243 struct clk_icst_desc icst_desc;
244 const char *name = np->name;
245 const char *parent_name;
246 struct clk *regclk;
247
248 /* We do not release this reference, we are using it perpetually */
249 parent = of_get_parent(np);
250 if (!parent) {
251 pr_err("no parent node for syscon ICST clock\n");
252 return;
253 }
254 map = syscon_node_to_regmap(parent);
255 if (IS_ERR(map)) {
256 pr_err("no regmap for syscon ICST clock parent\n");
257 return;
258 }
259
260 if (of_property_read_u32(np, "vco-offset", &icst_desc.vco_offset)) {
261 pr_err("no VCO register offset for ICST clock\n");
262 return;
263 }
264 if (of_property_read_u32(np, "lock-offset", &icst_desc.lock_offset)) {
265 pr_err("no lock register offset for ICST clock\n");
266 return;
267 }
268
269 if (of_device_is_compatible(np, "arm,syscon-icst525"))
270 icst_desc.params = &icst525_params;
271 else if (of_device_is_compatible(np, "arm,syscon-icst307"))
272 icst_desc.params = &icst307_params;
273 else {
274 pr_err("unknown ICST clock %s\n", name);
275 return;
276 }
277
278 /* Parent clock name is not the same as node parent */
279 parent_name = of_clk_get_parent_name(np, 0);
280
281 regclk = icst_clk_setup(NULL, &icst_desc, name, parent_name, map);
282 if (IS_ERR(regclk)) {
283 pr_err("error setting up syscon ICST clock %s\n", name);
284 return;
285 }
286 of_clk_add_provider(np, of_clk_src_simple_get, regclk);
287 pr_debug("registered syscon ICST clock %s\n", name);
288}
289
290CLK_OF_DECLARE(arm_syscon_icst525_clk,
291 "arm,syscon-icst525", of_syscon_icst_setup);
292CLK_OF_DECLARE(arm_syscon_icst307_clk,
293 "arm,syscon-icst307", of_syscon_icst_setup);
294
295#endif
diff --git a/drivers/clk/versatile/clk-realview.c b/drivers/clk/versatile/clk-realview.c
index 86f70997d59d..bd4dd2463e23 100644
--- a/drivers/clk/versatile/clk-realview.c
+++ b/drivers/clk/versatile/clk-realview.c
@@ -11,11 +11,15 @@
11#include <linux/io.h> 11#include <linux/io.h>
12#include <linux/clk-provider.h> 12#include <linux/clk-provider.h>
13 13
14#include <mach/hardware.h>
15#include <mach/platform.h>
16
17#include "clk-icst.h" 14#include "clk-icst.h"
18 15
16#define REALVIEW_SYS_OSC0_OFFSET 0x0C
17#define REALVIEW_SYS_OSC1_OFFSET 0x10
18#define REALVIEW_SYS_OSC2_OFFSET 0x14
19#define REALVIEW_SYS_OSC3_OFFSET 0x18
20#define REALVIEW_SYS_OSC4_OFFSET 0x1C /* OSC1 for RealView/AB */
21#define REALVIEW_SYS_LOCK_OFFSET 0x20
22
19/* 23/*
20 * Implementation of the ARM RealView clock trees. 24 * Implementation of the ARM RealView clock trees.
21 */ 25 */
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index cb212ebb39ff..c88dd24a4b1f 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -344,13 +344,6 @@ config GPIO_RCAR
344 help 344 help
345 Say yes here to support GPIO on Renesas R-Car SoCs. 345 Say yes here to support GPIO on Renesas R-Car SoCs.
346 346
347config GPIO_SAMSUNG
348 bool
349 depends on PLAT_SAMSUNG
350 help
351 Legacy GPIO support. Use only for platforms without support for
352 pinctrl.
353
354config GPIO_SPEAR_SPICS 347config GPIO_SPEAR_SPICS
355 bool "ST SPEAr13xx SPI Chip Select as GPIO support" 348 bool "ST SPEAr13xx SPI Chip Select as GPIO support"
356 depends on PLAT_SPEAR 349 depends on PLAT_SPEAR
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 548e9b5718ee..ece7d7cbdc80 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -80,7 +80,6 @@ obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
80obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o 80obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
81obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o 81obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
82obj-$(CONFIG_GPIO_RCAR) += gpio-rcar.o 82obj-$(CONFIG_GPIO_RCAR) += gpio-rcar.o
83obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o
84obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o 83obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o
85obj-$(CONFIG_GPIO_SCH) += gpio-sch.o 84obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
86obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o 85obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o
diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
index 3a2dbb3b4926..c15756d7bf7f 100644
--- a/drivers/iio/adc/exynos_adc.c
+++ b/drivers/iio/adc/exynos_adc.c
@@ -35,6 +35,7 @@
35#include <linux/regulator/consumer.h> 35#include <linux/regulator/consumer.h>
36#include <linux/of_platform.h> 36#include <linux/of_platform.h>
37#include <linux/err.h> 37#include <linux/err.h>
38#include <linux/input.h>
38 39
39#include <linux/iio/iio.h> 40#include <linux/iio/iio.h>
40#include <linux/iio/machine.h> 41#include <linux/iio/machine.h>
@@ -42,12 +43,18 @@
42#include <linux/mfd/syscon.h> 43#include <linux/mfd/syscon.h>
43#include <linux/regmap.h> 44#include <linux/regmap.h>
44 45
46#include <linux/platform_data/touchscreen-s3c2410.h>
47
45/* S3C/EXYNOS4412/5250 ADC_V1 registers definitions */ 48/* S3C/EXYNOS4412/5250 ADC_V1 registers definitions */
46#define ADC_V1_CON(x) ((x) + 0x00) 49#define ADC_V1_CON(x) ((x) + 0x00)
50#define ADC_V1_TSC(x) ((x) + 0x04)
47#define ADC_V1_DLY(x) ((x) + 0x08) 51#define ADC_V1_DLY(x) ((x) + 0x08)
48#define ADC_V1_DATX(x) ((x) + 0x0C) 52#define ADC_V1_DATX(x) ((x) + 0x0C)
53#define ADC_V1_DATY(x) ((x) + 0x10)
54#define ADC_V1_UPDN(x) ((x) + 0x14)
49#define ADC_V1_INTCLR(x) ((x) + 0x18) 55#define ADC_V1_INTCLR(x) ((x) + 0x18)
50#define ADC_V1_MUX(x) ((x) + 0x1c) 56#define ADC_V1_MUX(x) ((x) + 0x1c)
57#define ADC_V1_CLRINTPNDNUP(x) ((x) + 0x20)
51 58
52/* S3C2410 ADC registers definitions */ 59/* S3C2410 ADC registers definitions */
53#define ADC_S3C2410_MUX(x) ((x) + 0x18) 60#define ADC_S3C2410_MUX(x) ((x) + 0x18)
@@ -71,6 +78,30 @@
71#define ADC_S3C2410_DATX_MASK 0x3FF 78#define ADC_S3C2410_DATX_MASK 0x3FF
72#define ADC_S3C2416_CON_RES_SEL (1u << 3) 79#define ADC_S3C2416_CON_RES_SEL (1u << 3)
73 80
81/* touch screen always uses channel 0 */
82#define ADC_S3C2410_MUX_TS 0
83
84/* ADCTSC Register Bits */
85#define ADC_S3C2443_TSC_UD_SEN (1u << 8)
86#define ADC_S3C2410_TSC_YM_SEN (1u << 7)
87#define ADC_S3C2410_TSC_YP_SEN (1u << 6)
88#define ADC_S3C2410_TSC_XM_SEN (1u << 5)
89#define ADC_S3C2410_TSC_XP_SEN (1u << 4)
90#define ADC_S3C2410_TSC_PULL_UP_DISABLE (1u << 3)
91#define ADC_S3C2410_TSC_AUTO_PST (1u << 2)
92#define ADC_S3C2410_TSC_XY_PST(x) (((x) & 0x3) << 0)
93
94#define ADC_TSC_WAIT4INT (ADC_S3C2410_TSC_YM_SEN | \
95 ADC_S3C2410_TSC_YP_SEN | \
96 ADC_S3C2410_TSC_XP_SEN | \
97 ADC_S3C2410_TSC_XY_PST(3))
98
99#define ADC_TSC_AUTOPST (ADC_S3C2410_TSC_YM_SEN | \
100 ADC_S3C2410_TSC_YP_SEN | \
101 ADC_S3C2410_TSC_XP_SEN | \
102 ADC_S3C2410_TSC_AUTO_PST | \
103 ADC_S3C2410_TSC_XY_PST(0))
104
74/* Bit definitions for ADC_V2 */ 105/* Bit definitions for ADC_V2 */
75#define ADC_V2_CON1_SOFT_RESET (1u << 2) 106#define ADC_V2_CON1_SOFT_RESET (1u << 2)
76 107
@@ -88,7 +119,9 @@
88/* Bit definitions common for ADC_V1 and ADC_V2 */ 119/* Bit definitions common for ADC_V1 and ADC_V2 */
89#define ADC_CON_EN_START (1u << 0) 120#define ADC_CON_EN_START (1u << 0)
90#define ADC_CON_EN_START_MASK (0x3 << 0) 121#define ADC_CON_EN_START_MASK (0x3 << 0)
122#define ADC_DATX_PRESSED (1u << 15)
91#define ADC_DATX_MASK 0xFFF 123#define ADC_DATX_MASK 0xFFF
124#define ADC_DATY_MASK 0xFFF
92 125
93#define EXYNOS_ADC_TIMEOUT (msecs_to_jiffies(100)) 126#define EXYNOS_ADC_TIMEOUT (msecs_to_jiffies(100))
94 127
@@ -98,17 +131,24 @@
98struct exynos_adc { 131struct exynos_adc {
99 struct exynos_adc_data *data; 132 struct exynos_adc_data *data;
100 struct device *dev; 133 struct device *dev;
134 struct input_dev *input;
101 void __iomem *regs; 135 void __iomem *regs;
102 struct regmap *pmu_map; 136 struct regmap *pmu_map;
103 struct clk *clk; 137 struct clk *clk;
104 struct clk *sclk; 138 struct clk *sclk;
105 unsigned int irq; 139 unsigned int irq;
140 unsigned int tsirq;
141 unsigned int delay;
106 struct regulator *vdd; 142 struct regulator *vdd;
107 143
108 struct completion completion; 144 struct completion completion;
109 145
110 u32 value; 146 u32 value;
111 unsigned int version; 147 unsigned int version;
148
149 bool read_ts;
150 u32 ts_x;
151 u32 ts_y;
112}; 152};
113 153
114struct exynos_adc_data { 154struct exynos_adc_data {
@@ -197,6 +237,9 @@ static void exynos_adc_v1_init_hw(struct exynos_adc *info)
197 /* Enable 12-bit ADC resolution */ 237 /* Enable 12-bit ADC resolution */
198 con1 |= ADC_V1_CON_RES; 238 con1 |= ADC_V1_CON_RES;
199 writel(con1, ADC_V1_CON(info->regs)); 239 writel(con1, ADC_V1_CON(info->regs));
240
241 /* set touchscreen delay */
242 writel(info->delay, ADC_V1_DLY(info->regs));
200} 243}
201 244
202static void exynos_adc_v1_exit_hw(struct exynos_adc *info) 245static void exynos_adc_v1_exit_hw(struct exynos_adc *info)
@@ -480,8 +523,8 @@ static int exynos_read_raw(struct iio_dev *indio_dev,
480 if (info->data->start_conv) 523 if (info->data->start_conv)
481 info->data->start_conv(info, chan->address); 524 info->data->start_conv(info, chan->address);
482 525
483 timeout = wait_for_completion_timeout 526 timeout = wait_for_completion_timeout(&info->completion,
484 (&info->completion, EXYNOS_ADC_TIMEOUT); 527 EXYNOS_ADC_TIMEOUT);
485 if (timeout == 0) { 528 if (timeout == 0) {
486 dev_warn(&indio_dev->dev, "Conversion timed out! Resetting\n"); 529 dev_warn(&indio_dev->dev, "Conversion timed out! Resetting\n");
487 if (info->data->init_hw) 530 if (info->data->init_hw)
@@ -498,13 +541,55 @@ static int exynos_read_raw(struct iio_dev *indio_dev,
498 return ret; 541 return ret;
499} 542}
500 543
544static int exynos_read_s3c64xx_ts(struct iio_dev *indio_dev, int *x, int *y)
545{
546 struct exynos_adc *info = iio_priv(indio_dev);
547 unsigned long timeout;
548 int ret;
549
550 mutex_lock(&indio_dev->mlock);
551 info->read_ts = true;
552
553 reinit_completion(&info->completion);
554
555 writel(ADC_S3C2410_TSC_PULL_UP_DISABLE | ADC_TSC_AUTOPST,
556 ADC_V1_TSC(info->regs));
557
558 /* Select the ts channel to be used and Trigger conversion */
559 info->data->start_conv(info, ADC_S3C2410_MUX_TS);
560
561 timeout = wait_for_completion_timeout(&info->completion,
562 EXYNOS_ADC_TIMEOUT);
563 if (timeout == 0) {
564 dev_warn(&indio_dev->dev, "Conversion timed out! Resetting\n");
565 if (info->data->init_hw)
566 info->data->init_hw(info);
567 ret = -ETIMEDOUT;
568 } else {
569 *x = info->ts_x;
570 *y = info->ts_y;
571 ret = 0;
572 }
573
574 info->read_ts = false;
575 mutex_unlock(&indio_dev->mlock);
576
577 return ret;
578}
579
501static irqreturn_t exynos_adc_isr(int irq, void *dev_id) 580static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
502{ 581{
503 struct exynos_adc *info = (struct exynos_adc *)dev_id; 582 struct exynos_adc *info = (struct exynos_adc *)dev_id;
504 u32 mask = info->data->mask; 583 u32 mask = info->data->mask;
505 584
506 /* Read value */ 585 /* Read value */
507 info->value = readl(ADC_V1_DATX(info->regs)) & mask; 586 if (info->read_ts) {
587 info->ts_x = readl(ADC_V1_DATX(info->regs));
588 info->ts_y = readl(ADC_V1_DATY(info->regs));
589 writel(ADC_TSC_WAIT4INT | ADC_S3C2443_TSC_UD_SEN, ADC_V1_TSC(info->regs));
590 } else {
591 info->value = readl(ADC_V1_DATX(info->regs)) & mask;
592 }
508 593
509 /* clear irq */ 594 /* clear irq */
510 if (info->data->clear_irq) 595 if (info->data->clear_irq)
@@ -515,6 +600,46 @@ static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
515 return IRQ_HANDLED; 600 return IRQ_HANDLED;
516} 601}
517 602
603/*
604 * Here we (ab)use a threaded interrupt handler to stay running
605 * for as long as the touchscreen remains pressed, we report
606 * a new event with the latest data and then sleep until the
607 * next timer tick. This mirrors the behavior of the old
608 * driver, with much less code.
609 */
610static irqreturn_t exynos_ts_isr(int irq, void *dev_id)
611{
612 struct exynos_adc *info = dev_id;
613 struct iio_dev *dev = dev_get_drvdata(info->dev);
614 u32 x, y;
615 bool pressed;
616 int ret;
617
618 while (info->input->users) {
619 ret = exynos_read_s3c64xx_ts(dev, &x, &y);
620 if (ret == -ETIMEDOUT)
621 break;
622
623 pressed = x & y & ADC_DATX_PRESSED;
624 if (!pressed) {
625 input_report_key(info->input, BTN_TOUCH, 0);
626 input_sync(info->input);
627 break;
628 }
629
630 input_report_abs(info->input, ABS_X, x & ADC_DATX_MASK);
631 input_report_abs(info->input, ABS_Y, y & ADC_DATY_MASK);
632 input_report_key(info->input, BTN_TOUCH, 1);
633 input_sync(info->input);
634
635 msleep(1);
636 };
637
638 writel(0, ADC_V1_CLRINTPNDNUP(info->regs));
639
640 return IRQ_HANDLED;
641}
642
518static int exynos_adc_reg_access(struct iio_dev *indio_dev, 643static int exynos_adc_reg_access(struct iio_dev *indio_dev,
519 unsigned reg, unsigned writeval, 644 unsigned reg, unsigned writeval,
520 unsigned *readval) 645 unsigned *readval)
@@ -566,18 +691,72 @@ static int exynos_adc_remove_devices(struct device *dev, void *c)
566 return 0; 691 return 0;
567} 692}
568 693
694static int exynos_adc_ts_open(struct input_dev *dev)
695{
696 struct exynos_adc *info = input_get_drvdata(dev);
697
698 enable_irq(info->tsirq);
699
700 return 0;
701}
702
703static void exynos_adc_ts_close(struct input_dev *dev)
704{
705 struct exynos_adc *info = input_get_drvdata(dev);
706
707 disable_irq(info->tsirq);
708}
709
710static int exynos_adc_ts_init(struct exynos_adc *info)
711{
712 int ret;
713
714 if (info->tsirq <= 0)
715 return -ENODEV;
716
717 info->input = input_allocate_device();
718 if (!info->input)
719 return -ENOMEM;
720
721 info->input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
722 info->input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
723
724 input_set_abs_params(info->input, ABS_X, 0, 0x3FF, 0, 0);
725 input_set_abs_params(info->input, ABS_Y, 0, 0x3FF, 0, 0);
726
727 info->input->name = "S3C24xx TouchScreen";
728 info->input->id.bustype = BUS_HOST;
729 info->input->open = exynos_adc_ts_open;
730 info->input->close = exynos_adc_ts_close;
731
732 input_set_drvdata(info->input, info);
733
734 ret = input_register_device(info->input);
735 if (ret) {
736 input_free_device(info->input);
737 return ret;
738 }
739
740 disable_irq(info->tsirq);
741 ret = request_threaded_irq(info->tsirq, NULL, exynos_ts_isr,
742 IRQF_ONESHOT, "touchscreen", info);
743 if (ret)
744 input_unregister_device(info->input);
745
746 return ret;
747}
748
569static int exynos_adc_probe(struct platform_device *pdev) 749static int exynos_adc_probe(struct platform_device *pdev)
570{ 750{
571 struct exynos_adc *info = NULL; 751 struct exynos_adc *info = NULL;
572 struct device_node *np = pdev->dev.of_node; 752 struct device_node *np = pdev->dev.of_node;
753 struct s3c2410_ts_mach_info *pdata = dev_get_platdata(&pdev->dev);
573 struct iio_dev *indio_dev = NULL; 754 struct iio_dev *indio_dev = NULL;
574 struct resource *mem; 755 struct resource *mem;
756 bool has_ts = false;
575 int ret = -ENODEV; 757 int ret = -ENODEV;
576 int irq; 758 int irq;
577 759
578 if (!np)
579 return ret;
580
581 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct exynos_adc)); 760 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(struct exynos_adc));
582 if (!indio_dev) { 761 if (!indio_dev) {
583 dev_err(&pdev->dev, "failed allocating iio device\n"); 762 dev_err(&pdev->dev, "failed allocating iio device\n");
@@ -613,8 +792,14 @@ static int exynos_adc_probe(struct platform_device *pdev)
613 dev_err(&pdev->dev, "no irq resource?\n"); 792 dev_err(&pdev->dev, "no irq resource?\n");
614 return irq; 793 return irq;
615 } 794 }
616
617 info->irq = irq; 795 info->irq = irq;
796
797 irq = platform_get_irq(pdev, 1);
798 if (irq == -EPROBE_DEFER)
799 return irq;
800
801 info->tsirq = irq;
802
618 info->dev = &pdev->dev; 803 info->dev = &pdev->dev;
619 804
620 init_completion(&info->completion); 805 init_completion(&info->completion);
@@ -680,6 +865,22 @@ static int exynos_adc_probe(struct platform_device *pdev)
680 if (info->data->init_hw) 865 if (info->data->init_hw)
681 info->data->init_hw(info); 866 info->data->init_hw(info);
682 867
868 /* leave out any TS related code if unreachable */
869 if (IS_REACHABLE(CONFIG_INPUT)) {
870 has_ts = of_property_read_bool(pdev->dev.of_node,
871 "has-touchscreen") || pdata;
872 }
873
874 if (pdata)
875 info->delay = pdata->delay;
876 else
877 info->delay = 10000;
878
879 if (has_ts)
880 ret = exynos_adc_ts_init(info);
881 if (ret)
882 goto err_iio;
883
683 ret = of_platform_populate(np, exynos_adc_match, NULL, &indio_dev->dev); 884 ret = of_platform_populate(np, exynos_adc_match, NULL, &indio_dev->dev);
684 if (ret < 0) { 885 if (ret < 0) {
685 dev_err(&pdev->dev, "failed adding child nodes\n"); 886 dev_err(&pdev->dev, "failed adding child nodes\n");
@@ -691,6 +892,11 @@ static int exynos_adc_probe(struct platform_device *pdev)
691err_of_populate: 892err_of_populate:
692 device_for_each_child(&indio_dev->dev, NULL, 893 device_for_each_child(&indio_dev->dev, NULL,
693 exynos_adc_remove_devices); 894 exynos_adc_remove_devices);
895 if (has_ts) {
896 input_unregister_device(info->input);
897 free_irq(info->tsirq, info);
898 }
899err_iio:
694 iio_device_unregister(indio_dev); 900 iio_device_unregister(indio_dev);
695err_irq: 901err_irq:
696 free_irq(info->irq, info); 902 free_irq(info->irq, info);
@@ -710,6 +916,10 @@ static int exynos_adc_remove(struct platform_device *pdev)
710 struct iio_dev *indio_dev = platform_get_drvdata(pdev); 916 struct iio_dev *indio_dev = platform_get_drvdata(pdev);
711 struct exynos_adc *info = iio_priv(indio_dev); 917 struct exynos_adc *info = iio_priv(indio_dev);
712 918
919 if (IS_REACHABLE(CONFIG_INPUT)) {
920 free_irq(info->tsirq, info);
921 input_unregister_device(info->input);
922 }
713 device_for_each_child(&indio_dev->dev, NULL, 923 device_for_each_child(&indio_dev->dev, NULL,
714 exynos_adc_remove_devices); 924 exynos_adc_remove_devices);
715 iio_device_unregister(indio_dev); 925 iio_device_unregister(indio_dev);
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 53a97b379c9f..66c62641b59a 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -376,7 +376,7 @@ config TOUCHSCREEN_IPROC
376config TOUCHSCREEN_S3C2410 376config TOUCHSCREEN_S3C2410
377 tristate "Samsung S3C2410/generic touchscreen input driver" 377 tristate "Samsung S3C2410/generic touchscreen input driver"
378 depends on ARCH_S3C24XX || SAMSUNG_DEV_TS 378 depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
379 select S3C_ADC 379 depends on S3C_ADC
380 help 380 help
381 Say Y here if you have the s3c2410 touchscreen. 381 Say Y here if you have the s3c2410 touchscreen.
382 382
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index cadf104e3074..598ab3f0e0ac 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -210,12 +210,7 @@ int __init fpga_irq_of_init(struct device_node *node,
210 parent_irq = -1; 210 parent_irq = -1;
211 } 211 }
212 212
213#ifdef CONFIG_ARCH_VERSATILE
214 fpga_irq_init(base, node->name, IRQ_SIC_START, parent_irq, valid_mask,
215 node);
216#else
217 fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node); 213 fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node);
218#endif
219 214
220 writel(clear_mask, base + IRQ_ENABLE_CLEAR); 215 writel(clear_mask, base + IRQ_ENABLE_CLEAR);
221 writel(clear_mask, base + FIQ_ENABLE_CLEAR); 216 writel(clear_mask, base + FIQ_ENABLE_CLEAR);
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index 9536b804424a..9b1c2e88dd0d 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -3,6 +3,7 @@
3# 3#
4 4
5obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/ 5obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/
6obj-$(CONFIG_ARCH_DOVE) += dove/
6obj-$(CONFIG_MACH_DOVE) += dove/ 7obj-$(CONFIG_MACH_DOVE) += dove/
7obj-y += fsl/ 8obj-y += fsl/
8obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/ 9obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
diff --git a/drivers/soc/dove/pmu.c b/drivers/soc/dove/pmu.c
index abd087917f80..039374e9fdc0 100644
--- a/drivers/soc/dove/pmu.c
+++ b/drivers/soc/dove/pmu.c
@@ -305,6 +305,49 @@ static int __init dove_init_pmu_irq(struct pmu_data *pmu, int irq)
305 return 0; 305 return 0;
306} 306}
307 307
308int __init dove_init_pmu_legacy(const struct dove_pmu_initdata *initdata)
309{
310 const struct dove_pmu_domain_initdata *domain_initdata;
311 struct pmu_data *pmu;
312 int ret;
313
314 pmu = kzalloc(sizeof(*pmu), GFP_KERNEL);
315 if (!pmu)
316 return -ENOMEM;
317
318 spin_lock_init(&pmu->lock);
319 pmu->pmc_base = initdata->pmc_base;
320 pmu->pmu_base = initdata->pmu_base;
321
322 pmu_reset_init(pmu);
323 for (domain_initdata = initdata->domains; domain_initdata->name;
324 domain_initdata++) {
325 struct pmu_domain *domain;
326
327 domain = kzalloc(sizeof(*domain), GFP_KERNEL);
328 if (domain) {
329 domain->pmu = pmu;
330 domain->pwr_mask = domain_initdata->pwr_mask;
331 domain->rst_mask = domain_initdata->rst_mask;
332 domain->iso_mask = domain_initdata->iso_mask;
333 domain->base.name = domain_initdata->name;
334
335 __pmu_domain_register(domain, NULL);
336 }
337 }
338
339 ret = dove_init_pmu_irq(pmu, initdata->irq);
340 if (ret)
341 pr_err("dove_init_pmu_irq() failed: %d\n", ret);
342
343 if (pmu->irq_domain)
344 irq_domain_associate_many(pmu->irq_domain,
345 initdata->irq_domain_start,
346 0, NR_PMU_IRQS);
347
348 return 0;
349}
350
308/* 351/*
309 * pmu: power-manager@d0000 { 352 * pmu: power-manager@d0000 {
310 * compatible = "marvell,dove-pmu"; 353 * compatible = "marvell,dove-pmu";
diff --git a/drivers/soc/versatile/soc-realview.c b/drivers/soc/versatile/soc-realview.c
index e642c4540dda..c337764de867 100644
--- a/drivers/soc/versatile/soc-realview.c
+++ b/drivers/soc/versatile/soc-realview.c
@@ -36,6 +36,8 @@ static const char *realview_board_str(u32 id)
36 switch ((id >> 16) & 0xfff) { 36 switch ((id >> 16) & 0xfff) {
37 case 0x0147: 37 case 0x0147:
38 return "HBI-0147"; 38 return "HBI-0147";
39 case 0x0159:
40 return "HBI-0159";
39 default: 41 default:
40 return "Unknown"; 42 return "Unknown";
41 } 43 }
@@ -44,6 +46,8 @@ static const char *realview_board_str(u32 id)
44static const char *realview_arch_str(u32 id) 46static const char *realview_arch_str(u32 id)
45{ 47{
46 switch ((id >> 8) & 0xf) { 48 switch ((id >> 8) & 0xf) {
49 case 0x04:
50 return "AHB";
47 case 0x05: 51 case 0x05:
48 return "Multi-layer AXI"; 52 return "Multi-layer AXI";
49 default: 53 default:
diff --git a/include/linux/clk/mmp.h b/include/linux/clk/mmp.h
new file mode 100644
index 000000000000..607321fa2c2b
--- /dev/null
+++ b/include/linux/clk/mmp.h
@@ -0,0 +1,17 @@
1#ifndef __CLK_MMP_H
2#define __CLK_MMP_H
3
4#include <linux/types.h>
5
6extern void pxa168_clk_init(phys_addr_t mpmu_phys,
7 phys_addr_t apmu_phys,
8 phys_addr_t apbc_phys);
9extern void pxa910_clk_init(phys_addr_t mpmu_phys,
10 phys_addr_t apmu_phys,
11 phys_addr_t apbc_phys,
12 phys_addr_t apbcp_phys);
13extern void mmp2_clk_init(phys_addr_t mpmu_phys,
14 phys_addr_t apmu_phys,
15 phys_addr_t apbc_phys);
16
17#endif
diff --git a/include/linux/platform_data/touchscreen-s3c2410.h b/include/linux/platform_data/touchscreen-s3c2410.h
index 58dc7c5ae63b..71eccaa9835d 100644
--- a/include/linux/platform_data/touchscreen-s3c2410.h
+++ b/include/linux/platform_data/touchscreen-s3c2410.h
@@ -17,6 +17,7 @@ struct s3c2410_ts_mach_info {
17}; 17};
18 18
19extern void s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *); 19extern void s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *);
20extern void s3c64xx_ts_set_platdata(struct s3c2410_ts_mach_info *);
20 21
21/* defined by architecture to configure gpio */ 22/* defined by architecture to configure gpio */
22extern void s3c24xx_ts_cfg_gpio(struct platform_device *dev); 23extern void s3c24xx_ts_cfg_gpio(struct platform_device *dev);
diff --git a/include/linux/soc/dove/pmu.h b/include/linux/soc/dove/pmu.h
index 9c99f84bcc0e..765386972b55 100644
--- a/include/linux/soc/dove/pmu.h
+++ b/include/linux/soc/dove/pmu.h
@@ -1,6 +1,25 @@
1#ifndef LINUX_SOC_DOVE_PMU_H 1#ifndef LINUX_SOC_DOVE_PMU_H
2#define LINUX_SOC_DOVE_PMU_H 2#define LINUX_SOC_DOVE_PMU_H
3 3
4#include <linux/types.h>
5
6struct dove_pmu_domain_initdata {
7 u32 pwr_mask;
8 u32 rst_mask;
9 u32 iso_mask;
10 const char *name;
11};
12
13struct dove_pmu_initdata {
14 void __iomem *pmc_base;
15 void __iomem *pmu_base;
16 int irq;
17 int irq_domain_start;
18 const struct dove_pmu_domain_initdata *domains;
19};
20
21int dove_init_pmu_legacy(const struct dove_pmu_initdata *);
22
4int dove_init_pmu(void); 23int dove_init_pmu(void);
5 24
6#endif 25#endif
diff --git a/sound/soc/samsung/smartq_wm8987.c b/sound/soc/samsung/smartq_wm8987.c
index a0fe37fbed9f..425ee2ba37f0 100644
--- a/sound/soc/samsung/smartq_wm8987.c
+++ b/sound/soc/samsung/smartq_wm8987.c
@@ -13,15 +13,12 @@
13 * 13 *
14 */ 14 */
15 15
16#include <linux/gpio.h> 16#include <linux/gpio/consumer.h>
17#include <linux/module.h> 17#include <linux/module.h>
18 18
19#include <sound/soc.h> 19#include <sound/soc.h>
20#include <sound/jack.h> 20#include <sound/jack.h>
21 21
22#include <mach/gpio-samsung.h>
23#include <asm/mach-types.h>
24
25#include "i2s.h" 22#include "i2s.h"
26#include "../codecs/wm8750.h" 23#include "../codecs/wm8750.h"
27 24
@@ -96,7 +93,7 @@ static struct snd_soc_jack_pin smartq_jack_pins[] = {
96 93
97static struct snd_soc_jack_gpio smartq_jack_gpios[] = { 94static struct snd_soc_jack_gpio smartq_jack_gpios[] = {
98 { 95 {
99 .gpio = S3C64XX_GPL(12), 96 .gpio = -1,
100 .name = "headphone detect", 97 .name = "headphone detect",
101 .report = SND_JACK_HEADPHONE, 98 .report = SND_JACK_HEADPHONE,
102 .debounce_time = 200, 99 .debounce_time = 200,
@@ -113,7 +110,9 @@ static int smartq_speaker_event(struct snd_soc_dapm_widget *w,
113 struct snd_kcontrol *k, 110 struct snd_kcontrol *k,
114 int event) 111 int event)
115{ 112{
116 gpio_set_value(S3C64XX_GPK(12), SND_SOC_DAPM_EVENT_OFF(event)); 113 struct gpio_desc *gpio = snd_soc_card_get_drvdata(&snd_soc_smartq);
114
115 gpiod_set_value(gpio, SND_SOC_DAPM_EVENT_OFF(event));
117 116
118 return 0; 117 return 0;
119} 118}
@@ -199,62 +198,39 @@ static struct snd_soc_card snd_soc_smartq = {
199 .num_controls = ARRAY_SIZE(wm8987_smartq_controls), 198 .num_controls = ARRAY_SIZE(wm8987_smartq_controls),
200}; 199};
201 200
202static struct platform_device *smartq_snd_device; 201static int smartq_probe(struct platform_device *pdev)
203
204static int __init smartq_init(void)
205{ 202{
203 struct gpio_desc *gpio;
206 int ret; 204 int ret;
207 205
208 if (!machine_is_smartq7() && !machine_is_smartq5()) { 206 platform_set_drvdata(pdev, &snd_soc_smartq);
209 pr_info("Only SmartQ is supported by this ASoC driver\n");
210 return -ENODEV;
211 }
212
213 smartq_snd_device = platform_device_alloc("soc-audio", -1);
214 if (!smartq_snd_device)
215 return -ENOMEM;
216
217 platform_set_drvdata(smartq_snd_device, &snd_soc_smartq);
218
219 ret = platform_device_add(smartq_snd_device);
220 if (ret) {
221 platform_device_put(smartq_snd_device);
222 return ret;
223 }
224 207
225 /* Initialise GPIOs used by amplifiers */ 208 /* Initialise GPIOs used by amplifiers */
226 ret = gpio_request(S3C64XX_GPK(12), "amplifiers shutdown"); 209 gpio = devm_gpiod_get(&pdev->dev, "amplifiers shutdown",
227 if (ret) { 210 GPIOD_OUT_HIGH);
228 dev_err(&smartq_snd_device->dev, "Failed to register GPK12\n"); 211 if (IS_ERR(gpio)) {
229 goto err_unregister_device; 212 dev_err(&pdev->dev, "Failed to register GPK12\n");
213 ret = PTR_ERR(gpio);
214 goto out;
230 } 215 }
216 snd_soc_card_set_drvdata(&snd_soc_smartq, gpio);
231 217
232 /* Disable amplifiers */ 218 ret = devm_snd_soc_register_card(&pdev->dev, &snd_soc_smartq);
233 ret = gpio_direction_output(S3C64XX_GPK(12), 1); 219 if (ret)
234 if (ret) { 220 dev_err(&pdev->dev, "Failed to register card\n");
235 dev_err(&smartq_snd_device->dev, "Failed to configure GPK12\n");
236 goto err_free_gpio_amp_shut;
237 }
238
239 return 0;
240
241err_free_gpio_amp_shut:
242 gpio_free(S3C64XX_GPK(12));
243err_unregister_device:
244 platform_device_unregister(smartq_snd_device);
245 221
222out:
246 return ret; 223 return ret;
247} 224}
248 225
249static void __exit smartq_exit(void) 226static struct platform_driver smartq_driver = {
250{ 227 .driver = {
251 gpio_free(S3C64XX_GPK(12)); 228 .name = "smartq-audio",
252 229 },
253 platform_device_unregister(smartq_snd_device); 230 .probe = smartq_probe,
254} 231};
255 232
256module_init(smartq_init); 233module_platform_driver(smartq_driver);
257module_exit(smartq_exit);
258 234
259/* Module information */ 235/* Module information */
260MODULE_AUTHOR("Maurus Cuelenaere <mcuelenaere@gmail.com>"); 236MODULE_AUTHOR("Maurus Cuelenaere <mcuelenaere@gmail.com>");