From 871480933a1c28f8a9fed4c4d34d06c439a7a422 Mon Sep 17 00:00:00 2001
From: Srikant Patnaik
Date: Sun, 11 Jan 2015 12:28:04 +0530
Subject: Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
---
arch/arm/Kconfig | 2343 ++++++++
arch/arm/Kconfig-nommu | 52 +
arch/arm/Kconfig.debug | 356 ++
arch/arm/Makefile | 316 ++
arch/arm/boot/Makefile | 128 +
arch/arm/boot/bootp/Makefile | 27 +
arch/arm/boot/bootp/bootp.lds | 30 +
arch/arm/boot/bootp/init.S | 88 +
arch/arm/boot/bootp/initrd.S | 6 +
arch/arm/boot/bootp/kernel.S | 6 +
arch/arm/boot/compressed/Makefile | 204 +
arch/arm/boot/compressed/atags_to_fdt.c | 99 +
arch/arm/boot/compressed/big-endian.S | 13 +
arch/arm/boot/compressed/decompress.c | 56 +
arch/arm/boot/compressed/head-sa1100.S | 47 +
arch/arm/boot/compressed/head-shark.S | 139 +
arch/arm/boot/compressed/head-sharpsl.S | 150 +
arch/arm/boot/compressed/head-shmobile.S | 83 +
arch/arm/boot/compressed/head-vt8500.S | 46 +
arch/arm/boot/compressed/head-wmt.S | 52 +
arch/arm/boot/compressed/head-xscale.S | 41 +
arch/arm/boot/compressed/head.S | 1231 +++++
arch/arm/boot/compressed/libfdt_env.h | 15 +
arch/arm/boot/compressed/ll_char_wr.S | 134 +
arch/arm/boot/compressed/misc.c | 154 +
arch/arm/boot/compressed/mmcif-sh7372.c | 88 +
arch/arm/boot/compressed/ofw-shark.c | 260 +
arch/arm/boot/compressed/piggy.gzip.S | 6 +
arch/arm/boot/compressed/piggy.lzma.S | 6 +
arch/arm/boot/compressed/piggy.lzo.S | 6 +
arch/arm/boot/compressed/piggy.xzkern.S | 6 +
arch/arm/boot/compressed/sdhi-sh7372.c | 95 +
arch/arm/boot/compressed/sdhi-shmobile.c | 449 ++
arch/arm/boot/compressed/sdhi-shmobile.h | 11 +
arch/arm/boot/compressed/string.c | 127 +
arch/arm/boot/compressed/vmlinux.lds.in | 76 +
arch/arm/boot/dts/am3517_mt_ventoux.dts | 27 +
arch/arm/boot/dts/at91sam9g20.dtsi | 238 +
arch/arm/boot/dts/at91sam9g25ek.dts | 49 +
arch/arm/boot/dts/at91sam9g45.dtsi | 247 +
arch/arm/boot/dts/at91sam9m10g45ek.dts | 156 +
arch/arm/boot/dts/at91sam9x5.dtsi | 263 +
arch/arm/boot/dts/at91sam9x5cm.dtsi | 74 +
arch/arm/boot/dts/db8500.dtsi | 274 +
arch/arm/boot/dts/exynos4210-origen.dts | 137 +
arch/arm/boot/dts/exynos4210-smdkv310.dts | 182 +
arch/arm/boot/dts/exynos4210.dtsi | 398 ++
arch/arm/boot/dts/exynos5250-smdk5250.dts | 26 +
arch/arm/boot/dts/exynos5250.dtsi | 413 ++
arch/arm/boot/dts/highbank.dts | 209 +
arch/arm/boot/dts/imx27-phytec-phycore.dts | 76 +
arch/arm/boot/dts/imx27.dtsi | 217 +
arch/arm/boot/dts/imx51-babbage.dts | 221 +
arch/arm/boot/dts/imx51.dtsi | 246 +
arch/arm/boot/dts/imx53-ard.dts | 113 +
arch/arm/boot/dts/imx53-evk.dts | 119 +
arch/arm/boot/dts/imx53-qsb.dts | 125 +
arch/arm/boot/dts/imx53-smd.dts | 168 +
arch/arm/boot/dts/imx53.dtsi | 301 ++
arch/arm/boot/dts/imx6q-arm2.dts | 76 +
arch/arm/boot/dts/imx6q-sabrelite.dts | 83 +
arch/arm/boot/dts/imx6q.dtsi | 575 ++
arch/arm/boot/dts/kirkwood-dreamplug.dts | 24 +
arch/arm/boot/dts/kirkwood.dtsi | 36 +
arch/arm/boot/dts/msm8660-surf.dts | 24 +
arch/arm/boot/dts/omap2.dtsi | 67 +
arch/arm/boot/dts/omap3-beagle.dts | 20 +
arch/arm/boot/dts/omap3-evm.dts | 20 +
arch/arm/boot/dts/omap3.dtsi | 117 +
arch/arm/boot/dts/omap4-panda.dts | 20 +
arch/arm/boot/dts/omap4-sdp.dts | 20 +
arch/arm/boot/dts/omap4.dtsi | 159 +
arch/arm/boot/dts/picoxcell-pc3x2.dtsi | 249 +
arch/arm/boot/dts/picoxcell-pc3x3.dtsi | 365 ++
arch/arm/boot/dts/picoxcell-pc7302-pc3x2.dts | 86 +
arch/arm/boot/dts/picoxcell-pc7302-pc3x3.dts | 92 +
arch/arm/boot/dts/prima2-cb.dts | 424 ++
arch/arm/boot/dts/pxa168-aspenite.dts | 38 +
arch/arm/boot/dts/pxa168.dtsi | 98 +
arch/arm/boot/dts/skeleton.dtsi | 13 +
arch/arm/boot/dts/snowball.dts | 139 +
arch/arm/boot/dts/spear600-evb.dts | 47 +
arch/arm/boot/dts/spear600.dtsi | 174 +
arch/arm/boot/dts/tegra-cardhu.dts | 70 +
arch/arm/boot/dts/tegra-harmony.dts | 115 +
arch/arm/boot/dts/tegra-paz00.dts | 134 +
arch/arm/boot/dts/tegra-seaboard.dts | 175 +
arch/arm/boot/dts/tegra-trimslice.dts | 77 +
arch/arm/boot/dts/tegra-ventana.dts | 108 +
arch/arm/boot/dts/tegra20.dtsi | 210 +
arch/arm/boot/dts/tegra30.dtsi | 186 +
arch/arm/boot/dts/testcases/tests-phandle.dtsi | 39 +
arch/arm/boot/dts/testcases/tests.dtsi | 1 +
arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi | 96 +
arch/arm/boot/dts/usb_a9g20.dts | 130 +
arch/arm/boot/dts/versatile-ab.dts | 192 +
arch/arm/boot/dts/versatile-pb.dts | 50 +
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 201 +
arch/arm/boot/dts/vexpress-v2m.dtsi | 200 +
arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 157 +
arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 162 +
arch/arm/boot/dts/vexpress-v2p-ca9.dts | 192 +
arch/arm/boot/dts/zynq-ep107.dts | 52 +
arch/arm/boot/install.sh | 52 +
arch/arm/common/Kconfig | 92 +
arch/arm/common/Makefile | 20 +
arch/arm/common/dmabounce.c | 532 ++
arch/arm/common/fiq_debugger.c | 1388 +++++
arch/arm/common/fiq_debugger_ringbuf.h | 94 +
arch/arm/common/fiq_glue.S | 111 +
arch/arm/common/fiq_glue_setup.c | 100 +
arch/arm/common/gic.c | 812 +++
arch/arm/common/icst.c | 100 +
arch/arm/common/it8152.c | 354 ++
arch/arm/common/locomo.c | 914 ++++
arch/arm/common/pci.c | 62 +
arch/arm/common/pci_wmt.c | 1432 +++++
arch/arm/common/platform.c | 44 +
arch/arm/common/sa1111.c | 1459 +++++
arch/arm/common/scoop.c | 284 +
arch/arm/common/sharpsl_param.c | 62 +
arch/arm/common/timer-sp.c | 191 +
arch/arm/common/uengine.c | 507 ++
arch/arm/common/via82c505.c | 92 +
arch/arm/common/vic.c | 460 ++
arch/arm/configs/Android_NFS_defconfig | 3127 +++++++++++
arch/arm/configs/Android_defconfig | 3632 +++++++++++++
arch/arm/configs/Tinyandroid_defconfig | 2559 +++++++++
arch/arm/configs/acs5k_defconfig | 86 +
arch/arm/configs/acs5k_tiny_defconfig | 80 +
arch/arm/configs/afeb9260_defconfig | 107 +
arch/arm/configs/ag5evm_defconfig | 83 +
arch/arm/configs/am200epdkit_defconfig | 108 +
arch/arm/configs/ap4evb_defconfig | 57 +
arch/arm/configs/assabet_defconfig | 60 +
arch/arm/configs/at91rm9200_defconfig | 322 ++
arch/arm/configs/at91sam9260_defconfig | 91 +
arch/arm/configs/at91sam9261_defconfig | 158 +
arch/arm/configs/at91sam9263_defconfig | 168 +
arch/arm/configs/at91sam9g20_defconfig | 127 +
arch/arm/configs/at91sam9g45_defconfig | 211 +
arch/arm/configs/at91sam9rl_defconfig | 79 +
arch/arm/configs/at91x40_defconfig | 48 +
arch/arm/configs/badge4_defconfig | 122 +
arch/arm/configs/bcmring_defconfig | 79 +
arch/arm/configs/bonito_defconfig | 72 +
arch/arm/configs/cam60_defconfig | 174 +
arch/arm/configs/cerfcube_defconfig | 75 +
arch/arm/configs/cm_x2xx_defconfig | 189 +
arch/arm/configs/cm_x300_defconfig | 178 +
arch/arm/configs/cns3420vb_defconfig | 72 +
arch/arm/configs/colibri_pxa270_defconfig | 180 +
arch/arm/configs/colibri_pxa300_defconfig | 73 +
arch/arm/configs/collie_defconfig | 94 +
arch/arm/configs/corgi_defconfig | 274 +
arch/arm/configs/cpu9260_defconfig | 116 +
arch/arm/configs/cpu9g20_defconfig | 116 +
arch/arm/configs/da8xx_omapl_defconfig | 129 +
arch/arm/configs/davinci_all_defconfig | 194 +
arch/arm/configs/dove_defconfig | 127 +
arch/arm/configs/ebsa110_defconfig | 75 +
arch/arm/configs/edb7211_defconfig | 27 +
arch/arm/configs/em_x270_defconfig | 194 +
arch/arm/configs/ep93xx_defconfig | 124 +
arch/arm/configs/eseries_pxa_defconfig | 118 +
arch/arm/configs/exynos4_defconfig | 68 +
arch/arm/configs/ezx_defconfig | 420 ++
arch/arm/configs/footbridge_defconfig | 127 +
arch/arm/configs/fortunet_defconfig | 28 +
arch/arm/configs/g3evm_defconfig | 57 +
arch/arm/configs/g4evm_defconfig | 57 +
arch/arm/configs/h3600_defconfig | 79 +
arch/arm/configs/h5000_defconfig | 82 +
arch/arm/configs/h7201_defconfig | 27 +
arch/arm/configs/h7202_defconfig | 48 +
arch/arm/configs/hackkit_defconfig | 49 +
arch/arm/configs/imote2_defconfig | 392 ++
arch/arm/configs/imx_v4_v5_defconfig | 191 +
arch/arm/configs/imx_v6_v7_defconfig | 226 +
arch/arm/configs/integrator_defconfig | 90 +
arch/arm/configs/iop13xx_defconfig | 124 +
arch/arm/configs/iop32x_defconfig | 135 +
arch/arm/configs/iop33x_defconfig | 91 +
arch/arm/configs/ixp2000_defconfig | 99 +
arch/arm/configs/ixp23xx_defconfig | 105 +
arch/arm/configs/ixp4xx_defconfig | 205 +
arch/arm/configs/jornada720_defconfig | 112 +
arch/arm/configs/kirkwood_defconfig | 186 +
arch/arm/configs/kota2_defconfig | 122 +
arch/arm/configs/ks8695_defconfig | 75 +
arch/arm/configs/lart_defconfig | 75 +
arch/arm/configs/lpc32xx_defconfig | 145 +
arch/arm/configs/lpd270_defconfig | 65 +
arch/arm/configs/lubbock_defconfig | 56 +
arch/arm/configs/mackerel_defconfig | 138 +
arch/arm/configs/magician_defconfig | 182 +
arch/arm/configs/mainstone_defconfig | 55 +
arch/arm/configs/marzen_defconfig | 87 +
arch/arm/configs/mini2440_defconfig | 386 ++
arch/arm/configs/mmp2_defconfig | 95 +
arch/arm/configs/msm_defconfig | 72 +
arch/arm/configs/mv78xx0_defconfig | 140 +
arch/arm/configs/mxs_defconfig | 146 +
arch/arm/configs/neponset_defconfig | 90 +
arch/arm/configs/netwinder_defconfig | 87 +
arch/arm/configs/netx_defconfig | 86 +
arch/arm/configs/nhk8815_defconfig | 132 +
arch/arm/configs/nuc910_defconfig | 60 +
arch/arm/configs/nuc950_defconfig | 76 +
arch/arm/configs/nuc960_defconfig | 66 +
arch/arm/configs/omap1_defconfig | 279 +
arch/arm/configs/omap2plus_defconfig | 236 +
arch/arm/configs/orion5x_defconfig | 179 +
arch/arm/configs/palmz72_defconfig | 85 +
arch/arm/configs/pcm027_defconfig | 102 +
arch/arm/configs/pleb_defconfig | 57 +
arch/arm/configs/pnx4008_defconfig | 472 ++
arch/arm/configs/pxa168_defconfig | 70 +
arch/arm/configs/pxa255-idp_defconfig | 59 +
arch/arm/configs/pxa3xx_defconfig | 134 +
arch/arm/configs/pxa910_defconfig | 70 +
arch/arm/configs/qil-a9260_defconfig | 115 +
arch/arm/configs/raumfeld_defconfig | 208 +
arch/arm/configs/realview-smp_defconfig | 101 +
arch/arm/configs/realview_defconfig | 100 +
arch/arm/configs/rpc_defconfig | 135 +
arch/arm/configs/s3c2410_defconfig | 468 ++
arch/arm/configs/s3c6400_defconfig | 93 +
arch/arm/configs/s5p64x0_defconfig | 68 +
arch/arm/configs/s5pc100_defconfig | 49 +
arch/arm/configs/s5pv210_defconfig | 73 +
arch/arm/configs/sam9_l9260_defconfig | 148 +
arch/arm/configs/shannon_defconfig | 48 +
arch/arm/configs/shark_defconfig | 81 +
arch/arm/configs/simpad_defconfig | 111 +
arch/arm/configs/spear3xx_defconfig | 53 +
arch/arm/configs/spear6xx_defconfig | 49 +
arch/arm/configs/spitz_defconfig | 275 +
arch/arm/configs/stamp9g20_defconfig | 129 +
arch/arm/configs/tct_hammer_defconfig | 70 +
arch/arm/configs/tegra_defconfig | 181 +
arch/arm/configs/trizeps4_defconfig | 226 +
arch/arm/configs/u300_defconfig | 73 +
arch/arm/configs/u8500_defconfig | 117 +
arch/arm/configs/usb-a9260_defconfig | 106 +
arch/arm/configs/versatile_defconfig | 84 +
arch/arm/configs/vexpress_defconfig | 140 +
arch/arm/configs/viper_defconfig | 174 +
arch/arm/configs/xcep_defconfig | 99 +
arch/arm/configs/zeus_defconfig | 189 +
arch/arm/include/asm/Kbuild | 20 +
arch/arm/include/asm/a.out-core.h | 45 +
arch/arm/include/asm/a.out.h | 34 +
arch/arm/include/asm/asm-offsets.h | 1 +
arch/arm/include/asm/assembler.h | 331 ++
arch/arm/include/asm/atomic.h | 466 ++
arch/arm/include/asm/barrier.h | 69 +
arch/arm/include/asm/bitops.h | 317 ++
arch/arm/include/asm/bug.h | 90 +
arch/arm/include/asm/bugs.h | 21 +
arch/arm/include/asm/byteorder.h | 25 +
arch/arm/include/asm/cache.h | 28 +
arch/arm/include/asm/cacheflush.h | 348 ++
arch/arm/include/asm/cachetype.h | 59 +
arch/arm/include/asm/checksum.h | 139 +
arch/arm/include/asm/clkdev.h | 29 +
arch/arm/include/asm/cmpxchg.h | 295 +
arch/arm/include/asm/compiler.h | 15 +
arch/arm/include/asm/cp15.h | 87 +
arch/arm/include/asm/cpu.h | 26 +
arch/arm/include/asm/cpuidle.h | 29 +
arch/arm/include/asm/cputype.h | 105 +
arch/arm/include/asm/cti.h | 179 +
arch/arm/include/asm/current.h | 15 +
arch/arm/include/asm/delay.h | 44 +
arch/arm/include/asm/device.h | 26 +
arch/arm/include/asm/div64.h | 227 +
arch/arm/include/asm/dma-mapping.h | 474 ++
arch/arm/include/asm/dma.h | 151 +
arch/arm/include/asm/domain.h | 109 +
arch/arm/include/asm/ecard.h | 218 +
arch/arm/include/asm/edac.h | 48 +
arch/arm/include/asm/elf.h | 133 +
arch/arm/include/asm/entry-macro-multi.S | 39 +
arch/arm/include/asm/exception.h | 19 +
arch/arm/include/asm/exec.h | 6 +
arch/arm/include/asm/fb.h | 19 +
arch/arm/include/asm/fcntl.h | 11 +
arch/arm/include/asm/fiq.h | 56 +
arch/arm/include/asm/fiq_debugger.h | 64 +
arch/arm/include/asm/fiq_glue.h | 30 +
arch/arm/include/asm/fixmap.h | 41 +
arch/arm/include/asm/flat.h | 16 +
arch/arm/include/asm/floppy.h | 148 +
arch/arm/include/asm/fncpy.h | 94 +
arch/arm/include/asm/fpstate.h | 93 +
arch/arm/include/asm/ftrace.h | 67 +
arch/arm/include/asm/futex.h | 168 +
arch/arm/include/asm/glue-cache.h | 146 +
arch/arm/include/asm/glue-df.h | 110 +
arch/arm/include/asm/glue-pf.h | 57 +
arch/arm/include/asm/glue-proc.h | 264 +
arch/arm/include/asm/glue.h | 25 +
arch/arm/include/asm/gpio.h | 30 +
arch/arm/include/asm/hardirq.h | 36 +
arch/arm/include/asm/hardware/arm_timer.h | 35 +
arch/arm/include/asm/hardware/cache-l2x0.h | 138 +
arch/arm/include/asm/hardware/cache-tauros2.h | 11 +
arch/arm/include/asm/hardware/clps7111.h | 184 +
arch/arm/include/asm/hardware/coresight.h | 185 +
arch/arm/include/asm/hardware/cs89712.h | 49 +
arch/arm/include/asm/hardware/debug-8250.S | 29 +
arch/arm/include/asm/hardware/debug-pl01x.S | 29 +
arch/arm/include/asm/hardware/dec21285.h | 147 +
arch/arm/include/asm/hardware/entry-macro-iomd.S | 131 +
arch/arm/include/asm/hardware/ep7211.h | 40 +
arch/arm/include/asm/hardware/ep7212.h | 83 +
arch/arm/include/asm/hardware/gic.h | 57 +
arch/arm/include/asm/hardware/icst.h | 59 +
arch/arm/include/asm/hardware/ioc.h | 72 +
arch/arm/include/asm/hardware/iomd.h | 185 +
arch/arm/include/asm/hardware/iop3xx-adma.h | 962 ++++
arch/arm/include/asm/hardware/iop3xx-gpio.h | 75 +
arch/arm/include/asm/hardware/iop3xx.h | 333 ++
arch/arm/include/asm/hardware/iop_adma.h | 123 +
arch/arm/include/asm/hardware/it8152.h | 115 +
arch/arm/include/asm/hardware/linkup-l1110.h | 48 +
arch/arm/include/asm/hardware/locomo.h | 221 +
arch/arm/include/asm/hardware/memc.h | 26 +
arch/arm/include/asm/hardware/pci_v3.h | 186 +
arch/arm/include/asm/hardware/pl080.h | 144 +
arch/arm/include/asm/hardware/sa1111.h | 475 ++
arch/arm/include/asm/hardware/scoop.h | 71 +
arch/arm/include/asm/hardware/sp810.h | 68 +
arch/arm/include/asm/hardware/ssp.h | 28 +
arch/arm/include/asm/hardware/timer-sp.h | 15 +
arch/arm/include/asm/hardware/uengine.h | 62 +
arch/arm/include/asm/hardware/vic.h | 57 +
arch/arm/include/asm/highmem.h | 66 +
arch/arm/include/asm/hw_breakpoint.h | 135 +
arch/arm/include/asm/hw_irq.h | 21 +
arch/arm/include/asm/hwcap.h | 39 +
arch/arm/include/asm/ide.h | 23 +
arch/arm/include/asm/idmap.h | 14 +
arch/arm/include/asm/io.h | 340 ++
arch/arm/include/asm/ioctls.h | 8 +
arch/arm/include/asm/ipcbuf.h | 1 +
arch/arm/include/asm/irq.h | 39 +
arch/arm/include/asm/irqflags.h | 155 +
arch/arm/include/asm/jump_label.h | 41 +
arch/arm/include/asm/kexec.h | 60 +
arch/arm/include/asm/kgdb.h | 105 +
arch/arm/include/asm/kmap_types.h | 33 +
arch/arm/include/asm/kprobes.h | 66 +
arch/arm/include/asm/leds.h | 50 +
arch/arm/include/asm/limits.h | 11 +
arch/arm/include/asm/linkage.h | 11 +
arch/arm/include/asm/localtimer.h | 34 +
arch/arm/include/asm/locks.h | 274 +
arch/arm/include/asm/mach-types.h | 1 +
arch/arm/include/asm/mach/arch.h | 85 +
arch/arm/include/asm/mach/dma.h | 54 +
arch/arm/include/asm/mach/flash.h | 39 +
arch/arm/include/asm/mach/irda.h | 20 +
arch/arm/include/asm/mach/irq.h | 68 +
arch/arm/include/asm/mach/map.h | 46 +
arch/arm/include/asm/mach/mmc.h | 28 +
arch/arm/include/asm/mach/pci.h | 84 +
arch/arm/include/asm/mach/serial_at91.h | 33 +
arch/arm/include/asm/mach/serial_sa1100.h | 31 +
arch/arm/include/asm/mach/sharpsl_param.h | 37 +
arch/arm/include/asm/mach/time.h | 45 +
arch/arm/include/asm/mach/udc_pxa2xx.h | 26 +
arch/arm/include/asm/mach/version.h | 1 +
arch/arm/include/asm/mc146818rtc.h | 30 +
arch/arm/include/asm/memblock.h | 11 +
arch/arm/include/asm/memory.h | 288 +
arch/arm/include/asm/mman.h | 4 +
arch/arm/include/asm/mmu.h | 37 +
arch/arm/include/asm/mmu_context.h | 191 +
arch/arm/include/asm/module.h | 51 +
arch/arm/include/asm/msgbuf.h | 31 +
arch/arm/include/asm/mtd-xip.h | 23 +
arch/arm/include/asm/mutex.h | 16 +
arch/arm/include/asm/nwflash.h | 9 +
arch/arm/include/asm/opcodes.h | 79 +
arch/arm/include/asm/outercache.h | 109 +
arch/arm/include/asm/page-nommu.h | 46 +
arch/arm/include/asm/page.h | 180 +
arch/arm/include/asm/param.h | 31 +
arch/arm/include/asm/parport.h | 18 +
arch/arm/include/asm/pci.h | 70 +
arch/arm/include/asm/perf_event.h | 32 +
arch/arm/include/asm/pgalloc.h | 164 +
arch/arm/include/asm/pgtable-2level-hwdef.h | 93 +
arch/arm/include/asm/pgtable-2level-types.h | 67 +
arch/arm/include/asm/pgtable-2level.h | 184 +
arch/arm/include/asm/pgtable-3level-hwdef.h | 77 +
arch/arm/include/asm/pgtable-3level-types.h | 70 +
arch/arm/include/asm/pgtable-3level.h | 155 +
arch/arm/include/asm/pgtable-hwdef.h | 19 +
arch/arm/include/asm/pgtable-nommu.h | 118 +
arch/arm/include/asm/pgtable.h | 317 ++
arch/arm/include/asm/pmu.h | 145 +
arch/arm/include/asm/posix_types.h | 40 +
arch/arm/include/asm/proc-fns.h | 144 +
arch/arm/include/asm/processor.h | 131 +
arch/arm/include/asm/procinfo.h | 49 +
arch/arm/include/asm/prom.h | 29 +
arch/arm/include/asm/ptrace.h | 257 +
arch/arm/include/asm/rodata.h | 32 +
arch/arm/include/asm/scatterlist.h | 12 +
arch/arm/include/asm/sched_clock.h | 16 +
arch/arm/include/asm/seccomp.h | 11 +
arch/arm/include/asm/segment.h | 11 +
arch/arm/include/asm/sembuf.h | 25 +
arch/arm/include/asm/serial.h | 19 +
arch/arm/include/asm/setup.h | 226 +
arch/arm/include/asm/shmbuf.h | 42 +
arch/arm/include/asm/shmparam.h | 16 +
arch/arm/include/asm/sigcontext.h | 34 +
arch/arm/include/asm/signal.h | 164 +
arch/arm/include/asm/smp.h | 104 +
arch/arm/include/asm/smp_plat.h | 52 +
arch/arm/include/asm/smp_scu.h | 14 +
arch/arm/include/asm/smp_twd.h | 45 +
arch/arm/include/asm/socket.h | 72 +
arch/arm/include/asm/sockios.h | 13 +
arch/arm/include/asm/sparsemem.h | 24 +
arch/arm/include/asm/spinlock.h | 268 +
arch/arm/include/asm/spinlock_types.h | 20 +
arch/arm/include/asm/stackprotector.h | 38 +
arch/arm/include/asm/stacktrace.h | 15 +
arch/arm/include/asm/stat.h | 87 +
arch/arm/include/asm/statfs.h | 12 +
arch/arm/include/asm/string.h | 41 +
arch/arm/include/asm/suspend.h | 7 +
arch/arm/include/asm/swab.h | 73 +
arch/arm/include/asm/switch_to.h | 18 +
arch/arm/include/asm/system.h | 8 +
arch/arm/include/asm/system_info.h | 27 +
arch/arm/include/asm/system_misc.h | 29 +
arch/arm/include/asm/tcm.h | 33 +
arch/arm/include/asm/termbits.h | 198 +
arch/arm/include/asm/termios.h | 92 +
arch/arm/include/asm/therm.h | 28 +
arch/arm/include/asm/thread_info.h | 177 +
arch/arm/include/asm/thread_notify.h | 49 +
arch/arm/include/asm/timex.h | 24 +
arch/arm/include/asm/tlb.h | 229 +
arch/arm/include/asm/tlbflush.h | 529 ++
arch/arm/include/asm/tls.h | 49 +
arch/arm/include/asm/topology.h | 39 +
arch/arm/include/asm/traps.h | 55 +
arch/arm/include/asm/types.h | 16 +
arch/arm/include/asm/uaccess.h | 636 +++
arch/arm/include/asm/ucontext.h | 102 +
arch/arm/include/asm/unaligned.h | 19 +
arch/arm/include/asm/unified.h | 130 +
arch/arm/include/asm/unistd.h | 489 ++
arch/arm/include/asm/unwind.h | 61 +
arch/arm/include/asm/user.h | 103 +
arch/arm/include/asm/vfp.h | 84 +
arch/arm/include/asm/vfpmacros.h | 65 +
arch/arm/include/asm/vga.h | 13 +
arch/arm/include/asm/xor.h | 141 +
arch/arm/kernel/Makefile | 85 +
arch/arm/kernel/armksyms.c | 163 +
arch/arm/kernel/arthur.c | 94 +
arch/arm/kernel/asm-offsets.c | 148 +
arch/arm/kernel/atags.c | 83 +
arch/arm/kernel/atags.h | 5 +
arch/arm/kernel/bios32.c | 615 +++
arch/arm/kernel/calls.S | 396 ++
arch/arm/kernel/compat.c | 219 +
arch/arm/kernel/compat.h | 11 +
arch/arm/kernel/cpuidle.c | 21 +
arch/arm/kernel/crash_dump.c | 57 +
arch/arm/kernel/debug.S | 203 +
arch/arm/kernel/devtree.c | 134 +
arch/arm/kernel/dma-isa.c | 222 +
arch/arm/kernel/dma.c | 302 ++
arch/arm/kernel/early_printk.c | 57 +
arch/arm/kernel/elf.c | 91 +
arch/arm/kernel/entry-armv.S | 1162 ++++
arch/arm/kernel/entry-common.S | 656 +++
arch/arm/kernel/entry-header.S | 179 +
arch/arm/kernel/etm.c | 1076 ++++
arch/arm/kernel/fiq.c | 146 +
arch/arm/kernel/fiqasm.S | 49 +
arch/arm/kernel/ftrace.c | 260 +
arch/arm/kernel/head-common.S | 204 +
arch/arm/kernel/head-nommu.S | 98 +
arch/arm/kernel/head.S | 622 +++
arch/arm/kernel/hibernate.c | 177 +
arch/arm/kernel/hw_breakpoint.c | 1040 ++++
arch/arm/kernel/init_task.c | 37 +
arch/arm/kernel/insn.c | 62 +
arch/arm/kernel/insn.h | 29 +
arch/arm/kernel/io.c | 76 +
arch/arm/kernel/irq.c | 196 +
arch/arm/kernel/isa.c | 70 +
arch/arm/kernel/iwmmxt.S | 346 ++
arch/arm/kernel/jump_label.c | 39 +
arch/arm/kernel/kgdb.c | 255 +
arch/arm/kernel/kprobes-arm.c | 1005 ++++
arch/arm/kernel/kprobes-common.c | 578 ++
arch/arm/kernel/kprobes-test-arm.c | 1330 +++++
arch/arm/kernel/kprobes-test-thumb.c | 1187 ++++
arch/arm/kernel/kprobes-test.c | 1696 ++++++
arch/arm/kernel/kprobes-test.h | 432 ++
arch/arm/kernel/kprobes-thumb.c | 1469 +++++
arch/arm/kernel/kprobes.c | 618 +++
arch/arm/kernel/kprobes.h | 428 ++
arch/arm/kernel/leds.c | 145 +
arch/arm/kernel/machine_kexec.c | 140 +
arch/arm/kernel/module.c | 344 ++
arch/arm/kernel/opcodes.c | 72 +
arch/arm/kernel/patch.c | 75 +
arch/arm/kernel/patch.h | 7 +
arch/arm/kernel/perf_event.c | 855 +++
arch/arm/kernel/perf_event_v6.c | 719 +++
arch/arm/kernel/perf_event_v7.c | 1332 +++++
arch/arm/kernel/perf_event_xscale.c | 839 +++
arch/arm/kernel/pj4-cp0.c | 93 +
arch/arm/kernel/pmu.c | 36 +
arch/arm/kernel/process.c | 704 +++
arch/arm/kernel/ptrace.c | 949 ++++
arch/arm/kernel/relocate_kernel.S | 88 +
arch/arm/kernel/return_address.c | 72 +
arch/arm/kernel/sched_clock.c | 208 +
arch/arm/kernel/setup.c | 1132 ++++
arch/arm/kernel/signal.c | 741 +++
arch/arm/kernel/signal.h | 14 +
arch/arm/kernel/sleep.S | 104 +
arch/arm/kernel/smp.c | 670 +++
arch/arm/kernel/smp_scu.c | 87 +
arch/arm/kernel/smp_tlb.c | 129 +
arch/arm/kernel/smp_twd.c | 349 ++
arch/arm/kernel/stacktrace.c | 131 +
arch/arm/kernel/suspend.c | 60 +
arch/arm/kernel/swp_emulate.c | 283 +
arch/arm/kernel/sys_arm.c | 133 +
arch/arm/kernel/sys_oabi-compat.c | 453 ++
arch/arm/kernel/tcm.c | 337 ++
arch/arm/kernel/tcm.h | 17 +
arch/arm/kernel/thumbee.c | 82 +
arch/arm/kernel/time.c | 152 +
arch/arm/kernel/topology.c | 148 +
arch/arm/kernel/traps.c | 829 +++
arch/arm/kernel/unwind.c | 491 ++
arch/arm/kernel/vmlinux.lds.S | 312 ++
arch/arm/kernel/xscale-cp0.c | 178 +
arch/arm/lib/Makefile | 48 +
arch/arm/lib/ashldi3.S | 53 +
arch/arm/lib/ashrdi3.S | 53 +
arch/arm/lib/backtrace.S | 152 +
arch/arm/lib/bitops.h | 95 +
arch/arm/lib/call_with_stack.S | 44 +
arch/arm/lib/changebit.S | 15 +
arch/arm/lib/clear_user.S | 54 +
arch/arm/lib/clearbit.S | 15 +
arch/arm/lib/copy_from_user.S | 104 +
arch/arm/lib/copy_page.S | 47 +
arch/arm/lib/copy_template.S | 267 +
arch/arm/lib/copy_to_user.S | 106 +
arch/arm/lib/csumipv6.S | 33 +
arch/arm/lib/csumpartial.S | 142 +
arch/arm/lib/csumpartialcopy.S | 53 +
arch/arm/lib/csumpartialcopygeneric.S | 332 ++
arch/arm/lib/csumpartialcopyuser.S | 83 +
arch/arm/lib/delay.S | 69 +
arch/arm/lib/div64.S | 211 +
arch/arm/lib/ecard.S | 44 +
arch/arm/lib/findbit.S | 196 +
arch/arm/lib/floppydma.S | 32 +
arch/arm/lib/getuser.S | 80 +
arch/arm/lib/io-acorn.S | 31 +
arch/arm/lib/io-readsb.S | 123 +
arch/arm/lib/io-readsl.S | 79 +
arch/arm/lib/io-readsw-armv3.S | 106 +
arch/arm/lib/io-readsw-armv4.S | 131 +
arch/arm/lib/io-shark.c | 13 +
arch/arm/lib/io-writesb.S | 94 +
arch/arm/lib/io-writesl.S | 67 +
arch/arm/lib/io-writesw-armv3.S | 126 +
arch/arm/lib/io-writesw-armv4.S | 100 +
arch/arm/lib/lib1funcs.S | 363 ++
arch/arm/lib/lshrdi3.S | 53 +
arch/arm/lib/memchr.S | 26 +
arch/arm/lib/memcpy.S | 63 +
arch/arm/lib/memmove.S | 199 +
arch/arm/lib/memset.S | 127 +
arch/arm/lib/memzero.S | 125 +
arch/arm/lib/muldi3.S | 47 +
arch/arm/lib/putuser.S | 98 +
arch/arm/lib/setbit.S | 15 +
arch/arm/lib/strchr.S | 27 +
arch/arm/lib/strncpy_from_user.S | 43 +
arch/arm/lib/strnlen_user.S | 40 +
arch/arm/lib/strrchr.S | 26 +
arch/arm/lib/testchangebit.S | 15 +
arch/arm/lib/testclearbit.S | 15 +
arch/arm/lib/testsetbit.S | 15 +
arch/arm/lib/uaccess.S | 564 ++
arch/arm/lib/uaccess_with_memcpy.c | 235 +
arch/arm/lib/ucmpdi2.S | 52 +
arch/arm/mach-at91/Kconfig | 555 ++
arch/arm/mach-at91/Makefile | 97 +
arch/arm/mach-at91/Makefile.boot | 22 +
arch/arm/mach-at91/at91rm9200.c | 390 ++
arch/arm/mach-at91/at91rm9200_devices.c | 1196 ++++
arch/arm/mach-at91/at91rm9200_time.c | 222 +
arch/arm/mach-at91/at91sam9260.c | 399 ++
arch/arm/mach-at91/at91sam9260_devices.c | 1385 +++++
arch/arm/mach-at91/at91sam9261.c | 352 ++
arch/arm/mach-at91/at91sam9261_devices.c | 1095 ++++
arch/arm/mach-at91/at91sam9263.c | 373 ++
arch/arm/mach-at91/at91sam9263_devices.c | 1504 ++++++
arch/arm/mach-at91/at91sam926x_time.c | 270 +
arch/arm/mach-at91/at91sam9_alt_reset.S | 40 +
arch/arm/mach-at91/at91sam9g45.c | 405 ++
arch/arm/mach-at91/at91sam9g45_devices.c | 1787 ++++++
arch/arm/mach-at91/at91sam9g45_reset.S | 38 +
arch/arm/mach-at91/at91sam9rl.c | 356 ++
arch/arm/mach-at91/at91sam9rl_devices.c | 1238 +++++
arch/arm/mach-at91/at91sam9x5.c | 361 ++
arch/arm/mach-at91/at91x40.c | 91 +
arch/arm/mach-at91/at91x40_time.c | 86 +
arch/arm/mach-at91/board-1arm.c | 101 +
arch/arm/mach-at91/board-afeb-9260v1.c | 223 +
arch/arm/mach-at91/board-cam60.c | 198 +
arch/arm/mach-at91/board-carmeva.c | 168 +
arch/arm/mach-at91/board-cpu9krea.c | 386 ++
arch/arm/mach-at91/board-cpuat91.c | 188 +
arch/arm/mach-at91/board-csb337.c | 263 +
arch/arm/mach-at91/board-csb637.c | 143 +
arch/arm/mach-at91/board-dt.c | 66 +
arch/arm/mach-at91/board-eb01.c | 49 +
arch/arm/mach-at91/board-eb9200.c | 128 +
arch/arm/mach-at91/board-ecbat91.c | 180 +
arch/arm/mach-at91/board-eco920.c | 143 +
arch/arm/mach-at91/board-flexibity.c | 170 +
arch/arm/mach-at91/board-foxg20.c | 273 +
arch/arm/mach-at91/board-gsia18s.c | 582 ++
arch/arm/mach-at91/board-kafa.c | 103 +
arch/arm/mach-at91/board-kb9202.c | 143 +
arch/arm/mach-at91/board-neocore926.c | 388 ++
arch/arm/mach-at91/board-pcontrol-g20.c | 225 +
arch/arm/mach-at91/board-picotux200.c | 130 +
arch/arm/mach-at91/board-qil-a9260.c | 269 +
arch/arm/mach-at91/board-rm9200dk.c | 233 +
arch/arm/mach-at91/board-rm9200ek.c | 200 +
arch/arm/mach-at91/board-rsi-ews.c | 235 +
arch/arm/mach-at91/board-sam9-l9260.c | 212 +
arch/arm/mach-at91/board-sam9260ek.c | 354 ++
arch/arm/mach-at91/board-sam9261ek.c | 625 +++
arch/arm/mach-at91/board-sam9263ek.c | 453 ++
arch/arm/mach-at91/board-sam9g20ek.c | 418 ++
arch/arm/mach-at91/board-sam9m10g45ek.c | 501 ++
arch/arm/mach-at91/board-sam9rlek.c | 329 ++
arch/arm/mach-at91/board-snapper9260.c | 188 +
arch/arm/mach-at91/board-stamp9g20.c | 318 ++
arch/arm/mach-at91/board-usb-a926x.c | 382 ++
arch/arm/mach-at91/board-yl-9200.c | 600 +++
arch/arm/mach-at91/clock.c | 885 +++
arch/arm/mach-at91/clock.h | 47 +
arch/arm/mach-at91/cpuidle.c | 74 +
arch/arm/mach-at91/generic.h | 96 +
arch/arm/mach-at91/gpio.c | 1100 ++++
arch/arm/mach-at91/include/mach/at91_adc.h | 61 +
arch/arm/mach-at91/include/mach/at91_aic.h | 65 +
arch/arm/mach-at91/include/mach/at91_dbgu.h | 69 +
arch/arm/mach-at91/include/mach/at91_matrix.h | 23 +
arch/arm/mach-at91/include/mach/at91_pio.h | 74 +
arch/arm/mach-at91/include/mach/at91_pit.h | 32 +
arch/arm/mach-at91/include/mach/at91_pmc.h | 177 +
arch/arm/mach-at91/include/mach/at91_ramc.h | 32 +
arch/arm/mach-at91/include/mach/at91_rstc.h | 53 +
arch/arm/mach-at91/include/mach/at91_rtc.h | 75 +
arch/arm/mach-at91/include/mach/at91_rtt.h | 35 +
arch/arm/mach-at91/include/mach/at91_shdwc.h | 50 +
arch/arm/mach-at91/include/mach/at91_spi.h | 81 +
arch/arm/mach-at91/include/mach/at91_ssc.h | 106 +
arch/arm/mach-at91/include/mach/at91_st.h | 61 +
arch/arm/mach-at91/include/mach/at91_tc.h | 146 +
arch/arm/mach-at91/include/mach/at91_twi.h | 68 +
arch/arm/mach-at91/include/mach/at91rm9200.h | 108 +
arch/arm/mach-at91/include/mach/at91rm9200_emac.h | 138 +
arch/arm/mach-at91/include/mach/at91rm9200_mc.h | 116 +
.../arm/mach-at91/include/mach/at91rm9200_sdramc.h | 63 +
arch/arm/mach-at91/include/mach/at91sam9260.h | 136 +
.../mach-at91/include/mach/at91sam9260_matrix.h | 80 +
arch/arm/mach-at91/include/mach/at91sam9261.h | 103 +
.../mach-at91/include/mach/at91sam9261_matrix.h | 64 +
arch/arm/mach-at91/include/mach/at91sam9263.h | 121 +
.../mach-at91/include/mach/at91sam9263_matrix.h | 129 +
arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h | 124 +
arch/arm/mach-at91/include/mach/at91sam9_sdramc.h | 85 +
arch/arm/mach-at91/include/mach/at91sam9_smc.h | 100 +
arch/arm/mach-at91/include/mach/at91sam9g45.h | 146 +
.../mach-at91/include/mach/at91sam9g45_matrix.h | 153 +
arch/arm/mach-at91/include/mach/at91sam9rl.h | 110 +
.../arm/mach-at91/include/mach/at91sam9rl_matrix.h | 96 +
arch/arm/mach-at91/include/mach/at91sam9x5.h | 74 +
.../arm/mach-at91/include/mach/at91sam9x5_matrix.h | 53 +
arch/arm/mach-at91/include/mach/at91x40.h | 58 +
arch/arm/mach-at91/include/mach/at_hdmac.h | 87 +
arch/arm/mach-at91/include/mach/atmel-mci.h | 24 +
arch/arm/mach-at91/include/mach/board.h | 198 +
arch/arm/mach-at91/include/mach/cpu.h | 193 +
arch/arm/mach-at91/include/mach/debug-macro.S | 43 +
arch/arm/mach-at91/include/mach/entry-macro.S | 27 +
arch/arm/mach-at91/include/mach/gpio.h | 214 +
arch/arm/mach-at91/include/mach/gsia18s.h | 33 +
arch/arm/mach-at91/include/mach/hardware.h | 120 +
arch/arm/mach-at91/include/mach/io.h | 27 +
arch/arm/mach-at91/include/mach/irqs.h | 48 +
arch/arm/mach-at91/include/mach/memory.h | 26 +
arch/arm/mach-at91/include/mach/stamp9g20.h | 7 +
arch/arm/mach-at91/include/mach/system_rev.h | 27 +
arch/arm/mach-at91/include/mach/timex.h | 37 +
arch/arm/mach-at91/include/mach/uncompress.h | 79 +
arch/arm/mach-at91/irq.c | 246 +
arch/arm/mach-at91/leds.c | 197 +
arch/arm/mach-at91/pm.c | 320 ++
arch/arm/mach-at91/pm.h | 109 +
arch/arm/mach-at91/pm_slowclock.S | 332 ++
arch/arm/mach-at91/sam9_smc.c | 133 +
arch/arm/mach-at91/sam9_smc.h | 11 +
arch/arm/mach-at91/setup.c | 460 ++
arch/arm/mach-at91/soc.h | 55 +
arch/arm/mach-bcmring/Kconfig | 19 +
arch/arm/mach-bcmring/Makefile | 8 +
arch/arm/mach-bcmring/Makefile.boot | 6 +
arch/arm/mach-bcmring/arch.c | 199 +
arch/arm/mach-bcmring/clock.c | 223 +
arch/arm/mach-bcmring/clock.h | 33 +
arch/arm/mach-bcmring/core.c | 228 +
arch/arm/mach-bcmring/core.h | 31 +
arch/arm/mach-bcmring/csp/Makefile | 3 +
arch/arm/mach-bcmring/csp/chipc/Makefile | 1 +
arch/arm/mach-bcmring/csp/chipc/chipcHw.c | 776 +++
arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c | 293 +
arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c | 124 +
arch/arm/mach-bcmring/csp/chipc/chipcHw_str.c | 64 +
arch/arm/mach-bcmring/csp/dmac/Makefile | 1 +
arch/arm/mach-bcmring/csp/dmac/dmacHw.c | 917 ++++
arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c | 1017 ++++
arch/arm/mach-bcmring/csp/tmr/Makefile | 1 +
arch/arm/mach-bcmring/csp/tmr/tmrHw.c | 576 ++
arch/arm/mach-bcmring/dma.c | 1518 ++++++
arch/arm/mach-bcmring/dma_device.c | 593 ++
arch/arm/mach-bcmring/include/cfg_global.h | 13 +
arch/arm/mach-bcmring/include/cfg_global_defines.h | 40 +
arch/arm/mach-bcmring/include/csp/cache.h | 35 +
arch/arm/mach-bcmring/include/csp/delay.h | 36 +
arch/arm/mach-bcmring/include/csp/dmacHw.h | 596 ++
arch/arm/mach-bcmring/include/csp/errno.h | 32 +
arch/arm/mach-bcmring/include/csp/intcHw.h | 40 +
arch/arm/mach-bcmring/include/csp/module.h | 32 +
arch/arm/mach-bcmring/include/csp/reg.h | 114 +
arch/arm/mach-bcmring/include/csp/secHw.h | 65 +
arch/arm/mach-bcmring/include/csp/stdint.h | 30 +
arch/arm/mach-bcmring/include/csp/string.h | 34 +
arch/arm/mach-bcmring/include/csp/tmrHw.h | 263 +
arch/arm/mach-bcmring/include/mach/csp/cap.h | 63 +
.../arm/mach-bcmring/include/mach/csp/cap_inline.h | 409 ++
.../mach-bcmring/include/mach/csp/chipcHw_def.h | 1123 ++++
.../mach-bcmring/include/mach/csp/chipcHw_inline.h | 1673 ++++++
.../mach-bcmring/include/mach/csp/chipcHw_reg.h | 530 ++
arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h | 872 +++
.../mach-bcmring/include/mach/csp/dmacHw_priv.h | 145 +
.../arm/mach-bcmring/include/mach/csp/dmacHw_reg.h | 406 ++
arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h | 73 +
.../arm/mach-bcmring/include/mach/csp/intcHw_reg.h | 246 +
arch/arm/mach-bcmring/include/mach/csp/mm_addr.h | 101 +
arch/arm/mach-bcmring/include/mach/csp/mm_io.h | 147 +
arch/arm/mach-bcmring/include/mach/csp/secHw_def.h | 100 +
.../mach-bcmring/include/mach/csp/secHw_inline.h | 79 +
arch/arm/mach-bcmring/include/mach/csp/tmrHw_reg.h | 82 +
arch/arm/mach-bcmring/include/mach/dma.h | 630 +++
arch/arm/mach-bcmring/include/mach/entry-macro.S | 76 +
arch/arm/mach-bcmring/include/mach/hardware.h | 57 +
arch/arm/mach-bcmring/include/mach/irqs.h | 132 +
.../mach-bcmring/include/mach/memory_settings.h | 67 +
arch/arm/mach-bcmring/include/mach/reg_nand.h | 66 +
arch/arm/mach-bcmring/include/mach/reg_umi.h | 237 +
arch/arm/mach-bcmring/include/mach/timer.h | 77 +
arch/arm/mach-bcmring/include/mach/timex.h | 25 +
arch/arm/mach-bcmring/include/mach/uncompress.h | 43 +
arch/arm/mach-bcmring/irq.c | 126 +
arch/arm/mach-bcmring/mm.c | 60 +
arch/arm/mach-bcmring/timer.c | 61 +
arch/arm/mach-clps711x/Kconfig | 77 +
arch/arm/mach-clps711x/Makefile | 20 +
arch/arm/mach-clps711x/Makefile.boot | 6 +
arch/arm/mach-clps711x/autcpu12.c | 73 +
arch/arm/mach-clps711x/cdb89712.c | 63 +
arch/arm/mach-clps711x/ceiva.c | 64 +
arch/arm/mach-clps711x/clep7312.c | 46 +
arch/arm/mach-clps711x/common.c | 244 +
arch/arm/mach-clps711x/common.h | 12 +
arch/arm/mach-clps711x/edb7211-arch.c | 66 +
arch/arm/mach-clps711x/edb7211-mm.c | 82 +
arch/arm/mach-clps711x/fortunet.c | 82 +
arch/arm/mach-clps711x/include/mach/autcpu12.h | 78 +
arch/arm/mach-clps711x/include/mach/debug-macro.S | 45 +
arch/arm/mach-clps711x/include/mach/entry-macro.S | 52 +
arch/arm/mach-clps711x/include/mach/hardware.h | 208 +
arch/arm/mach-clps711x/include/mach/irqs.h | 53 +
arch/arm/mach-clps711x/include/mach/memory.h | 78 +
arch/arm/mach-clps711x/include/mach/syspld.h | 121 +
arch/arm/mach-clps711x/include/mach/time.h | 49 +
arch/arm/mach-clps711x/include/mach/timex.h | 23 +
arch/arm/mach-clps711x/include/mach/uncompress.h | 58 +
arch/arm/mach-clps711x/p720t-leds.c | 66 +
arch/arm/mach-clps711x/p720t.c | 123 +
arch/arm/mach-cns3xxx/Kconfig | 13 +
arch/arm/mach-cns3xxx/Makefile | 3 +
arch/arm/mach-cns3xxx/Makefile.boot | 3 +
arch/arm/mach-cns3xxx/cns3420vb.c | 208 +
arch/arm/mach-cns3xxx/core.c | 289 +
arch/arm/mach-cns3xxx/core.h | 27 +
arch/arm/mach-cns3xxx/devices.c | 112 +
arch/arm/mach-cns3xxx/devices.h | 20 +
arch/arm/mach-cns3xxx/include/mach/cns3xxx.h | 632 +++
arch/arm/mach-cns3xxx/include/mach/debug-macro.S | 19 +
arch/arm/mach-cns3xxx/include/mach/irqs.h | 24 +
arch/arm/mach-cns3xxx/include/mach/pm.h | 23 +
arch/arm/mach-cns3xxx/include/mach/timex.h | 12 +
arch/arm/mach-cns3xxx/include/mach/uncompress.h | 54 +
arch/arm/mach-cns3xxx/pcie.c | 392 ++
arch/arm/mach-cns3xxx/pm.c | 124 +
arch/arm/mach-davinci/Kconfig | 276 +
arch/arm/mach-davinci/Makefile | 41 +
arch/arm/mach-davinci/Makefile.boot | 13 +
arch/arm/mach-davinci/aemif.c | 133 +
arch/arm/mach-davinci/board-da830-evm.c | 686 +++
arch/arm/mach-davinci/board-da850-evm.c | 1416 +++++
arch/arm/mach-davinci/board-dm355-evm.c | 362 ++
arch/arm/mach-davinci/board-dm355-leopard.c | 281 +
arch/arm/mach-davinci/board-dm365-evm.c | 624 +++
arch/arm/mach-davinci/board-dm644x-evm.c | 830 +++
arch/arm/mach-davinci/board-dm646x-evm.c | 804 +++
arch/arm/mach-davinci/board-mityomapl138.c | 577 ++
arch/arm/mach-davinci/board-neuros-osd2.c | 283 +
arch/arm/mach-davinci/board-omapl138-hawk.c | 348 ++
arch/arm/mach-davinci/board-sffsdr.c | 162 +
arch/arm/mach-davinci/board-tnetv107x-evm.c | 287 +
arch/arm/mach-davinci/cdce949.c | 295 +
arch/arm/mach-davinci/clock.c | 670 +++
arch/arm/mach-davinci/clock.h | 135 +
arch/arm/mach-davinci/common.c | 119 +
arch/arm/mach-davinci/cp_intc.c | 177 +
arch/arm/mach-davinci/cpufreq.c | 249 +
arch/arm/mach-davinci/cpuidle.c | 162 +
arch/arm/mach-davinci/da830.c | 1212 +++++
arch/arm/mach-davinci/da850.c | 1126 ++++
arch/arm/mach-davinci/davinci.h | 102 +
arch/arm/mach-davinci/devices-da8xx.c | 978 ++++
arch/arm/mach-davinci/devices-tnetv107x.c | 409 ++
arch/arm/mach-davinci/devices.c | 354 ++
arch/arm/mach-davinci/dm355.c | 893 +++
arch/arm/mach-davinci/dm365.c | 1260 +++++
arch/arm/mach-davinci/dm644x.c | 958 ++++
arch/arm/mach-davinci/dm646x.c | 927 ++++
arch/arm/mach-davinci/dma.c | 1589 ++++++
arch/arm/mach-davinci/include/mach/aemif.h | 36 +
arch/arm/mach-davinci/include/mach/asp.h | 137 +
arch/arm/mach-davinci/include/mach/cdce949.h | 19 +
arch/arm/mach-davinci/include/mach/clock.h | 21 +
arch/arm/mach-davinci/include/mach/common.h | 92 +
arch/arm/mach-davinci/include/mach/cp_intc.h | 56 +
arch/arm/mach-davinci/include/mach/cpufreq.h | 26 +
arch/arm/mach-davinci/include/mach/cpuidle.h | 18 +
arch/arm/mach-davinci/include/mach/cputype.h | 94 +
arch/arm/mach-davinci/include/mach/da8xx.h | 133 +
arch/arm/mach-davinci/include/mach/ddr2.h | 4 +
arch/arm/mach-davinci/include/mach/debug-macro.S | 85 +
arch/arm/mach-davinci/include/mach/dm365.h | 1 +
arch/arm/mach-davinci/include/mach/dm646x.h | 1 +
arch/arm/mach-davinci/include/mach/edma.h | 267 +
arch/arm/mach-davinci/include/mach/entry-macro.S | 41 +
arch/arm/mach-davinci/include/mach/gpio-davinci.h | 91 +
arch/arm/mach-davinci/include/mach/gpio.h | 88 +
arch/arm/mach-davinci/include/mach/hardware.h | 33 +
arch/arm/mach-davinci/include/mach/i2c.h | 26 +
arch/arm/mach-davinci/include/mach/irqs.h | 506 ++
arch/arm/mach-davinci/include/mach/keyscan.h | 42 +
arch/arm/mach-davinci/include/mach/mmc.h | 39 +
arch/arm/mach-davinci/include/mach/mux.h | 1217 +++++
arch/arm/mach-davinci/include/mach/nand.h | 90 +
arch/arm/mach-davinci/include/mach/pm.h | 54 +
arch/arm/mach-davinci/include/mach/psc.h | 260 +
arch/arm/mach-davinci/include/mach/serial.h | 58 +
arch/arm/mach-davinci/include/mach/spi.h | 89 +
arch/arm/mach-davinci/include/mach/sram.h | 27 +
arch/arm/mach-davinci/include/mach/time.h | 35 +
arch/arm/mach-davinci/include/mach/timex.h | 22 +
arch/arm/mach-davinci/include/mach/tnetv107x.h | 61 +
arch/arm/mach-davinci/include/mach/uncompress.h | 108 +
arch/arm/mach-davinci/include/mach/usb.h | 59 +
arch/arm/mach-davinci/irq.c | 117 +
arch/arm/mach-davinci/mux.c | 113 +
arch/arm/mach-davinci/mux.h | 51 +
arch/arm/mach-davinci/pm.c | 159 +
arch/arm/mach-davinci/psc.c | 112 +
arch/arm/mach-davinci/serial.c | 115 +
arch/arm/mach-davinci/sleep.S | 228 +
arch/arm/mach-davinci/sram.c | 71 +
arch/arm/mach-davinci/time.c | 466 ++
arch/arm/mach-davinci/tnetv107x.c | 765 +++
arch/arm/mach-davinci/usb.c | 180 +
arch/arm/mach-dove/Kconfig | 20 +
arch/arm/mach-dove/Makefile | 4 +
arch/arm/mach-dove/Makefile.boot | 3 +
arch/arm/mach-dove/addr-map.c | 125 +
arch/arm/mach-dove/cm-a510.c | 97 +
arch/arm/mach-dove/common.c | 307 ++
arch/arm/mach-dove/common.h | 43 +
arch/arm/mach-dove/dove-db-setup.c | 104 +
arch/arm/mach-dove/include/mach/bridge-regs.h | 55 +
arch/arm/mach-dove/include/mach/debug-macro.S | 19 +
arch/arm/mach-dove/include/mach/dove.h | 187 +
arch/arm/mach-dove/include/mach/entry-macro.S | 33 +
arch/arm/mach-dove/include/mach/gpio.h | 9 +
arch/arm/mach-dove/include/mach/hardware.h | 19 +
arch/arm/mach-dove/include/mach/io.h | 19 +
arch/arm/mach-dove/include/mach/irqs.h | 96 +
arch/arm/mach-dove/include/mach/pm.h | 54 +
arch/arm/mach-dove/include/mach/timex.h | 9 +
arch/arm/mach-dove/include/mach/uncompress.h | 37 +
arch/arm/mach-dove/irq.c | 129 +
arch/arm/mach-dove/mpp.c | 161 +
arch/arm/mach-dove/mpp.h | 196 +
arch/arm/mach-dove/pcie.c | 240 +
arch/arm/mach-ebsa110/Makefile | 12 +
arch/arm/mach-ebsa110/Makefile.boot | 4 +
arch/arm/mach-ebsa110/core.c | 333 ++
arch/arm/mach-ebsa110/core.h | 41 +
arch/arm/mach-ebsa110/include/mach/debug-macro.S | 22 +
arch/arm/mach-ebsa110/include/mach/entry-macro.S | 33 +
arch/arm/mach-ebsa110/include/mach/hardware.h | 24 +
arch/arm/mach-ebsa110/include/mach/io.h | 81 +
arch/arm/mach-ebsa110/include/mach/irqs.h | 20 +
arch/arm/mach-ebsa110/include/mach/memory.h | 30 +
arch/arm/mach-ebsa110/include/mach/timex.h | 19 +
arch/arm/mach-ebsa110/include/mach/uncompress.h | 45 +
arch/arm/mach-ebsa110/io.c | 439 ++
arch/arm/mach-ebsa110/leds.c | 52 +
arch/arm/mach-ep93xx/Kconfig | 208 +
arch/arm/mach-ep93xx/Makefile | 21 +
arch/arm/mach-ep93xx/Makefile.boot | 14 +
arch/arm/mach-ep93xx/adssphere.c | 45 +
arch/arm/mach-ep93xx/clock.c | 563 ++
arch/arm/mach-ep93xx/core.c | 906 ++++
arch/arm/mach-ep93xx/crunch-bits.S | 305 ++
arch/arm/mach-ep93xx/crunch.c | 90 +
arch/arm/mach-ep93xx/dma.c | 110 +
arch/arm/mach-ep93xx/edb93xx.c | 351 ++
arch/arm/mach-ep93xx/gesbc9312.c | 45 +
arch/arm/mach-ep93xx/include/mach/debug-macro.S | 21 +
arch/arm/mach-ep93xx/include/mach/dma.h | 93 +
arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 41 +
arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h | 35 +
arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h | 29 +
arch/arm/mach-ep93xx/include/mach/fb.h | 56 +
arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h | 110 +
arch/arm/mach-ep93xx/include/mach/gpio.h | 1 +
arch/arm/mach-ep93xx/include/mach/hardware.h | 24 +
arch/arm/mach-ep93xx/include/mach/irqs.h | 78 +
arch/arm/mach-ep93xx/include/mach/memory.h | 22 +
arch/arm/mach-ep93xx/include/mach/platform.h | 57 +
arch/arm/mach-ep93xx/include/mach/timex.h | 5 +
arch/arm/mach-ep93xx/include/mach/ts72xx.h | 98 +
arch/arm/mach-ep93xx/include/mach/uncompress.h | 94 +
arch/arm/mach-ep93xx/micro9.c | 129 +
arch/arm/mach-ep93xx/simone.c | 90 +
arch/arm/mach-ep93xx/snappercl15.c | 187 +
arch/arm/mach-ep93xx/soc.h | 213 +
arch/arm/mach-ep93xx/ts72xx.c | 256 +
arch/arm/mach-ep93xx/vision_ep9307.c | 371 ++
arch/arm/mach-exynos/Kconfig | 414 ++
arch/arm/mach-exynos/Makefile | 71 +
arch/arm/mach-exynos/Makefile.boot | 2 +
arch/arm/mach-exynos/clock-exynos4.c | 1581 ++++++
arch/arm/mach-exynos/clock-exynos4.h | 30 +
arch/arm/mach-exynos/clock-exynos4210.c | 140 +
arch/arm/mach-exynos/clock-exynos4212.c | 119 +
arch/arm/mach-exynos/clock-exynos5.c | 1247 +++++
arch/arm/mach-exynos/common.c | 980 ++++
arch/arm/mach-exynos/common.h | 55 +
arch/arm/mach-exynos/cpuidle.c | 235 +
arch/arm/mach-exynos/dev-ahci.c | 263 +
arch/arm/mach-exynos/dev-audio.c | 369 ++
arch/arm/mach-exynos/dev-dwmci.c | 75 +
arch/arm/mach-exynos/dev-ohci.c | 52 +
arch/arm/mach-exynos/dev-sysmmu.c | 233 +
arch/arm/mach-exynos/dev-uart.c | 78 +
arch/arm/mach-exynos/dma.c | 230 +
arch/arm/mach-exynos/headsmp.S | 43 +
arch/arm/mach-exynos/hotplug.c | 135 +
arch/arm/mach-exynos/include/mach/cpufreq.h | 36 +
arch/arm/mach-exynos/include/mach/debug-macro.S | 39 +
arch/arm/mach-exynos/include/mach/dma.h | 26 +
arch/arm/mach-exynos/include/mach/dwmci.h | 20 +
arch/arm/mach-exynos/include/mach/gpio.h | 286 +
arch/arm/mach-exynos/include/mach/hardware.h | 18 +
arch/arm/mach-exynos/include/mach/irqs.h | 467 ++
arch/arm/mach-exynos/include/mach/map.h | 230 +
arch/arm/mach-exynos/include/mach/memory.h | 22 +
arch/arm/mach-exynos/include/mach/ohci.h | 21 +
arch/arm/mach-exynos/include/mach/pm-core.h | 65 +
arch/arm/mach-exynos/include/mach/pmu.h | 34 +
arch/arm/mach-exynos/include/mach/regs-audss.h | 18 +
arch/arm/mach-exynos/include/mach/regs-clock.h | 330 ++
arch/arm/mach-exynos/include/mach/regs-gpio.h | 40 +
arch/arm/mach-exynos/include/mach/regs-irq.h | 19 +
arch/arm/mach-exynos/include/mach/regs-mct.h | 53 +
arch/arm/mach-exynos/include/mach/regs-mem.h | 23 +
arch/arm/mach-exynos/include/mach/regs-pmu.h | 221 +
arch/arm/mach-exynos/include/mach/regs-sysmmu.h | 28 +
arch/arm/mach-exynos/include/mach/regs-usb-phy.h | 64 +
arch/arm/mach-exynos/include/mach/spi-clocks.h | 16 +
arch/arm/mach-exynos/include/mach/sysmmu.h | 46 +
arch/arm/mach-exynos/include/mach/timex.h | 29 +
arch/arm/mach-exynos/include/mach/uncompress.h | 52 +
arch/arm/mach-exynos/mach-armlex4210.c | 219 +
arch/arm/mach-exynos/mach-exynos4-dt.c | 89 +
arch/arm/mach-exynos/mach-exynos5-dt.c | 78 +
arch/arm/mach-exynos/mach-nuri.c | 1357 +++++
arch/arm/mach-exynos/mach-origen.c | 741 +++
arch/arm/mach-exynos/mach-smdk4x12.c | 308 ++
arch/arm/mach-exynos/mach-smdkv310.c | 398 ++
arch/arm/mach-exynos/mach-universal_c210.c | 1121 ++++
arch/arm/mach-exynos/mct.c | 488 ++
arch/arm/mach-exynos/platsmp.c | 200 +
arch/arm/mach-exynos/pm.c | 397 ++
arch/arm/mach-exynos/pm_domains.c | 201 +
arch/arm/mach-exynos/pmu.c | 230 +
arch/arm/mach-exynos/setup-fimc.c | 44 +
arch/arm/mach-exynos/setup-fimd0.c | 43 +
arch/arm/mach-exynos/setup-i2c0.c | 29 +
arch/arm/mach-exynos/setup-i2c1.c | 23 +
arch/arm/mach-exynos/setup-i2c2.c | 23 +
arch/arm/mach-exynos/setup-i2c3.c | 23 +
arch/arm/mach-exynos/setup-i2c4.c | 23 +
arch/arm/mach-exynos/setup-i2c5.c | 23 +
arch/arm/mach-exynos/setup-i2c6.c | 23 +
arch/arm/mach-exynos/setup-i2c7.c | 23 +
arch/arm/mach-exynos/setup-keypad.c | 36 +
arch/arm/mach-exynos/setup-sdhci-gpio.c | 152 +
arch/arm/mach-exynos/setup-spi.c | 72 +
arch/arm/mach-exynos/setup-usb-phy.c | 151 +
arch/arm/mach-footbridge/Kconfig | 97 +
arch/arm/mach-footbridge/Makefile | 28 +
arch/arm/mach-footbridge/Makefile.boot | 4 +
arch/arm/mach-footbridge/cats-hw.c | 95 +
arch/arm/mach-footbridge/cats-pci.c | 58 +
arch/arm/mach-footbridge/common.c | 272 +
arch/arm/mach-footbridge/common.h | 11 +
arch/arm/mach-footbridge/dc21285-timer.c | 114 +
arch/arm/mach-footbridge/dc21285.c | 393 ++
arch/arm/mach-footbridge/dma.c | 57 +
arch/arm/mach-footbridge/ebsa285-leds.c | 138 +
arch/arm/mach-footbridge/ebsa285-pci.c | 48 +
arch/arm/mach-footbridge/ebsa285.c | 26 +
.../arm/mach-footbridge/include/mach/debug-macro.S | 56 +
.../arm/mach-footbridge/include/mach/entry-macro.S | 107 +
arch/arm/mach-footbridge/include/mach/hardware.h | 103 +
arch/arm/mach-footbridge/include/mach/io.h | 31 +
arch/arm/mach-footbridge/include/mach/irqs.h | 98 +
arch/arm/mach-footbridge/include/mach/isa-dma.h | 25 +
arch/arm/mach-footbridge/include/mach/memory.h | 69 +
arch/arm/mach-footbridge/include/mach/timex.h | 18 +
arch/arm/mach-footbridge/include/mach/uncompress.h | 38 +
arch/arm/mach-footbridge/isa-irq.c | 183 +
arch/arm/mach-footbridge/isa-rtc.c | 57 +
arch/arm/mach-footbridge/isa-timer.c | 44 +
arch/arm/mach-footbridge/isa.c | 101 +
arch/arm/mach-footbridge/netwinder-hw.c | 687 +++
arch/arm/mach-footbridge/netwinder-leds.c | 138 +
arch/arm/mach-footbridge/netwinder-pci.c | 62 +
arch/arm/mach-footbridge/personal-pci.c | 57 +
arch/arm/mach-footbridge/personal.c | 24 +
arch/arm/mach-gemini/Kconfig | 40 +
arch/arm/mach-gemini/Makefile | 13 +
arch/arm/mach-gemini/Makefile.boot | 9 +
arch/arm/mach-gemini/board-nas4220b.c | 110 +
arch/arm/mach-gemini/board-rut1xx.c | 94 +
arch/arm/mach-gemini/board-wbd111.c | 137 +
arch/arm/mach-gemini/board-wbd222.c | 137 +
arch/arm/mach-gemini/common.h | 29 +
arch/arm/mach-gemini/devices.c | 118 +
arch/arm/mach-gemini/gpio.c | 230 +
arch/arm/mach-gemini/idle.c | 29 +
arch/arm/mach-gemini/include/mach/debug-macro.S | 21 +
arch/arm/mach-gemini/include/mach/entry-macro.S | 33 +
arch/arm/mach-gemini/include/mach/global_reg.h | 278 +
arch/arm/mach-gemini/include/mach/gpio.h | 20 +
arch/arm/mach-gemini/include/mach/hardware.h | 74 +
arch/arm/mach-gemini/include/mach/irqs.h | 53 +
arch/arm/mach-gemini/include/mach/system.h | 23 +
arch/arm/mach-gemini/include/mach/timex.h | 13 +
arch/arm/mach-gemini/include/mach/uncompress.h | 44 +
arch/arm/mach-gemini/irq.c | 102 +
arch/arm/mach-gemini/mm.c | 82 +
arch/arm/mach-gemini/time.c | 89 +
arch/arm/mach-h720x/Kconfig | 40 +
arch/arm/mach-h720x/Makefile | 16 +
arch/arm/mach-h720x/Makefile.boot | 2 +
arch/arm/mach-h720x/common.c | 268 +
arch/arm/mach-h720x/common.h | 30 +
arch/arm/mach-h720x/cpu-h7201.c | 60 +
arch/arm/mach-h720x/cpu-h7202.c | 228 +
arch/arm/mach-h720x/h7201-eval.c | 38 +
arch/arm/mach-h720x/h7202-eval.c | 81 +
arch/arm/mach-h720x/include/mach/boards.h | 53 +
arch/arm/mach-h720x/include/mach/debug-macro.S | 40 +
arch/arm/mach-h720x/include/mach/entry-macro.S | 57 +
arch/arm/mach-h720x/include/mach/h7201-regs.h | 67 +
arch/arm/mach-h720x/include/mach/h7202-regs.h | 155 +
arch/arm/mach-h720x/include/mach/hardware.h | 190 +
arch/arm/mach-h720x/include/mach/irqs.h | 116 +
arch/arm/mach-h720x/include/mach/isa-dma.h | 19 +
arch/arm/mach-h720x/include/mach/timex.h | 15 +
arch/arm/mach-h720x/include/mach/uncompress.h | 37 +
arch/arm/mach-highbank/Makefile | 5 +
arch/arm/mach-highbank/Makefile.boot | 1 +
arch/arm/mach-highbank/clock.c | 62 +
arch/arm/mach-highbank/core.h | 10 +
arch/arm/mach-highbank/highbank.c | 151 +
arch/arm/mach-highbank/hotplug.c | 56 +
arch/arm/mach-highbank/include/mach/debug-macro.S | 19 +
arch/arm/mach-highbank/include/mach/gpio.h | 1 +
arch/arm/mach-highbank/include/mach/timex.h | 6 +
arch/arm/mach-highbank/include/mach/uncompress.h | 9 +
arch/arm/mach-highbank/lluart.c | 34 +
arch/arm/mach-highbank/platsmp.c | 78 +
arch/arm/mach-highbank/pm.c | 55 +
arch/arm/mach-highbank/sysregs.h | 52 +
arch/arm/mach-highbank/system.c | 33 +
arch/arm/mach-imx/Kconfig | 850 +++
arch/arm/mach-imx/Makefile | 96 +
arch/arm/mach-imx/Makefile.boot | 45 +
arch/arm/mach-imx/clock-imx1.c | 636 +++
arch/arm/mach-imx/clock-imx21.c | 1239 +++++
arch/arm/mach-imx/clock-imx25.c | 346 ++
arch/arm/mach-imx/clock-imx27.c | 785 +++
arch/arm/mach-imx/clock-imx31.c | 630 +++
arch/arm/mach-imx/clock-imx35.c | 536 ++
arch/arm/mach-imx/clock-imx6q.c | 2111 ++++++++
arch/arm/mach-imx/clock-mx51-mx53.c | 1675 ++++++
arch/arm/mach-imx/cpu-imx25.c | 41 +
arch/arm/mach-imx/cpu-imx27.c | 74 +
arch/arm/mach-imx/cpu-imx31.c | 62 +
arch/arm/mach-imx/cpu-imx35.c | 42 +
arch/arm/mach-imx/cpu-imx5.c | 151 +
arch/arm/mach-imx/cpu_op-mx51.c | 30 +
arch/arm/mach-imx/cpu_op-mx51.h | 14 +
arch/arm/mach-imx/crm-regs-imx5.h | 600 +++
arch/arm/mach-imx/crmregs-imx3.h | 262 +
arch/arm/mach-imx/devices-imx1.h | 31 +
arch/arm/mach-imx/devices-imx21.h | 60 +
arch/arm/mach-imx/devices-imx25.h | 90 +
arch/arm/mach-imx/devices-imx27.h | 84 +
arch/arm/mach-imx/devices-imx31.h | 84 +
arch/arm/mach-imx/devices-imx35.h | 87 +
arch/arm/mach-imx/devices-imx50.h | 34 +
arch/arm/mach-imx/devices-imx51.h | 71 +
arch/arm/mach-imx/devices-imx53.h | 48 +
arch/arm/mach-imx/efika.h | 10 +
arch/arm/mach-imx/ehci-imx25.c | 80 +
arch/arm/mach-imx/ehci-imx27.c | 82 +
arch/arm/mach-imx/ehci-imx31.c | 82 +
arch/arm/mach-imx/ehci-imx35.c | 79 +
arch/arm/mach-imx/ehci-imx5.c | 156 +
arch/arm/mach-imx/eukrea_mbimx27-baseboard.c | 350 ++
arch/arm/mach-imx/eukrea_mbimx51-baseboard.c | 206 +
arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c | 145 +
arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c | 268 +
arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c | 280 +
arch/arm/mach-imx/gpc.c | 113 +
arch/arm/mach-imx/head-v7.S | 106 +
arch/arm/mach-imx/hotplug.c | 84 +
arch/arm/mach-imx/imx27-dt.c | 91 +
arch/arm/mach-imx/imx51-dt.c | 120 +
arch/arm/mach-imx/imx53-dt.c | 130 +
arch/arm/mach-imx/include/mach/dma-mx1-mx2.h | 10 +
arch/arm/mach-imx/iomux-imx31.c | 180 +
arch/arm/mach-imx/lluart.c | 32 +
arch/arm/mach-imx/mach-apf9328.c | 153 +
arch/arm/mach-imx/mach-armadillo5x0.c | 574 ++
arch/arm/mach-imx/mach-bug.c | 69 +
arch/arm/mach-imx/mach-cpuimx27.c | 322 ++
arch/arm/mach-imx/mach-cpuimx35.c | 211 +
arch/arm/mach-imx/mach-cpuimx51.c | 301 ++
arch/arm/mach-imx/mach-cpuimx51sd.c | 339 ++
arch/arm/mach-imx/mach-eukrea_cpuimx25.c | 174 +
arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 422 ++
arch/arm/mach-imx/mach-imx27ipcam.c | 82 +
arch/arm/mach-imx/mach-imx27lite.c | 88 +
arch/arm/mach-imx/mach-imx6q.c | 147 +
arch/arm/mach-imx/mach-kzm_arm11_01.c | 292 +
arch/arm/mach-imx/mach-mx1ads.c | 162 +
arch/arm/mach-imx/mach-mx21ads.c | 330 ++
arch/arm/mach-imx/mach-mx25_3ds.c | 274 +
arch/arm/mach-imx/mach-mx27_3ds.c | 537 ++
arch/arm/mach-imx/mach-mx27ads.c | 355 ++
arch/arm/mach-imx/mach-mx31_3ds.c | 773 +++
arch/arm/mach-imx/mach-mx31ads.c | 575 ++
arch/arm/mach-imx/mach-mx31lilly.c | 316 ++
arch/arm/mach-imx/mach-mx31lite.c | 300 ++
arch/arm/mach-imx/mach-mx31moboard.c | 605 +++
arch/arm/mach-imx/mach-mx35_3ds.c | 444 ++
arch/arm/mach-imx/mach-mx50_rdp.c | 226 +
arch/arm/mach-imx/mach-mx51_3ds.c | 179 +
arch/arm/mach-imx/mach-mx51_babbage.c | 430 ++
arch/arm/mach-imx/mach-mx51_efikamx.c | 297 +
arch/arm/mach-imx/mach-mx51_efikasb.c | 292 +
arch/arm/mach-imx/mach-mx53_ard.c | 270 +
arch/arm/mach-imx/mach-mx53_evk.c | 178 +
arch/arm/mach-imx/mach-mx53_loco.c | 320 ++
arch/arm/mach-imx/mach-mx53_smd.c | 167 +
arch/arm/mach-imx/mach-mxt_td60.c | 278 +
arch/arm/mach-imx/mach-pca100.c | 433 ++
arch/arm/mach-imx/mach-pcm037.c | 708 +++
arch/arm/mach-imx/mach-pcm037_eet.c | 179 +
arch/arm/mach-imx/mach-pcm038.c | 361 ++
arch/arm/mach-imx/mach-pcm043.c | 416 ++
arch/arm/mach-imx/mach-qong.c | 277 +
arch/arm/mach-imx/mach-scb9328.c | 148 +
arch/arm/mach-imx/mach-vpr200.c | 326 ++
arch/arm/mach-imx/mm-imx1.c | 61 +
arch/arm/mach-imx/mm-imx21.c | 94 +
arch/arm/mach-imx/mm-imx25.c | 103 +
arch/arm/mach-imx/mm-imx27.c | 96 +
arch/arm/mach-imx/mm-imx3.c | 286 +
arch/arm/mach-imx/mm-imx5.c | 236 +
arch/arm/mach-imx/mmdc.c | 72 +
arch/arm/mach-imx/mx1-camera-fiq-ksym.c | 18 +
arch/arm/mach-imx/mx1-camera-fiq.S | 35 +
arch/arm/mach-imx/mx31lilly-db.c | 216 +
arch/arm/mach-imx/mx31lite-db.c | 196 +
arch/arm/mach-imx/mx31moboard-devboard.c | 248 +
arch/arm/mach-imx/mx31moboard-marxbot.c | 372 ++
arch/arm/mach-imx/mx31moboard-smartbot.c | 209 +
arch/arm/mach-imx/mx51_efika.c | 632 +++
arch/arm/mach-imx/pcm037.h | 11 +
arch/arm/mach-imx/pcm970-baseboard.c | 231 +
arch/arm/mach-imx/platsmp.c | 85 +
arch/arm/mach-imx/pm-imx27.c | 48 +
arch/arm/mach-imx/pm-imx3.c | 37 +
arch/arm/mach-imx/pm-imx5.c | 153 +
arch/arm/mach-imx/pm-imx6q.c | 72 +
arch/arm/mach-imx/src.c | 75 +
arch/arm/mach-integrator/Kconfig | 41 +
arch/arm/mach-integrator/Makefile | 14 +
arch/arm/mach-integrator/Makefile.boot | 4 +
arch/arm/mach-integrator/common.h | 3 +
arch/arm/mach-integrator/core.c | 213 +
arch/arm/mach-integrator/cpu.c | 224 +
arch/arm/mach-integrator/impd1.c | 479 ++
arch/arm/mach-integrator/include/mach/clkdev.h | 26 +
arch/arm/mach-integrator/include/mach/cm.h | 36 +
.../arm/mach-integrator/include/mach/debug-macro.S | 20 +
.../arm/mach-integrator/include/mach/entry-macro.S | 39 +
arch/arm/mach-integrator/include/mach/hardware.h | 45 +
arch/arm/mach-integrator/include/mach/impd1.h | 18 +
arch/arm/mach-integrator/include/mach/io.h | 33 +
arch/arm/mach-integrator/include/mach/irqs.h | 83 +
arch/arm/mach-integrator/include/mach/lm.h | 23 +
arch/arm/mach-integrator/include/mach/memory.h | 34 +
arch/arm/mach-integrator/include/mach/platform.h | 402 ++
arch/arm/mach-integrator/include/mach/timex.h | 26 +
arch/arm/mach-integrator/include/mach/uncompress.h | 50 +
arch/arm/mach-integrator/integrator_ap.c | 484 ++
arch/arm/mach-integrator/integrator_cp.c | 473 ++
arch/arm/mach-integrator/leds.c | 90 +
arch/arm/mach-integrator/lm.c | 99 +
arch/arm/mach-integrator/pci.c | 124 +
arch/arm/mach-integrator/pci_v3.c | 614 +++
arch/arm/mach-iop13xx/Kconfig | 20 +
arch/arm/mach-iop13xx/Makefile | 13 +
arch/arm/mach-iop13xx/Makefile.boot | 3 +
arch/arm/mach-iop13xx/include/mach/adma.h | 647 +++
arch/arm/mach-iop13xx/include/mach/debug-macro.S | 24 +
arch/arm/mach-iop13xx/include/mach/entry-macro.S | 42 +
arch/arm/mach-iop13xx/include/mach/hardware.h | 21 +
arch/arm/mach-iop13xx/include/mach/io.h | 28 +
arch/arm/mach-iop13xx/include/mach/iop13xx.h | 528 ++
arch/arm/mach-iop13xx/include/mach/iq81340.h | 28 +
arch/arm/mach-iop13xx/include/mach/irqs.h | 196 +
arch/arm/mach-iop13xx/include/mach/memory.h | 72 +
arch/arm/mach-iop13xx/include/mach/msi.h | 11 +
arch/arm/mach-iop13xx/include/mach/pci.h | 57 +
arch/arm/mach-iop13xx/include/mach/time.h | 123 +
arch/arm/mach-iop13xx/include/mach/timex.h | 1 +
arch/arm/mach-iop13xx/include/mach/uncompress.h | 23 +
arch/arm/mach-iop13xx/io.c | 117 +
arch/arm/mach-iop13xx/iq81340mc.c | 101 +
arch/arm/mach-iop13xx/iq81340sc.c | 103 +
arch/arm/mach-iop13xx/irq.c | 240 +
arch/arm/mach-iop13xx/msi.c | 193 +
arch/arm/mach-iop13xx/pci.c | 1132 ++++
arch/arm/mach-iop13xx/pci.h | 6 +
arch/arm/mach-iop13xx/setup.c | 619 +++
arch/arm/mach-iop13xx/tpmi.c | 256 +
arch/arm/mach-iop32x/Kconfig | 46 +
arch/arm/mach-iop32x/Makefile | 14 +
arch/arm/mach-iop32x/Makefile.boot | 3 +
arch/arm/mach-iop32x/em7210.c | 212 +
arch/arm/mach-iop32x/glantank.c | 216 +
arch/arm/mach-iop32x/include/mach/adma.h | 5 +
arch/arm/mach-iop32x/include/mach/debug-macro.S | 21 +
arch/arm/mach-iop32x/include/mach/entry-macro.S | 33 +
arch/arm/mach-iop32x/include/mach/glantank.h | 13 +
arch/arm/mach-iop32x/include/mach/gpio.h | 6 +
arch/arm/mach-iop32x/include/mach/hardware.h | 41 +
arch/arm/mach-iop32x/include/mach/io.h | 19 +
arch/arm/mach-iop32x/include/mach/iop32x.h | 35 +
arch/arm/mach-iop32x/include/mach/iq31244.h | 17 +
arch/arm/mach-iop32x/include/mach/iq80321.h | 17 +
arch/arm/mach-iop32x/include/mach/irqs.h | 50 +
arch/arm/mach-iop32x/include/mach/n2100.h | 19 +
arch/arm/mach-iop32x/include/mach/time.h | 4 +
arch/arm/mach-iop32x/include/mach/timex.h | 6 +
arch/arm/mach-iop32x/include/mach/uncompress.h | 39 +
arch/arm/mach-iop32x/iq31244.c | 337 ++
arch/arm/mach-iop32x/iq80321.c | 195 +
arch/arm/mach-iop32x/irq.c | 74 +
arch/arm/mach-iop32x/n2100.c | 344 ++
arch/arm/mach-iop33x/Kconfig | 21 +
arch/arm/mach-iop33x/Makefile | 11 +
arch/arm/mach-iop33x/Makefile.boot | 3 +
arch/arm/mach-iop33x/include/mach/adma.h | 5 +
arch/arm/mach-iop33x/include/mach/debug-macro.S | 22 +
arch/arm/mach-iop33x/include/mach/entry-macro.S | 34 +
arch/arm/mach-iop33x/include/mach/gpio.h | 6 +
arch/arm/mach-iop33x/include/mach/hardware.h | 43 +
arch/arm/mach-iop33x/include/mach/io.h | 19 +
arch/arm/mach-iop33x/include/mach/iop33x.h | 41 +
arch/arm/mach-iop33x/include/mach/iq80331.h | 16 +
arch/arm/mach-iop33x/include/mach/iq80332.h | 16 +
arch/arm/mach-iop33x/include/mach/irqs.h | 60 +
arch/arm/mach-iop33x/include/mach/time.h | 4 +
arch/arm/mach-iop33x/include/mach/timex.h | 6 +
arch/arm/mach-iop33x/include/mach/uncompress.h | 37 +
arch/arm/mach-iop33x/iq80331.c | 150 +
arch/arm/mach-iop33x/iq80332.c | 150 +
arch/arm/mach-iop33x/irq.c | 118 +
arch/arm/mach-iop33x/uart.c | 103 +
arch/arm/mach-ixp2000/Kconfig | 72 +
arch/arm/mach-ixp2000/Makefile | 14 +
arch/arm/mach-ixp2000/Makefile.boot | 3 +
arch/arm/mach-ixp2000/core.c | 520 ++
arch/arm/mach-ixp2000/enp2611.c | 265 +
arch/arm/mach-ixp2000/include/mach/debug-macro.S | 25 +
arch/arm/mach-ixp2000/include/mach/enp2611.h | 46 +
arch/arm/mach-ixp2000/include/mach/entry-macro.S | 54 +
arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h | 48 +
arch/arm/mach-ixp2000/include/mach/hardware.h | 36 +
arch/arm/mach-ixp2000/include/mach/io.h | 133 +
arch/arm/mach-ixp2000/include/mach/irqs.h | 207 +
arch/arm/mach-ixp2000/include/mach/ixdp2x00.h | 92 +
arch/arm/mach-ixp2000/include/mach/ixdp2x01.h | 57 +
arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h | 451 ++
arch/arm/mach-ixp2000/include/mach/memory.h | 31 +
arch/arm/mach-ixp2000/include/mach/platform.h | 153 +
arch/arm/mach-ixp2000/include/mach/timex.h | 13 +
arch/arm/mach-ixp2000/include/mach/uncompress.h | 47 +
arch/arm/mach-ixp2000/ixdp2400.c | 180 +
arch/arm/mach-ixp2000/ixdp2800.c | 295 +
arch/arm/mach-ixp2000/ixdp2x00.c | 306 ++
arch/arm/mach-ixp2000/ixdp2x01.c | 483 ++
arch/arm/mach-ixp2000/pci.c | 252 +
arch/arm/mach-ixp23xx/Kconfig | 25 +
arch/arm/mach-ixp23xx/Makefile | 11 +
arch/arm/mach-ixp23xx/Makefile.boot | 2 +
arch/arm/mach-ixp23xx/core.c | 455 ++
arch/arm/mach-ixp23xx/espresso.c | 93 +
arch/arm/mach-ixp23xx/include/mach/debug-macro.S | 25 +
arch/arm/mach-ixp23xx/include/mach/entry-macro.S | 31 +
arch/arm/mach-ixp23xx/include/mach/hardware.h | 32 +
arch/arm/mach-ixp23xx/include/mach/io.h | 22 +
arch/arm/mach-ixp23xx/include/mach/irqs.h | 223 +
arch/arm/mach-ixp23xx/include/mach/ixdp2351.h | 89 +
arch/arm/mach-ixp23xx/include/mach/ixp23xx.h | 298 +
arch/arm/mach-ixp23xx/include/mach/memory.h | 34 +
arch/arm/mach-ixp23xx/include/mach/platform.h | 58 +
arch/arm/mach-ixp23xx/include/mach/time.h | 3 +
arch/arm/mach-ixp23xx/include/mach/timex.h | 7 +
arch/arm/mach-ixp23xx/include/mach/uncompress.h | 40 +
arch/arm/mach-ixp23xx/ixdp2351.c | 347 ++
arch/arm/mach-ixp23xx/pci.c | 294 +
arch/arm/mach-ixp23xx/roadrunner.c | 180 +
arch/arm/mach-ixp4xx/Kconfig | 245 +
arch/arm/mach-ixp4xx/Makefile | 43 +
arch/arm/mach-ixp4xx/Makefile.boot | 3 +
arch/arm/mach-ixp4xx/avila-pci.c | 82 +
arch/arm/mach-ixp4xx/avila-setup.c | 199 +
arch/arm/mach-ixp4xx/common-pci.c | 499 ++
arch/arm/mach-ixp4xx/common.c | 597 ++
arch/arm/mach-ixp4xx/coyote-pci.c | 65 +
arch/arm/mach-ixp4xx/coyote-setup.c | 141 +
arch/arm/mach-ixp4xx/dsmg600-pci.c | 80 +
arch/arm/mach-ixp4xx/dsmg600-setup.c | 291 +
arch/arm/mach-ixp4xx/fsg-pci.c | 76 +
arch/arm/mach-ixp4xx/fsg-setup.c | 283 +
arch/arm/mach-ixp4xx/gateway7001-pci.c | 64 +
arch/arm/mach-ixp4xx/gateway7001-setup.c | 110 +
arch/arm/mach-ixp4xx/goramo_mlr.c | 508 ++
arch/arm/mach-ixp4xx/gtwx5715-pci.c | 85 +
arch/arm/mach-ixp4xx/gtwx5715-setup.c | 179 +
arch/arm/mach-ixp4xx/include/mach/cpu.h | 57 +
arch/arm/mach-ixp4xx/include/mach/debug-macro.S | 26 +
arch/arm/mach-ixp4xx/include/mach/entry-macro.S | 41 +
arch/arm/mach-ixp4xx/include/mach/gpio.h | 2 +
arch/arm/mach-ixp4xx/include/mach/hardware.h | 36 +
arch/arm/mach-ixp4xx/include/mach/io.h | 502 ++
arch/arm/mach-ixp4xx/include/mach/irqs.h | 75 +
arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h | 78 +
arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h | 660 +++
arch/arm/mach-ixp4xx/include/mach/npe.h | 39 +
arch/arm/mach-ixp4xx/include/mach/platform.h | 175 +
arch/arm/mach-ixp4xx/include/mach/qmgr.h | 204 +
arch/arm/mach-ixp4xx/include/mach/timex.h | 16 +
arch/arm/mach-ixp4xx/include/mach/udc.h | 8 +
arch/arm/mach-ixp4xx/include/mach/uncompress.h | 58 +
arch/arm/mach-ixp4xx/ixdp425-pci.c | 78 +
arch/arm/mach-ixp4xx/ixdp425-setup.c | 312 ++
arch/arm/mach-ixp4xx/ixdpg425-pci.c | 59 +
arch/arm/mach-ixp4xx/ixp4xx_npe.c | 735 +++
arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | 382 ++
arch/arm/mach-ixp4xx/miccpt-pci.c | 78 +
arch/arm/mach-ixp4xx/nas100d-pci.c | 76 +
arch/arm/mach-ixp4xx/nas100d-setup.c | 326 ++
arch/arm/mach-ixp4xx/nslu2-pci.c | 72 +
arch/arm/mach-ixp4xx/nslu2-setup.c | 312 ++
arch/arm/mach-ixp4xx/omixp-setup.c | 279 +
arch/arm/mach-ixp4xx/vulcan-pci.c | 73 +
arch/arm/mach-ixp4xx/vulcan-setup.c | 249 +
arch/arm/mach-ixp4xx/wg302v2-pci.c | 63 +
arch/arm/mach-ixp4xx/wg302v2-setup.c | 111 +
arch/arm/mach-kirkwood/Kconfig | 149 +
arch/arm/mach-kirkwood/Makefile | 24 +
arch/arm/mach-kirkwood/Makefile.boot | 5 +
arch/arm/mach-kirkwood/addr-map.c | 90 +
arch/arm/mach-kirkwood/board-dreamplug.c | 152 +
arch/arm/mach-kirkwood/board-dt.c | 76 +
arch/arm/mach-kirkwood/common.c | 549 ++
arch/arm/mach-kirkwood/common.h | 74 +
arch/arm/mach-kirkwood/cpuidle.c | 73 +
arch/arm/mach-kirkwood/d2net_v2-setup.c | 231 +
arch/arm/mach-kirkwood/db88f6281-bp-setup.c | 107 +
arch/arm/mach-kirkwood/dockstar-setup.c | 112 +
arch/arm/mach-kirkwood/guruplug-setup.c | 131 +
arch/arm/mach-kirkwood/include/mach/bridge-regs.h | 65 +
arch/arm/mach-kirkwood/include/mach/debug-macro.S | 19 +
arch/arm/mach-kirkwood/include/mach/entry-macro.S | 34 +
arch/arm/mach-kirkwood/include/mach/gpio.h | 9 +
arch/arm/mach-kirkwood/include/mach/hardware.h | 14 +
arch/arm/mach-kirkwood/include/mach/io.h | 24 +
arch/arm/mach-kirkwood/include/mach/irqs.h | 65 +
arch/arm/mach-kirkwood/include/mach/kirkwood.h | 140 +
arch/arm/mach-kirkwood/include/mach/leds-netxbig.h | 55 +
arch/arm/mach-kirkwood/include/mach/leds-ns2.h | 26 +
arch/arm/mach-kirkwood/include/mach/timex.h | 10 +
arch/arm/mach-kirkwood/include/mach/uncompress.h | 47 +
arch/arm/mach-kirkwood/irq.c | 48 +
arch/arm/mach-kirkwood/lacie_v2-common.c | 113 +
arch/arm/mach-kirkwood/lacie_v2-common.h | 16 +
arch/arm/mach-kirkwood/mpp.c | 42 +
arch/arm/mach-kirkwood/mpp.h | 348 ++
arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c | 173 +
arch/arm/mach-kirkwood/netspace_v2-setup.c | 293 +
arch/arm/mach-kirkwood/netxbig_v2-setup.c | 422 ++
arch/arm/mach-kirkwood/openrd-setup.c | 257 +
arch/arm/mach-kirkwood/pcie.c | 286 +
arch/arm/mach-kirkwood/rd88f6192-nas-setup.c | 89 +
arch/arm/mach-kirkwood/rd88f6281-setup.c | 125 +
arch/arm/mach-kirkwood/sheevaplug-setup.c | 161 +
arch/arm/mach-kirkwood/t5325-setup.c | 217 +
arch/arm/mach-kirkwood/ts219-setup.c | 142 +
arch/arm/mach-kirkwood/ts41x-setup.c | 186 +
arch/arm/mach-kirkwood/tsx1x-common.c | 113 +
arch/arm/mach-kirkwood/tsx1x-common.h | 7 +
arch/arm/mach-ks8695/Kconfig | 26 +
arch/arm/mach-ks8695/Makefile | 20 +
arch/arm/mach-ks8695/Makefile.boot | 8 +
arch/arm/mach-ks8695/board-acs5k.c | 232 +
arch/arm/mach-ks8695/board-dsm320.c | 130 +
arch/arm/mach-ks8695/board-micrel.c | 62 +
arch/arm/mach-ks8695/cpu.c | 73 +
arch/arm/mach-ks8695/devices.c | 218 +
arch/arm/mach-ks8695/generic.h | 16 +
arch/arm/mach-ks8695/include/mach/debug-macro.S | 36 +
arch/arm/mach-ks8695/include/mach/devices.h | 37 +
arch/arm/mach-ks8695/include/mach/entry-macro.S | 47 +
arch/arm/mach-ks8695/include/mach/gpio-ks8695.h | 39 +
arch/arm/mach-ks8695/include/mach/gpio.h | 19 +
arch/arm/mach-ks8695/include/mach/hardware.h | 45 +
arch/arm/mach-ks8695/include/mach/irqs.h | 54 +
arch/arm/mach-ks8695/include/mach/memory.h | 55 +
arch/arm/mach-ks8695/include/mach/regs-gpio.h | 55 +
arch/arm/mach-ks8695/include/mach/regs-hpna.h | 25 +
arch/arm/mach-ks8695/include/mach/regs-irq.h | 41 +
arch/arm/mach-ks8695/include/mach/regs-lan.h | 65 +
arch/arm/mach-ks8695/include/mach/regs-mem.h | 89 +
arch/arm/mach-ks8695/include/mach/regs-misc.h | 97 +
arch/arm/mach-ks8695/include/mach/regs-pci.h | 53 +
arch/arm/mach-ks8695/include/mach/regs-switch.h | 66 +
arch/arm/mach-ks8695/include/mach/regs-sys.h | 34 +
arch/arm/mach-ks8695/include/mach/regs-timer.h | 40 +
arch/arm/mach-ks8695/include/mach/regs-uart.h | 92 +
arch/arm/mach-ks8695/include/mach/regs-wan.h | 65 +
arch/arm/mach-ks8695/include/mach/timex.h | 21 +
arch/arm/mach-ks8695/include/mach/uncompress.h | 37 +
arch/arm/mach-ks8695/irq.c | 177 +
arch/arm/mach-ks8695/leds.c | 92 +
arch/arm/mach-ks8695/pci.c | 332 ++
arch/arm/mach-ks8695/time.c | 130 +
arch/arm/mach-l7200/include/mach/debug-macro.S | 38 +
arch/arm/mach-lpc32xx/Kconfig | 58 +
arch/arm/mach-lpc32xx/Makefile | 8 +
arch/arm/mach-lpc32xx/Makefile.boot | 4 +
arch/arm/mach-lpc32xx/clock.c | 1191 ++++
arch/arm/mach-lpc32xx/clock.h | 38 +
arch/arm/mach-lpc32xx/common.c | 400 ++
arch/arm/mach-lpc32xx/common.h | 79 +
arch/arm/mach-lpc32xx/include/mach/board.h | 24 +
arch/arm/mach-lpc32xx/include/mach/debug-macro.S | 29 +
arch/arm/mach-lpc32xx/include/mach/entry-macro.S | 37 +
arch/arm/mach-lpc32xx/include/mach/gpio-lpc32xx.h | 50 +
arch/arm/mach-lpc32xx/include/mach/gpio.h | 1 +
arch/arm/mach-lpc32xx/include/mach/hardware.h | 34 +
arch/arm/mach-lpc32xx/include/mach/i2c.h | 63 +
arch/arm/mach-lpc32xx/include/mach/irqs.h | 117 +
arch/arm/mach-lpc32xx/include/mach/platform.h | 697 +++
arch/arm/mach-lpc32xx/include/mach/timex.h | 28 +
arch/arm/mach-lpc32xx/include/mach/uncompress.h | 60 +
arch/arm/mach-lpc32xx/irq.c | 451 ++
arch/arm/mach-lpc32xx/phy3250.c | 374 ++
arch/arm/mach-lpc32xx/pm.c | 146 +
arch/arm/mach-lpc32xx/serial.c | 208 +
arch/arm/mach-lpc32xx/suspend.S | 151 +
arch/arm/mach-lpc32xx/timer.c | 168 +
arch/arm/mach-mmp/Kconfig | 116 +
arch/arm/mach-mmp/Makefile | 23 +
arch/arm/mach-mmp/Makefile.boot | 1 +
arch/arm/mach-mmp/aspenite.c | 257 +
arch/arm/mach-mmp/avengers_lite.c | 51 +
arch/arm/mach-mmp/brownstone.c | 224 +
arch/arm/mach-mmp/clock.c | 105 +
arch/arm/mach-mmp/clock.h | 71 +
arch/arm/mach-mmp/common.c | 53 +
arch/arm/mach-mmp/common.h | 9 +
arch/arm/mach-mmp/devices.c | 69 +
arch/arm/mach-mmp/flint.c | 127 +
arch/arm/mach-mmp/gplugd.c | 199 +
arch/arm/mach-mmp/include/mach/addr-map.h | 34 +
arch/arm/mach-mmp/include/mach/cputype.h | 55 +
arch/arm/mach-mmp/include/mach/debug-macro.S | 22 +
arch/arm/mach-mmp/include/mach/devices.h | 53 +
arch/arm/mach-mmp/include/mach/dma.h | 13 +
arch/arm/mach-mmp/include/mach/entry-macro.S | 24 +
arch/arm/mach-mmp/include/mach/gpio-pxa.h | 29 +
arch/arm/mach-mmp/include/mach/gpio.h | 8 +
arch/arm/mach-mmp/include/mach/hardware.h | 4 +
arch/arm/mach-mmp/include/mach/irqs.h | 228 +
arch/arm/mach-mmp/include/mach/mfp-mmp2.h | 395 ++
arch/arm/mach-mmp/include/mach/mfp-pxa168.h | 354 ++
arch/arm/mach-mmp/include/mach/mfp-pxa910.h | 170 +
arch/arm/mach-mmp/include/mach/mfp.h | 34 +
arch/arm/mach-mmp/include/mach/mmp2.h | 104 +
arch/arm/mach-mmp/include/mach/pxa168.h | 138 +
arch/arm/mach-mmp/include/mach/pxa910.h | 82 +
arch/arm/mach-mmp/include/mach/regs-apbc.h | 122 +
arch/arm/mach-mmp/include/mach/regs-apmu.h | 51 +
arch/arm/mach-mmp/include/mach/regs-icu.h | 71 +
arch/arm/mach-mmp/include/mach/regs-rtc.h | 23 +
arch/arm/mach-mmp/include/mach/regs-smc.h | 37 +
arch/arm/mach-mmp/include/mach/regs-timers.h | 44 +
arch/arm/mach-mmp/include/mach/sram.h | 35 +
arch/arm/mach-mmp/include/mach/teton_bga.h | 27 +
arch/arm/mach-mmp/include/mach/timex.h | 13 +
arch/arm/mach-mmp/include/mach/uncompress.h | 51 +
arch/arm/mach-mmp/irq-mmp2.c | 158 +
arch/arm/mach-mmp/irq-pxa168.c | 54 +
arch/arm/mach-mmp/jasper.c | 180 +
arch/arm/mach-mmp/mmp-dt.c | 75 +
arch/arm/mach-mmp/mmp2.c | 236 +
arch/arm/mach-mmp/pxa168.c | 228 +
arch/arm/mach-mmp/pxa910.c | 213 +
arch/arm/mach-mmp/sram.c | 168 +
arch/arm/mach-mmp/tavorevb.c | 109 +
arch/arm/mach-mmp/teton_bga.c | 92 +
arch/arm/mach-mmp/time.c | 205 +
arch/arm/mach-mmp/ttc_dkb.c | 166 +
arch/arm/mach-msm/Kconfig | 170 +
arch/arm/mach-msm/Makefile | 33 +
arch/arm/mach-msm/Makefile.boot | 3 +
arch/arm/mach-msm/acpuclock-arm11.c | 525 ++
arch/arm/mach-msm/acpuclock.h | 32 +
arch/arm/mach-msm/board-halibut.c | 105 +
arch/arm/mach-msm/board-mahimahi.c | 83 +
arch/arm/mach-msm/board-msm7x27.c | 161 +
arch/arm/mach-msm/board-msm7x30.c | 151 +
arch/arm/mach-msm/board-msm8960.c | 115 +
arch/arm/mach-msm/board-msm8x60.c | 156 +
arch/arm/mach-msm/board-qsd8x50.c | 208 +
arch/arm/mach-msm/board-sapphire.c | 112 +
arch/arm/mach-msm/board-trout-gpio.c | 233 +
arch/arm/mach-msm/board-trout-mmc.c | 185 +
arch/arm/mach-msm/board-trout-panel.c | 297 +
arch/arm/mach-msm/board-trout.c | 109 +
arch/arm/mach-msm/board-trout.h | 162 +
arch/arm/mach-msm/clock-7x30.h | 155 +
arch/arm/mach-msm/clock-debug.c | 130 +
arch/arm/mach-msm/clock-pcom.c | 138 +
arch/arm/mach-msm/clock-pcom.h | 140 +
arch/arm/mach-msm/clock.c | 184 +
arch/arm/mach-msm/clock.h | 72 +
arch/arm/mach-msm/devices-iommu.c | 912 ++++
arch/arm/mach-msm/devices-msm7x00.c | 441 ++
arch/arm/mach-msm/devices-msm7x30.c | 210 +
arch/arm/mach-msm/devices-msm8960.c | 85 +
arch/arm/mach-msm/devices-qsd8x50.c | 349 ++
arch/arm/mach-msm/devices.h | 58 +
arch/arm/mach-msm/dma.c | 271 +
arch/arm/mach-msm/gpiomux-8x50.c | 51 +
arch/arm/mach-msm/gpiomux-8x60.c | 19 +
arch/arm/mach-msm/gpiomux-v1.c | 33 +
arch/arm/mach-msm/gpiomux-v1.h | 67 +
arch/arm/mach-msm/gpiomux-v2.c | 25 +
arch/arm/mach-msm/gpiomux-v2.h | 61 +
arch/arm/mach-msm/gpiomux.c | 96 +
arch/arm/mach-msm/gpiomux.h | 99 +
arch/arm/mach-msm/headsmp.S | 41 +
arch/arm/mach-msm/hotplug.c | 92 +
arch/arm/mach-msm/idle.c | 49 +
arch/arm/mach-msm/include/mach/board.h | 50 +
arch/arm/mach-msm/include/mach/clk.h | 40 +
arch/arm/mach-msm/include/mach/cpu.h | 54 +
arch/arm/mach-msm/include/mach/debug-macro.S | 66 +
arch/arm/mach-msm/include/mach/dma.h | 177 +
arch/arm/mach-msm/include/mach/entry-macro.S | 36 +
arch/arm/mach-msm/include/mach/gpio.h | 1 +
arch/arm/mach-msm/include/mach/hardware.h | 18 +
arch/arm/mach-msm/include/mach/iommu.h | 120 +
arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h | 1865 +++++++
arch/arm/mach-msm/include/mach/irqs-7x00.h | 75 +
arch/arm/mach-msm/include/mach/irqs-7x30.h | 153 +
arch/arm/mach-msm/include/mach/irqs-8960.h | 277 +
arch/arm/mach-msm/include/mach/irqs-8x50.h | 88 +
arch/arm/mach-msm/include/mach/irqs-8x60.h | 258 +
arch/arm/mach-msm/include/mach/irqs.h | 42 +
arch/arm/mach-msm/include/mach/mmc.h | 30 +
arch/arm/mach-msm/include/mach/msm_fb.h | 147 +
arch/arm/mach-msm/include/mach/msm_gpiomux.h | 38 +
arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 115 +
arch/arm/mach-msm/include/mach/msm_iomap-7x30.h | 107 +
arch/arm/mach-msm/include/mach/msm_iomap-8960.h | 57 +
arch/arm/mach-msm/include/mach/msm_iomap-8x50.h | 129 +
arch/arm/mach-msm/include/mach/msm_iomap-8x60.h | 74 +
arch/arm/mach-msm/include/mach/msm_iomap.h | 73 +
arch/arm/mach-msm/include/mach/msm_smd.h | 109 +
arch/arm/mach-msm/include/mach/sirc.h | 98 +
arch/arm/mach-msm/include/mach/system.h | 19 +
arch/arm/mach-msm/include/mach/timex.h | 21 +
arch/arm/mach-msm/include/mach/uncompress.h | 67 +
arch/arm/mach-msm/include/mach/vreg.h | 29 +
arch/arm/mach-msm/io.c | 188 +
arch/arm/mach-msm/irq-vic.c | 363 ++
arch/arm/mach-msm/irq.c | 151 +
arch/arm/mach-msm/last_radio_log.c | 83 +
arch/arm/mach-msm/platsmp.c | 174 +
arch/arm/mach-msm/proc_comm.c | 130 +
arch/arm/mach-msm/proc_comm.h | 258 +
arch/arm/mach-msm/scm-boot.c | 39 +
arch/arm/mach-msm/scm-boot.h | 22 +
arch/arm/mach-msm/scm.c | 296 +
arch/arm/mach-msm/scm.h | 25 +
arch/arm/mach-msm/sirc.c | 172 +
arch/arm/mach-msm/smd.c | 1041 ++++
arch/arm/mach-msm/smd_debug.c | 312 ++
arch/arm/mach-msm/smd_private.h | 403 ++
arch/arm/mach-msm/timer.c | 247 +
arch/arm/mach-msm/vreg.c | 220 +
arch/arm/mach-mv78xx0/Kconfig | 25 +
arch/arm/mach-mv78xx0/Makefile | 4 +
arch/arm/mach-mv78xx0/Makefile.boot | 3 +
arch/arm/mach-mv78xx0/addr-map.c | 92 +
arch/arm/mach-mv78xx0/buffalo-wxl-setup.c | 155 +
arch/arm/mach-mv78xx0/common.c | 416 ++
arch/arm/mach-mv78xx0/common.h | 53 +
arch/arm/mach-mv78xx0/db78x00-bp-setup.c | 103 +
arch/arm/mach-mv78xx0/include/mach/bridge-regs.h | 36 +
arch/arm/mach-mv78xx0/include/mach/debug-macro.S | 19 +
arch/arm/mach-mv78xx0/include/mach/entry-macro.S | 41 +
arch/arm/mach-mv78xx0/include/mach/gpio.h | 9 +
arch/arm/mach-mv78xx0/include/mach/hardware.h | 14 +
arch/arm/mach-mv78xx0/include/mach/io.h | 24 +
arch/arm/mach-mv78xx0/include/mach/irqs.h | 94 +
arch/arm/mach-mv78xx0/include/mach/mv78xx0.h | 123 +
arch/arm/mach-mv78xx0/include/mach/timex.h | 9 +
arch/arm/mach-mv78xx0/include/mach/uncompress.h | 47 +
arch/arm/mach-mv78xx0/irq.c | 44 +
arch/arm/mach-mv78xx0/mpp.c | 37 +
arch/arm/mach-mv78xx0/mpp.h | 341 ++
arch/arm/mach-mv78xx0/pcie.c | 323 ++
arch/arm/mach-mv78xx0/rd78x00-masa-setup.c | 88 +
arch/arm/mach-mxs/Kconfig | 110 +
arch/arm/mach-mxs/Makefile | 18 +
arch/arm/mach-mxs/Makefile.boot | 1 +
arch/arm/mach-mxs/clock-mx23.c | 536 ++
arch/arm/mach-mxs/clock-mx28.c | 803 +++
arch/arm/mach-mxs/clock.c | 211 +
arch/arm/mach-mxs/devices-mx23.h | 37 +
arch/arm/mach-mxs/devices-mx28.h | 57 +
arch/arm/mach-mxs/devices.c | 103 +
arch/arm/mach-mxs/devices/Kconfig | 34 +
arch/arm/mach-mxs/devices/Makefile | 13 +
arch/arm/mach-mxs/devices/amba-duart.c | 40 +
arch/arm/mach-mxs/devices/platform-auart.c | 65 +
arch/arm/mach-mxs/devices/platform-dma.c | 50 +
arch/arm/mach-mxs/devices/platform-fec.c | 52 +
arch/arm/mach-mxs/devices/platform-flexcan.c | 51 +
arch/arm/mach-mxs/devices/platform-gpio-mxs.c | 53 +
arch/arm/mach-mxs/devices/platform-gpmi-nand.c | 81 +
arch/arm/mach-mxs/devices/platform-mxs-i2c.c | 52 +
arch/arm/mach-mxs/devices/platform-mxs-mmc.c | 75 +
arch/arm/mach-mxs/devices/platform-mxs-pwm.c | 22 +
arch/arm/mach-mxs/devices/platform-mxs-saif.c | 61 +
arch/arm/mach-mxs/devices/platform-mxsfb.c | 47 +
arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c | 51 +
arch/arm/mach-mxs/icoll.c | 80 +
arch/arm/mach-mxs/include/mach/clock.h | 62 +
arch/arm/mach-mxs/include/mach/common.h | 36 +
arch/arm/mach-mxs/include/mach/debug-macro.S | 30 +
arch/arm/mach-mxs/include/mach/devices-common.h | 118 +
arch/arm/mach-mxs/include/mach/digctl.h | 22 +
arch/arm/mach-mxs/include/mach/entry-macro.S | 35 +
arch/arm/mach-mxs/include/mach/gpio.h | 1 +
arch/arm/mach-mxs/include/mach/hardware.h | 23 +
arch/arm/mach-mxs/include/mach/iomux-mx23.h | 355 ++
arch/arm/mach-mxs/include/mach/iomux-mx28.h | 537 ++
arch/arm/mach-mxs/include/mach/iomux.h | 168 +
arch/arm/mach-mxs/include/mach/irqs.h | 32 +
arch/arm/mach-mxs/include/mach/mmc.h | 18 +
arch/arm/mach-mxs/include/mach/mx23.h | 169 +
arch/arm/mach-mxs/include/mach/mx28.h | 225 +
arch/arm/mach-mxs/include/mach/mxs.h | 117 +
arch/arm/mach-mxs/include/mach/mxsfb.h | 49 +
arch/arm/mach-mxs/include/mach/timex.h | 21 +
arch/arm/mach-mxs/include/mach/uncompress.h | 77 +
arch/arm/mach-mxs/iomux.c | 101 +
arch/arm/mach-mxs/mach-apx4devkit.c | 260 +
arch/arm/mach-mxs/mach-m28evk.c | 364 ++
arch/arm/mach-mxs/mach-mx23evk.c | 188 +
arch/arm/mach-mxs/mach-mx28evk.c | 475 ++
arch/arm/mach-mxs/mach-stmp378x_devb.c | 121 +
arch/arm/mach-mxs/mach-tx28.c | 182 +
arch/arm/mach-mxs/mm.c | 63 +
arch/arm/mach-mxs/module-tx28.c | 160 +
arch/arm/mach-mxs/module-tx28.h | 10 +
arch/arm/mach-mxs/ocotp.c | 92 +
arch/arm/mach-mxs/pm.c | 42 +
arch/arm/mach-mxs/regs-clkctrl-mx23.h | 331 ++
arch/arm/mach-mxs/regs-clkctrl-mx28.h | 486 ++
arch/arm/mach-mxs/system.c | 155 +
arch/arm/mach-mxs/timer.c | 290 +
arch/arm/mach-netx/Kconfig | 24 +
arch/arm/mach-netx/Makefile | 12 +
arch/arm/mach-netx/Makefile.boot | 2 +
arch/arm/mach-netx/fb.c | 102 +
arch/arm/mach-netx/fb.h | 24 +
arch/arm/mach-netx/generic.c | 194 +
arch/arm/mach-netx/generic.h | 25 +
arch/arm/mach-netx/include/mach/debug-macro.S | 36 +
arch/arm/mach-netx/include/mach/eth.h | 27 +
arch/arm/mach-netx/include/mach/hardware.h | 39 +
arch/arm/mach-netx/include/mach/irqs.h | 70 +
arch/arm/mach-netx/include/mach/netx-regs.h | 432 ++
arch/arm/mach-netx/include/mach/param.h | 18 +
arch/arm/mach-netx/include/mach/pfifo.h | 54 +
arch/arm/mach-netx/include/mach/timex.h | 20 +
arch/arm/mach-netx/include/mach/uncompress.h | 76 +
arch/arm/mach-netx/include/mach/xc.h | 42 +
arch/arm/mach-netx/nxdb500.c | 211 +
arch/arm/mach-netx/nxdkn.c | 104 +
arch/arm/mach-netx/nxeb500hmi.c | 188 +
arch/arm/mach-netx/pfifo.c | 68 +
arch/arm/mach-netx/time.c | 157 +
arch/arm/mach-netx/xc.c | 258 +
arch/arm/mach-nomadik/Kconfig | 21 +
arch/arm/mach-nomadik/Makefile | 19 +
arch/arm/mach-nomadik/Makefile.boot | 4 +
arch/arm/mach-nomadik/board-nhk8815.c | 278 +
arch/arm/mach-nomadik/clock.c | 75 +
arch/arm/mach-nomadik/clock.h | 15 +
arch/arm/mach-nomadik/cpu-8815.c | 173 +
arch/arm/mach-nomadik/cpu-8815.h | 4 +
arch/arm/mach-nomadik/i2c-8815nhk.c | 65 +
arch/arm/mach-nomadik/include/mach/debug-macro.S | 20 +
arch/arm/mach-nomadik/include/mach/fsmc.h | 29 +
arch/arm/mach-nomadik/include/mach/gpio.h | 4 +
arch/arm/mach-nomadik/include/mach/hardware.h | 90 +
arch/arm/mach-nomadik/include/mach/irqs.h | 82 +
arch/arm/mach-nomadik/include/mach/nand.h | 16 +
arch/arm/mach-nomadik/include/mach/timex.h | 6 +
arch/arm/mach-nomadik/include/mach/uncompress.h | 63 +
arch/arm/mach-omap1/Kconfig | 174 +
arch/arm/mach-omap1/Makefile | 69 +
arch/arm/mach-omap1/Makefile.boot | 3 +
arch/arm/mach-omap1/ams-delta-fiq-handler.S | 280 +
arch/arm/mach-omap1/ams-delta-fiq.c | 158 +
arch/arm/mach-omap1/board-ams-delta.c | 616 +++
arch/arm/mach-omap1/board-fsample.c | 388 ++
arch/arm/mach-omap1/board-generic.c | 93 +
arch/arm/mach-omap1/board-h2-mmc.c | 79 +
arch/arm/mach-omap1/board-h2.c | 451 ++
arch/arm/mach-omap1/board-h2.h | 38 +
arch/arm/mach-omap1/board-h3-mmc.c | 68 +
arch/arm/mach-omap1/board-h3.c | 444 ++
arch/arm/mach-omap1/board-h3.h | 35 +
arch/arm/mach-omap1/board-htcherald.c | 610 +++
arch/arm/mach-omap1/board-innovator.c | 462 ++
arch/arm/mach-omap1/board-nokia770.c | 260 +
arch/arm/mach-omap1/board-osk.c | 579 ++
arch/arm/mach-omap1/board-palmte.c | 272 +
arch/arm/mach-omap1/board-palmtt.c | 318 ++
arch/arm/mach-omap1/board-palmz71.c | 335 ++
arch/arm/mach-omap1/board-perseus2.c | 350 ++
arch/arm/mach-omap1/board-sx1-mmc.c | 66 +
arch/arm/mach-omap1/board-sx1.c | 412 ++
arch/arm/mach-omap1/board-voiceblue.c | 299 +
arch/arm/mach-omap1/clock.c | 610 +++
arch/arm/mach-omap1/clock.h | 117 +
arch/arm/mach-omap1/clock_data.c | 954 ++++
arch/arm/mach-omap1/common.h | 63 +
arch/arm/mach-omap1/devices.c | 330 ++
arch/arm/mach-omap1/dma.c | 391 ++
arch/arm/mach-omap1/flash.c | 28 +
arch/arm/mach-omap1/fpga.c | 191 +
arch/arm/mach-omap1/gpio15xx.c | 122 +
arch/arm/mach-omap1/gpio16xx.c | 259 +
arch/arm/mach-omap1/gpio7xx.c | 283 +
arch/arm/mach-omap1/i2c.c | 35 +
arch/arm/mach-omap1/id.c | 208 +
arch/arm/mach-omap1/include/mach/ams-delta-fiq.h | 79 +
arch/arm/mach-omap1/include/mach/camera.h | 13 +
arch/arm/mach-omap1/include/mach/debug-macro.S | 101 +
arch/arm/mach-omap1/include/mach/entry-macro.S | 41 +
arch/arm/mach-omap1/include/mach/gpio.h | 5 +
arch/arm/mach-omap1/include/mach/hardware.h | 41 +
arch/arm/mach-omap1/include/mach/io.h | 45 +
arch/arm/mach-omap1/include/mach/irqs.h | 5 +
arch/arm/mach-omap1/include/mach/lcd_dma.h | 78 +
arch/arm/mach-omap1/include/mach/lcdc.h | 57 +
arch/arm/mach-omap1/include/mach/memory.h | 57 +
arch/arm/mach-omap1/include/mach/mtd-xip.h | 61 +
arch/arm/mach-omap1/include/mach/smp.h | 5 +
arch/arm/mach-omap1/include/mach/timex.h | 5 +
arch/arm/mach-omap1/include/mach/uncompress.h | 5 +
arch/arm/mach-omap1/io.c | 179 +
arch/arm/mach-omap1/iomap.h | 36 +
arch/arm/mach-omap1/irq.c | 248 +
arch/arm/mach-omap1/lcd_dma.c | 452 ++
arch/arm/mach-omap1/leds-h2p2-debug.c | 166 +
arch/arm/mach-omap1/leds-innovator.c | 98 +
arch/arm/mach-omap1/leds-osk.c | 113 +
arch/arm/mach-omap1/leds.c | 69 +
arch/arm/mach-omap1/leds.h | 3 +
arch/arm/mach-omap1/mailbox.c | 199 +
arch/arm/mach-omap1/mcbsp.c | 446 ++
arch/arm/mach-omap1/mux.c | 471 ++
arch/arm/mach-omap1/opp.h | 29 +
arch/arm/mach-omap1/opp_data.c | 54 +
arch/arm/mach-omap1/pm.c | 722 +++
arch/arm/mach-omap1/pm.h | 281 +
arch/arm/mach-omap1/pm_bus.c | 80 +
arch/arm/mach-omap1/reset.c | 23 +
arch/arm/mach-omap1/serial.c | 265 +
arch/arm/mach-omap1/sleep.S | 368 ++
arch/arm/mach-omap1/sram.S | 61 +
arch/arm/mach-omap1/time.c | 262 +
arch/arm/mach-omap1/timer.c | 173 +
arch/arm/mach-omap1/timer32k.c | 191 +
arch/arm/mach-omap1/usb.c | 530 ++
arch/arm/mach-omap2/Kconfig | 389 ++
arch/arm/mach-omap2/Makefile | 276 +
arch/arm/mach-omap2/Makefile.boot | 3 +
arch/arm/mach-omap2/am35xx-emac.c | 117 +
arch/arm/mach-omap2/am35xx-emac.h | 15 +
arch/arm/mach-omap2/board-2430sdp.c | 308 ++
arch/arm/mach-omap2/board-3430sdp.c | 640 +++
arch/arm/mach-omap2/board-3630sdp.c | 222 +
arch/arm/mach-omap2/board-4430sdp.c | 974 ++++
arch/arm/mach-omap2/board-am3517crane.c | 105 +
arch/arm/mach-omap2/board-am3517evm.c | 407 ++
arch/arm/mach-omap2/board-apollon.c | 361 ++
arch/arm/mach-omap2/board-cm-t35.c | 703 +++
arch/arm/mach-omap2/board-cm-t3517.c | 308 ++
arch/arm/mach-omap2/board-devkit8000.c | 669 +++
arch/arm/mach-omap2/board-flash.c | 247 +
arch/arm/mach-omap2/board-flash.h | 49 +
arch/arm/mach-omap2/board-generic.c | 165 +
arch/arm/mach-omap2/board-h4.c | 403 ++
arch/arm/mach-omap2/board-igep0020.c | 701 +++
arch/arm/mach-omap2/board-ldp.c | 447 ++
arch/arm/mach-omap2/board-n8x0.c | 723 +++
arch/arm/mach-omap2/board-omap3beagle.c | 570 ++
arch/arm/mach-omap2/board-omap3evm.c | 697 +++
arch/arm/mach-omap2/board-omap3logic.c | 235 +
arch/arm/mach-omap2/board-omap3pandora.c | 627 +++
arch/arm/mach-omap2/board-omap3stalker.c | 462 ++
arch/arm/mach-omap2/board-omap3touchbook.c | 392 ++
arch/arm/mach-omap2/board-omap4panda.c | 587 ++
arch/arm/mach-omap2/board-overo.c | 576 ++
arch/arm/mach-omap2/board-rm680.c | 168 +
arch/arm/mach-omap2/board-rx51-peripherals.c | 1154 ++++
arch/arm/mach-omap2/board-rx51-video.c | 103 +
arch/arm/mach-omap2/board-rx51.c | 134 +
arch/arm/mach-omap2/board-ti8168evm.c | 67 +
arch/arm/mach-omap2/board-zoom-debugboard.c | 137 +
arch/arm/mach-omap2/board-zoom-display.c | 143 +
arch/arm/mach-omap2/board-zoom-peripherals.c | 313 ++
arch/arm/mach-omap2/board-zoom.c | 154 +
arch/arm/mach-omap2/clkt2xxx_apll.c | 146 +
arch/arm/mach-omap2/clkt2xxx_dpll.c | 63 +
arch/arm/mach-omap2/clkt2xxx_dpllcore.c | 173 +
arch/arm/mach-omap2/clkt2xxx_osc.c | 76 +
arch/arm/mach-omap2/clkt2xxx_sys.c | 50 +
arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c | 167 +
arch/arm/mach-omap2/clkt34xx_dpll3m2.c | 122 +
arch/arm/mach-omap2/clkt_clksel.c | 510 ++
arch/arm/mach-omap2/clkt_dpll.c | 360 ++
arch/arm/mach-omap2/clkt_iclk.c | 82 +
arch/arm/mach-omap2/clock.c | 540 ++
arch/arm/mach-omap2/clock.h | 158 +
arch/arm/mach-omap2/clock2420_data.c | 2009 +++++++
arch/arm/mach-omap2/clock2430.c | 61 +
arch/arm/mach-omap2/clock2430_data.c | 2108 ++++++++
arch/arm/mach-omap2/clock2xxx.c | 74 +
arch/arm/mach-omap2/clock2xxx.h | 44 +
arch/arm/mach-omap2/clock34xx.c | 153 +
arch/arm/mach-omap2/clock34xx.h | 18 +
arch/arm/mach-omap2/clock3517.c | 126 +
arch/arm/mach-omap2/clock3517.h | 14 +
arch/arm/mach-omap2/clock36xx.c | 72 +
arch/arm/mach-omap2/clock36xx.h | 13 +
arch/arm/mach-omap2/clock3xxx.c | 102 +
arch/arm/mach-omap2/clock3xxx.h | 21 +
arch/arm/mach-omap2/clock3xxx_data.c | 3632 +++++++++++++
arch/arm/mach-omap2/clock44xx.h | 20 +
arch/arm/mach-omap2/clock44xx_data.c | 3466 ++++++++++++
arch/arm/mach-omap2/clock_common_data.c | 45 +
arch/arm/mach-omap2/clockdomain.c | 1076 ++++
arch/arm/mach-omap2/clockdomain.h | 212 +
arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 272 +
arch/arm/mach-omap2/clockdomain44xx.c | 130 +
arch/arm/mach-omap2/clockdomains2420_data.c | 154 +
arch/arm/mach-omap2/clockdomains2430_data.c | 181 +
arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c | 101 +
arch/arm/mach-omap2/clockdomains3xxx_data.c | 398 ++
arch/arm/mach-omap2/clockdomains44xx_data.c | 442 ++
arch/arm/mach-omap2/cm-regbits-24xx.h | 445 ++
arch/arm/mach-omap2/cm-regbits-34xx.h | 812 +++
arch/arm/mach-omap2/cm-regbits-44xx.h | 1445 +++++
arch/arm/mach-omap2/cm.h | 25 +
arch/arm/mach-omap2/cm1_44xx.h | 225 +
arch/arm/mach-omap2/cm2_44xx.h | 457 ++
arch/arm/mach-omap2/cm2xxx_3xxx.c | 559 ++
arch/arm/mach-omap2/cm2xxx_3xxx.h | 155 +
arch/arm/mach-omap2/cm44xx.c | 52 +
arch/arm/mach-omap2/cm44xx.h | 26 +
arch/arm/mach-omap2/cminst44xx.c | 351 ++
arch/arm/mach-omap2/cminst44xx.h | 66 +
arch/arm/mach-omap2/common-board-devices.c | 141 +
arch/arm/mach-omap2/common-board-devices.h | 15 +
arch/arm/mach-omap2/common.c | 183 +
arch/arm/mach-omap2/common.h | 259 +
arch/arm/mach-omap2/control.c | 567 ++
arch/arm/mach-omap2/control.h | 416 ++
arch/arm/mach-omap2/cpuidle34xx.c | 445 ++
arch/arm/mach-omap2/cpuidle44xx.c | 229 +
arch/arm/mach-omap2/devices.c | 744 +++
arch/arm/mach-omap2/devices.h | 19 +
arch/arm/mach-omap2/display.c | 370 ++
arch/arm/mach-omap2/display.h | 29 +
arch/arm/mach-omap2/dma.c | 288 +
arch/arm/mach-omap2/dpll3xxx.c | 617 +++
arch/arm/mach-omap2/dpll44xx.c | 153 +
arch/arm/mach-omap2/dsp.c | 93 +
arch/arm/mach-omap2/emu.c | 51 +
arch/arm/mach-omap2/gpio.c | 152 +
arch/arm/mach-omap2/gpmc-nand.c | 123 +
arch/arm/mach-omap2/gpmc-onenand.c | 409 ++
arch/arm/mach-omap2/gpmc-smc91x.c | 190 +
arch/arm/mach-omap2/gpmc-smsc911x.c | 101 +
arch/arm/mach-omap2/gpmc.c | 922 ++++
arch/arm/mach-omap2/hsmmc.c | 601 +++
arch/arm/mach-omap2/hsmmc.h | 53 +
arch/arm/mach-omap2/hwspinlock.c | 60 +
arch/arm/mach-omap2/i2c.c | 107 +
arch/arm/mach-omap2/id.c | 519 ++
arch/arm/mach-omap2/include/mach/am35xx.h | 44 +
arch/arm/mach-omap2/include/mach/barriers.h | 33 +
arch/arm/mach-omap2/include/mach/board-rx51.h | 11 +
arch/arm/mach-omap2/include/mach/board-zoom.h | 12 +
.../include/mach/ctrl_module_core_44xx.h | 391 ++
.../include/mach/ctrl_module_pad_core_44xx.h | 1409 +++++
.../include/mach/ctrl_module_pad_wkup_44xx.h | 236 +
.../include/mach/ctrl_module_wkup_44xx.h | 92 +
arch/arm/mach-omap2/include/mach/debug-macro.S | 150 +
arch/arm/mach-omap2/include/mach/gpio.h | 5 +
arch/arm/mach-omap2/include/mach/hardware.h | 5 +
arch/arm/mach-omap2/include/mach/id.h | 22 +
arch/arm/mach-omap2/include/mach/irqs.h | 5 +
arch/arm/mach-omap2/include/mach/omap-secure.h | 57 +
arch/arm/mach-omap2/include/mach/omap-wakeupgen.h | 39 +
arch/arm/mach-omap2/include/mach/smp.h | 5 +
arch/arm/mach-omap2/include/mach/timex.h | 5 +
arch/arm/mach-omap2/include/mach/uncompress.h | 5 +
arch/arm/mach-omap2/io.c | 496 ++
arch/arm/mach-omap2/iomap.h | 197 +
arch/arm/mach-omap2/iommu2.c | 361 ++
arch/arm/mach-omap2/irq.c | 360 ++
arch/arm/mach-omap2/mailbox.c | 430 ++
arch/arm/mach-omap2/mcbsp.c | 234 +
arch/arm/mach-omap2/mux.c | 1158 ++++
arch/arm/mach-omap2/mux.h | 342 ++
arch/arm/mach-omap2/mux2420.c | 690 +++
arch/arm/mach-omap2/mux2420.h | 282 +
arch/arm/mach-omap2/mux2430.c | 793 +++
arch/arm/mach-omap2/mux2430.h | 370 ++
arch/arm/mach-omap2/mux34xx.c | 2061 +++++++
arch/arm/mach-omap2/mux34xx.h | 398 ++
arch/arm/mach-omap2/mux44xx.c | 1356 +++++
arch/arm/mach-omap2/mux44xx.h | 298 +
arch/arm/mach-omap2/omap-headsmp.S | 45 +
arch/arm/mach-omap2/omap-hotplug.c | 72 +
arch/arm/mach-omap2/omap-iommu.c | 167 +
arch/arm/mach-omap2/omap-mpuss-lowpower.c | 395 ++
arch/arm/mach-omap2/omap-secure.c | 72 +
arch/arm/mach-omap2/omap-smc.S | 80 +
arch/arm/mach-omap2/omap-smp.c | 183 +
arch/arm/mach-omap2/omap-wakeupgen.c | 392 ++
arch/arm/mach-omap2/omap4-common.c | 209 +
arch/arm/mach-omap2/omap4-sar-layout.h | 50 +
arch/arm/mach-omap2/omap_hwmod.c | 2790 ++++++++++
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 1573 ++++++
arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2072 +++++++
.../omap_hwmod_2xxx_3xxx_interconnect_data.c | 173 +
.../mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c | 304 ++
.../mach-omap2/omap_hwmod_2xxx_interconnect_data.c | 130 +
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 172 +
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 3775 +++++++++++++
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 5690 ++++++++++++++++++++
arch/arm/mach-omap2/omap_hwmod_common_data.c | 55 +
arch/arm/mach-omap2/omap_hwmod_common_data.h | 118 +
arch/arm/mach-omap2/omap_l3_noc.c | 266 +
arch/arm/mach-omap2/omap_l3_noc.h | 162 +
arch/arm/mach-omap2/omap_l3_smx.c | 296 +
arch/arm/mach-omap2/omap_l3_smx.h | 338 ++
arch/arm/mach-omap2/omap_opp_data.h | 96 +
arch/arm/mach-omap2/omap_phy_internal.c | 297 +
arch/arm/mach-omap2/omap_twl.c | 358 ++
arch/arm/mach-omap2/opp.c | 93 +
arch/arm/mach-omap2/opp2420_data.c | 130 +
arch/arm/mach-omap2/opp2430_data.c | 135 +
arch/arm/mach-omap2/opp2xxx.h | 429 ++
arch/arm/mach-omap2/opp3xxx_data.c | 172 +
arch/arm/mach-omap2/opp4xxx_data.c | 105 +
arch/arm/mach-omap2/pm-debug.c | 285 +
arch/arm/mach-omap2/pm.c | 325 ++
arch/arm/mach-omap2/pm.h | 139 +
arch/arm/mach-omap2/pm24xx.c | 389 ++
arch/arm/mach-omap2/pm34xx.c | 812 +++
arch/arm/mach-omap2/pm44xx.c | 220 +
arch/arm/mach-omap2/powerdomain-common.c | 110 +
arch/arm/mach-omap2/powerdomain.c | 1080 ++++
arch/arm/mach-omap2/powerdomain.h | 241 +
arch/arm/mach-omap2/powerdomain2xxx_3xxx.c | 242 +
arch/arm/mach-omap2/powerdomain44xx.c | 226 +
arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c | 65 +
arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h | 22 +
arch/arm/mach-omap2/powerdomains2xxx_data.c | 135 +
arch/arm/mach-omap2/powerdomains3xxx_data.c | 321 ++
arch/arm/mach-omap2/powerdomains44xx_data.c | 358 ++
arch/arm/mach-omap2/prcm-common.h | 489 ++
arch/arm/mach-omap2/prcm.c | 158 +
arch/arm/mach-omap2/prcm44xx.h | 42 +
arch/arm/mach-omap2/prcm_mpu44xx.c | 45 +
arch/arm/mach-omap2/prcm_mpu44xx.h | 103 +
arch/arm/mach-omap2/prm-regbits-24xx.h | 283 +
arch/arm/mach-omap2/prm-regbits-34xx.h | 600 +++
arch/arm/mach-omap2/prm-regbits-44xx.h | 2327 ++++++++
arch/arm/mach-omap2/prm.h | 56 +
arch/arm/mach-omap2/prm2xxx_3xxx.c | 310 ++
arch/arm/mach-omap2/prm2xxx_3xxx.h | 448 ++
arch/arm/mach-omap2/prm44xx.c | 242 +
arch/arm/mach-omap2/prm44xx.h | 774 +++
arch/arm/mach-omap2/prm_common.c | 319 ++
arch/arm/mach-omap2/prminst44xx.c | 176 +
arch/arm/mach-omap2/prminst44xx.h | 33 +
arch/arm/mach-omap2/scrm44xx.h | 175 +
arch/arm/mach-omap2/sdram-hynix-h8mbx00u0mer-0em.h | 51 +
arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h | 55 +
arch/arm/mach-omap2/sdram-nokia.c | 301 ++
arch/arm/mach-omap2/sdram-nokia.h | 12 +
arch/arm/mach-omap2/sdram-numonyx-m65kxxxxam.h | 51 +
.../mach-omap2/sdram-qimonda-hyb18m512160af-6.h | 54 +
arch/arm/mach-omap2/sdrc.c | 178 +
arch/arm/mach-omap2/sdrc.h | 77 +
arch/arm/mach-omap2/sdrc2xxx.c | 172 +
arch/arm/mach-omap2/serial.c | 318 ++
arch/arm/mach-omap2/sleep24xx.S | 125 +
arch/arm/mach-omap2/sleep34xx.S | 617 +++
arch/arm/mach-omap2/sleep44xx.S | 378 ++
arch/arm/mach-omap2/smartreflex-class3.c | 60 +
arch/arm/mach-omap2/smartreflex.c | 1165 ++++
arch/arm/mach-omap2/smartreflex.h | 256 +
arch/arm/mach-omap2/sr_device.c | 141 +
arch/arm/mach-omap2/sram242x.S | 332 ++
arch/arm/mach-omap2/sram243x.S | 332 ++
arch/arm/mach-omap2/sram34xx.S | 347 ++
arch/arm/mach-omap2/timer.c | 503 ++
arch/arm/mach-omap2/twl-common.c | 354 ++
arch/arm/mach-omap2/twl-common.h | 60 +
arch/arm/mach-omap2/usb-fs.c | 359 ++
arch/arm/mach-omap2/usb-host.c | 544 ++
arch/arm/mach-omap2/usb-musb.c | 125 +
arch/arm/mach-omap2/usb-tusb6010.c | 350 ++
arch/arm/mach-omap2/vc.c | 366 ++
arch/arm/mach-omap2/vc.h | 125 +
arch/arm/mach-omap2/vc3xxx_data.c | 72 +
arch/arm/mach-omap2/vc44xx_data.c | 89 +
arch/arm/mach-omap2/voltage.c | 431 ++
arch/arm/mach-omap2/voltage.h | 172 +
arch/arm/mach-omap2/voltagedomains2xxx_data.c | 32 +
arch/arm/mach-omap2/voltagedomains3xxx_data.c | 130 +
arch/arm/mach-omap2/voltagedomains44xx_data.c | 113 +
arch/arm/mach-omap2/vp.c | 283 +
arch/arm/mach-omap2/vp.h | 128 +
arch/arm/mach-omap2/vp3xxx_data.c | 79 +
arch/arm/mach-omap2/vp44xx_data.c | 89 +
arch/arm/mach-omap2/wd_timer.c | 56 +
arch/arm/mach-omap2/wd_timer.h | 17 +
arch/arm/mach-orion5x/Kconfig | 160 +
arch/arm/mach-orion5x/Makefile | 24 +
arch/arm/mach-orion5x/Makefile.boot | 3 +
arch/arm/mach-orion5x/addr-map.c | 154 +
arch/arm/mach-orion5x/common.c | 329 ++
arch/arm/mach-orion5x/common.h | 70 +
arch/arm/mach-orion5x/d2net-setup.c | 362 ++
arch/arm/mach-orion5x/db88f5281-setup.c | 368 ++
arch/arm/mach-orion5x/dns323-setup.c | 741 +++
arch/arm/mach-orion5x/edmini_v2-setup.c | 262 +
arch/arm/mach-orion5x/include/mach/bridge-regs.h | 39 +
arch/arm/mach-orion5x/include/mach/debug-macro.S | 21 +
arch/arm/mach-orion5x/include/mach/entry-macro.S | 25 +
arch/arm/mach-orion5x/include/mach/gpio.h | 9 +
arch/arm/mach-orion5x/include/mach/hardware.h | 14 +
arch/arm/mach-orion5x/include/mach/irqs.h | 60 +
arch/arm/mach-orion5x/include/mach/orion5x.h | 144 +
arch/arm/mach-orion5x/include/mach/timex.h | 11 +
arch/arm/mach-orion5x/include/mach/uncompress.h | 49 +
arch/arm/mach-orion5x/irq.c | 40 +
arch/arm/mach-orion5x/kurobox_pro-setup.c | 405 ++
arch/arm/mach-orion5x/ls-chl-setup.c | 328 ++
arch/arm/mach-orion5x/ls_hgl-setup.c | 275 +
arch/arm/mach-orion5x/lsmini-setup.c | 278 +
arch/arm/mach-orion5x/mpp.c | 44 +
arch/arm/mach-orion5x/mpp.h | 129 +
arch/arm/mach-orion5x/mss2-setup.c | 272 +
arch/arm/mach-orion5x/mv2120-setup.c | 239 +
arch/arm/mach-orion5x/net2big-setup.c | 431 ++
arch/arm/mach-orion5x/pci.c | 604 +++
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c | 179 +
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c | 191 +
arch/arm/mach-orion5x/rd88f5182-setup.c | 315 ++
arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c | 132 +
arch/arm/mach-orion5x/terastation_pro2-setup.c | 368 ++
arch/arm/mach-orion5x/ts209-setup.c | 333 ++
arch/arm/mach-orion5x/ts409-setup.c | 322 ++
arch/arm/mach-orion5x/ts78xx-fpga.h | 41 +
arch/arm/mach-orion5x/ts78xx-setup.c | 631 +++
arch/arm/mach-orion5x/tsx09-common.c | 135 +
arch/arm/mach-orion5x/tsx09-common.h | 20 +
arch/arm/mach-orion5x/wnr854t-setup.c | 183 +
arch/arm/mach-orion5x/wrt350n-v2-setup.c | 271 +
arch/arm/mach-picoxcell/Makefile | 2 +
arch/arm/mach-picoxcell/Makefile.boot | 1 +
arch/arm/mach-picoxcell/common.c | 104 +
arch/arm/mach-picoxcell/common.h | 17 +
arch/arm/mach-picoxcell/include/mach/debug-macro.S | 35 +
arch/arm/mach-picoxcell/include/mach/gpio.h | 1 +
arch/arm/mach-picoxcell/include/mach/hardware.h | 21 +
arch/arm/mach-picoxcell/include/mach/map.h | 25 +
.../mach-picoxcell/include/mach/picoxcell_soc.h | 25 +
arch/arm/mach-picoxcell/include/mach/timex.h | 25 +
arch/arm/mach-picoxcell/include/mach/uncompress.h | 21 +
arch/arm/mach-picoxcell/time.c | 121 +
arch/arm/mach-pnx4008/Makefile | 12 +
arch/arm/mach-pnx4008/Makefile.boot | 4 +
arch/arm/mach-pnx4008/clock.c | 1001 ++++
arch/arm/mach-pnx4008/clock.h | 43 +
arch/arm/mach-pnx4008/core.c | 278 +
arch/arm/mach-pnx4008/dma.c | 1105 ++++
arch/arm/mach-pnx4008/gpio.c | 328 ++
arch/arm/mach-pnx4008/i2c.c | 72 +
arch/arm/mach-pnx4008/include/mach/clock.h | 62 +
arch/arm/mach-pnx4008/include/mach/debug-macro.S | 21 +
arch/arm/mach-pnx4008/include/mach/dma.h | 160 +
arch/arm/mach-pnx4008/include/mach/entry-macro.S | 116 +
arch/arm/mach-pnx4008/include/mach/gpio-pnx4008.h | 241 +
arch/arm/mach-pnx4008/include/mach/hardware.h | 32 +
arch/arm/mach-pnx4008/include/mach/i2c.h | 64 +
arch/arm/mach-pnx4008/include/mach/irq.h | 42 +
arch/arm/mach-pnx4008/include/mach/irqs.h | 215 +
arch/arm/mach-pnx4008/include/mach/param.h | 21 +
arch/arm/mach-pnx4008/include/mach/platform.h | 69 +
arch/arm/mach-pnx4008/include/mach/pm.h | 33 +
arch/arm/mach-pnx4008/include/mach/timex.h | 19 +
arch/arm/mach-pnx4008/include/mach/uncompress.h | 46 +
arch/arm/mach-pnx4008/irq.c | 121 +
arch/arm/mach-pnx4008/pm.c | 155 +
arch/arm/mach-pnx4008/serial.c | 67 +
arch/arm/mach-pnx4008/sleep.S | 195 +
arch/arm/mach-pnx4008/time.c | 134 +
arch/arm/mach-pnx4008/time.h | 70 +
arch/arm/mach-prima2/Makefile | 9 +
arch/arm/mach-prima2/Makefile.boot | 3 +
arch/arm/mach-prima2/clock.c | 510 ++
arch/arm/mach-prima2/common.h | 27 +
arch/arm/mach-prima2/include/mach/clkdev.h | 15 +
arch/arm/mach-prima2/include/mach/debug-macro.S | 29 +
arch/arm/mach-prima2/include/mach/entry-macro.S | 22 +
arch/arm/mach-prima2/include/mach/hardware.h | 15 +
arch/arm/mach-prima2/include/mach/irqs.h | 17 +
arch/arm/mach-prima2/include/mach/map.h | 18 +
arch/arm/mach-prima2/include/mach/timex.h | 14 +
arch/arm/mach-prima2/include/mach/uart.h | 23 +
arch/arm/mach-prima2/include/mach/uncompress.h | 40 +
arch/arm/mach-prima2/irq.c | 117 +
arch/arm/mach-prima2/l2x0.c | 31 +
arch/arm/mach-prima2/lluart.c | 25 +
arch/arm/mach-prima2/pm.c | 151 +
arch/arm/mach-prima2/pm.h | 29 +
arch/arm/mach-prima2/prima2.c | 44 +
arch/arm/mach-prima2/rstc.c | 77 +
arch/arm/mach-prima2/rtciobrg.c | 139 +
arch/arm/mach-prima2/sleep.S | 64 +
arch/arm/mach-prima2/timer.c | 245 +
arch/arm/mach-pxa/Kconfig | 721 +++
arch/arm/mach-pxa/Makefile | 106 +
arch/arm/mach-pxa/Makefile.boot | 2 +
arch/arm/mach-pxa/am200epd.c | 387 ++
arch/arm/mach-pxa/am300epd.c | 296 +
arch/arm/mach-pxa/balloon3.c | 834 +++
arch/arm/mach-pxa/capc7117.c | 159 +
arch/arm/mach-pxa/clock-pxa2xx.c | 55 +
arch/arm/mach-pxa/clock-pxa3xx.c | 208 +
arch/arm/mach-pxa/clock.c | 86 +
arch/arm/mach-pxa/clock.h | 80 +
arch/arm/mach-pxa/cm-x255.c | 236 +
arch/arm/mach-pxa/cm-x270.c | 412 ++
arch/arm/mach-pxa/cm-x2xx-pci.c | 200 +
arch/arm/mach-pxa/cm-x2xx-pci.h | 13 +
arch/arm/mach-pxa/cm-x2xx.c | 528 ++
arch/arm/mach-pxa/cm-x300.c | 863 +++
arch/arm/mach-pxa/colibri-evalboard.c | 119 +
arch/arm/mach-pxa/colibri-pxa270-income.c | 223 +
arch/arm/mach-pxa/colibri-pxa270.c | 330 ++
arch/arm/mach-pxa/colibri-pxa300.c | 195 +
arch/arm/mach-pxa/colibri-pxa320.c | 265 +
arch/arm/mach-pxa/colibri-pxa3xx.c | 153 +
arch/arm/mach-pxa/corgi.c | 766 +++
arch/arm/mach-pxa/corgi_pm.c | 231 +
arch/arm/mach-pxa/cpufreq-pxa2xx.c | 494 ++
arch/arm/mach-pxa/cpufreq-pxa3xx.c | 258 +
arch/arm/mach-pxa/csb701.c | 66 +
arch/arm/mach-pxa/csb726.c | 283 +
arch/arm/mach-pxa/devices.c | 1118 ++++
arch/arm/mach-pxa/devices.h | 49 +
arch/arm/mach-pxa/em-x270.c | 1321 +++++
arch/arm/mach-pxa/eseries.c | 983 ++++
arch/arm/mach-pxa/eseries.h | 14 +
arch/arm/mach-pxa/ezx.c | 1243 +++++
arch/arm/mach-pxa/generic.c | 97 +
arch/arm/mach-pxa/generic.h | 60 +
arch/arm/mach-pxa/gumstix.c | 244 +
arch/arm/mach-pxa/h5000.c | 214 +
arch/arm/mach-pxa/himalaya.c | 169 +
arch/arm/mach-pxa/hx4700.c | 895 +++
arch/arm/mach-pxa/icontrol.c | 202 +
arch/arm/mach-pxa/idp.c | 204 +
arch/arm/mach-pxa/include/mach/addr-map.h | 48 +
arch/arm/mach-pxa/include/mach/arcom-pcmcia.h | 11 +
arch/arm/mach-pxa/include/mach/audio.h | 30 +
arch/arm/mach-pxa/include/mach/balloon3.h | 182 +
arch/arm/mach-pxa/include/mach/bitfield.h | 113 +
arch/arm/mach-pxa/include/mach/camera.h | 44 +
arch/arm/mach-pxa/include/mach/colibri.h | 69 +
arch/arm/mach-pxa/include/mach/corgi.h | 113 +
arch/arm/mach-pxa/include/mach/csb726.h | 26 +
arch/arm/mach-pxa/include/mach/debug-macro.S | 23 +
arch/arm/mach-pxa/include/mach/dma.h | 21 +
arch/arm/mach-pxa/include/mach/eseries-gpio.h | 67 +
arch/arm/mach-pxa/include/mach/eseries-irq.h | 28 +
arch/arm/mach-pxa/include/mach/gpio.h | 32 +
arch/arm/mach-pxa/include/mach/gumstix.h | 91 +
arch/arm/mach-pxa/include/mach/h5000.h | 113 +
arch/arm/mach-pxa/include/mach/hardware.h | 338 ++
arch/arm/mach-pxa/include/mach/hx4700.h | 132 +
arch/arm/mach-pxa/include/mach/idp.h | 197 +
arch/arm/mach-pxa/include/mach/io.h | 17 +
arch/arm/mach-pxa/include/mach/irda.h | 25 +
arch/arm/mach-pxa/include/mach/irqs.h | 117 +
arch/arm/mach-pxa/include/mach/littleton.h | 13 +
arch/arm/mach-pxa/include/mach/lpd270.h | 43 +
arch/arm/mach-pxa/include/mach/lubbock.h | 53 +
arch/arm/mach-pxa/include/mach/magician.h | 120 +
arch/arm/mach-pxa/include/mach/mainstone.h | 141 +
arch/arm/mach-pxa/include/mach/mfp-pxa25x.h | 225 +
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h | 467 ++
arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h | 142 +
arch/arm/mach-pxa/include/mach/mfp-pxa300.h | 575 ++
arch/arm/mach-pxa/include/mach/mfp-pxa320.h | 461 ++
arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h | 158 +
arch/arm/mach-pxa/include/mach/mfp-pxa930.h | 498 ++
arch/arm/mach-pxa/include/mach/mfp.h | 21 +
arch/arm/mach-pxa/include/mach/mioa701.h | 72 +
arch/arm/mach-pxa/include/mach/mmc.h | 28 +
arch/arm/mach-pxa/include/mach/mtd-xip.h | 35 +
arch/arm/mach-pxa/include/mach/mxm8x10.h | 21 +
arch/arm/mach-pxa/include/mach/ohci.h | 36 +
arch/arm/mach-pxa/include/mach/palm27x.h | 81 +
arch/arm/mach-pxa/include/mach/palmasoc.h | 8 +
arch/arm/mach-pxa/include/mach/palmld.h | 109 +
arch/arm/mach-pxa/include/mach/palmt5.h | 84 +
arch/arm/mach-pxa/include/mach/palmtc.h | 86 +
arch/arm/mach-pxa/include/mach/palmte2.h | 68 +
arch/arm/mach-pxa/include/mach/palmtreo.h | 67 +
arch/arm/mach-pxa/include/mach/palmtx.h | 112 +
arch/arm/mach-pxa/include/mach/palmz72.h | 84 +
arch/arm/mach-pxa/include/mach/pata_pxa.h | 33 +
arch/arm/mach-pxa/include/mach/pcm027.h | 84 +
arch/arm/mach-pxa/include/mach/pcm990_baseboard.h | 275 +
arch/arm/mach-pxa/include/mach/pm.h | 40 +
arch/arm/mach-pxa/include/mach/poodle.h | 92 +
arch/arm/mach-pxa/include/mach/pxa25x-udc.h | 163 +
arch/arm/mach-pxa/include/mach/pxa25x.h | 17 +
arch/arm/mach-pxa/include/mach/pxa27x-udc.h | 257 +
arch/arm/mach-pxa/include/mach/pxa27x.h | 29 +
arch/arm/mach-pxa/include/mach/pxa2xx-regs.h | 187 +
arch/arm/mach-pxa/include/mach/pxa300.h | 7 +
arch/arm/mach-pxa/include/mach/pxa320.h | 8 +
arch/arm/mach-pxa/include/mach/pxa3xx-regs.h | 205 +
arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h | 35 +
arch/arm/mach-pxa/include/mach/pxa3xx.h | 14 +
arch/arm/mach-pxa/include/mach/pxa930.h | 7 +
arch/arm/mach-pxa/include/mach/pxa930_rotary.h | 20 +
arch/arm/mach-pxa/include/mach/pxa930_trkball.h | 10 +
arch/arm/mach-pxa/include/mach/pxa95x.h | 7 +
arch/arm/mach-pxa/include/mach/pxafb.h | 175 +
arch/arm/mach-pxa/include/mach/regs-ac97.h | 101 +
arch/arm/mach-pxa/include/mach/regs-lcd.h | 197 +
arch/arm/mach-pxa/include/mach/regs-ost.h | 34 +
arch/arm/mach-pxa/include/mach/regs-rtc.h | 23 +
arch/arm/mach-pxa/include/mach/regs-u2d.h | 200 +
arch/arm/mach-pxa/include/mach/regs-uart.h | 143 +
arch/arm/mach-pxa/include/mach/reset.h | 21 +
arch/arm/mach-pxa/include/mach/sharpsl_pm.h | 113 +
arch/arm/mach-pxa/include/mach/smemc.h | 74 +
arch/arm/mach-pxa/include/mach/spitz.h | 189 +
arch/arm/mach-pxa/include/mach/timex.h | 34 +
arch/arm/mach-pxa/include/mach/tosa.h | 200 +
arch/arm/mach-pxa/include/mach/tosa_bt.h | 22 +
arch/arm/mach-pxa/include/mach/trizeps4.h | 162 +
arch/arm/mach-pxa/include/mach/udc.h | 8 +
arch/arm/mach-pxa/include/mach/uncompress.h | 79 +
arch/arm/mach-pxa/include/mach/viper.h | 94 +
arch/arm/mach-pxa/include/mach/vpac270.h | 42 +
arch/arm/mach-pxa/include/mach/z2.h | 40 +
arch/arm/mach-pxa/include/mach/zeus.h | 85 +
arch/arm/mach-pxa/include/mach/zylonite.h | 42 +
arch/arm/mach-pxa/irq.c | 204 +
arch/arm/mach-pxa/leds-idp.c | 115 +
arch/arm/mach-pxa/leds-lubbock.c | 124 +
arch/arm/mach-pxa/leds-mainstone.c | 119 +
arch/arm/mach-pxa/leds.c | 32 +
arch/arm/mach-pxa/leds.h | 13 +
arch/arm/mach-pxa/littleton.c | 449 ++
arch/arm/mach-pxa/lpd270.c | 509 ++
arch/arm/mach-pxa/lubbock.c | 561 ++
arch/arm/mach-pxa/magician.c | 784 +++
arch/arm/mach-pxa/mainstone.c | 626 +++
arch/arm/mach-pxa/mfp-pxa2xx.c | 441 ++
arch/arm/mach-pxa/mfp-pxa3xx.c | 59 +
arch/arm/mach-pxa/mioa701.c | 767 +++
arch/arm/mach-pxa/mioa701_bootresume.S | 37 +
arch/arm/mach-pxa/mp900.c | 104 +
arch/arm/mach-pxa/mxm8x10.c | 475 ++
arch/arm/mach-pxa/palm27x.c | 479 ++
arch/arm/mach-pxa/palmld.c | 353 ++
arch/arm/mach-pxa/palmt5.c | 214 +
arch/arm/mach-pxa/palmtc.c | 548 ++
arch/arm/mach-pxa/palmte2.c | 367 ++
arch/arm/mach-pxa/palmtreo.c | 472 ++
arch/arm/mach-pxa/palmtx.c | 375 ++
arch/arm/mach-pxa/palmz72.c | 410 ++
arch/arm/mach-pxa/pcm027.c | 269 +
arch/arm/mach-pxa/pcm990-baseboard.c | 541 ++
arch/arm/mach-pxa/pm.c | 118 +
arch/arm/mach-pxa/poodle.c | 475 ++
arch/arm/mach-pxa/pxa25x.c | 386 ++
arch/arm/mach-pxa/pxa27x.c | 471 ++
arch/arm/mach-pxa/pxa2xx.c | 56 +
arch/arm/mach-pxa/pxa300.c | 117 +
arch/arm/mach-pxa/pxa320.c | 100 +
arch/arm/mach-pxa/pxa3xx-ulpi.c | 402 ++
arch/arm/mach-pxa/pxa3xx.c | 475 ++
arch/arm/mach-pxa/pxa930.c | 206 +
arch/arm/mach-pxa/pxa95x.c | 295 +
arch/arm/mach-pxa/raumfeld.c | 1127 ++++
arch/arm/mach-pxa/reset.c | 106 +
arch/arm/mach-pxa/saar.c | 607 +++
arch/arm/mach-pxa/saarb.c | 115 +
arch/arm/mach-pxa/sharpsl_pm.c | 999 ++++
arch/arm/mach-pxa/sleep.S | 171 +
arch/arm/mach-pxa/smemc.c | 58 +
arch/arm/mach-pxa/spitz.c | 1022 ++++
arch/arm/mach-pxa/spitz_pm.c | 266 +
arch/arm/mach-pxa/standby.S | 114 +
arch/arm/mach-pxa/stargate2.c | 1030 ++++
arch/arm/mach-pxa/tavorevb.c | 500 ++
arch/arm/mach-pxa/tavorevb3.c | 136 +
arch/arm/mach-pxa/time.c | 170 +
arch/arm/mach-pxa/tosa-bt.c | 148 +
arch/arm/mach-pxa/tosa.c | 987 ++++
arch/arm/mach-pxa/trizeps4.c | 578 ++
arch/arm/mach-pxa/viper.c | 1004 ++++
arch/arm/mach-pxa/vpac270.c | 727 +++
arch/arm/mach-pxa/xcep.c | 191 +
arch/arm/mach-pxa/z2.c | 730 +++
arch/arm/mach-pxa/zeus.c | 917 ++++
arch/arm/mach-pxa/zylonite.c | 434 ++
arch/arm/mach-pxa/zylonite_pxa300.c | 280 +
arch/arm/mach-pxa/zylonite_pxa320.c | 215 +
arch/arm/mach-realview/Kconfig | 108 +
arch/arm/mach-realview/Makefile | 12 +
arch/arm/mach-realview/Makefile.boot | 9 +
arch/arm/mach-realview/core.c | 534 ++
arch/arm/mach-realview/core.h | 59 +
arch/arm/mach-realview/hotplug.c | 129 +
arch/arm/mach-realview/include/mach/barriers.h | 8 +
arch/arm/mach-realview/include/mach/board-eb.h | 96 +
arch/arm/mach-realview/include/mach/board-pb1176.h | 83 +
arch/arm/mach-realview/include/mach/board-pb11mp.h | 98 +
arch/arm/mach-realview/include/mach/board-pba8.h | 73 +
arch/arm/mach-realview/include/mach/board-pbx.h | 108 +
arch/arm/mach-realview/include/mach/clkdev.h | 16 +
arch/arm/mach-realview/include/mach/debug-macro.S | 29 +
arch/arm/mach-realview/include/mach/gpio.h | 1 +
arch/arm/mach-realview/include/mach/hardware.h | 42 +
arch/arm/mach-realview/include/mach/irqs-eb.h | 132 +
arch/arm/mach-realview/include/mach/irqs-pb1176.h | 100 +
arch/arm/mach-realview/include/mach/irqs-pb11mp.h | 122 +
arch/arm/mach-realview/include/mach/irqs-pba8.h | 94 +
arch/arm/mach-realview/include/mach/irqs-pbx.h | 109 +
arch/arm/mach-realview/include/mach/irqs.h | 40 +
arch/arm/mach-realview/include/mach/memory.h | 71 +
arch/arm/mach-realview/include/mach/platform.h | 249 +
arch/arm/mach-realview/include/mach/timex.h | 23 +
arch/arm/mach-realview/include/mach/uncompress.h | 78 +
arch/arm/mach-realview/platsmp.c | 79 +
arch/arm/mach-realview/realview_eb.c | 485 ++
arch/arm/mach-realview/realview_pb1176.c | 398 ++
arch/arm/mach-realview/realview_pb11mp.c | 380 ++
arch/arm/mach-realview/realview_pba8.c | 322 ++
arch/arm/mach-realview/realview_pbx.c | 417 ++
arch/arm/mach-rpc/Makefile | 11 +
arch/arm/mach-rpc/Makefile.boot | 4 +
arch/arm/mach-rpc/dma.c | 389 ++
arch/arm/mach-rpc/ecard.c | 1138 ++++
arch/arm/mach-rpc/ecard.h | 69 +
arch/arm/mach-rpc/fiq.S | 16 +
arch/arm/mach-rpc/include/mach/acornfb.h | 140 +
arch/arm/mach-rpc/include/mach/debug-macro.S | 23 +
arch/arm/mach-rpc/include/mach/entry-macro.S | 12 +
arch/arm/mach-rpc/include/mach/hardware.h | 76 +
arch/arm/mach-rpc/include/mach/io.h | 31 +
arch/arm/mach-rpc/include/mach/irqs.h | 45 +
arch/arm/mach-rpc/include/mach/isa-dma.h | 29 +
arch/arm/mach-rpc/include/mach/memory.h | 40 +
arch/arm/mach-rpc/include/mach/timex.h | 17 +
arch/arm/mach-rpc/include/mach/uncompress.h | 196 +
arch/arm/mach-rpc/irq.c | 168 +
arch/arm/mach-rpc/riscpc.c | 225 +
arch/arm/mach-rpc/time.c | 95 +
arch/arm/mach-s3c2410/Kconfig | 20 +
arch/arm/mach-s3c2410/Makefile | 14 +
arch/arm/mach-s3c2410/cpu-freq.c | 163 +
arch/arm/mach-s3c2410/pll.c | 99 +
arch/arm/mach-s3c2412/Kconfig | 13 +
arch/arm/mach-s3c2412/Makefile | 12 +
arch/arm/mach-s3c2412/cpu-freq.c | 259 +
arch/arm/mach-s3c2412/gpio.c | 62 +
arch/arm/mach-s3c2440/Kconfig | 37 +
arch/arm/mach-s3c2440/Makefile | 17 +
arch/arm/mach-s3c2440/dsc.c | 54 +
arch/arm/mach-s3c2440/s3c2440-cpufreq.c | 314 ++
arch/arm/mach-s3c2440/s3c2440-pll-12000000.c | 101 +
arch/arm/mach-s3c2440/s3c2440-pll-16934400.c | 128 +
arch/arm/mach-s3c24xx/Kconfig | 538 ++
arch/arm/mach-s3c24xx/Makefile | 95 +
arch/arm/mach-s3c24xx/Makefile.boot | 7 +
arch/arm/mach-s3c24xx/bast-ide.c | 112 +
arch/arm/mach-s3c24xx/bast-irq.c | 166 +
arch/arm/mach-s3c24xx/clock-s3c2412.c | 763 +++
arch/arm/mach-s3c24xx/clock-s3c2416.c | 172 +
arch/arm/mach-s3c24xx/clock-s3c2440.c | 194 +
arch/arm/mach-s3c24xx/clock-s3c2443.c | 215 +
arch/arm/mach-s3c24xx/clock-s3c244x.c | 141 +
arch/arm/mach-s3c24xx/common-s3c2443.c | 670 +++
arch/arm/mach-s3c24xx/common-smdk.c | 207 +
arch/arm/mach-s3c24xx/common.h | 18 +
arch/arm/mach-s3c24xx/dma-s3c2410.c | 186 +
arch/arm/mach-s3c24xx/dma-s3c2412.c | 180 +
arch/arm/mach-s3c24xx/dma-s3c2440.c | 197 +
arch/arm/mach-s3c24xx/dma-s3c2443.c | 174 +
arch/arm/mach-s3c24xx/h1940-bluetooth.c | 157 +
arch/arm/mach-s3c24xx/include/mach/anubis-cpld.h | 25 +
arch/arm/mach-s3c24xx/include/mach/anubis-irq.h | 21 +
arch/arm/mach-s3c24xx/include/mach/anubis-map.h | 38 +
arch/arm/mach-s3c24xx/include/mach/bast-cpld.h | 53 +
arch/arm/mach-s3c24xx/include/mach/bast-irq.h | 29 +
arch/arm/mach-s3c24xx/include/mach/bast-map.h | 146 +
arch/arm/mach-s3c24xx/include/mach/bast-pmu.h | 40 +
arch/arm/mach-s3c24xx/include/mach/debug-macro.S | 101 +
arch/arm/mach-s3c24xx/include/mach/dma.h | 210 +
arch/arm/mach-s3c24xx/include/mach/entry-macro.S | 70 +
arch/arm/mach-s3c24xx/include/mach/fb.h | 1 +
arch/arm/mach-s3c24xx/include/mach/gpio-fns.h | 1 +
arch/arm/mach-s3c24xx/include/mach/gpio-nrs.h | 118 +
arch/arm/mach-s3c24xx/include/mach/gpio-track.h | 33 +
arch/arm/mach-s3c24xx/include/mach/gpio.h | 35 +
arch/arm/mach-s3c24xx/include/mach/gta02.h | 84 +
arch/arm/mach-s3c24xx/include/mach/h1940-latch.h | 43 +
arch/arm/mach-s3c24xx/include/mach/h1940.h | 24 +
arch/arm/mach-s3c24xx/include/mach/hardware.h | 42 +
arch/arm/mach-s3c24xx/include/mach/idle.h | 24 +
arch/arm/mach-s3c24xx/include/mach/io.h | 211 +
arch/arm/mach-s3c24xx/include/mach/irqs.h | 202 +
arch/arm/mach-s3c24xx/include/mach/leds-gpio.h | 28 +
arch/arm/mach-s3c24xx/include/mach/map.h | 165 +
arch/arm/mach-s3c24xx/include/mach/osiris-cpld.h | 30 +
arch/arm/mach-s3c24xx/include/mach/osiris-map.h | 42 +
arch/arm/mach-s3c24xx/include/mach/otom-map.h | 30 +
arch/arm/mach-s3c24xx/include/mach/pm-core.h | 67 +
arch/arm/mach-s3c24xx/include/mach/regs-clock.h | 166 +
arch/arm/mach-s3c24xx/include/mach/regs-dsc.h | 220 +
arch/arm/mach-s3c24xx/include/mach/regs-gpio.h | 602 +++
arch/arm/mach-s3c24xx/include/mach/regs-gpioj.h | 70 +
arch/arm/mach-s3c24xx/include/mach/regs-irq.h | 53 +
arch/arm/mach-s3c24xx/include/mach/regs-lcd.h | 162 +
arch/arm/mach-s3c24xx/include/mach/regs-mem.h | 202 +
arch/arm/mach-s3c24xx/include/mach/regs-power.h | 40 +
.../mach-s3c24xx/include/mach/regs-s3c2412-mem.h | 48 +
arch/arm/mach-s3c24xx/include/mach/regs-s3c2412.h | 23 +
.../mach-s3c24xx/include/mach/regs-s3c2416-mem.h | 30 +
arch/arm/mach-s3c24xx/include/mach/regs-s3c2416.h | 24 +
.../mach-s3c24xx/include/mach/regs-s3c2443-clock.h | 194 +
arch/arm/mach-s3c24xx/include/mach/regs-sdi.h | 127 +
arch/arm/mach-s3c24xx/include/mach/tick.h | 15 +
arch/arm/mach-s3c24xx/include/mach/timex.h | 24 +
arch/arm/mach-s3c24xx/include/mach/uncompress.h | 54 +
arch/arm/mach-s3c24xx/include/mach/vr1000-cpld.h | 18 +
arch/arm/mach-s3c24xx/include/mach/vr1000-irq.h | 26 +
arch/arm/mach-s3c24xx/include/mach/vr1000-map.h | 110 +
arch/arm/mach-s3c24xx/irq-s3c2412.c | 214 +
arch/arm/mach-s3c24xx/irq-s3c2416.c | 250 +
arch/arm/mach-s3c24xx/irq-s3c2440.c | 128 +
arch/arm/mach-s3c24xx/irq-s3c2443.c | 281 +
arch/arm/mach-s3c24xx/irq-s3c244x.c | 142 +
arch/arm/mach-s3c24xx/mach-amlm5900.c | 247 +
arch/arm/mach-s3c24xx/mach-anubis.c | 492 ++
arch/arm/mach-s3c24xx/mach-at2440evb.c | 226 +
arch/arm/mach-s3c24xx/mach-bast.c | 644 +++
arch/arm/mach-s3c24xx/mach-gta02.c | 605 +++
arch/arm/mach-s3c24xx/mach-h1940.c | 757 +++
arch/arm/mach-s3c24xx/mach-jive.c | 666 +++
arch/arm/mach-s3c24xx/mach-mini2440.c | 705 +++
arch/arm/mach-s3c24xx/mach-n30.c | 608 +++
arch/arm/mach-s3c24xx/mach-nexcoder.c | 162 +
arch/arm/mach-s3c24xx/mach-osiris-dvs.c | 194 +
arch/arm/mach-s3c24xx/mach-osiris.c | 440 ++
arch/arm/mach-s3c24xx/mach-otom.c | 127 +
arch/arm/mach-s3c24xx/mach-qt2410.c | 356 ++
arch/arm/mach-s3c24xx/mach-rx1950.c | 826 +++
arch/arm/mach-s3c24xx/mach-rx3715.c | 217 +
arch/arm/mach-s3c24xx/mach-smdk2410.c | 122 +
arch/arm/mach-s3c24xx/mach-smdk2413.c | 162 +
arch/arm/mach-s3c24xx/mach-smdk2416.c | 256 +
arch/arm/mach-s3c24xx/mach-smdk2440.c | 187 +
arch/arm/mach-s3c24xx/mach-smdk2443.c | 149 +
arch/arm/mach-s3c24xx/mach-tct_hammer.c | 157 +
arch/arm/mach-s3c24xx/mach-vr1000.c | 385 ++
arch/arm/mach-s3c24xx/mach-vstms.c | 166 +
arch/arm/mach-s3c24xx/pm-h1940.S | 33 +
arch/arm/mach-s3c24xx/pm-s3c2410.c | 180 +
arch/arm/mach-s3c24xx/pm-s3c2412.c | 124 +
arch/arm/mach-s3c24xx/pm-s3c2416.c | 83 +
arch/arm/mach-s3c24xx/s3c2410.c | 207 +
arch/arm/mach-s3c24xx/s3c2412.c | 252 +
arch/arm/mach-s3c24xx/s3c2416.c | 149 +
arch/arm/mach-s3c24xx/s3c2440.c | 75 +
arch/arm/mach-s3c24xx/s3c2442.c | 188 +
arch/arm/mach-s3c24xx/s3c2443.c | 117 +
arch/arm/mach-s3c24xx/s3c244x.c | 211 +
arch/arm/mach-s3c24xx/setup-i2c.c | 27 +
arch/arm/mach-s3c24xx/setup-sdhci-gpio.c | 34 +
arch/arm/mach-s3c24xx/setup-ts.c | 34 +
arch/arm/mach-s3c24xx/simtec-audio.c | 79 +
arch/arm/mach-s3c24xx/simtec-nor.c | 84 +
arch/arm/mach-s3c24xx/simtec-pm.c | 66 +
arch/arm/mach-s3c24xx/simtec-usb.c | 132 +
arch/arm/mach-s3c24xx/simtec.h | 21 +
arch/arm/mach-s3c24xx/sleep-s3c2410.S | 68 +
arch/arm/mach-s3c24xx/sleep-s3c2412.S | 68 +
arch/arm/mach-s3c64xx/Kconfig | 309 ++
arch/arm/mach-s3c64xx/Makefile | 60 +
arch/arm/mach-s3c64xx/Makefile.boot | 2 +
arch/arm/mach-s3c64xx/clock.c | 998 ++++
arch/arm/mach-s3c64xx/common.c | 386 ++
arch/arm/mach-s3c64xx/common.h | 54 +
arch/arm/mach-s3c64xx/cpuidle.c | 91 +
arch/arm/mach-s3c64xx/dev-audio.c | 318 ++
arch/arm/mach-s3c64xx/dev-uart.c | 103 +
arch/arm/mach-s3c64xx/dma.c | 753 +++
arch/arm/mach-s3c64xx/include/mach/crag6410.h | 26 +
arch/arm/mach-s3c64xx/include/mach/debug-macro.S | 38 +
arch/arm/mach-s3c64xx/include/mach/dma.h | 131 +
arch/arm/mach-s3c64xx/include/mach/gpio.h | 93 +
arch/arm/mach-s3c64xx/include/mach/hardware.h | 16 +
arch/arm/mach-s3c64xx/include/mach/irqs.h | 193 +
arch/arm/mach-s3c64xx/include/mach/map.h | 125 +
arch/arm/mach-s3c64xx/include/mach/pm-core.h | 115 +
arch/arm/mach-s3c64xx/include/mach/regs-clock.h | 162 +
.../mach-s3c64xx/include/mach/regs-gpio-memport.h | 25 +
arch/arm/mach-s3c64xx/include/mach/regs-gpio.h | 187 +
arch/arm/mach-s3c64xx/include/mach/regs-irq.h | 20 +
arch/arm/mach-s3c64xx/include/mach/regs-modem.h | 31 +
arch/arm/mach-s3c64xx/include/mach/regs-srom.h | 59 +
arch/arm/mach-s3c64xx/include/mach/regs-sys.h | 31 +
.../mach-s3c64xx/include/mach/regs-syscon-power.h | 116 +
arch/arm/mach-s3c64xx/include/mach/spi-clocks.h | 18 +
arch/arm/mach-s3c64xx/include/mach/tick.h | 29 +
arch/arm/mach-s3c64xx/include/mach/timex.h | 24 +
arch/arm/mach-s3c64xx/include/mach/uncompress.h | 28 +
arch/arm/mach-s3c64xx/irq-pm.c | 111 +
arch/arm/mach-s3c64xx/mach-anw6410.c | 246 +
arch/arm/mach-s3c64xx/mach-crag6410-module.c | 272 +
arch/arm/mach-s3c64xx/mach-crag6410.c | 816 +++
arch/arm/mach-s3c64xx/mach-hmt.c | 277 +
arch/arm/mach-s3c64xx/mach-mini6410.c | 355 ++
arch/arm/mach-s3c64xx/mach-ncp.c | 109 +
arch/arm/mach-s3c64xx/mach-real6410.c | 336 ++
arch/arm/mach-s3c64xx/mach-smartq.c | 404 ++
arch/arm/mach-s3c64xx/mach-smartq.h | 20 +
arch/arm/mach-s3c64xx/mach-smartq5.c | 157 +
arch/arm/mach-s3c64xx/mach-smartq7.c | 173 +
arch/arm/mach-s3c64xx/mach-smdk6400.c | 98 +
arch/arm/mach-s3c64xx/mach-smdk6410.c | 714 +++
arch/arm/mach-s3c64xx/pm.c | 374 ++
arch/arm/mach-s3c64xx/s3c6400.c | 95 +
arch/arm/mach-s3c64xx/s3c6410.c | 99 +
arch/arm/mach-s3c64xx/setup-fb-24bpp.c | 27 +
arch/arm/mach-s3c64xx/setup-i2c0.c | 28 +
arch/arm/mach-s3c64xx/setup-i2c1.c | 28 +
arch/arm/mach-s3c64xx/setup-ide.c | 43 +
arch/arm/mach-s3c64xx/setup-keypad.c | 24 +
arch/arm/mach-s3c64xx/setup-sdhci-gpio.c | 57 +
arch/arm/mach-s3c64xx/setup-spi.c | 45 +
arch/arm/mach-s3c64xx/setup-usb-phy.c | 90 +
arch/arm/mach-s3c64xx/sleep.S | 72 +
arch/arm/mach-s5p64x0/Kconfig | 102 +
arch/arm/mach-s5p64x0/Makefile | 36 +
arch/arm/mach-s5p64x0/Makefile.boot | 2 +
arch/arm/mach-s5p64x0/clock-s5p6440.c | 617 +++
arch/arm/mach-s5p64x0/clock-s5p6450.c | 680 +++
arch/arm/mach-s5p64x0/clock.c | 236 +
arch/arm/mach-s5p64x0/common.c | 445 ++
arch/arm/mach-s5p64x0/common.h | 57 +
arch/arm/mach-s5p64x0/dev-audio.c | 236 +
arch/arm/mach-s5p64x0/dma.c | 130 +
arch/arm/mach-s5p64x0/gpiolib.c | 508 ++
arch/arm/mach-s5p64x0/include/mach/debug-macro.S | 33 +
arch/arm/mach-s5p64x0/include/mach/dma.h | 26 +
arch/arm/mach-s5p64x0/include/mach/gpio.h | 132 +
arch/arm/mach-s5p64x0/include/mach/hardware.h | 18 +
arch/arm/mach-s5p64x0/include/mach/i2c.h | 17 +
arch/arm/mach-s5p64x0/include/mach/irqs.h | 150 +
arch/arm/mach-s5p64x0/include/mach/map.h | 95 +
arch/arm/mach-s5p64x0/include/mach/pm-core.h | 117 +
arch/arm/mach-s5p64x0/include/mach/regs-clock.h | 98 +
arch/arm/mach-s5p64x0/include/mach/regs-gpio.h | 68 +
arch/arm/mach-s5p64x0/include/mach/regs-irq.h | 19 +
arch/arm/mach-s5p64x0/include/mach/s5p64x0-clock.h | 39 +
arch/arm/mach-s5p64x0/include/mach/spi-clocks.h | 20 +
arch/arm/mach-s5p64x0/include/mach/tick.h | 29 +
arch/arm/mach-s5p64x0/include/mach/timex.h | 27 +
arch/arm/mach-s5p64x0/include/mach/uncompress.h | 212 +
arch/arm/mach-s5p64x0/irq-pm.c | 92 +
arch/arm/mach-s5p64x0/mach-smdk6440.c | 277 +
arch/arm/mach-s5p64x0/mach-smdk6450.c | 296 +
arch/arm/mach-s5p64x0/pm.c | 206 +
arch/arm/mach-s5p64x0/setup-fb-24bpp.c | 29 +
arch/arm/mach-s5p64x0/setup-i2c0.c | 38 +
arch/arm/mach-s5p64x0/setup-i2c1.c | 38 +
arch/arm/mach-s5p64x0/setup-sdhci-gpio.c | 104 +
arch/arm/mach-s5p64x0/setup-spi.c | 55 +
arch/arm/mach-s5pc100/Kconfig | 80 +
arch/arm/mach-s5pc100/Makefile | 32 +
arch/arm/mach-s5pc100/Makefile.boot | 2 +
arch/arm/mach-s5pc100/clock.c | 1351 +++++
arch/arm/mach-s5pc100/common.c | 222 +
arch/arm/mach-s5pc100/common.h | 37 +
arch/arm/mach-s5pc100/dev-audio.c | 347 ++
arch/arm/mach-s5pc100/dma.c | 132 +
arch/arm/mach-s5pc100/include/mach/debug-macro.S | 39 +
arch/arm/mach-s5pc100/include/mach/dma.h | 26 +
arch/arm/mach-s5pc100/include/mach/entry-macro.S | 19 +
arch/arm/mach-s5pc100/include/mach/gpio.h | 144 +
arch/arm/mach-s5pc100/include/mach/hardware.h | 14 +
arch/arm/mach-s5pc100/include/mach/irqs.h | 117 +
arch/arm/mach-s5pc100/include/mach/map.h | 136 +
arch/arm/mach-s5pc100/include/mach/regs-clock.h | 80 +
arch/arm/mach-s5pc100/include/mach/regs-gpio.h | 38 +
arch/arm/mach-s5pc100/include/mach/regs-irq.h | 19 +
arch/arm/mach-s5pc100/include/mach/spi-clocks.h | 18 +
arch/arm/mach-s5pc100/include/mach/tick.h | 29 +
arch/arm/mach-s5pc100/include/mach/timex.h | 24 +
arch/arm/mach-s5pc100/include/mach/uncompress.h | 28 +
arch/arm/mach-s5pc100/mach-smdkc100.c | 260 +
arch/arm/mach-s5pc100/setup-fb-24bpp.c | 35 +
arch/arm/mach-s5pc100/setup-i2c0.c | 28 +
arch/arm/mach-s5pc100/setup-i2c1.c | 28 +
arch/arm/mach-s5pc100/setup-ide.c | 57 +
arch/arm/mach-s5pc100/setup-keypad.c | 23 +
arch/arm/mach-s5pc100/setup-sdhci-gpio.c | 71 +
arch/arm/mach-s5pc100/setup-spi.c | 65 +
arch/arm/mach-s5pv210/Kconfig | 195 +
arch/arm/mach-s5pv210/Makefile | 42 +
arch/arm/mach-s5pv210/Makefile.boot | 2 +
arch/arm/mach-s5pv210/clock.c | 1366 +++++
arch/arm/mach-s5pv210/common.c | 250 +
arch/arm/mach-s5pv210/common.h | 37 +
arch/arm/mach-s5pv210/dev-audio.c | 365 ++
arch/arm/mach-s5pv210/dma.c | 130 +
arch/arm/mach-s5pv210/include/mach/debug-macro.S | 41 +
arch/arm/mach-s5pv210/include/mach/dma.h | 26 +
arch/arm/mach-s5pv210/include/mach/gpio.h | 140 +
arch/arm/mach-s5pv210/include/mach/hardware.h | 18 +
arch/arm/mach-s5pv210/include/mach/irqs.h | 139 +
arch/arm/mach-s5pv210/include/mach/map.h | 157 +
arch/arm/mach-s5pv210/include/mach/memory.h | 27 +
arch/arm/mach-s5pv210/include/mach/pm-core.h | 46 +
arch/arm/mach-s5pv210/include/mach/regs-audss.h | 18 +
arch/arm/mach-s5pv210/include/mach/regs-clock.h | 206 +
arch/arm/mach-s5pv210/include/mach/regs-gpio.h | 41 +
arch/arm/mach-s5pv210/include/mach/regs-irq.h | 19 +
arch/arm/mach-s5pv210/include/mach/regs-sys.h | 15 +
arch/arm/mach-s5pv210/include/mach/spi-clocks.h | 17 +
arch/arm/mach-s5pv210/include/mach/tick.h | 26 +
arch/arm/mach-s5pv210/include/mach/timex.h | 29 +
arch/arm/mach-s5pv210/include/mach/uncompress.h | 24 +
arch/arm/mach-s5pv210/mach-aquila.c | 690 +++
arch/arm/mach-s5pv210/mach-goni.c | 967 ++++
arch/arm/mach-s5pv210/mach-smdkc110.c | 162 +
arch/arm/mach-s5pv210/mach-smdkv210.c | 337 ++
arch/arm/mach-s5pv210/mach-torbreck.c | 137 +
arch/arm/mach-s5pv210/pm.c | 177 +
arch/arm/mach-s5pv210/setup-fb-24bpp.c | 49 +
arch/arm/mach-s5pv210/setup-fimc.c | 43 +
arch/arm/mach-s5pv210/setup-i2c0.c | 28 +
arch/arm/mach-s5pv210/setup-i2c1.c | 28 +
arch/arm/mach-s5pv210/setup-i2c2.c | 28 +
arch/arm/mach-s5pv210/setup-ide.c | 39 +
arch/arm/mach-s5pv210/setup-keypad.c | 24 +
arch/arm/mach-s5pv210/setup-sdhci-gpio.c | 104 +
arch/arm/mach-s5pv210/setup-spi.c | 51 +
arch/arm/mach-s5pv210/setup-usb-phy.c | 90 +
arch/arm/mach-sa1100/Kconfig | 170 +
arch/arm/mach-sa1100/Makefile | 55 +
arch/arm/mach-sa1100/Makefile.boot | 8 +
arch/arm/mach-sa1100/assabet.c | 545 ++
arch/arm/mach-sa1100/badge4.c | 313 ++
arch/arm/mach-sa1100/cerf.c | 138 +
arch/arm/mach-sa1100/clock.c | 100 +
arch/arm/mach-sa1100/collie.c | 405 ++
arch/arm/mach-sa1100/cpu-sa1100.c | 248 +
arch/arm/mach-sa1100/cpu-sa1110.c | 407 ++
arch/arm/mach-sa1100/generic.c | 450 ++
arch/arm/mach-sa1100/generic.h | 43 +
arch/arm/mach-sa1100/h3100.c | 115 +
arch/arm/mach-sa1100/h3600.c | 165 +
arch/arm/mach-sa1100/h3xxx.c | 306 ++
arch/arm/mach-sa1100/hackkit.c | 203 +
arch/arm/mach-sa1100/include/mach/SA-1100.h | 1831 +++++++
arch/arm/mach-sa1100/include/mach/SA-1101.h | 925 ++++
arch/arm/mach-sa1100/include/mach/SA-1111.h | 5 +
arch/arm/mach-sa1100/include/mach/assabet.h | 102 +
arch/arm/mach-sa1100/include/mach/badge4.h | 75 +
arch/arm/mach-sa1100/include/mach/bitfield.h | 113 +
arch/arm/mach-sa1100/include/mach/cerf.h | 23 +
arch/arm/mach-sa1100/include/mach/collie.h | 93 +
arch/arm/mach-sa1100/include/mach/debug-macro.S | 62 +
arch/arm/mach-sa1100/include/mach/entry-macro.S | 41 +
arch/arm/mach-sa1100/include/mach/gpio.h | 54 +
arch/arm/mach-sa1100/include/mach/h3xxx.h | 94 +
arch/arm/mach-sa1100/include/mach/hardware.h | 79 +
arch/arm/mach-sa1100/include/mach/irqs.h | 89 +
arch/arm/mach-sa1100/include/mach/jornada720.h | 32 +
arch/arm/mach-sa1100/include/mach/lart.h | 13 +
arch/arm/mach-sa1100/include/mach/mcp.h | 22 +
arch/arm/mach-sa1100/include/mach/memory.h | 41 +
arch/arm/mach-sa1100/include/mach/mtd-xip.h | 26 +
arch/arm/mach-sa1100/include/mach/nanoengine.h | 52 +
arch/arm/mach-sa1100/include/mach/neponset.h | 30 +
arch/arm/mach-sa1100/include/mach/reset.h | 18 +
arch/arm/mach-sa1100/include/mach/shannon.h | 39 +
arch/arm/mach-sa1100/include/mach/simpad.h | 158 +
arch/arm/mach-sa1100/include/mach/timex.h | 12 +
arch/arm/mach-sa1100/include/mach/uncompress.h | 50 +
arch/arm/mach-sa1100/irq.c | 341 ++
arch/arm/mach-sa1100/jornada720.c | 355 ++
arch/arm/mach-sa1100/jornada720_ssp.c | 202 +
arch/arm/mach-sa1100/lart.c | 152 +
arch/arm/mach-sa1100/leds-assabet.c | 113 +
arch/arm/mach-sa1100/leds-badge4.c | 110 +
arch/arm/mach-sa1100/leds-cerf.c | 109 +
arch/arm/mach-sa1100/leds-hackkit.c | 111 +
arch/arm/mach-sa1100/leds-lart.c | 100 +
arch/arm/mach-sa1100/leds.c | 50 +
arch/arm/mach-sa1100/leds.h | 13 +
arch/arm/mach-sa1100/nanoengine.c | 116 +
arch/arm/mach-sa1100/neponset.c | 435 ++
arch/arm/mach-sa1100/pci-nanoengine.c | 288 +
arch/arm/mach-sa1100/pleb.c | 139 +
arch/arm/mach-sa1100/pm.c | 126 +
arch/arm/mach-sa1100/shannon.c | 108 +
arch/arm/mach-sa1100/simpad.c | 400 ++
arch/arm/mach-sa1100/sleep.S | 143 +
arch/arm/mach-sa1100/ssp.c | 243 +
arch/arm/mach-sa1100/time.c | 143 +
arch/arm/mach-shark/Makefile | 12 +
arch/arm/mach-shark/Makefile.boot | 2 +
arch/arm/mach-shark/core.c | 167 +
arch/arm/mach-shark/dma.c | 23 +
arch/arm/mach-shark/include/mach/debug-macro.S | 33 +
arch/arm/mach-shark/include/mach/entry-macro.S | 35 +
arch/arm/mach-shark/include/mach/framebuffer.h | 16 +
arch/arm/mach-shark/include/mach/hardware.h | 16 +
arch/arm/mach-shark/include/mach/io.h | 18 +
arch/arm/mach-shark/include/mach/irqs.h | 13 +
arch/arm/mach-shark/include/mach/isa-dma.h | 13 +
arch/arm/mach-shark/include/mach/memory.h | 26 +
arch/arm/mach-shark/include/mach/timex.h | 7 +
arch/arm/mach-shark/include/mach/uncompress.h | 51 +
arch/arm/mach-shark/irq.c | 108 +
arch/arm/mach-shark/leds.c | 165 +
arch/arm/mach-shark/pci.c | 53 +
arch/arm/mach-shmobile/Kconfig | 169 +
arch/arm/mach-shmobile/Makefile | 55 +
arch/arm/mach-shmobile/Makefile.boot | 9 +
arch/arm/mach-shmobile/board-ag5evm.c | 584 ++
arch/arm/mach-shmobile/board-ap4evb.c | 1444 +++++
arch/arm/mach-shmobile/board-bonito.c | 504 ++
arch/arm/mach-shmobile/board-g3evm.c | 342 ++
arch/arm/mach-shmobile/board-g4evm.c | 385 ++
arch/arm/mach-shmobile/board-kota2.c | 525 ++
arch/arm/mach-shmobile/board-mackerel.c | 1609 ++++++
arch/arm/mach-shmobile/board-marzen.c | 102 +
arch/arm/mach-shmobile/clock-r8a7740.c | 382 ++
arch/arm/mach-shmobile/clock-r8a7779.c | 176 +
arch/arm/mach-shmobile/clock-sh7367.c | 355 ++
arch/arm/mach-shmobile/clock-sh7372.c | 719 +++
arch/arm/mach-shmobile/clock-sh7377.c | 366 ++
arch/arm/mach-shmobile/clock-sh73a0.c | 626 +++
arch/arm/mach-shmobile/clock.c | 47 +
arch/arm/mach-shmobile/console.c | 31 +
arch/arm/mach-shmobile/cpuidle.c | 68 +
arch/arm/mach-shmobile/entry-intc.S | 54 +
arch/arm/mach-shmobile/headsmp.S | 81 +
arch/arm/mach-shmobile/hotplug.c | 71 +
arch/arm/mach-shmobile/include/mach/clkdev.h | 7 +
arch/arm/mach-shmobile/include/mach/common.h | 86 +
arch/arm/mach-shmobile/include/mach/dma.h | 1 +
arch/arm/mach-shmobile/include/mach/gpio.h | 30 +
arch/arm/mach-shmobile/include/mach/hardware.h | 4 +
.../arm/mach-shmobile/include/mach/head-ap4evb.txt | 93 +
.../mach-shmobile/include/mach/head-mackerel.txt | 93 +
arch/arm/mach-shmobile/include/mach/intc.h | 246 +
arch/arm/mach-shmobile/include/mach/irqs.h | 14 +
arch/arm/mach-shmobile/include/mach/memory.h | 7 +
arch/arm/mach-shmobile/include/mach/mmc-ap4eb.h | 29 +
arch/arm/mach-shmobile/include/mach/mmc-mackerel.h | 38 +
arch/arm/mach-shmobile/include/mach/mmc.h | 18 +
arch/arm/mach-shmobile/include/mach/r8a7740.h | 584 ++
arch/arm/mach-shmobile/include/mach/r8a7779.h | 363 ++
arch/arm/mach-shmobile/include/mach/sdhi-sh7372.h | 21 +
arch/arm/mach-shmobile/include/mach/sdhi.h | 16 +
arch/arm/mach-shmobile/include/mach/sh7367.h | 332 ++
arch/arm/mach-shmobile/include/mach/sh7372.h | 521 ++
arch/arm/mach-shmobile/include/mach/sh7377.h | 360 ++
arch/arm/mach-shmobile/include/mach/sh73a0.h | 522 ++
arch/arm/mach-shmobile/include/mach/system.h | 11 +
arch/arm/mach-shmobile/include/mach/timex.h | 6 +
arch/arm/mach-shmobile/include/mach/uncompress.h | 21 +
arch/arm/mach-shmobile/include/mach/zboot.h | 23 +
arch/arm/mach-shmobile/include/mach/zboot_macros.h | 65 +
arch/arm/mach-shmobile/intc-r8a7740.c | 632 +++
arch/arm/mach-shmobile/intc-r8a7779.c | 58 +
arch/arm/mach-shmobile/intc-sh7367.c | 413 ++
arch/arm/mach-shmobile/intc-sh7372.c | 664 +++
arch/arm/mach-shmobile/intc-sh7377.c | 592 ++
arch/arm/mach-shmobile/intc-sh73a0.c | 464 ++
arch/arm/mach-shmobile/pfc-r8a7740.c | 2562 +++++++++
arch/arm/mach-shmobile/pfc-r8a7779.c | 2645 +++++++++
arch/arm/mach-shmobile/pfc-sh7367.c | 1727 ++++++
arch/arm/mach-shmobile/pfc-sh7372.c | 1663 ++++++
arch/arm/mach-shmobile/pfc-sh7377.c | 1688 ++++++
arch/arm/mach-shmobile/pfc-sh73a0.c | 2803 ++++++++++
arch/arm/mach-shmobile/platsmp.c | 96 +
arch/arm/mach-shmobile/pm-r8a7779.c | 248 +
arch/arm/mach-shmobile/pm-sh7372.c | 584 ++
arch/arm/mach-shmobile/setup-r8a7740.c | 398 ++
arch/arm/mach-shmobile/setup-r8a7779.c | 298 +
arch/arm/mach-shmobile/setup-sh7367.c | 481 ++
arch/arm/mach-shmobile/setup-sh7372.c | 1094 ++++
arch/arm/mach-shmobile/setup-sh7377.c | 502 ++
arch/arm/mach-shmobile/setup-sh73a0.c | 711 +++
arch/arm/mach-shmobile/sleep-sh7372.S | 96 +
arch/arm/mach-shmobile/smp-r8a7779.c | 158 +
arch/arm/mach-shmobile/smp-sh73a0.c | 106 +
arch/arm/mach-shmobile/suspend.c | 47 +
arch/arm/mach-shmobile/timer.c | 51 +
arch/arm/mach-spear3xx/Kconfig | 43 +
arch/arm/mach-spear3xx/Makefile | 26 +
arch/arm/mach-spear3xx/Makefile.boot | 3 +
arch/arm/mach-spear3xx/clock.c | 760 +++
arch/arm/mach-spear3xx/include/mach/debug-macro.S | 14 +
arch/arm/mach-spear3xx/include/mach/generic.h | 202 +
arch/arm/mach-spear3xx/include/mach/gpio.h | 19 +
arch/arm/mach-spear3xx/include/mach/hardware.h | 23 +
arch/arm/mach-spear3xx/include/mach/irqs.h | 154 +
arch/arm/mach-spear3xx/include/mach/misc_regs.h | 164 +
arch/arm/mach-spear3xx/include/mach/spear.h | 81 +
arch/arm/mach-spear3xx/include/mach/spear300.h | 54 +
arch/arm/mach-spear3xx/include/mach/spear310.h | 58 +
arch/arm/mach-spear3xx/include/mach/spear320.h | 67 +
arch/arm/mach-spear3xx/include/mach/timex.h | 19 +
arch/arm/mach-spear3xx/include/mach/uncompress.h | 19 +
arch/arm/mach-spear3xx/spear300.c | 467 ++
arch/arm/mach-spear3xx/spear300_evb.c | 75 +
arch/arm/mach-spear3xx/spear310.c | 308 ++
arch/arm/mach-spear3xx/spear310_evb.c | 81 +
arch/arm/mach-spear3xx/spear320.c | 555 ++
arch/arm/mach-spear3xx/spear320_evb.c | 79 +
arch/arm/mach-spear3xx/spear3xx.c | 538 ++
arch/arm/mach-spear6xx/Kconfig | 22 +
arch/arm/mach-spear6xx/Makefile | 6 +
arch/arm/mach-spear6xx/Makefile.boot | 3 +
arch/arm/mach-spear6xx/clock.c | 683 +++
arch/arm/mach-spear6xx/include/mach/debug-macro.S | 14 +
arch/arm/mach-spear6xx/include/mach/generic.h | 48 +
arch/arm/mach-spear6xx/include/mach/gpio.h | 19 +
arch/arm/mach-spear6xx/include/mach/hardware.h | 23 +
arch/arm/mach-spear6xx/include/mach/irqs.h | 97 +
arch/arm/mach-spear6xx/include/mach/misc_regs.h | 174 +
arch/arm/mach-spear6xx/include/mach/spear.h | 90 +
arch/arm/mach-spear6xx/include/mach/spear600.h | 21 +
arch/arm/mach-spear6xx/include/mach/timex.h | 19 +
arch/arm/mach-spear6xx/include/mach/uncompress.h | 19 +
arch/arm/mach-spear6xx/spear6xx.c | 123 +
arch/arm/mach-tegra/Kconfig | 147 +
arch/arm/mach-tegra/Makefile | 47 +
arch/arm/mach-tegra/Makefile.boot | 10 +
arch/arm/mach-tegra/apbio.c | 145 +
arch/arm/mach-tegra/apbio.h | 39 +
arch/arm/mach-tegra/board-dt-tegra20.c | 147 +
arch/arm/mach-tegra/board-dt-tegra30.c | 85 +
arch/arm/mach-tegra/board-harmony-pcie.c | 68 +
arch/arm/mach-tegra/board-harmony-pinmux.c | 170 +
arch/arm/mach-tegra/board-harmony-power.c | 116 +
arch/arm/mach-tegra/board-harmony.c | 195 +
arch/arm/mach-tegra/board-harmony.h | 41 +
arch/arm/mach-tegra/board-paz00-pinmux.c | 167 +
arch/arm/mach-tegra/board-paz00.c | 225 +
arch/arm/mach-tegra/board-paz00.h | 40 +
arch/arm/mach-tegra/board-pinmux.c | 104 +
arch/arm/mach-tegra/board-pinmux.h | 38 +
arch/arm/mach-tegra/board-seaboard-pinmux.c | 237 +
arch/arm/mach-tegra/board-seaboard.c | 315 ++
arch/arm/mach-tegra/board-seaboard.h | 47 +
arch/arm/mach-tegra/board-trimslice-pinmux.c | 165 +
arch/arm/mach-tegra/board-trimslice.c | 184 +
arch/arm/mach-tegra/board-trimslice.h | 30 +
arch/arm/mach-tegra/board.h | 36 +
arch/arm/mach-tegra/clock.c | 673 +++
arch/arm/mach-tegra/clock.h | 171 +
arch/arm/mach-tegra/common.c | 134 +
arch/arm/mach-tegra/cpu-tegra.c | 251 +
arch/arm/mach-tegra/cpuidle.c | 107 +
arch/arm/mach-tegra/devices.c | 705 +++
arch/arm/mach-tegra/devices.h | 57 +
arch/arm/mach-tegra/dma.c | 823 +++
arch/arm/mach-tegra/flowctrl.c | 62 +
arch/arm/mach-tegra/flowctrl.h | 42 +
arch/arm/mach-tegra/fuse.c | 131 +
arch/arm/mach-tegra/fuse.h | 52 +
arch/arm/mach-tegra/gpio-names.h | 247 +
arch/arm/mach-tegra/headsmp.S | 212 +
arch/arm/mach-tegra/hotplug.c | 127 +
arch/arm/mach-tegra/include/mach/clk.h | 41 +
arch/arm/mach-tegra/include/mach/debug-macro.S | 100 +
arch/arm/mach-tegra/include/mach/dma.h | 155 +
arch/arm/mach-tegra/include/mach/gpio-tegra.h | 37 +
arch/arm/mach-tegra/include/mach/gpio.h | 1 +
arch/arm/mach-tegra/include/mach/io.h | 46 +
arch/arm/mach-tegra/include/mach/iomap.h | 322 ++
arch/arm/mach-tegra/include/mach/irammap.h | 35 +
arch/arm/mach-tegra/include/mach/irqs.h | 182 +
arch/arm/mach-tegra/include/mach/kbc.h | 62 +
arch/arm/mach-tegra/include/mach/pinconf-tegra.h | 63 +
arch/arm/mach-tegra/include/mach/pinmux-tegra20.h | 184 +
arch/arm/mach-tegra/include/mach/pinmux-tegra30.h | 320 ++
arch/arm/mach-tegra/include/mach/pinmux.h | 302 ++
arch/arm/mach-tegra/include/mach/powergate.h | 52 +
arch/arm/mach-tegra/include/mach/sdhci.h | 30 +
arch/arm/mach-tegra/include/mach/smmu.h | 63 +
arch/arm/mach-tegra/include/mach/suspend.h | 38 +
.../mach-tegra/include/mach/tegra_wm8903_pdata.h | 23 +
arch/arm/mach-tegra/include/mach/timex.h | 26 +
arch/arm/mach-tegra/include/mach/uncompress.h | 162 +
arch/arm/mach-tegra/include/mach/usb_phy.h | 86 +
arch/arm/mach-tegra/io.c | 63 +
arch/arm/mach-tegra/irq.c | 148 +
arch/arm/mach-tegra/pcie.c | 946 ++++
arch/arm/mach-tegra/pinmux-tegra20-tables.c | 244 +
arch/arm/mach-tegra/pinmux-tegra30-tables.c | 376 ++
arch/arm/mach-tegra/pinmux.c | 987 ++++
arch/arm/mach-tegra/platsmp.c | 188 +
arch/arm/mach-tegra/pmc.c | 76 +
arch/arm/mach-tegra/pmc.h | 23 +
arch/arm/mach-tegra/powergate.c | 252 +
arch/arm/mach-tegra/reset.c | 84 +
arch/arm/mach-tegra/reset.h | 50 +
arch/arm/mach-tegra/sleep.S | 93 +
arch/arm/mach-tegra/tegra2_clocks.c | 2454 +++++++++
arch/arm/mach-tegra/tegra2_emc.c | 356 ++
arch/arm/mach-tegra/tegra2_emc.h | 24 +
arch/arm/mach-tegra/tegra30_clocks.c | 3099 +++++++++++
arch/arm/mach-tegra/timer.c | 264 +
arch/arm/mach-tegra/usb_phy.c | 807 +++
arch/arm/mach-u300/Kconfig | 74 +
arch/arm/mach-u300/Makefile | 14 +
arch/arm/mach-u300/Makefile.boot | 4 +
arch/arm/mach-u300/clock.c | 1504 ++++++
arch/arm/mach-u300/clock.h | 50 +
arch/arm/mach-u300/core.c | 1869 +++++++
arch/arm/mach-u300/dummyspichip.c | 290 +
arch/arm/mach-u300/i2c.c | 289 +
arch/arm/mach-u300/i2c.h | 23 +
arch/arm/mach-u300/include/mach/clkdev.h | 7 +
arch/arm/mach-u300/include/mach/coh901318.h | 267 +
arch/arm/mach-u300/include/mach/debug-macro.S | 21 +
arch/arm/mach-u300/include/mach/dma_channels.h | 69 +
arch/arm/mach-u300/include/mach/gpio-u300.h | 37 +
arch/arm/mach-u300/include/mach/gpio.h | 1 +
arch/arm/mach-u300/include/mach/hardware.h | 5 +
arch/arm/mach-u300/include/mach/irqs.h | 122 +
arch/arm/mach-u300/include/mach/platform.h | 20 +
arch/arm/mach-u300/include/mach/syscon.h | 614 +++
arch/arm/mach-u300/include/mach/timex.h | 17 +
arch/arm/mach-u300/include/mach/u300-regs.h | 182 +
arch/arm/mach-u300/include/mach/uncompress.h | 46 +
arch/arm/mach-u300/regulator.c | 88 +
arch/arm/mach-u300/spi.c | 103 +
arch/arm/mach-u300/spi.h | 26 +
arch/arm/mach-u300/timer.c | 420 ++
arch/arm/mach-u300/u300-gpio.h | 114 +
arch/arm/mach-u300/u300.c | 57 +
arch/arm/mach-ux500/Kconfig | 91 +
arch/arm/mach-ux500/Makefile | 20 +
arch/arm/mach-ux500/Makefile.boot | 5 +
arch/arm/mach-ux500/board-mop500-pins.c | 305 ++
arch/arm/mach-ux500/board-mop500-regulators.c | 394 ++
arch/arm/mach-ux500/board-mop500-regulators.h | 22 +
arch/arm/mach-ux500/board-mop500-sdi.c | 285 +
arch/arm/mach-ux500/board-mop500-stuib.c | 205 +
arch/arm/mach-ux500/board-mop500-u8500uib.c | 89 +
arch/arm/mach-ux500/board-mop500-uib.c | 135 +
arch/arm/mach-ux500/board-mop500.c | 835 +++
arch/arm/mach-ux500/board-mop500.h | 91 +
arch/arm/mach-ux500/board-u5500-sdi.c | 74 +
arch/arm/mach-ux500/board-u5500.c | 162 +
arch/arm/mach-ux500/cache-l2x0.c | 66 +
arch/arm/mach-ux500/clock.c | 723 +++
arch/arm/mach-ux500/clock.h | 152 +
arch/arm/mach-ux500/cpu-db5500.c | 247 +
arch/arm/mach-ux500/cpu-db8500.c | 208 +
arch/arm/mach-ux500/cpu.c | 138 +
arch/arm/mach-ux500/devices-common.c | 94 +
arch/arm/mach-ux500/devices-common.h | 96 +
arch/arm/mach-ux500/devices-db5500.h | 99 +
arch/arm/mach-ux500/devices-db8500.c | 193 +
arch/arm/mach-ux500/devices-db8500.h | 127 +
arch/arm/mach-ux500/devices.c | 25 +
arch/arm/mach-ux500/dma-db5500.c | 137 +
arch/arm/mach-ux500/headsmp.S | 39 +
arch/arm/mach-ux500/hotplug.c | 60 +
arch/arm/mach-ux500/id.c | 109 +
arch/arm/mach-ux500/include/mach/db5500-regs.h | 143 +
arch/arm/mach-ux500/include/mach/db8500-regs.h | 167 +
arch/arm/mach-ux500/include/mach/debug-macro.S | 43 +
arch/arm/mach-ux500/include/mach/devices.h | 21 +
arch/arm/mach-ux500/include/mach/gpio.h | 5 +
arch/arm/mach-ux500/include/mach/hardware.h | 43 +
arch/arm/mach-ux500/include/mach/id.h | 124 +
.../mach-ux500/include/mach/irqs-board-mop500.h | 63 +
.../arm/mach-ux500/include/mach/irqs-board-u5500.h | 21 +
arch/arm/mach-ux500/include/mach/irqs-db5500.h | 113 +
arch/arm/mach-ux500/include/mach/irqs-db8500.h | 150 +
arch/arm/mach-ux500/include/mach/irqs.h | 56 +
arch/arm/mach-ux500/include/mach/mbox-db5500.h | 88 +
arch/arm/mach-ux500/include/mach/setup.h | 52 +
arch/arm/mach-ux500/include/mach/timex.h | 6 +
arch/arm/mach-ux500/include/mach/uncompress.h | 62 +
arch/arm/mach-ux500/include/mach/usb.h | 25 +
arch/arm/mach-ux500/mbox-db5500.c | 565 ++
arch/arm/mach-ux500/modem-irq-db5500.c | 143 +
arch/arm/mach-ux500/pins-db5500.h | 620 +++
arch/arm/mach-ux500/pins-db8500.h | 746 +++
arch/arm/mach-ux500/platsmp.c | 177 +
arch/arm/mach-ux500/ste-dma40-db5500.h | 135 +
arch/arm/mach-ux500/ste-dma40-db8500.h | 144 +
arch/arm/mach-ux500/timer.c | 92 +
arch/arm/mach-ux500/usb.c | 158 +
arch/arm/mach-versatile/Kconfig | 28 +
arch/arm/mach-versatile/Makefile | 9 +
arch/arm/mach-versatile/Makefile.boot | 4 +
arch/arm/mach-versatile/core.c | 829 +++
arch/arm/mach-versatile/core.h | 45 +
arch/arm/mach-versatile/include/mach/clkdev.h | 16 +
arch/arm/mach-versatile/include/mach/debug-macro.S | 21 +
arch/arm/mach-versatile/include/mach/gpio.h | 1 +
arch/arm/mach-versatile/include/mach/hardware.h | 38 +
arch/arm/mach-versatile/include/mach/irqs.h | 134 +
arch/arm/mach-versatile/include/mach/platform.h | 414 ++
arch/arm/mach-versatile/include/mach/timex.h | 23 +
arch/arm/mach-versatile/include/mach/uncompress.h | 46 +
arch/arm/mach-versatile/pci.c | 364 ++
arch/arm/mach-versatile/versatile_ab.c | 46 +
arch/arm/mach-versatile/versatile_dt.c | 54 +
arch/arm/mach-versatile/versatile_pb.c | 114 +
arch/arm/mach-vexpress/Kconfig | 55 +
arch/arm/mach-vexpress/Makefile | 8 +
arch/arm/mach-vexpress/Makefile.boot | 9 +
arch/arm/mach-vexpress/core.h | 7 +
arch/arm/mach-vexpress/ct-ca9x4.c | 244 +
arch/arm/mach-vexpress/hotplug.c | 124 +
arch/arm/mach-vexpress/include/mach/clkdev.h | 15 +
arch/arm/mach-vexpress/include/mach/ct-ca9x4.h | 47 +
arch/arm/mach-vexpress/include/mach/debug-macro.S | 43 +
arch/arm/mach-vexpress/include/mach/gpio.h | 1 +
arch/arm/mach-vexpress/include/mach/hardware.h | 1 +
arch/arm/mach-vexpress/include/mach/irqs.h | 4 +
arch/arm/mach-vexpress/include/mach/motherboard.h | 147 +
arch/arm/mach-vexpress/include/mach/timex.h | 23 +
arch/arm/mach-vexpress/include/mach/uncompress.h | 72 +
arch/arm/mach-vexpress/platsmp.c | 197 +
arch/arm/mach-vexpress/v2m.c | 687 +++
arch/arm/mach-vt8500/Kconfig | 73 +
arch/arm/mach-vt8500/Makefile | 9 +
arch/arm/mach-vt8500/Makefile.boot | 3 +
arch/arm/mach-vt8500/bv07.c | 77 +
arch/arm/mach-vt8500/devices-vt8500.c | 91 +
arch/arm/mach-vt8500/devices-wm8505.c | 99 +
arch/arm/mach-vt8500/devices.c | 270 +
arch/arm/mach-vt8500/devices.h | 88 +
arch/arm/mach-vt8500/gpio.c | 240 +
arch/arm/mach-vt8500/include/mach/debug-macro.S | 31 +
arch/arm/mach-vt8500/include/mach/entry-macro.S | 26 +
arch/arm/mach-vt8500/include/mach/gpio.h | 1 +
arch/arm/mach-vt8500/include/mach/hardware.h | 12 +
arch/arm/mach-vt8500/include/mach/i8042.h | 18 +
arch/arm/mach-vt8500/include/mach/irqs.h | 22 +
arch/arm/mach-vt8500/include/mach/system.h | 13 +
arch/arm/mach-vt8500/include/mach/timex.h | 26 +
arch/arm/mach-vt8500/include/mach/uncompress.h | 37 +
arch/arm/mach-vt8500/include/mach/vt8500_irqs.h | 88 +
arch/arm/mach-vt8500/include/mach/vt8500_regs.h | 79 +
arch/arm/mach-vt8500/include/mach/vt8500fb.h | 31 +
arch/arm/mach-vt8500/include/mach/wm8505_irqs.h | 115 +
arch/arm/mach-vt8500/include/mach/wm8505_regs.h | 78 +
arch/arm/mach-vt8500/irq.c | 180 +
arch/arm/mach-vt8500/pwm.c | 265 +
arch/arm/mach-vt8500/timer.c | 155 +
arch/arm/mach-vt8500/wm8505_7in.c | 77 +
arch/arm/mach-w90x900/Kconfig | 49 +
arch/arm/mach-w90x900/Makefile | 19 +
arch/arm/mach-w90x900/Makefile.boot | 3 +
arch/arm/mach-w90x900/clksel.c | 91 +
arch/arm/mach-w90x900/clock.c | 92 +
arch/arm/mach-w90x900/clock.h | 43 +
arch/arm/mach-w90x900/cpu.c | 241 +
arch/arm/mach-w90x900/cpu.h | 60 +
arch/arm/mach-w90x900/dev.c | 540 ++
arch/arm/mach-w90x900/gpio.c | 154 +
arch/arm/mach-w90x900/include/mach/entry-macro.S | 26 +
arch/arm/mach-w90x900/include/mach/fb.h | 83 +
arch/arm/mach-w90x900/include/mach/gpio.h | 30 +
arch/arm/mach-w90x900/include/mach/hardware.h | 24 +
arch/arm/mach-w90x900/include/mach/i2c.h | 9 +
arch/arm/mach-w90x900/include/mach/irqs.h | 86 +
arch/arm/mach-w90x900/include/mach/map.h | 157 +
arch/arm/mach-w90x900/include/mach/mfp.h | 25 +
arch/arm/mach-w90x900/include/mach/nuc900_spi.h | 35 +
arch/arm/mach-w90x900/include/mach/regs-clock.h | 53 +
arch/arm/mach-w90x900/include/mach/regs-ebi.h | 33 +
arch/arm/mach-w90x900/include/mach/regs-gcr.h | 39 +
arch/arm/mach-w90x900/include/mach/regs-irq.h | 51 +
arch/arm/mach-w90x900/include/mach/regs-ldm.h | 253 +
arch/arm/mach-w90x900/include/mach/regs-serial.h | 59 +
arch/arm/mach-w90x900/include/mach/regs-timer.h | 42 +
arch/arm/mach-w90x900/include/mach/regs-usb.h | 35 +
arch/arm/mach-w90x900/include/mach/timex.h | 25 +
arch/arm/mach-w90x900/include/mach/uncompress.h | 50 +
.../arm/mach-w90x900/include/mach/w90p910_keypad.h | 15 +
arch/arm/mach-w90x900/irq.c | 216 +
arch/arm/mach-w90x900/mach-nuc910evb.c | 42 +
arch/arm/mach-w90x900/mach-nuc950evb.c | 45 +
arch/arm/mach-w90x900/mach-nuc960evb.c | 42 +
arch/arm/mach-w90x900/mfp.c | 200 +
arch/arm/mach-w90x900/nuc910.c | 62 +
arch/arm/mach-w90x900/nuc910.h | 21 +
arch/arm/mach-w90x900/nuc950.c | 56 +
arch/arm/mach-w90x900/nuc950.h | 21 +
arch/arm/mach-w90x900/nuc960.c | 54 +
arch/arm/mach-w90x900/nuc960.h | 21 +
arch/arm/mach-w90x900/nuc9xx.h | 24 +
arch/arm/mach-w90x900/time.c | 178 +
arch/arm/mach-wmt/Kconfig | 56 +
arch/arm/mach-wmt/Makefile | 21 +
arch/arm/mach-wmt/Makefile.boot | 3 +
arch/arm/mach-wmt/board.c | 128 +
arch/arm/mach-wmt/dma.c | 1361 +++++
arch/arm/mach-wmt/generic.c | 790 +++
arch/arm/mach-wmt/generic.h | 41 +
arch/arm/mach-wmt/gpio.c | 614 +++
arch/arm/mach-wmt/gpio_ctrl.c | 202 +
arch/arm/mach-wmt/gpio_customize_ease.c | 3 +
arch/arm/mach-wmt/headsmp.S | 53 +
arch/arm/mach-wmt/hotplug.c | 140 +
arch/arm/mach-wmt/include/mach/com-video.h | 114 +
arch/arm/mach-wmt/include/mach/common_def.h | 171 +
arch/arm/mach-wmt/include/mach/debug-macro.S | 74 +
arch/arm/mach-wmt/include/mach/dma.h | 485 ++
arch/arm/mach-wmt/include/mach/gmt-core.h | 43 +
arch/arm/mach-wmt/include/mach/gpio.h | 191 +
.../mach-wmt/include/mach/gpio_customize_ease.h | 3 +
arch/arm/mach-wmt/include/mach/hardware.h | 171 +
arch/arm/mach-wmt/include/mach/io.h | 34 +
arch/arm/mach-wmt/include/mach/iomux.h | 246 +
arch/arm/mach-wmt/include/mach/irqs.h | 157 +
arch/arm/mach-wmt/include/mach/kpad.h | 104 +
arch/arm/mach-wmt/include/mach/memory.h | 38 +
arch/arm/mach-wmt/include/mach/serial.h | 58 +
arch/arm/mach-wmt/include/mach/system.h | 37 +
arch/arm/mach-wmt/include/mach/timex.h | 28 +
arch/arm/mach-wmt/include/mach/uncompress.h | 89 +
arch/arm/mach-wmt/include/mach/viatel.h | 178 +
arch/arm/mach-wmt/include/mach/vmalloc.h | 50 +
arch/arm/mach-wmt/include/mach/wmt-i2c-bus.h | 39 +
arch/arm/mach-wmt/include/mach/wmt-spi.h | 311 ++
arch/arm/mach-wmt/include/mach/wmt.h | 46 +
arch/arm/mach-wmt/include/mach/wmt_env.h | 24 +
arch/arm/mach-wmt/include/mach/wmt_gpio.h | 815 +++
arch/arm/mach-wmt/include/mach/wmt_i2c.h | 403 ++
arch/arm/mach-wmt/include/mach/wmt_i2s.h | 197 +
arch/arm/mach-wmt/include/mach/wmt_iomux.h | 45 +
arch/arm/mach-wmt/include/mach/wmt_kpad.h | 270 +
arch/arm/mach-wmt/include/mach/wmt_mc5.h | 87 +
arch/arm/mach-wmt/include/mach/wmt_misc.h | 8 +
arch/arm/mach-wmt/include/mach/wmt_mmap.h | 180 +
arch/arm/mach-wmt/include/mach/wmt_pcm.h | 52 +
arch/arm/mach-wmt/include/mach/wmt_pmc.h | 1402 +++++
arch/arm/mach-wmt/include/mach/wmt_rtc.h | 330 ++
arch/arm/mach-wmt/include/mach/wmt_saradc.h | 164 +
arch/arm/mach-wmt/include/mach/wmt_scc.h | 64 +
arch/arm/mach-wmt/include/mach/wmt_sdmmc.h | 638 +++
arch/arm/mach-wmt/include/mach/wmt_secure.h | 94 +
arch/arm/mach-wmt/include/mach/wmt_sf.h | 138 +
arch/arm/mach-wmt/include/mach/wmt_uart.h | 447 ++
arch/arm/mach-wmt/irq.c | 84 +
arch/arm/mach-wmt/platsmp.c | 202 +
arch/arm/mach-wmt/pm.c | 2212 ++++++++
arch/arm/mach-wmt/pm_cpai.c | 165 +
arch/arm/mach-wmt/pwm.c | 272 +
arch/arm/mach-wmt/sleep.S | 457 ++
arch/arm/mach-wmt/wmt_clk.h | 166 +
arch/arm/mach-wmt/wmt_clock.c | 171 +
arch/arm/mach-wmt/wmt_cpuidle.c | 133 +
arch/arm/mach-wmt/wmt_misc.c | 300 ++
arch/arm/mach-wmt/wmt_reset.c | 122 +
arch/arm/mach-wmt/wmt_secure_wait_wake.c | 92 +
arch/arm/mach-wmt/wmt_smc.c | 139 +
arch/arm/mach-zynq/Makefile | 6 +
arch/arm/mach-zynq/Makefile.boot | 3 +
arch/arm/mach-zynq/common.c | 119 +
arch/arm/mach-zynq/common.h | 24 +
arch/arm/mach-zynq/include/mach/clkdev.h | 32 +
arch/arm/mach-zynq/include/mach/debug-macro.S | 36 +
arch/arm/mach-zynq/include/mach/hardware.h | 18 +
arch/arm/mach-zynq/include/mach/irqs.h | 21 +
arch/arm/mach-zynq/include/mach/timex.h | 23 +
arch/arm/mach-zynq/include/mach/uart.h | 25 +
arch/arm/mach-zynq/include/mach/uncompress.h | 51 +
arch/arm/mach-zynq/include/mach/zynq_soc.h | 48 +
arch/arm/mach-zynq/timer.c | 298 +
arch/arm/mm/Kconfig | 929 ++++
arch/arm/mm/Makefile | 103 +
arch/arm/mm/abort-ev4.S | 25 +
arch/arm/mm/abort-ev4t.S | 27 +
arch/arm/mm/abort-ev5t.S | 28 +
arch/arm/mm/abort-ev5tj.S | 30 +
arch/arm/mm/abort-ev6.S | 48 +
arch/arm/mm/abort-ev7.S | 51 +
arch/arm/mm/abort-lv4t.S | 220 +
arch/arm/mm/abort-macro.S | 40 +
arch/arm/mm/abort-nommu.S | 20 +
arch/arm/mm/alignment.c | 990 ++++
arch/arm/mm/cache-fa.S | 246 +
arch/arm/mm/cache-feroceon-l2.c | 351 ++
arch/arm/mm/cache-l2x0.c | 631 +++
arch/arm/mm/cache-tauros2.c | 264 +
arch/arm/mm/cache-v3.S | 133 +
arch/arm/mm/cache-v4.S | 145 +
arch/arm/mm/cache-v4wb.S | 257 +
arch/arm/mm/cache-v4wt.S | 201 +
arch/arm/mm/cache-v6.S | 351 ++
arch/arm/mm/cache-v7.S | 355 ++
arch/arm/mm/cache-xsc3l2.c | 220 +
arch/arm/mm/context.c | 171 +
arch/arm/mm/copypage-fa.c | 86 +
arch/arm/mm/copypage-feroceon.c | 112 +
arch/arm/mm/copypage-v3.c | 81 +
arch/arm/mm/copypage-v4mc.c | 115 +
arch/arm/mm/copypage-v4wb.c | 95 +
arch/arm/mm/copypage-v4wt.c | 88 +
arch/arm/mm/copypage-v6.c | 140 +
arch/arm/mm/copypage-xsc3.c | 114 +
arch/arm/mm/copypage-xscale.c | 135 +
arch/arm/mm/dma-mapping.c | 735 +++
arch/arm/mm/extable.c | 16 +
arch/arm/mm/fault-armv.c | 270 +
arch/arm/mm/fault.c | 616 +++
arch/arm/mm/fault.h | 28 +
arch/arm/mm/flush.c | 341 ++
arch/arm/mm/fsr-2level.c | 78 +
arch/arm/mm/fsr-3level.c | 68 +
arch/arm/mm/highmem.c | 137 +
arch/arm/mm/idmap.c | 114 +
arch/arm/mm/init.c | 775 +++
arch/arm/mm/iomap.c | 42 +
arch/arm/mm/ioremap.c | 385 ++
arch/arm/mm/mm.h | 71 +
arch/arm/mm/mmap.c | 322 ++
arch/arm/mm/mmu.c | 1250 +++++
arch/arm/mm/nommu.c | 104 +
arch/arm/mm/pabort-legacy.S | 21 +
arch/arm/mm/pabort-v6.S | 21 +
arch/arm/mm/pabort-v7.S | 21 +
arch/arm/mm/pgd.c | 159 +
arch/arm/mm/proc-arm1020.S | 529 ++
arch/arm/mm/proc-arm1020e.S | 489 ++
arch/arm/mm/proc-arm1022.S | 472 ++
arch/arm/mm/proc-arm1026.S | 467 ++
arch/arm/mm/proc-arm6_7.S | 327 ++
arch/arm/mm/proc-arm720.S | 221 +
arch/arm/mm/proc-arm740.S | 149 +
arch/arm/mm/proc-arm7tdmi.S | 116 +
arch/arm/mm/proc-arm920.S | 478 ++
arch/arm/mm/proc-arm922.S | 456 ++
arch/arm/mm/proc-arm925.S | 523 ++
arch/arm/mm/proc-arm926.S | 500 ++
arch/arm/mm/proc-arm940.S | 373 ++
arch/arm/mm/proc-arm946.S | 427 ++
arch/arm/mm/proc-arm9tdmi.S | 97 +
arch/arm/mm/proc-fa526.S | 221 +
arch/arm/mm/proc-feroceon.S | 597 ++
arch/arm/mm/proc-macros.S | 325 ++
arch/arm/mm/proc-mohawk.S | 418 ++
arch/arm/mm/proc-sa110.S | 227 +
arch/arm/mm/proc-sa1100.S | 275 +
arch/arm/mm/proc-syms.c | 51 +
arch/arm/mm/proc-v6.S | 295 +
arch/arm/mm/proc-v7-2level.S | 166 +
arch/arm/mm/proc-v7-3level.S | 150 +
arch/arm/mm/proc-v7.S | 375 ++
arch/arm/mm/proc-xsc3.S | 531 ++
arch/arm/mm/proc-xscale.S | 658 +++
arch/arm/mm/rodata.c | 159 +
arch/arm/mm/tlb-fa.S | 69 +
arch/arm/mm/tlb-v3.S | 48 +
arch/arm/mm/tlb-v4.S | 61 +
arch/arm/mm/tlb-v4wb.S | 73 +
arch/arm/mm/tlb-v4wbi.S | 64 +
arch/arm/mm/tlb-v6.S | 92 +
arch/arm/mm/tlb-v7.S | 83 +
arch/arm/mm/vmregion.c | 205 +
arch/arm/mm/vmregion.h | 32 +
arch/arm/net/Makefile | 3 +
arch/arm/net/bpf_jit_32.c | 915 ++++
arch/arm/net/bpf_jit_32.h | 190 +
arch/arm/nwfpe/ARM-gcc.h | 120 +
arch/arm/nwfpe/ChangeLog | 91 +
arch/arm/nwfpe/Makefile | 12 +
arch/arm/nwfpe/double_cpdo.c | 167 +
arch/arm/nwfpe/entry.S | 124 +
arch/arm/nwfpe/extended_cpdo.c | 154 +
arch/arm/nwfpe/fpa11.c | 128 +
arch/arm/nwfpe/fpa11.h | 121 +
arch/arm/nwfpe/fpa11.inl | 51 +
arch/arm/nwfpe/fpa11_cpdo.c | 137 +
arch/arm/nwfpe/fpa11_cpdt.c | 407 ++
arch/arm/nwfpe/fpa11_cprt.c | 373 ++
arch/arm/nwfpe/fpmodule.c | 190 +
arch/arm/nwfpe/fpmodule.h | 47 +
arch/arm/nwfpe/fpmodule.inl | 74 +
arch/arm/nwfpe/fpopcode.c | 63 +
arch/arm/nwfpe/fpopcode.h | 481 ++
arch/arm/nwfpe/fpsr.h | 108 +
arch/arm/nwfpe/milieu.h | 48 +
arch/arm/nwfpe/single_cpdo.c | 124 +
arch/arm/nwfpe/softfloat-macros | 754 +++
arch/arm/nwfpe/softfloat-specialize | 367 ++
arch/arm/nwfpe/softfloat.c | 3435 ++++++++++++
arch/arm/nwfpe/softfloat.h | 281 +
arch/arm/oprofile/Makefile | 13 +
arch/arm/oprofile/common.c | 122 +
arch/arm/plat-iop/Makefile | 35 +
arch/arm/plat-iop/adma.c | 207 +
arch/arm/plat-iop/cp6.c | 51 +
arch/arm/plat-iop/gpio.c | 92 +
arch/arm/plat-iop/i2c.c | 79 +
arch/arm/plat-iop/pci.c | 417 ++
arch/arm/plat-iop/pmu.c | 40 +
arch/arm/plat-iop/restart.c | 20 +
arch/arm/plat-iop/setup.c | 39 +
arch/arm/plat-iop/time.c | 175 +
arch/arm/plat-mxc/3ds_debugboard.c | 205 +
arch/arm/plat-mxc/Kconfig | 95 +
arch/arm/plat-mxc/Makefile | 24 +
arch/arm/plat-mxc/avic.c | 206 +
arch/arm/plat-mxc/clock.c | 246 +
arch/arm/plat-mxc/cpu.c | 44 +
arch/arm/plat-mxc/cpufreq.c | 206 +
arch/arm/plat-mxc/devices.c | 49 +
arch/arm/plat-mxc/devices/Kconfig | 85 +
arch/arm/plat-mxc/devices/Makefile | 29 +
arch/arm/plat-mxc/devices/platform-ahci-imx.c | 156 +
arch/arm/plat-mxc/devices/platform-fec.c | 74 +
arch/arm/plat-mxc/devices/platform-flexcan.c | 58 +
arch/arm/plat-mxc/devices/platform-fsl-usb2-udc.c | 62 +
arch/arm/plat-mxc/devices/platform-gpio-mxc.c | 32 +
arch/arm/plat-mxc/devices/platform-gpio_keys.c | 27 +
arch/arm/plat-mxc/devices/platform-imx-dma.c | 34 +
arch/arm/plat-mxc/devices/platform-imx-fb.c | 58 +
arch/arm/plat-mxc/devices/platform-imx-i2c.c | 126 +
arch/arm/plat-mxc/devices/platform-imx-keypad.c | 72 +
arch/arm/plat-mxc/devices/platform-imx-ssi.c | 118 +
arch/arm/plat-mxc/devices/platform-imx-uart.c | 178 +
arch/arm/plat-mxc/devices/platform-imx2-wdt.c | 77 +
arch/arm/plat-mxc/devices/platform-imx21-hcd.c | 41 +
arch/arm/plat-mxc/devices/platform-imx_udc.c | 75 +
arch/arm/plat-mxc/devices/platform-imxdi_rtc.c | 41 +
arch/arm/plat-mxc/devices/platform-ipu-core.c | 130 +
arch/arm/plat-mxc/devices/platform-mx1-camera.c | 42 +
arch/arm/plat-mxc/devices/platform-mx2-camera.c | 82 +
arch/arm/plat-mxc/devices/platform-mxc-ehci.c | 79 +
arch/arm/plat-mxc/devices/platform-mxc-mmc.c | 73 +
arch/arm/plat-mxc/devices/platform-mxc_nand.c | 83 +
arch/arm/plat-mxc/devices/platform-mxc_pwm.c | 69 +
arch/arm/plat-mxc/devices/platform-mxc_rnga.c | 56 +
arch/arm/plat-mxc/devices/platform-mxc_rtc.c | 40 +
arch/arm/plat-mxc/devices/platform-mxc_w1.c | 50 +
arch/arm/plat-mxc/devices/platform-pata_imx.c | 59 +
.../plat-mxc/devices/platform-sdhci-esdhc-imx.c | 99 +
arch/arm/plat-mxc/devices/platform-spi_imx.c | 127 +
arch/arm/plat-mxc/epit.c | 225 +
arch/arm/plat-mxc/include/mach/3ds_debugboard.h | 18 +
arch/arm/plat-mxc/include/mach/board-mx31lilly.h | 41 +
arch/arm/plat-mxc/include/mach/board-mx31lite.h | 42 +
arch/arm/plat-mxc/include/mach/board-mx31moboard.h | 43 +
arch/arm/plat-mxc/include/mach/board-pcm038.h | 36 +
arch/arm/plat-mxc/include/mach/clock.h | 66 +
arch/arm/plat-mxc/include/mach/common.h | 152 +
arch/arm/plat-mxc/include/mach/debug-macro.S | 49 +
arch/arm/plat-mxc/include/mach/devices-common.h | 335 ++
arch/arm/plat-mxc/include/mach/dma.h | 67 +
arch/arm/plat-mxc/include/mach/esdhc.h | 43 +
arch/arm/plat-mxc/include/mach/eukrea-baseboards.h | 50 +
arch/arm/plat-mxc/include/mach/gpio.h | 1 +
arch/arm/plat-mxc/include/mach/hardware.h | 133 +
arch/arm/plat-mxc/include/mach/i2c.h | 21 +
arch/arm/plat-mxc/include/mach/iim.h | 77 +
arch/arm/plat-mxc/include/mach/imx-uart.h | 35 +
arch/arm/plat-mxc/include/mach/imxfb.h | 84 +
arch/arm/plat-mxc/include/mach/iomux-mx1.h | 155 +
arch/arm/plat-mxc/include/mach/iomux-mx21.h | 122 +
arch/arm/plat-mxc/include/mach/iomux-mx25.h | 524 ++
arch/arm/plat-mxc/include/mach/iomux-mx27.h | 205 +
arch/arm/plat-mxc/include/mach/iomux-mx2x.h | 230 +
arch/arm/plat-mxc/include/mach/iomux-mx3.h | 751 +++
arch/arm/plat-mxc/include/mach/iomux-mx35.h | 1267 +++++
arch/arm/plat-mxc/include/mach/iomux-mx50.h | 977 ++++
arch/arm/plat-mxc/include/mach/iomux-mx51.h | 813 +++
arch/arm/plat-mxc/include/mach/iomux-mx53.h | 1219 +++++
arch/arm/plat-mxc/include/mach/iomux-v1.h | 101 +
arch/arm/plat-mxc/include/mach/iomux-v3.h | 142 +
arch/arm/plat-mxc/include/mach/ipu.h | 181 +
arch/arm/plat-mxc/include/mach/iram.h | 41 +
arch/arm/plat-mxc/include/mach/irqs.h | 65 +
arch/arm/plat-mxc/include/mach/mmc.h | 39 +
arch/arm/plat-mxc/include/mach/mx1.h | 171 +
arch/arm/plat-mxc/include/mach/mx1_camera.h | 35 +
arch/arm/plat-mxc/include/mach/mx21-usbhost.h | 38 +
arch/arm/plat-mxc/include/mach/mx21.h | 188 +
arch/arm/plat-mxc/include/mach/mx25.h | 112 +
arch/arm/plat-mxc/include/mach/mx27.h | 237 +
arch/arm/plat-mxc/include/mach/mx2_cam.h | 46 +
arch/arm/plat-mxc/include/mach/mx2x.h | 144 +
arch/arm/plat-mxc/include/mach/mx31.h | 192 +
arch/arm/plat-mxc/include/mach/mx35.h | 189 +
arch/arm/plat-mxc/include/mach/mx3_camera.h | 48 +
arch/arm/plat-mxc/include/mach/mx3fb.h | 53 +
arch/arm/plat-mxc/include/mach/mx3x.h | 194 +
arch/arm/plat-mxc/include/mach/mx50.h | 289 +
arch/arm/plat-mxc/include/mach/mx51.h | 345 ++
arch/arm/plat-mxc/include/mach/mx53.h | 341 ++
arch/arm/plat-mxc/include/mach/mx6q.h | 33 +
arch/arm/plat-mxc/include/mach/mxc.h | 179 +
arch/arm/plat-mxc/include/mach/mxc_ehci.h | 57 +
arch/arm/plat-mxc/include/mach/mxc_nand.h | 32 +
arch/arm/plat-mxc/include/mach/sdma.h | 59 +
arch/arm/plat-mxc/include/mach/spi.h | 27 +
arch/arm/plat-mxc/include/mach/ssi.h | 21 +
arch/arm/plat-mxc/include/mach/timex.h | 22 +
arch/arm/plat-mxc/include/mach/ulpi.h | 16 +
arch/arm/plat-mxc/include/mach/uncompress.h | 132 +
arch/arm/plat-mxc/include/mach/usb.h | 23 +
arch/arm/plat-mxc/iomux-v1.c | 188 +
arch/arm/plat-mxc/iomux-v3.c | 78 +
arch/arm/plat-mxc/iram_alloc.c | 73 +
arch/arm/plat-mxc/irq-common.c | 60 +
arch/arm/plat-mxc/irq-common.h | 28 +
arch/arm/plat-mxc/pwm.c | 306 ++
arch/arm/plat-mxc/ssi-fiq-ksym.c | 20 +
arch/arm/plat-mxc/ssi-fiq.S | 136 +
arch/arm/plat-mxc/system.c | 73 +
arch/arm/plat-mxc/time.c | 310 ++
arch/arm/plat-mxc/tzic.c | 207 +
arch/arm/plat-mxc/ulpi.c | 118 +
arch/arm/plat-nomadik/Kconfig | 29 +
arch/arm/plat-nomadik/Makefile | 5 +
arch/arm/plat-nomadik/include/plat/gpio-nomadik.h | 88 +
arch/arm/plat-nomadik/include/plat/i2c.h | 39 +
arch/arm/plat-nomadik/include/plat/mtu.h | 9 +
arch/arm/plat-nomadik/include/plat/pincfg.h | 139 +
arch/arm/plat-nomadik/include/plat/ske.h | 50 +
arch/arm/plat-nomadik/include/plat/ste_dma40.h | 223 +
arch/arm/plat-nomadik/timer.c | 223 +
arch/arm/plat-omap/Kconfig | 208 +
arch/arm/plat-omap/Makefile | 29 +
arch/arm/plat-omap/clock.c | 569 ++
arch/arm/plat-omap/common.c | 78 +
arch/arm/plat-omap/counter_32k.c | 121 +
arch/arm/plat-omap/debug-devices.c | 95 +
arch/arm/plat-omap/debug-leds.c | 315 ++
arch/arm/plat-omap/devices.c | 214 +
arch/arm/plat-omap/dma.c | 2178 ++++++++
arch/arm/plat-omap/dmtimer.c | 765 +++
arch/arm/plat-omap/fb.c | 105 +
arch/arm/plat-omap/i2c.c | 281 +
arch/arm/plat-omap/include/plat/am33xx.h | 25 +
arch/arm/plat-omap/include/plat/board-ams-delta.h | 71 +
arch/arm/plat-omap/include/plat/board-sx1.h | 52 +
arch/arm/plat-omap/include/plat/board-voiceblue.h | 19 +
arch/arm/plat-omap/include/plat/board.h | 174 +
arch/arm/plat-omap/include/plat/clkdev_omap.h | 52 +
arch/arm/plat-omap/include/plat/clock.h | 306 ++
arch/arm/plat-omap/include/plat/common.h | 40 +
arch/arm/plat-omap/include/plat/cpu.h | 514 ++
arch/arm/plat-omap/include/plat/dma-44xx.h | 147 +
arch/arm/plat-omap/include/plat/dma.h | 538 ++
arch/arm/plat-omap/include/plat/dmtimer.h | 427 ++
arch/arm/plat-omap/include/plat/dsp.h | 31 +
arch/arm/plat-omap/include/plat/flash.h | 17 +
arch/arm/plat-omap/include/plat/fpga.h | 193 +
arch/arm/plat-omap/include/plat/gpio-switch.h | 54 +
arch/arm/plat-omap/include/plat/gpio.h | 227 +
arch/arm/plat-omap/include/plat/gpmc-smc91x.h | 42 +
arch/arm/plat-omap/include/plat/gpmc-smsc911x.h | 35 +
arch/arm/plat-omap/include/plat/gpmc.h | 160 +
arch/arm/plat-omap/include/plat/hardware.h | 292 +
arch/arm/plat-omap/include/plat/i2c.h | 59 +
arch/arm/plat-omap/include/plat/iommu.h | 206 +
arch/arm/plat-omap/include/plat/iommu2.h | 96 +
arch/arm/plat-omap/include/plat/iopgtable.h | 120 +
arch/arm/plat-omap/include/plat/iovmm.h | 89 +
arch/arm/plat-omap/include/plat/irda.h | 33 +
arch/arm/plat-omap/include/plat/irqs-44xx.h | 144 +
arch/arm/plat-omap/include/plat/irqs.h | 453 ++
arch/arm/plat-omap/include/plat/keypad.h | 52 +
arch/arm/plat-omap/include/plat/l3_2xxx.h | 20 +
arch/arm/plat-omap/include/plat/l3_3xxx.h | 20 +
arch/arm/plat-omap/include/plat/l4_2xxx.h | 24 +
arch/arm/plat-omap/include/plat/l4_3xxx.h | 34 +
arch/arm/plat-omap/include/plat/lcd_mipid.h | 29 +
arch/arm/plat-omap/include/plat/led.h | 24 +
arch/arm/plat-omap/include/plat/mailbox.h | 105 +
arch/arm/plat-omap/include/plat/mcbsp.h | 62 +
arch/arm/plat-omap/include/plat/mcspi.h | 23 +
arch/arm/plat-omap/include/plat/menelaus.h | 49 +
arch/arm/plat-omap/include/plat/mmc.h | 198 +
arch/arm/plat-omap/include/plat/multi.h | 102 +
arch/arm/plat-omap/include/plat/mux.h | 454 ++
arch/arm/plat-omap/include/plat/nand.h | 44 +
arch/arm/plat-omap/include/plat/omap-pm.h | 352 ++
arch/arm/plat-omap/include/plat/omap-secure.h | 19 +
arch/arm/plat-omap/include/plat/omap-serial.h | 141 +
arch/arm/plat-omap/include/plat/omap1510.h | 50 +
arch/arm/plat-omap/include/plat/omap16xx.h | 202 +
arch/arm/plat-omap/include/plat/omap24xx.h | 89 +
arch/arm/plat-omap/include/plat/omap34xx.h | 101 +
arch/arm/plat-omap/include/plat/omap4-keypad.h | 6 +
arch/arm/plat-omap/include/plat/omap44xx.h | 62 +
arch/arm/plat-omap/include/plat/omap730.h | 102 +
arch/arm/plat-omap/include/plat/omap7xx.h | 107 +
arch/arm/plat-omap/include/plat/omap850.h | 102 +
arch/arm/plat-omap/include/plat/omap_device.h | 170 +
arch/arm/plat-omap/include/plat/omap_hwmod.h | 622 +++
arch/arm/plat-omap/include/plat/onenand.h | 53 +
arch/arm/plat-omap/include/plat/param.h | 8 +
arch/arm/plat-omap/include/plat/prcm.h | 37 +
arch/arm/plat-omap/include/plat/remoteproc.h | 57 +
arch/arm/plat-omap/include/plat/sdrc.h | 164 +
arch/arm/plat-omap/include/plat/serial.h | 118 +
arch/arm/plat-omap/include/plat/sram.h | 105 +
arch/arm/plat-omap/include/plat/tc.h | 89 +
arch/arm/plat-omap/include/plat/ti81xx.h | 27 +
arch/arm/plat-omap/include/plat/timex.h | 41 +
arch/arm/plat-omap/include/plat/uncompress.h | 194 +
arch/arm/plat-omap/include/plat/usb.h | 365 ++
arch/arm/plat-omap/include/plat/voltage.h | 20 +
arch/arm/plat-omap/include/plat/vram.h | 43 +
arch/arm/plat-omap/include/plat/vrfb.h | 66 +
arch/arm/plat-omap/mailbox.c | 430 ++
arch/arm/plat-omap/mux.c | 90 +
arch/arm/plat-omap/ocpi.c | 109 +
arch/arm/plat-omap/omap-pm-noop.c | 373 ++
arch/arm/plat-omap/omap_device.c | 1129 ++++
arch/arm/plat-omap/sram.c | 395 ++
arch/arm/plat-omap/sram.h | 6 +
arch/arm/plat-omap/usb.c | 147 +
arch/arm/plat-orion/Makefile | 10 +
arch/arm/plat-orion/addr-map.c | 174 +
arch/arm/plat-orion/common.c | 936 ++++
arch/arm/plat-orion/gpio.c | 481 ++
arch/arm/plat-orion/include/plat/addr-map.h | 53 +
arch/arm/plat-orion/include/plat/audio.h | 7 +
.../plat-orion/include/plat/cache-feroceon-l2.h | 11 +
arch/arm/plat-orion/include/plat/common.h | 109 +
arch/arm/plat-orion/include/plat/ehci-orion.h | 26 +
arch/arm/plat-orion/include/plat/gpio.h | 37 +
arch/arm/plat-orion/include/plat/irq.h | 17 +
arch/arm/plat-orion/include/plat/mpp.h | 34 +
arch/arm/plat-orion/include/plat/mv_xor.h | 24 +
arch/arm/plat-orion/include/plat/mvsdio.h | 20 +
arch/arm/plat-orion/include/plat/orion_nand.h | 26 +
arch/arm/plat-orion/include/plat/orion_wdt.h | 18 +
arch/arm/plat-orion/include/plat/pcie.h | 34 +
arch/arm/plat-orion/include/plat/time.h | 20 +
arch/arm/plat-orion/irq.c | 34 +
arch/arm/plat-orion/mpp.c | 77 +
arch/arm/plat-orion/pcie.c | 286 +
arch/arm/plat-orion/time.c | 229 +
arch/arm/plat-pxa/Kconfig | 8 +
arch/arm/plat-pxa/Makefile | 12 +
arch/arm/plat-pxa/dma.c | 391 ++
arch/arm/plat-pxa/include/plat/dma.h | 85 +
arch/arm/plat-pxa/include/plat/mfp.h | 475 ++
arch/arm/plat-pxa/include/plat/pxa27x_keypad.h | 69 +
arch/arm/plat-pxa/include/plat/pxa3xx_nand.h | 79 +
arch/arm/plat-pxa/mfp.c | 285 +
arch/arm/plat-pxa/pwm.c | 304 ++
arch/arm/plat-pxa/ssp.c | 224 +
arch/arm/plat-s3c24xx/Kconfig | 116 +
arch/arm/plat-s3c24xx/Makefile | 33 +
arch/arm/plat-s3c24xx/clock-dclk.c | 196 +
arch/arm/plat-s3c24xx/clock.c | 59 +
arch/arm/plat-s3c24xx/cpu-freq-debugfs.c | 199 +
arch/arm/plat-s3c24xx/cpu-freq.c | 716 +++
arch/arm/plat-s3c24xx/cpu.c | 236 +
arch/arm/plat-s3c24xx/dev-uart.c | 100 +
arch/arm/plat-s3c24xx/dma.c | 1468 +++++
arch/arm/plat-s3c24xx/irq-pm.c | 95 +
arch/arm/plat-s3c24xx/irq.c | 676 +++
arch/arm/plat-s3c24xx/pm.c | 149 +
arch/arm/plat-s3c24xx/s3c2410-clock.c | 253 +
arch/arm/plat-s3c24xx/s3c2410-cpufreq-utils.c | 64 +
arch/arm/plat-s3c24xx/s3c2410-iotiming.c | 478 ++
arch/arm/plat-s3c24xx/s3c2412-iotiming.c | 286 +
arch/arm/plat-s3c24xx/sleep.S | 84 +
arch/arm/plat-s5p/Kconfig | 140 +
arch/arm/plat-s5p/Makefile | 28 +
arch/arm/plat-s5p/clock.c | 264 +
arch/arm/plat-s5p/dev-mfc.c | 73 +
arch/arm/plat-s5p/dev-uart.c | 137 +
arch/arm/plat-s5p/irq-eint.c | 219 +
arch/arm/plat-s5p/irq-gpioint.c | 216 +
arch/arm/plat-s5p/irq-pm.c | 103 +
arch/arm/plat-s5p/irq.c | 36 +
arch/arm/plat-s5p/pm.c | 41 +
arch/arm/plat-s5p/s5p-time.c | 406 ++
arch/arm/plat-s5p/setup-mipiphy.c | 63 +
arch/arm/plat-s5p/sleep.S | 81 +
arch/arm/plat-s5p/sysmmu.c | 313 ++
arch/arm/plat-samsung/Kconfig | 369 ++
arch/arm/plat-samsung/Makefile | 56 +
arch/arm/plat-samsung/adc.c | 553 ++
arch/arm/plat-samsung/clock-clksrc.c | 212 +
arch/arm/plat-samsung/clock.c | 467 ++
arch/arm/plat-samsung/cpu.c | 57 +
arch/arm/plat-samsung/dev-backlight.c | 152 +
arch/arm/plat-samsung/dev-uart.c | 46 +
arch/arm/plat-samsung/devs.c | 1642 ++++++
arch/arm/plat-samsung/dma-ops.c | 133 +
arch/arm/plat-samsung/dma.c | 84 +
arch/arm/plat-samsung/include/plat/adc-core.h | 28 +
arch/arm/plat-samsung/include/plat/adc.h | 35 +
arch/arm/plat-samsung/include/plat/ata-core.h | 28 +
arch/arm/plat-samsung/include/plat/ata.h | 36 +
arch/arm/plat-samsung/include/plat/audio-simtec.h | 34 +
arch/arm/plat-samsung/include/plat/audio.h | 59 +
arch/arm/plat-samsung/include/plat/backlight.h | 26 +
arch/arm/plat-samsung/include/plat/camport.h | 28 +
arch/arm/plat-samsung/include/plat/clock-clksrc.h | 83 +
arch/arm/plat-samsung/include/plat/clock.h | 151 +
arch/arm/plat-samsung/include/plat/common-smdk.h | 15 +
arch/arm/plat-samsung/include/plat/cpu-freq-core.h | 293 +
arch/arm/plat-samsung/include/plat/cpu-freq.h | 145 +
arch/arm/plat-samsung/include/plat/cpu.h | 209 +
arch/arm/plat-samsung/include/plat/debug-macro.S | 87 +
arch/arm/plat-samsung/include/plat/devs.h | 163 +
arch/arm/plat-samsung/include/plat/dma-core.h | 22 +
arch/arm/plat-samsung/include/plat/dma-ops.h | 65 +
arch/arm/plat-samsung/include/plat/dma-pl330.h | 121 +
arch/arm/plat-samsung/include/plat/dma-s3c24xx.h | 78 +
arch/arm/plat-samsung/include/plat/dma.h | 130 +
arch/arm/plat-samsung/include/plat/ehci.h | 21 +
arch/arm/plat-samsung/include/plat/fb-core.h | 44 +
arch/arm/plat-samsung/include/plat/fb-s3c2410.h | 72 +
arch/arm/plat-samsung/include/plat/fb.h | 119 +
arch/arm/plat-samsung/include/plat/fimc-core.h | 49 +
arch/arm/plat-samsung/include/plat/fiq.h | 13 +
.../plat-samsung/include/plat/gpio-cfg-helpers.h | 163 +
arch/arm/plat-samsung/include/plat/gpio-cfg.h | 246 +
arch/arm/plat-samsung/include/plat/gpio-core.h | 124 +
arch/arm/plat-samsung/include/plat/gpio-fns.h | 98 +
arch/arm/plat-samsung/include/plat/hwmon.h | 51 +
arch/arm/plat-samsung/include/plat/iic-core.h | 42 +
arch/arm/plat-samsung/include/plat/iic.h | 77 +
arch/arm/plat-samsung/include/plat/irq-uart.h | 20 +
arch/arm/plat-samsung/include/plat/irq-vic-timer.h | 13 +
arch/arm/plat-samsung/include/plat/irq.h | 116 +
arch/arm/plat-samsung/include/plat/irqs.h | 81 +
arch/arm/plat-samsung/include/plat/keypad-core.h | 31 +
arch/arm/plat-samsung/include/plat/keypad.h | 31 +
arch/arm/plat-samsung/include/plat/map-base.h | 46 +
arch/arm/plat-samsung/include/plat/map-s3c.h | 84 +
arch/arm/plat-samsung/include/plat/map-s5p.h | 61 +
arch/arm/plat-samsung/include/plat/mci.h | 52 +
arch/arm/plat-samsung/include/plat/mfc.h | 27 +
arch/arm/plat-samsung/include/plat/mipi_csis.h | 43 +
arch/arm/plat-samsung/include/plat/nand-core.h | 28 +
arch/arm/plat-samsung/include/plat/nand.h | 67 +
arch/arm/plat-samsung/include/plat/onenand-core.h | 37 +
arch/arm/plat-samsung/include/plat/pd.h | 30 +
arch/arm/plat-samsung/include/plat/pll.h | 323 ++
arch/arm/plat-samsung/include/plat/pm.h | 190 +
arch/arm/plat-samsung/include/plat/pwm-clock.h | 81 +
arch/arm/plat-samsung/include/plat/regs-ac97.h | 67 +
arch/arm/plat-samsung/include/plat/regs-adc.h | 68 +
arch/arm/plat-samsung/include/plat/regs-ata.h | 56 +
arch/arm/plat-samsung/include/plat/regs-dma.h | 151 +
arch/arm/plat-samsung/include/plat/regs-fb-v4.h | 159 +
arch/arm/plat-samsung/include/plat/regs-fb.h | 403 ++
arch/arm/plat-samsung/include/plat/regs-iic.h | 56 +
arch/arm/plat-samsung/include/plat/regs-iis.h | 70 +
arch/arm/plat-samsung/include/plat/regs-irqtype.h | 21 +
arch/arm/plat-samsung/include/plat/regs-nand.h | 123 +
arch/arm/plat-samsung/include/plat/regs-onenand.h | 63 +
arch/arm/plat-samsung/include/plat/regs-rtc.h | 71 +
arch/arm/plat-samsung/include/plat/regs-sdhci.h | 87 +
arch/arm/plat-samsung/include/plat/regs-serial.h | 281 +
arch/arm/plat-samsung/include/plat/regs-spi.h | 48 +
arch/arm/plat-samsung/include/plat/regs-srom.h | 54 +
arch/arm/plat-samsung/include/plat/regs-timer.h | 124 +
arch/arm/plat-samsung/include/plat/regs-udc.h | 151 +
.../plat-samsung/include/plat/regs-usb-hsotg-phy.h | 51 +
.../arm/plat-samsung/include/plat/regs-usb-hsotg.h | 379 ++
arch/arm/plat-samsung/include/plat/regs-watchdog.h | 41 +
arch/arm/plat-samsung/include/plat/rtc-core.h | 27 +
arch/arm/plat-samsung/include/plat/s3c2410.h | 31 +
arch/arm/plat-samsung/include/plat/s3c2412.h | 32 +
arch/arm/plat-samsung/include/plat/s3c2416.h | 33 +
arch/arm/plat-samsung/include/plat/s3c2443.h | 34 +
arch/arm/plat-samsung/include/plat/s3c244x.h | 42 +
arch/arm/plat-samsung/include/plat/s3c64xx-spi.h | 85 +
arch/arm/plat-samsung/include/plat/s5p-clock.h | 61 +
arch/arm/plat-samsung/include/plat/s5p-time.h | 40 +
arch/arm/plat-samsung/include/plat/sdhci.h | 387 ++
arch/arm/plat-samsung/include/plat/sysmmu.h | 95 +
arch/arm/plat-samsung/include/plat/ts.h | 25 +
arch/arm/plat-samsung/include/plat/tv-core.h | 44 +
arch/arm/plat-samsung/include/plat/udc-hs.h | 34 +
arch/arm/plat-samsung/include/plat/udc.h | 44 +
arch/arm/plat-samsung/include/plat/uncompress.h | 186 +
arch/arm/plat-samsung/include/plat/usb-control.h | 43 +
arch/arm/plat-samsung/include/plat/usb-phy.h | 22 +
arch/arm/plat-samsung/include/plat/wakeup-mask.h | 44 +
.../arm/plat-samsung/include/plat/watchdog-reset.h | 46 +
arch/arm/plat-samsung/init.c | 160 +
arch/arm/plat-samsung/irq-vic-timer.c | 98 +
arch/arm/plat-samsung/pd.c | 95 +
arch/arm/plat-samsung/platformdata.c | 62 +
arch/arm/plat-samsung/pm-check.c | 237 +
arch/arm/plat-samsung/pm-gpio.c | 384 ++
arch/arm/plat-samsung/pm.c | 364 ++
arch/arm/plat-samsung/pwm-clock.c | 474 ++
arch/arm/plat-samsung/pwm.c | 420 ++
arch/arm/plat-samsung/s3c-dma-ops.c | 131 +
arch/arm/plat-samsung/time.c | 286 +
arch/arm/plat-samsung/wakeup-mask.c | 47 +
arch/arm/plat-spear/Kconfig | 31 +
arch/arm/plat-spear/Makefile | 8 +
arch/arm/plat-spear/clock.c | 1005 ++++
arch/arm/plat-spear/include/plat/clock.h | 249 +
arch/arm/plat-spear/include/plat/debug-macro.S | 36 +
arch/arm/plat-spear/include/plat/gpio.h | 1 +
arch/arm/plat-spear/include/plat/hardware.h | 17 +
arch/arm/plat-spear/include/plat/keyboard.h | 162 +
arch/arm/plat-spear/include/plat/padmux.h | 92 +
arch/arm/plat-spear/include/plat/shirq.h | 73 +
arch/arm/plat-spear/include/plat/timex.h | 19 +
arch/arm/plat-spear/include/plat/uncompress.h | 43 +
arch/arm/plat-spear/padmux.c | 164 +
arch/arm/plat-spear/restart.c | 28 +
arch/arm/plat-spear/shirq.c | 118 +
arch/arm/plat-spear/time.c | 239 +
arch/arm/plat-versatile/Kconfig | 16 +
arch/arm/plat-versatile/Makefile | 6 +
arch/arm/plat-versatile/clcd.c | 182 +
arch/arm/plat-versatile/clock.c | 74 +
arch/arm/plat-versatile/fpga-irq.c | 72 +
arch/arm/plat-versatile/headsmp.S | 41 +
arch/arm/plat-versatile/include/plat/clcd.h | 9 +
arch/arm/plat-versatile/include/plat/clock.h | 15 +
arch/arm/plat-versatile/include/plat/fpga-irq.h | 12 +
arch/arm/plat-versatile/include/plat/sched_clock.h | 6 +
arch/arm/plat-versatile/leds.c | 103 +
arch/arm/plat-versatile/platsmp.c | 106 +
arch/arm/plat-versatile/sched-clock.c | 41 +
arch/arm/tools/Makefile | 10 +
arch/arm/tools/gen-mach-types | 72 +
arch/arm/tools/mach-types | 1172 ++++
arch/arm/vfp/Makefile | 15 +
arch/arm/vfp/entry.S | 70 +
arch/arm/vfp/vfp.h | 380 ++
arch/arm/vfp/vfpdouble.c | 1204 +++++
arch/arm/vfp/vfphw.S | 309 ++
arch/arm/vfp/vfpinstr.h | 88 +
arch/arm/vfp/vfpmodule.c | 729 +++
arch/arm/vfp/vfpsingle.c | 1244 +++++
3902 files changed, 765283 insertions(+)
create mode 100644 arch/arm/Kconfig
create mode 100644 arch/arm/Kconfig-nommu
create mode 100644 arch/arm/Kconfig.debug
create mode 100644 arch/arm/Makefile
create mode 100644 arch/arm/boot/Makefile
create mode 100644 arch/arm/boot/bootp/Makefile
create mode 100644 arch/arm/boot/bootp/bootp.lds
create mode 100644 arch/arm/boot/bootp/init.S
create mode 100644 arch/arm/boot/bootp/initrd.S
create mode 100644 arch/arm/boot/bootp/kernel.S
create mode 100644 arch/arm/boot/compressed/Makefile
create mode 100644 arch/arm/boot/compressed/atags_to_fdt.c
create mode 100644 arch/arm/boot/compressed/big-endian.S
create mode 100644 arch/arm/boot/compressed/decompress.c
create mode 100644 arch/arm/boot/compressed/head-sa1100.S
create mode 100644 arch/arm/boot/compressed/head-shark.S
create mode 100644 arch/arm/boot/compressed/head-sharpsl.S
create mode 100644 arch/arm/boot/compressed/head-shmobile.S
create mode 100644 arch/arm/boot/compressed/head-vt8500.S
create mode 100755 arch/arm/boot/compressed/head-wmt.S
create mode 100644 arch/arm/boot/compressed/head-xscale.S
create mode 100644 arch/arm/boot/compressed/head.S
create mode 100644 arch/arm/boot/compressed/libfdt_env.h
create mode 100644 arch/arm/boot/compressed/ll_char_wr.S
create mode 100644 arch/arm/boot/compressed/misc.c
create mode 100644 arch/arm/boot/compressed/mmcif-sh7372.c
create mode 100644 arch/arm/boot/compressed/ofw-shark.c
create mode 100644 arch/arm/boot/compressed/piggy.gzip.S
create mode 100644 arch/arm/boot/compressed/piggy.lzma.S
create mode 100644 arch/arm/boot/compressed/piggy.lzo.S
create mode 100644 arch/arm/boot/compressed/piggy.xzkern.S
create mode 100644 arch/arm/boot/compressed/sdhi-sh7372.c
create mode 100644 arch/arm/boot/compressed/sdhi-shmobile.c
create mode 100644 arch/arm/boot/compressed/sdhi-shmobile.h
create mode 100644 arch/arm/boot/compressed/string.c
create mode 100644 arch/arm/boot/compressed/vmlinux.lds.in
create mode 100644 arch/arm/boot/dts/am3517_mt_ventoux.dts
create mode 100644 arch/arm/boot/dts/at91sam9g20.dtsi
create mode 100644 arch/arm/boot/dts/at91sam9g25ek.dts
create mode 100644 arch/arm/boot/dts/at91sam9g45.dtsi
create mode 100644 arch/arm/boot/dts/at91sam9m10g45ek.dts
create mode 100644 arch/arm/boot/dts/at91sam9x5.dtsi
create mode 100644 arch/arm/boot/dts/at91sam9x5cm.dtsi
create mode 100644 arch/arm/boot/dts/db8500.dtsi
create mode 100644 arch/arm/boot/dts/exynos4210-origen.dts
create mode 100644 arch/arm/boot/dts/exynos4210-smdkv310.dts
create mode 100644 arch/arm/boot/dts/exynos4210.dtsi
create mode 100644 arch/arm/boot/dts/exynos5250-smdk5250.dts
create mode 100644 arch/arm/boot/dts/exynos5250.dtsi
create mode 100644 arch/arm/boot/dts/highbank.dts
create mode 100644 arch/arm/boot/dts/imx27-phytec-phycore.dts
create mode 100644 arch/arm/boot/dts/imx27.dtsi
create mode 100644 arch/arm/boot/dts/imx51-babbage.dts
create mode 100644 arch/arm/boot/dts/imx51.dtsi
create mode 100644 arch/arm/boot/dts/imx53-ard.dts
create mode 100644 arch/arm/boot/dts/imx53-evk.dts
create mode 100644 arch/arm/boot/dts/imx53-qsb.dts
create mode 100644 arch/arm/boot/dts/imx53-smd.dts
create mode 100644 arch/arm/boot/dts/imx53.dtsi
create mode 100644 arch/arm/boot/dts/imx6q-arm2.dts
create mode 100644 arch/arm/boot/dts/imx6q-sabrelite.dts
create mode 100644 arch/arm/boot/dts/imx6q.dtsi
create mode 100644 arch/arm/boot/dts/kirkwood-dreamplug.dts
create mode 100644 arch/arm/boot/dts/kirkwood.dtsi
create mode 100644 arch/arm/boot/dts/msm8660-surf.dts
create mode 100644 arch/arm/boot/dts/omap2.dtsi
create mode 100644 arch/arm/boot/dts/omap3-beagle.dts
create mode 100644 arch/arm/boot/dts/omap3-evm.dts
create mode 100644 arch/arm/boot/dts/omap3.dtsi
create mode 100644 arch/arm/boot/dts/omap4-panda.dts
create mode 100644 arch/arm/boot/dts/omap4-sdp.dts
create mode 100644 arch/arm/boot/dts/omap4.dtsi
create mode 100644 arch/arm/boot/dts/picoxcell-pc3x2.dtsi
create mode 100644 arch/arm/boot/dts/picoxcell-pc3x3.dtsi
create mode 100644 arch/arm/boot/dts/picoxcell-pc7302-pc3x2.dts
create mode 100644 arch/arm/boot/dts/picoxcell-pc7302-pc3x3.dts
create mode 100644 arch/arm/boot/dts/prima2-cb.dts
create mode 100644 arch/arm/boot/dts/pxa168-aspenite.dts
create mode 100644 arch/arm/boot/dts/pxa168.dtsi
create mode 100644 arch/arm/boot/dts/skeleton.dtsi
create mode 100644 arch/arm/boot/dts/snowball.dts
create mode 100644 arch/arm/boot/dts/spear600-evb.dts
create mode 100644 arch/arm/boot/dts/spear600.dtsi
create mode 100644 arch/arm/boot/dts/tegra-cardhu.dts
create mode 100644 arch/arm/boot/dts/tegra-harmony.dts
create mode 100644 arch/arm/boot/dts/tegra-paz00.dts
create mode 100644 arch/arm/boot/dts/tegra-seaboard.dts
create mode 100644 arch/arm/boot/dts/tegra-trimslice.dts
create mode 100644 arch/arm/boot/dts/tegra-ventana.dts
create mode 100644 arch/arm/boot/dts/tegra20.dtsi
create mode 100644 arch/arm/boot/dts/tegra30.dtsi
create mode 100644 arch/arm/boot/dts/testcases/tests-phandle.dtsi
create mode 100644 arch/arm/boot/dts/testcases/tests.dtsi
create mode 100644 arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi
create mode 100644 arch/arm/boot/dts/usb_a9g20.dts
create mode 100644 arch/arm/boot/dts/versatile-ab.dts
create mode 100644 arch/arm/boot/dts/versatile-pb.dts
create mode 100644 arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
create mode 100644 arch/arm/boot/dts/vexpress-v2m.dtsi
create mode 100644 arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
create mode 100644 arch/arm/boot/dts/vexpress-v2p-ca5s.dts
create mode 100644 arch/arm/boot/dts/vexpress-v2p-ca9.dts
create mode 100644 arch/arm/boot/dts/zynq-ep107.dts
create mode 100644 arch/arm/boot/install.sh
create mode 100644 arch/arm/common/Kconfig
create mode 100644 arch/arm/common/Makefile
create mode 100644 arch/arm/common/dmabounce.c
create mode 100644 arch/arm/common/fiq_debugger.c
create mode 100644 arch/arm/common/fiq_debugger_ringbuf.h
create mode 100644 arch/arm/common/fiq_glue.S
create mode 100644 arch/arm/common/fiq_glue_setup.c
create mode 100644 arch/arm/common/gic.c
create mode 100644 arch/arm/common/icst.c
create mode 100644 arch/arm/common/it8152.c
create mode 100644 arch/arm/common/locomo.c
create mode 100755 arch/arm/common/pci.c
create mode 100755 arch/arm/common/pci_wmt.c
create mode 100755 arch/arm/common/platform.c
create mode 100644 arch/arm/common/sa1111.c
create mode 100644 arch/arm/common/scoop.c
create mode 100644 arch/arm/common/sharpsl_param.c
create mode 100644 arch/arm/common/timer-sp.c
create mode 100644 arch/arm/common/uengine.c
create mode 100644 arch/arm/common/via82c505.c
create mode 100644 arch/arm/common/vic.c
create mode 100755 arch/arm/configs/Android_NFS_defconfig
create mode 100755 arch/arm/configs/Android_defconfig
create mode 100755 arch/arm/configs/Tinyandroid_defconfig
create mode 100644 arch/arm/configs/acs5k_defconfig
create mode 100644 arch/arm/configs/acs5k_tiny_defconfig
create mode 100644 arch/arm/configs/afeb9260_defconfig
create mode 100644 arch/arm/configs/ag5evm_defconfig
create mode 100644 arch/arm/configs/am200epdkit_defconfig
create mode 100644 arch/arm/configs/ap4evb_defconfig
create mode 100644 arch/arm/configs/assabet_defconfig
create mode 100644 arch/arm/configs/at91rm9200_defconfig
create mode 100644 arch/arm/configs/at91sam9260_defconfig
create mode 100644 arch/arm/configs/at91sam9261_defconfig
create mode 100644 arch/arm/configs/at91sam9263_defconfig
create mode 100644 arch/arm/configs/at91sam9g20_defconfig
create mode 100644 arch/arm/configs/at91sam9g45_defconfig
create mode 100644 arch/arm/configs/at91sam9rl_defconfig
create mode 100644 arch/arm/configs/at91x40_defconfig
create mode 100644 arch/arm/configs/badge4_defconfig
create mode 100644 arch/arm/configs/bcmring_defconfig
create mode 100644 arch/arm/configs/bonito_defconfig
create mode 100644 arch/arm/configs/cam60_defconfig
create mode 100644 arch/arm/configs/cerfcube_defconfig
create mode 100644 arch/arm/configs/cm_x2xx_defconfig
create mode 100644 arch/arm/configs/cm_x300_defconfig
create mode 100644 arch/arm/configs/cns3420vb_defconfig
create mode 100644 arch/arm/configs/colibri_pxa270_defconfig
create mode 100644 arch/arm/configs/colibri_pxa300_defconfig
create mode 100644 arch/arm/configs/collie_defconfig
create mode 100644 arch/arm/configs/corgi_defconfig
create mode 100644 arch/arm/configs/cpu9260_defconfig
create mode 100644 arch/arm/configs/cpu9g20_defconfig
create mode 100644 arch/arm/configs/da8xx_omapl_defconfig
create mode 100644 arch/arm/configs/davinci_all_defconfig
create mode 100644 arch/arm/configs/dove_defconfig
create mode 100644 arch/arm/configs/ebsa110_defconfig
create mode 100644 arch/arm/configs/edb7211_defconfig
create mode 100644 arch/arm/configs/em_x270_defconfig
create mode 100644 arch/arm/configs/ep93xx_defconfig
create mode 100644 arch/arm/configs/eseries_pxa_defconfig
create mode 100644 arch/arm/configs/exynos4_defconfig
create mode 100644 arch/arm/configs/ezx_defconfig
create mode 100644 arch/arm/configs/footbridge_defconfig
create mode 100644 arch/arm/configs/fortunet_defconfig
create mode 100644 arch/arm/configs/g3evm_defconfig
create mode 100644 arch/arm/configs/g4evm_defconfig
create mode 100644 arch/arm/configs/h3600_defconfig
create mode 100644 arch/arm/configs/h5000_defconfig
create mode 100644 arch/arm/configs/h7201_defconfig
create mode 100644 arch/arm/configs/h7202_defconfig
create mode 100644 arch/arm/configs/hackkit_defconfig
create mode 100644 arch/arm/configs/imote2_defconfig
create mode 100644 arch/arm/configs/imx_v4_v5_defconfig
create mode 100644 arch/arm/configs/imx_v6_v7_defconfig
create mode 100644 arch/arm/configs/integrator_defconfig
create mode 100644 arch/arm/configs/iop13xx_defconfig
create mode 100644 arch/arm/configs/iop32x_defconfig
create mode 100644 arch/arm/configs/iop33x_defconfig
create mode 100644 arch/arm/configs/ixp2000_defconfig
create mode 100644 arch/arm/configs/ixp23xx_defconfig
create mode 100644 arch/arm/configs/ixp4xx_defconfig
create mode 100644 arch/arm/configs/jornada720_defconfig
create mode 100644 arch/arm/configs/kirkwood_defconfig
create mode 100644 arch/arm/configs/kota2_defconfig
create mode 100644 arch/arm/configs/ks8695_defconfig
create mode 100644 arch/arm/configs/lart_defconfig
create mode 100644 arch/arm/configs/lpc32xx_defconfig
create mode 100644 arch/arm/configs/lpd270_defconfig
create mode 100644 arch/arm/configs/lubbock_defconfig
create mode 100644 arch/arm/configs/mackerel_defconfig
create mode 100644 arch/arm/configs/magician_defconfig
create mode 100644 arch/arm/configs/mainstone_defconfig
create mode 100644 arch/arm/configs/marzen_defconfig
create mode 100644 arch/arm/configs/mini2440_defconfig
create mode 100644 arch/arm/configs/mmp2_defconfig
create mode 100644 arch/arm/configs/msm_defconfig
create mode 100644 arch/arm/configs/mv78xx0_defconfig
create mode 100644 arch/arm/configs/mxs_defconfig
create mode 100644 arch/arm/configs/neponset_defconfig
create mode 100644 arch/arm/configs/netwinder_defconfig
create mode 100644 arch/arm/configs/netx_defconfig
create mode 100644 arch/arm/configs/nhk8815_defconfig
create mode 100644 arch/arm/configs/nuc910_defconfig
create mode 100644 arch/arm/configs/nuc950_defconfig
create mode 100644 arch/arm/configs/nuc960_defconfig
create mode 100644 arch/arm/configs/omap1_defconfig
create mode 100644 arch/arm/configs/omap2plus_defconfig
create mode 100644 arch/arm/configs/orion5x_defconfig
create mode 100644 arch/arm/configs/palmz72_defconfig
create mode 100644 arch/arm/configs/pcm027_defconfig
create mode 100644 arch/arm/configs/pleb_defconfig
create mode 100644 arch/arm/configs/pnx4008_defconfig
create mode 100644 arch/arm/configs/pxa168_defconfig
create mode 100644 arch/arm/configs/pxa255-idp_defconfig
create mode 100644 arch/arm/configs/pxa3xx_defconfig
create mode 100644 arch/arm/configs/pxa910_defconfig
create mode 100644 arch/arm/configs/qil-a9260_defconfig
create mode 100644 arch/arm/configs/raumfeld_defconfig
create mode 100644 arch/arm/configs/realview-smp_defconfig
create mode 100644 arch/arm/configs/realview_defconfig
create mode 100644 arch/arm/configs/rpc_defconfig
create mode 100644 arch/arm/configs/s3c2410_defconfig
create mode 100644 arch/arm/configs/s3c6400_defconfig
create mode 100644 arch/arm/configs/s5p64x0_defconfig
create mode 100644 arch/arm/configs/s5pc100_defconfig
create mode 100644 arch/arm/configs/s5pv210_defconfig
create mode 100644 arch/arm/configs/sam9_l9260_defconfig
create mode 100644 arch/arm/configs/shannon_defconfig
create mode 100644 arch/arm/configs/shark_defconfig
create mode 100644 arch/arm/configs/simpad_defconfig
create mode 100644 arch/arm/configs/spear3xx_defconfig
create mode 100644 arch/arm/configs/spear6xx_defconfig
create mode 100644 arch/arm/configs/spitz_defconfig
create mode 100644 arch/arm/configs/stamp9g20_defconfig
create mode 100644 arch/arm/configs/tct_hammer_defconfig
create mode 100644 arch/arm/configs/tegra_defconfig
create mode 100644 arch/arm/configs/trizeps4_defconfig
create mode 100644 arch/arm/configs/u300_defconfig
create mode 100644 arch/arm/configs/u8500_defconfig
create mode 100644 arch/arm/configs/usb-a9260_defconfig
create mode 100644 arch/arm/configs/versatile_defconfig
create mode 100644 arch/arm/configs/vexpress_defconfig
create mode 100644 arch/arm/configs/viper_defconfig
create mode 100644 arch/arm/configs/xcep_defconfig
create mode 100644 arch/arm/configs/zeus_defconfig
create mode 100644 arch/arm/include/asm/Kbuild
create mode 100644 arch/arm/include/asm/a.out-core.h
create mode 100644 arch/arm/include/asm/a.out.h
create mode 100644 arch/arm/include/asm/asm-offsets.h
create mode 100644 arch/arm/include/asm/assembler.h
create mode 100644 arch/arm/include/asm/atomic.h
create mode 100644 arch/arm/include/asm/barrier.h
create mode 100644 arch/arm/include/asm/bitops.h
create mode 100644 arch/arm/include/asm/bug.h
create mode 100644 arch/arm/include/asm/bugs.h
create mode 100644 arch/arm/include/asm/byteorder.h
create mode 100644 arch/arm/include/asm/cache.h
create mode 100644 arch/arm/include/asm/cacheflush.h
create mode 100644 arch/arm/include/asm/cachetype.h
create mode 100644 arch/arm/include/asm/checksum.h
create mode 100644 arch/arm/include/asm/clkdev.h
create mode 100644 arch/arm/include/asm/cmpxchg.h
create mode 100644 arch/arm/include/asm/compiler.h
create mode 100644 arch/arm/include/asm/cp15.h
create mode 100644 arch/arm/include/asm/cpu.h
create mode 100644 arch/arm/include/asm/cpuidle.h
create mode 100644 arch/arm/include/asm/cputype.h
create mode 100644 arch/arm/include/asm/cti.h
create mode 100644 arch/arm/include/asm/current.h
create mode 100644 arch/arm/include/asm/delay.h
create mode 100644 arch/arm/include/asm/device.h
create mode 100644 arch/arm/include/asm/div64.h
create mode 100644 arch/arm/include/asm/dma-mapping.h
create mode 100644 arch/arm/include/asm/dma.h
create mode 100644 arch/arm/include/asm/domain.h
create mode 100644 arch/arm/include/asm/ecard.h
create mode 100644 arch/arm/include/asm/edac.h
create mode 100644 arch/arm/include/asm/elf.h
create mode 100644 arch/arm/include/asm/entry-macro-multi.S
create mode 100644 arch/arm/include/asm/exception.h
create mode 100644 arch/arm/include/asm/exec.h
create mode 100644 arch/arm/include/asm/fb.h
create mode 100644 arch/arm/include/asm/fcntl.h
create mode 100644 arch/arm/include/asm/fiq.h
create mode 100644 arch/arm/include/asm/fiq_debugger.h
create mode 100644 arch/arm/include/asm/fiq_glue.h
create mode 100644 arch/arm/include/asm/fixmap.h
create mode 100644 arch/arm/include/asm/flat.h
create mode 100644 arch/arm/include/asm/floppy.h
create mode 100644 arch/arm/include/asm/fncpy.h
create mode 100644 arch/arm/include/asm/fpstate.h
create mode 100644 arch/arm/include/asm/ftrace.h
create mode 100644 arch/arm/include/asm/futex.h
create mode 100644 arch/arm/include/asm/glue-cache.h
create mode 100644 arch/arm/include/asm/glue-df.h
create mode 100644 arch/arm/include/asm/glue-pf.h
create mode 100644 arch/arm/include/asm/glue-proc.h
create mode 100644 arch/arm/include/asm/glue.h
create mode 100644 arch/arm/include/asm/gpio.h
create mode 100644 arch/arm/include/asm/hardirq.h
create mode 100644 arch/arm/include/asm/hardware/arm_timer.h
create mode 100644 arch/arm/include/asm/hardware/cache-l2x0.h
create mode 100644 arch/arm/include/asm/hardware/cache-tauros2.h
create mode 100644 arch/arm/include/asm/hardware/clps7111.h
create mode 100644 arch/arm/include/asm/hardware/coresight.h
create mode 100644 arch/arm/include/asm/hardware/cs89712.h
create mode 100644 arch/arm/include/asm/hardware/debug-8250.S
create mode 100644 arch/arm/include/asm/hardware/debug-pl01x.S
create mode 100644 arch/arm/include/asm/hardware/dec21285.h
create mode 100644 arch/arm/include/asm/hardware/entry-macro-iomd.S
create mode 100644 arch/arm/include/asm/hardware/ep7211.h
create mode 100644 arch/arm/include/asm/hardware/ep7212.h
create mode 100644 arch/arm/include/asm/hardware/gic.h
create mode 100644 arch/arm/include/asm/hardware/icst.h
create mode 100644 arch/arm/include/asm/hardware/ioc.h
create mode 100644 arch/arm/include/asm/hardware/iomd.h
create mode 100644 arch/arm/include/asm/hardware/iop3xx-adma.h
create mode 100644 arch/arm/include/asm/hardware/iop3xx-gpio.h
create mode 100644 arch/arm/include/asm/hardware/iop3xx.h
create mode 100644 arch/arm/include/asm/hardware/iop_adma.h
create mode 100644 arch/arm/include/asm/hardware/it8152.h
create mode 100644 arch/arm/include/asm/hardware/linkup-l1110.h
create mode 100644 arch/arm/include/asm/hardware/locomo.h
create mode 100644 arch/arm/include/asm/hardware/memc.h
create mode 100644 arch/arm/include/asm/hardware/pci_v3.h
create mode 100644 arch/arm/include/asm/hardware/pl080.h
create mode 100644 arch/arm/include/asm/hardware/sa1111.h
create mode 100644 arch/arm/include/asm/hardware/scoop.h
create mode 100644 arch/arm/include/asm/hardware/sp810.h
create mode 100644 arch/arm/include/asm/hardware/ssp.h
create mode 100644 arch/arm/include/asm/hardware/timer-sp.h
create mode 100644 arch/arm/include/asm/hardware/uengine.h
create mode 100644 arch/arm/include/asm/hardware/vic.h
create mode 100644 arch/arm/include/asm/highmem.h
create mode 100644 arch/arm/include/asm/hw_breakpoint.h
create mode 100644 arch/arm/include/asm/hw_irq.h
create mode 100644 arch/arm/include/asm/hwcap.h
create mode 100644 arch/arm/include/asm/ide.h
create mode 100644 arch/arm/include/asm/idmap.h
create mode 100644 arch/arm/include/asm/io.h
create mode 100644 arch/arm/include/asm/ioctls.h
create mode 100644 arch/arm/include/asm/ipcbuf.h
create mode 100644 arch/arm/include/asm/irq.h
create mode 100644 arch/arm/include/asm/irqflags.h
create mode 100644 arch/arm/include/asm/jump_label.h
create mode 100644 arch/arm/include/asm/kexec.h
create mode 100644 arch/arm/include/asm/kgdb.h
create mode 100644 arch/arm/include/asm/kmap_types.h
create mode 100644 arch/arm/include/asm/kprobes.h
create mode 100644 arch/arm/include/asm/leds.h
create mode 100644 arch/arm/include/asm/limits.h
create mode 100644 arch/arm/include/asm/linkage.h
create mode 100644 arch/arm/include/asm/localtimer.h
create mode 100644 arch/arm/include/asm/locks.h
create mode 100644 arch/arm/include/asm/mach-types.h
create mode 100644 arch/arm/include/asm/mach/arch.h
create mode 100644 arch/arm/include/asm/mach/dma.h
create mode 100644 arch/arm/include/asm/mach/flash.h
create mode 100644 arch/arm/include/asm/mach/irda.h
create mode 100644 arch/arm/include/asm/mach/irq.h
create mode 100644 arch/arm/include/asm/mach/map.h
create mode 100644 arch/arm/include/asm/mach/mmc.h
create mode 100644 arch/arm/include/asm/mach/pci.h
create mode 100644 arch/arm/include/asm/mach/serial_at91.h
create mode 100644 arch/arm/include/asm/mach/serial_sa1100.h
create mode 100644 arch/arm/include/asm/mach/sharpsl_param.h
create mode 100644 arch/arm/include/asm/mach/time.h
create mode 100644 arch/arm/include/asm/mach/udc_pxa2xx.h
create mode 100755 arch/arm/include/asm/mach/version.h
create mode 100644 arch/arm/include/asm/mc146818rtc.h
create mode 100644 arch/arm/include/asm/memblock.h
create mode 100644 arch/arm/include/asm/memory.h
create mode 100644 arch/arm/include/asm/mman.h
create mode 100644 arch/arm/include/asm/mmu.h
create mode 100644 arch/arm/include/asm/mmu_context.h
create mode 100644 arch/arm/include/asm/module.h
create mode 100644 arch/arm/include/asm/msgbuf.h
create mode 100644 arch/arm/include/asm/mtd-xip.h
create mode 100644 arch/arm/include/asm/mutex.h
create mode 100644 arch/arm/include/asm/nwflash.h
create mode 100644 arch/arm/include/asm/opcodes.h
create mode 100644 arch/arm/include/asm/outercache.h
create mode 100644 arch/arm/include/asm/page-nommu.h
create mode 100644 arch/arm/include/asm/page.h
create mode 100644 arch/arm/include/asm/param.h
create mode 100644 arch/arm/include/asm/parport.h
create mode 100644 arch/arm/include/asm/pci.h
create mode 100644 arch/arm/include/asm/perf_event.h
create mode 100644 arch/arm/include/asm/pgalloc.h
create mode 100644 arch/arm/include/asm/pgtable-2level-hwdef.h
create mode 100644 arch/arm/include/asm/pgtable-2level-types.h
create mode 100644 arch/arm/include/asm/pgtable-2level.h
create mode 100644 arch/arm/include/asm/pgtable-3level-hwdef.h
create mode 100644 arch/arm/include/asm/pgtable-3level-types.h
create mode 100644 arch/arm/include/asm/pgtable-3level.h
create mode 100644 arch/arm/include/asm/pgtable-hwdef.h
create mode 100644 arch/arm/include/asm/pgtable-nommu.h
create mode 100644 arch/arm/include/asm/pgtable.h
create mode 100644 arch/arm/include/asm/pmu.h
create mode 100644 arch/arm/include/asm/posix_types.h
create mode 100644 arch/arm/include/asm/proc-fns.h
create mode 100644 arch/arm/include/asm/processor.h
create mode 100644 arch/arm/include/asm/procinfo.h
create mode 100644 arch/arm/include/asm/prom.h
create mode 100644 arch/arm/include/asm/ptrace.h
create mode 100644 arch/arm/include/asm/rodata.h
create mode 100644 arch/arm/include/asm/scatterlist.h
create mode 100644 arch/arm/include/asm/sched_clock.h
create mode 100644 arch/arm/include/asm/seccomp.h
create mode 100644 arch/arm/include/asm/segment.h
create mode 100644 arch/arm/include/asm/sembuf.h
create mode 100644 arch/arm/include/asm/serial.h
create mode 100644 arch/arm/include/asm/setup.h
create mode 100644 arch/arm/include/asm/shmbuf.h
create mode 100644 arch/arm/include/asm/shmparam.h
create mode 100644 arch/arm/include/asm/sigcontext.h
create mode 100644 arch/arm/include/asm/signal.h
create mode 100644 arch/arm/include/asm/smp.h
create mode 100644 arch/arm/include/asm/smp_plat.h
create mode 100644 arch/arm/include/asm/smp_scu.h
create mode 100644 arch/arm/include/asm/smp_twd.h
create mode 100644 arch/arm/include/asm/socket.h
create mode 100644 arch/arm/include/asm/sockios.h
create mode 100644 arch/arm/include/asm/sparsemem.h
create mode 100644 arch/arm/include/asm/spinlock.h
create mode 100644 arch/arm/include/asm/spinlock_types.h
create mode 100644 arch/arm/include/asm/stackprotector.h
create mode 100644 arch/arm/include/asm/stacktrace.h
create mode 100644 arch/arm/include/asm/stat.h
create mode 100644 arch/arm/include/asm/statfs.h
create mode 100644 arch/arm/include/asm/string.h
create mode 100644 arch/arm/include/asm/suspend.h
create mode 100644 arch/arm/include/asm/swab.h
create mode 100644 arch/arm/include/asm/switch_to.h
create mode 100644 arch/arm/include/asm/system.h
create mode 100644 arch/arm/include/asm/system_info.h
create mode 100644 arch/arm/include/asm/system_misc.h
create mode 100644 arch/arm/include/asm/tcm.h
create mode 100644 arch/arm/include/asm/termbits.h
create mode 100644 arch/arm/include/asm/termios.h
create mode 100644 arch/arm/include/asm/therm.h
create mode 100644 arch/arm/include/asm/thread_info.h
create mode 100644 arch/arm/include/asm/thread_notify.h
create mode 100644 arch/arm/include/asm/timex.h
create mode 100644 arch/arm/include/asm/tlb.h
create mode 100644 arch/arm/include/asm/tlbflush.h
create mode 100644 arch/arm/include/asm/tls.h
create mode 100644 arch/arm/include/asm/topology.h
create mode 100644 arch/arm/include/asm/traps.h
create mode 100644 arch/arm/include/asm/types.h
create mode 100644 arch/arm/include/asm/uaccess.h
create mode 100644 arch/arm/include/asm/ucontext.h
create mode 100644 arch/arm/include/asm/unaligned.h
create mode 100644 arch/arm/include/asm/unified.h
create mode 100644 arch/arm/include/asm/unistd.h
create mode 100644 arch/arm/include/asm/unwind.h
create mode 100644 arch/arm/include/asm/user.h
create mode 100644 arch/arm/include/asm/vfp.h
create mode 100644 arch/arm/include/asm/vfpmacros.h
create mode 100644 arch/arm/include/asm/vga.h
create mode 100644 arch/arm/include/asm/xor.h
create mode 100644 arch/arm/kernel/Makefile
create mode 100644 arch/arm/kernel/armksyms.c
create mode 100644 arch/arm/kernel/arthur.c
create mode 100644 arch/arm/kernel/asm-offsets.c
create mode 100644 arch/arm/kernel/atags.c
create mode 100644 arch/arm/kernel/atags.h
create mode 100644 arch/arm/kernel/bios32.c
create mode 100644 arch/arm/kernel/calls.S
create mode 100644 arch/arm/kernel/compat.c
create mode 100644 arch/arm/kernel/compat.h
create mode 100644 arch/arm/kernel/cpuidle.c
create mode 100644 arch/arm/kernel/crash_dump.c
create mode 100644 arch/arm/kernel/debug.S
create mode 100644 arch/arm/kernel/devtree.c
create mode 100644 arch/arm/kernel/dma-isa.c
create mode 100644 arch/arm/kernel/dma.c
create mode 100644 arch/arm/kernel/early_printk.c
create mode 100644 arch/arm/kernel/elf.c
create mode 100644 arch/arm/kernel/entry-armv.S
create mode 100644 arch/arm/kernel/entry-common.S
create mode 100644 arch/arm/kernel/entry-header.S
create mode 100644 arch/arm/kernel/etm.c
create mode 100644 arch/arm/kernel/fiq.c
create mode 100644 arch/arm/kernel/fiqasm.S
create mode 100644 arch/arm/kernel/ftrace.c
create mode 100644 arch/arm/kernel/head-common.S
create mode 100644 arch/arm/kernel/head-nommu.S
create mode 100644 arch/arm/kernel/head.S
create mode 100755 arch/arm/kernel/hibernate.c
create mode 100644 arch/arm/kernel/hw_breakpoint.c
create mode 100644 arch/arm/kernel/init_task.c
create mode 100644 arch/arm/kernel/insn.c
create mode 100644 arch/arm/kernel/insn.h
create mode 100644 arch/arm/kernel/io.c
create mode 100644 arch/arm/kernel/irq.c
create mode 100644 arch/arm/kernel/isa.c
create mode 100644 arch/arm/kernel/iwmmxt.S
create mode 100644 arch/arm/kernel/jump_label.c
create mode 100644 arch/arm/kernel/kgdb.c
create mode 100644 arch/arm/kernel/kprobes-arm.c
create mode 100644 arch/arm/kernel/kprobes-common.c
create mode 100644 arch/arm/kernel/kprobes-test-arm.c
create mode 100644 arch/arm/kernel/kprobes-test-thumb.c
create mode 100644 arch/arm/kernel/kprobes-test.c
create mode 100644 arch/arm/kernel/kprobes-test.h
create mode 100644 arch/arm/kernel/kprobes-thumb.c
create mode 100644 arch/arm/kernel/kprobes.c
create mode 100644 arch/arm/kernel/kprobes.h
create mode 100644 arch/arm/kernel/leds.c
create mode 100644 arch/arm/kernel/machine_kexec.c
create mode 100644 arch/arm/kernel/module.c
create mode 100644 arch/arm/kernel/opcodes.c
create mode 100644 arch/arm/kernel/patch.c
create mode 100644 arch/arm/kernel/patch.h
create mode 100644 arch/arm/kernel/perf_event.c
create mode 100644 arch/arm/kernel/perf_event_v6.c
create mode 100644 arch/arm/kernel/perf_event_v7.c
create mode 100644 arch/arm/kernel/perf_event_xscale.c
create mode 100644 arch/arm/kernel/pj4-cp0.c
create mode 100644 arch/arm/kernel/pmu.c
create mode 100644 arch/arm/kernel/process.c
create mode 100644 arch/arm/kernel/ptrace.c
create mode 100644 arch/arm/kernel/relocate_kernel.S
create mode 100644 arch/arm/kernel/return_address.c
create mode 100644 arch/arm/kernel/sched_clock.c
create mode 100644 arch/arm/kernel/setup.c
create mode 100644 arch/arm/kernel/signal.c
create mode 100644 arch/arm/kernel/signal.h
create mode 100644 arch/arm/kernel/sleep.S
create mode 100644 arch/arm/kernel/smp.c
create mode 100644 arch/arm/kernel/smp_scu.c
create mode 100644 arch/arm/kernel/smp_tlb.c
create mode 100644 arch/arm/kernel/smp_twd.c
create mode 100644 arch/arm/kernel/stacktrace.c
create mode 100644 arch/arm/kernel/suspend.c
create mode 100644 arch/arm/kernel/swp_emulate.c
create mode 100644 arch/arm/kernel/sys_arm.c
create mode 100644 arch/arm/kernel/sys_oabi-compat.c
create mode 100644 arch/arm/kernel/tcm.c
create mode 100644 arch/arm/kernel/tcm.h
create mode 100644 arch/arm/kernel/thumbee.c
create mode 100644 arch/arm/kernel/time.c
create mode 100644 arch/arm/kernel/topology.c
create mode 100644 arch/arm/kernel/traps.c
create mode 100644 arch/arm/kernel/unwind.c
create mode 100644 arch/arm/kernel/vmlinux.lds.S
create mode 100644 arch/arm/kernel/xscale-cp0.c
create mode 100644 arch/arm/lib/Makefile
create mode 100644 arch/arm/lib/ashldi3.S
create mode 100644 arch/arm/lib/ashrdi3.S
create mode 100644 arch/arm/lib/backtrace.S
create mode 100644 arch/arm/lib/bitops.h
create mode 100644 arch/arm/lib/call_with_stack.S
create mode 100644 arch/arm/lib/changebit.S
create mode 100644 arch/arm/lib/clear_user.S
create mode 100644 arch/arm/lib/clearbit.S
create mode 100644 arch/arm/lib/copy_from_user.S
create mode 100644 arch/arm/lib/copy_page.S
create mode 100644 arch/arm/lib/copy_template.S
create mode 100644 arch/arm/lib/copy_to_user.S
create mode 100644 arch/arm/lib/csumipv6.S
create mode 100644 arch/arm/lib/csumpartial.S
create mode 100644 arch/arm/lib/csumpartialcopy.S
create mode 100644 arch/arm/lib/csumpartialcopygeneric.S
create mode 100644 arch/arm/lib/csumpartialcopyuser.S
create mode 100644 arch/arm/lib/delay.S
create mode 100644 arch/arm/lib/div64.S
create mode 100644 arch/arm/lib/ecard.S
create mode 100644 arch/arm/lib/findbit.S
create mode 100644 arch/arm/lib/floppydma.S
create mode 100644 arch/arm/lib/getuser.S
create mode 100644 arch/arm/lib/io-acorn.S
create mode 100644 arch/arm/lib/io-readsb.S
create mode 100644 arch/arm/lib/io-readsl.S
create mode 100644 arch/arm/lib/io-readsw-armv3.S
create mode 100644 arch/arm/lib/io-readsw-armv4.S
create mode 100644 arch/arm/lib/io-shark.c
create mode 100644 arch/arm/lib/io-writesb.S
create mode 100644 arch/arm/lib/io-writesl.S
create mode 100644 arch/arm/lib/io-writesw-armv3.S
create mode 100644 arch/arm/lib/io-writesw-armv4.S
create mode 100644 arch/arm/lib/lib1funcs.S
create mode 100644 arch/arm/lib/lshrdi3.S
create mode 100644 arch/arm/lib/memchr.S
create mode 100644 arch/arm/lib/memcpy.S
create mode 100644 arch/arm/lib/memmove.S
create mode 100644 arch/arm/lib/memset.S
create mode 100644 arch/arm/lib/memzero.S
create mode 100644 arch/arm/lib/muldi3.S
create mode 100644 arch/arm/lib/putuser.S
create mode 100644 arch/arm/lib/setbit.S
create mode 100644 arch/arm/lib/strchr.S
create mode 100644 arch/arm/lib/strncpy_from_user.S
create mode 100644 arch/arm/lib/strnlen_user.S
create mode 100644 arch/arm/lib/strrchr.S
create mode 100644 arch/arm/lib/testchangebit.S
create mode 100644 arch/arm/lib/testclearbit.S
create mode 100644 arch/arm/lib/testsetbit.S
create mode 100644 arch/arm/lib/uaccess.S
create mode 100644 arch/arm/lib/uaccess_with_memcpy.c
create mode 100644 arch/arm/lib/ucmpdi2.S
create mode 100644 arch/arm/mach-at91/Kconfig
create mode 100644 arch/arm/mach-at91/Makefile
create mode 100644 arch/arm/mach-at91/Makefile.boot
create mode 100644 arch/arm/mach-at91/at91rm9200.c
create mode 100644 arch/arm/mach-at91/at91rm9200_devices.c
create mode 100644 arch/arm/mach-at91/at91rm9200_time.c
create mode 100644 arch/arm/mach-at91/at91sam9260.c
create mode 100644 arch/arm/mach-at91/at91sam9260_devices.c
create mode 100644 arch/arm/mach-at91/at91sam9261.c
create mode 100644 arch/arm/mach-at91/at91sam9261_devices.c
create mode 100644 arch/arm/mach-at91/at91sam9263.c
create mode 100644 arch/arm/mach-at91/at91sam9263_devices.c
create mode 100644 arch/arm/mach-at91/at91sam926x_time.c
create mode 100644 arch/arm/mach-at91/at91sam9_alt_reset.S
create mode 100644 arch/arm/mach-at91/at91sam9g45.c
create mode 100644 arch/arm/mach-at91/at91sam9g45_devices.c
create mode 100644 arch/arm/mach-at91/at91sam9g45_reset.S
create mode 100644 arch/arm/mach-at91/at91sam9rl.c
create mode 100644 arch/arm/mach-at91/at91sam9rl_devices.c
create mode 100644 arch/arm/mach-at91/at91sam9x5.c
create mode 100644 arch/arm/mach-at91/at91x40.c
create mode 100644 arch/arm/mach-at91/at91x40_time.c
create mode 100644 arch/arm/mach-at91/board-1arm.c
create mode 100644 arch/arm/mach-at91/board-afeb-9260v1.c
create mode 100644 arch/arm/mach-at91/board-cam60.c
create mode 100644 arch/arm/mach-at91/board-carmeva.c
create mode 100644 arch/arm/mach-at91/board-cpu9krea.c
create mode 100644 arch/arm/mach-at91/board-cpuat91.c
create mode 100644 arch/arm/mach-at91/board-csb337.c
create mode 100644 arch/arm/mach-at91/board-csb637.c
create mode 100644 arch/arm/mach-at91/board-dt.c
create mode 100644 arch/arm/mach-at91/board-eb01.c
create mode 100644 arch/arm/mach-at91/board-eb9200.c
create mode 100644 arch/arm/mach-at91/board-ecbat91.c
create mode 100644 arch/arm/mach-at91/board-eco920.c
create mode 100644 arch/arm/mach-at91/board-flexibity.c
create mode 100644 arch/arm/mach-at91/board-foxg20.c
create mode 100644 arch/arm/mach-at91/board-gsia18s.c
create mode 100644 arch/arm/mach-at91/board-kafa.c
create mode 100644 arch/arm/mach-at91/board-kb9202.c
create mode 100644 arch/arm/mach-at91/board-neocore926.c
create mode 100644 arch/arm/mach-at91/board-pcontrol-g20.c
create mode 100644 arch/arm/mach-at91/board-picotux200.c
create mode 100644 arch/arm/mach-at91/board-qil-a9260.c
create mode 100644 arch/arm/mach-at91/board-rm9200dk.c
create mode 100644 arch/arm/mach-at91/board-rm9200ek.c
create mode 100644 arch/arm/mach-at91/board-rsi-ews.c
create mode 100644 arch/arm/mach-at91/board-sam9-l9260.c
create mode 100644 arch/arm/mach-at91/board-sam9260ek.c
create mode 100644 arch/arm/mach-at91/board-sam9261ek.c
create mode 100644 arch/arm/mach-at91/board-sam9263ek.c
create mode 100644 arch/arm/mach-at91/board-sam9g20ek.c
create mode 100644 arch/arm/mach-at91/board-sam9m10g45ek.c
create mode 100644 arch/arm/mach-at91/board-sam9rlek.c
create mode 100644 arch/arm/mach-at91/board-snapper9260.c
create mode 100644 arch/arm/mach-at91/board-stamp9g20.c
create mode 100644 arch/arm/mach-at91/board-usb-a926x.c
create mode 100644 arch/arm/mach-at91/board-yl-9200.c
create mode 100644 arch/arm/mach-at91/clock.c
create mode 100644 arch/arm/mach-at91/clock.h
create mode 100644 arch/arm/mach-at91/cpuidle.c
create mode 100644 arch/arm/mach-at91/generic.h
create mode 100644 arch/arm/mach-at91/gpio.c
create mode 100644 arch/arm/mach-at91/include/mach/at91_adc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_aic.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_dbgu.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_pio.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_pit.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_pmc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_ramc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_rstc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_rtc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_rtt.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_shdwc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_spi.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_ssc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_st.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_tc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91_twi.h
create mode 100644 arch/arm/mach-at91/include/mach/at91rm9200.h
create mode 100644 arch/arm/mach-at91/include/mach/at91rm9200_emac.h
create mode 100644 arch/arm/mach-at91/include/mach/at91rm9200_mc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9260.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9260_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9261.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9261_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9263.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9263_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9_sdramc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9_smc.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9g45.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9rl.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9rl_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9x5.h
create mode 100644 arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h
create mode 100644 arch/arm/mach-at91/include/mach/at91x40.h
create mode 100644 arch/arm/mach-at91/include/mach/at_hdmac.h
create mode 100644 arch/arm/mach-at91/include/mach/atmel-mci.h
create mode 100644 arch/arm/mach-at91/include/mach/board.h
create mode 100644 arch/arm/mach-at91/include/mach/cpu.h
create mode 100644 arch/arm/mach-at91/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-at91/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-at91/include/mach/gpio.h
create mode 100644 arch/arm/mach-at91/include/mach/gsia18s.h
create mode 100644 arch/arm/mach-at91/include/mach/hardware.h
create mode 100644 arch/arm/mach-at91/include/mach/io.h
create mode 100644 arch/arm/mach-at91/include/mach/irqs.h
create mode 100644 arch/arm/mach-at91/include/mach/memory.h
create mode 100644 arch/arm/mach-at91/include/mach/stamp9g20.h
create mode 100644 arch/arm/mach-at91/include/mach/system_rev.h
create mode 100644 arch/arm/mach-at91/include/mach/timex.h
create mode 100644 arch/arm/mach-at91/include/mach/uncompress.h
create mode 100644 arch/arm/mach-at91/irq.c
create mode 100644 arch/arm/mach-at91/leds.c
create mode 100644 arch/arm/mach-at91/pm.c
create mode 100644 arch/arm/mach-at91/pm.h
create mode 100644 arch/arm/mach-at91/pm_slowclock.S
create mode 100644 arch/arm/mach-at91/sam9_smc.c
create mode 100644 arch/arm/mach-at91/sam9_smc.h
create mode 100644 arch/arm/mach-at91/setup.c
create mode 100644 arch/arm/mach-at91/soc.h
create mode 100644 arch/arm/mach-bcmring/Kconfig
create mode 100644 arch/arm/mach-bcmring/Makefile
create mode 100644 arch/arm/mach-bcmring/Makefile.boot
create mode 100644 arch/arm/mach-bcmring/arch.c
create mode 100644 arch/arm/mach-bcmring/clock.c
create mode 100644 arch/arm/mach-bcmring/clock.h
create mode 100644 arch/arm/mach-bcmring/core.c
create mode 100644 arch/arm/mach-bcmring/core.h
create mode 100644 arch/arm/mach-bcmring/csp/Makefile
create mode 100644 arch/arm/mach-bcmring/csp/chipc/Makefile
create mode 100644 arch/arm/mach-bcmring/csp/chipc/chipcHw.c
create mode 100644 arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c
create mode 100644 arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c
create mode 100644 arch/arm/mach-bcmring/csp/chipc/chipcHw_str.c
create mode 100644 arch/arm/mach-bcmring/csp/dmac/Makefile
create mode 100644 arch/arm/mach-bcmring/csp/dmac/dmacHw.c
create mode 100644 arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c
create mode 100644 arch/arm/mach-bcmring/csp/tmr/Makefile
create mode 100644 arch/arm/mach-bcmring/csp/tmr/tmrHw.c
create mode 100644 arch/arm/mach-bcmring/dma.c
create mode 100644 arch/arm/mach-bcmring/dma_device.c
create mode 100644 arch/arm/mach-bcmring/include/cfg_global.h
create mode 100644 arch/arm/mach-bcmring/include/cfg_global_defines.h
create mode 100644 arch/arm/mach-bcmring/include/csp/cache.h
create mode 100644 arch/arm/mach-bcmring/include/csp/delay.h
create mode 100644 arch/arm/mach-bcmring/include/csp/dmacHw.h
create mode 100644 arch/arm/mach-bcmring/include/csp/errno.h
create mode 100644 arch/arm/mach-bcmring/include/csp/intcHw.h
create mode 100644 arch/arm/mach-bcmring/include/csp/module.h
create mode 100644 arch/arm/mach-bcmring/include/csp/reg.h
create mode 100644 arch/arm/mach-bcmring/include/csp/secHw.h
create mode 100644 arch/arm/mach-bcmring/include/csp/stdint.h
create mode 100644 arch/arm/mach-bcmring/include/csp/string.h
create mode 100644 arch/arm/mach-bcmring/include/csp/tmrHw.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/cap.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/cap_inline.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/chipcHw_def.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/chipcHw_inline.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/chipcHw_reg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/dmacHw_priv.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/dmacHw_reg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/intcHw_reg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/mm_addr.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/mm_io.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/secHw_def.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/secHw_inline.h
create mode 100644 arch/arm/mach-bcmring/include/mach/csp/tmrHw_reg.h
create mode 100644 arch/arm/mach-bcmring/include/mach/dma.h
create mode 100644 arch/arm/mach-bcmring/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-bcmring/include/mach/hardware.h
create mode 100644 arch/arm/mach-bcmring/include/mach/irqs.h
create mode 100644 arch/arm/mach-bcmring/include/mach/memory_settings.h
create mode 100644 arch/arm/mach-bcmring/include/mach/reg_nand.h
create mode 100644 arch/arm/mach-bcmring/include/mach/reg_umi.h
create mode 100644 arch/arm/mach-bcmring/include/mach/timer.h
create mode 100644 arch/arm/mach-bcmring/include/mach/timex.h
create mode 100644 arch/arm/mach-bcmring/include/mach/uncompress.h
create mode 100644 arch/arm/mach-bcmring/irq.c
create mode 100644 arch/arm/mach-bcmring/mm.c
create mode 100644 arch/arm/mach-bcmring/timer.c
create mode 100644 arch/arm/mach-clps711x/Kconfig
create mode 100644 arch/arm/mach-clps711x/Makefile
create mode 100644 arch/arm/mach-clps711x/Makefile.boot
create mode 100644 arch/arm/mach-clps711x/autcpu12.c
create mode 100644 arch/arm/mach-clps711x/cdb89712.c
create mode 100644 arch/arm/mach-clps711x/ceiva.c
create mode 100644 arch/arm/mach-clps711x/clep7312.c
create mode 100644 arch/arm/mach-clps711x/common.c
create mode 100644 arch/arm/mach-clps711x/common.h
create mode 100644 arch/arm/mach-clps711x/edb7211-arch.c
create mode 100644 arch/arm/mach-clps711x/edb7211-mm.c
create mode 100644 arch/arm/mach-clps711x/fortunet.c
create mode 100644 arch/arm/mach-clps711x/include/mach/autcpu12.h
create mode 100644 arch/arm/mach-clps711x/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-clps711x/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-clps711x/include/mach/hardware.h
create mode 100644 arch/arm/mach-clps711x/include/mach/irqs.h
create mode 100644 arch/arm/mach-clps711x/include/mach/memory.h
create mode 100644 arch/arm/mach-clps711x/include/mach/syspld.h
create mode 100644 arch/arm/mach-clps711x/include/mach/time.h
create mode 100644 arch/arm/mach-clps711x/include/mach/timex.h
create mode 100644 arch/arm/mach-clps711x/include/mach/uncompress.h
create mode 100644 arch/arm/mach-clps711x/p720t-leds.c
create mode 100644 arch/arm/mach-clps711x/p720t.c
create mode 100644 arch/arm/mach-cns3xxx/Kconfig
create mode 100644 arch/arm/mach-cns3xxx/Makefile
create mode 100644 arch/arm/mach-cns3xxx/Makefile.boot
create mode 100644 arch/arm/mach-cns3xxx/cns3420vb.c
create mode 100644 arch/arm/mach-cns3xxx/core.c
create mode 100644 arch/arm/mach-cns3xxx/core.h
create mode 100644 arch/arm/mach-cns3xxx/devices.c
create mode 100644 arch/arm/mach-cns3xxx/devices.h
create mode 100644 arch/arm/mach-cns3xxx/include/mach/cns3xxx.h
create mode 100644 arch/arm/mach-cns3xxx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-cns3xxx/include/mach/irqs.h
create mode 100644 arch/arm/mach-cns3xxx/include/mach/pm.h
create mode 100644 arch/arm/mach-cns3xxx/include/mach/timex.h
create mode 100644 arch/arm/mach-cns3xxx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-cns3xxx/pcie.c
create mode 100644 arch/arm/mach-cns3xxx/pm.c
create mode 100644 arch/arm/mach-davinci/Kconfig
create mode 100644 arch/arm/mach-davinci/Makefile
create mode 100644 arch/arm/mach-davinci/Makefile.boot
create mode 100644 arch/arm/mach-davinci/aemif.c
create mode 100644 arch/arm/mach-davinci/board-da830-evm.c
create mode 100644 arch/arm/mach-davinci/board-da850-evm.c
create mode 100644 arch/arm/mach-davinci/board-dm355-evm.c
create mode 100644 arch/arm/mach-davinci/board-dm355-leopard.c
create mode 100644 arch/arm/mach-davinci/board-dm365-evm.c
create mode 100644 arch/arm/mach-davinci/board-dm644x-evm.c
create mode 100644 arch/arm/mach-davinci/board-dm646x-evm.c
create mode 100644 arch/arm/mach-davinci/board-mityomapl138.c
create mode 100644 arch/arm/mach-davinci/board-neuros-osd2.c
create mode 100644 arch/arm/mach-davinci/board-omapl138-hawk.c
create mode 100644 arch/arm/mach-davinci/board-sffsdr.c
create mode 100644 arch/arm/mach-davinci/board-tnetv107x-evm.c
create mode 100644 arch/arm/mach-davinci/cdce949.c
create mode 100644 arch/arm/mach-davinci/clock.c
create mode 100644 arch/arm/mach-davinci/clock.h
create mode 100644 arch/arm/mach-davinci/common.c
create mode 100644 arch/arm/mach-davinci/cp_intc.c
create mode 100644 arch/arm/mach-davinci/cpufreq.c
create mode 100644 arch/arm/mach-davinci/cpuidle.c
create mode 100644 arch/arm/mach-davinci/da830.c
create mode 100644 arch/arm/mach-davinci/da850.c
create mode 100644 arch/arm/mach-davinci/davinci.h
create mode 100644 arch/arm/mach-davinci/devices-da8xx.c
create mode 100644 arch/arm/mach-davinci/devices-tnetv107x.c
create mode 100644 arch/arm/mach-davinci/devices.c
create mode 100644 arch/arm/mach-davinci/dm355.c
create mode 100644 arch/arm/mach-davinci/dm365.c
create mode 100644 arch/arm/mach-davinci/dm644x.c
create mode 100644 arch/arm/mach-davinci/dm646x.c
create mode 100644 arch/arm/mach-davinci/dma.c
create mode 100644 arch/arm/mach-davinci/include/mach/aemif.h
create mode 100644 arch/arm/mach-davinci/include/mach/asp.h
create mode 100644 arch/arm/mach-davinci/include/mach/cdce949.h
create mode 100644 arch/arm/mach-davinci/include/mach/clock.h
create mode 100644 arch/arm/mach-davinci/include/mach/common.h
create mode 100644 arch/arm/mach-davinci/include/mach/cp_intc.h
create mode 100644 arch/arm/mach-davinci/include/mach/cpufreq.h
create mode 100644 arch/arm/mach-davinci/include/mach/cpuidle.h
create mode 100644 arch/arm/mach-davinci/include/mach/cputype.h
create mode 100644 arch/arm/mach-davinci/include/mach/da8xx.h
create mode 100644 arch/arm/mach-davinci/include/mach/ddr2.h
create mode 100644 arch/arm/mach-davinci/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-davinci/include/mach/dm365.h
create mode 100644 arch/arm/mach-davinci/include/mach/dm646x.h
create mode 100644 arch/arm/mach-davinci/include/mach/edma.h
create mode 100644 arch/arm/mach-davinci/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-davinci/include/mach/gpio-davinci.h
create mode 100644 arch/arm/mach-davinci/include/mach/gpio.h
create mode 100644 arch/arm/mach-davinci/include/mach/hardware.h
create mode 100644 arch/arm/mach-davinci/include/mach/i2c.h
create mode 100644 arch/arm/mach-davinci/include/mach/irqs.h
create mode 100644 arch/arm/mach-davinci/include/mach/keyscan.h
create mode 100644 arch/arm/mach-davinci/include/mach/mmc.h
create mode 100644 arch/arm/mach-davinci/include/mach/mux.h
create mode 100644 arch/arm/mach-davinci/include/mach/nand.h
create mode 100644 arch/arm/mach-davinci/include/mach/pm.h
create mode 100644 arch/arm/mach-davinci/include/mach/psc.h
create mode 100644 arch/arm/mach-davinci/include/mach/serial.h
create mode 100644 arch/arm/mach-davinci/include/mach/spi.h
create mode 100644 arch/arm/mach-davinci/include/mach/sram.h
create mode 100644 arch/arm/mach-davinci/include/mach/time.h
create mode 100644 arch/arm/mach-davinci/include/mach/timex.h
create mode 100644 arch/arm/mach-davinci/include/mach/tnetv107x.h
create mode 100644 arch/arm/mach-davinci/include/mach/uncompress.h
create mode 100644 arch/arm/mach-davinci/include/mach/usb.h
create mode 100644 arch/arm/mach-davinci/irq.c
create mode 100644 arch/arm/mach-davinci/mux.c
create mode 100644 arch/arm/mach-davinci/mux.h
create mode 100644 arch/arm/mach-davinci/pm.c
create mode 100644 arch/arm/mach-davinci/psc.c
create mode 100644 arch/arm/mach-davinci/serial.c
create mode 100644 arch/arm/mach-davinci/sleep.S
create mode 100644 arch/arm/mach-davinci/sram.c
create mode 100644 arch/arm/mach-davinci/time.c
create mode 100644 arch/arm/mach-davinci/tnetv107x.c
create mode 100644 arch/arm/mach-davinci/usb.c
create mode 100644 arch/arm/mach-dove/Kconfig
create mode 100644 arch/arm/mach-dove/Makefile
create mode 100644 arch/arm/mach-dove/Makefile.boot
create mode 100644 arch/arm/mach-dove/addr-map.c
create mode 100644 arch/arm/mach-dove/cm-a510.c
create mode 100644 arch/arm/mach-dove/common.c
create mode 100644 arch/arm/mach-dove/common.h
create mode 100644 arch/arm/mach-dove/dove-db-setup.c
create mode 100644 arch/arm/mach-dove/include/mach/bridge-regs.h
create mode 100644 arch/arm/mach-dove/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-dove/include/mach/dove.h
create mode 100644 arch/arm/mach-dove/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-dove/include/mach/gpio.h
create mode 100644 arch/arm/mach-dove/include/mach/hardware.h
create mode 100644 arch/arm/mach-dove/include/mach/io.h
create mode 100644 arch/arm/mach-dove/include/mach/irqs.h
create mode 100644 arch/arm/mach-dove/include/mach/pm.h
create mode 100644 arch/arm/mach-dove/include/mach/timex.h
create mode 100644 arch/arm/mach-dove/include/mach/uncompress.h
create mode 100644 arch/arm/mach-dove/irq.c
create mode 100644 arch/arm/mach-dove/mpp.c
create mode 100644 arch/arm/mach-dove/mpp.h
create mode 100644 arch/arm/mach-dove/pcie.c
create mode 100644 arch/arm/mach-ebsa110/Makefile
create mode 100644 arch/arm/mach-ebsa110/Makefile.boot
create mode 100644 arch/arm/mach-ebsa110/core.c
create mode 100644 arch/arm/mach-ebsa110/core.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ebsa110/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-ebsa110/include/mach/hardware.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/io.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/irqs.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/memory.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/timex.h
create mode 100644 arch/arm/mach-ebsa110/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ebsa110/io.c
create mode 100644 arch/arm/mach-ebsa110/leds.c
create mode 100644 arch/arm/mach-ep93xx/Kconfig
create mode 100644 arch/arm/mach-ep93xx/Makefile
create mode 100644 arch/arm/mach-ep93xx/Makefile.boot
create mode 100644 arch/arm/mach-ep93xx/adssphere.c
create mode 100644 arch/arm/mach-ep93xx/clock.c
create mode 100644 arch/arm/mach-ep93xx/core.c
create mode 100644 arch/arm/mach-ep93xx/crunch-bits.S
create mode 100644 arch/arm/mach-ep93xx/crunch.c
create mode 100644 arch/arm/mach-ep93xx/dma.c
create mode 100644 arch/arm/mach-ep93xx/edb93xx.c
create mode 100644 arch/arm/mach-ep93xx/gesbc9312.c
create mode 100644 arch/arm/mach-ep93xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ep93xx/include/mach/dma.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/fb.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/memory.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/platform.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/timex.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/ts72xx.h
create mode 100644 arch/arm/mach-ep93xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ep93xx/micro9.c
create mode 100644 arch/arm/mach-ep93xx/simone.c
create mode 100644 arch/arm/mach-ep93xx/snappercl15.c
create mode 100644 arch/arm/mach-ep93xx/soc.h
create mode 100644 arch/arm/mach-ep93xx/ts72xx.c
create mode 100644 arch/arm/mach-ep93xx/vision_ep9307.c
create mode 100644 arch/arm/mach-exynos/Kconfig
create mode 100644 arch/arm/mach-exynos/Makefile
create mode 100644 arch/arm/mach-exynos/Makefile.boot
create mode 100644 arch/arm/mach-exynos/clock-exynos4.c
create mode 100644 arch/arm/mach-exynos/clock-exynos4.h
create mode 100644 arch/arm/mach-exynos/clock-exynos4210.c
create mode 100644 arch/arm/mach-exynos/clock-exynos4212.c
create mode 100644 arch/arm/mach-exynos/clock-exynos5.c
create mode 100644 arch/arm/mach-exynos/common.c
create mode 100644 arch/arm/mach-exynos/common.h
create mode 100644 arch/arm/mach-exynos/cpuidle.c
create mode 100644 arch/arm/mach-exynos/dev-ahci.c
create mode 100644 arch/arm/mach-exynos/dev-audio.c
create mode 100644 arch/arm/mach-exynos/dev-dwmci.c
create mode 100644 arch/arm/mach-exynos/dev-ohci.c
create mode 100644 arch/arm/mach-exynos/dev-sysmmu.c
create mode 100644 arch/arm/mach-exynos/dev-uart.c
create mode 100644 arch/arm/mach-exynos/dma.c
create mode 100644 arch/arm/mach-exynos/headsmp.S
create mode 100644 arch/arm/mach-exynos/hotplug.c
create mode 100644 arch/arm/mach-exynos/include/mach/cpufreq.h
create mode 100644 arch/arm/mach-exynos/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-exynos/include/mach/dma.h
create mode 100644 arch/arm/mach-exynos/include/mach/dwmci.h
create mode 100644 arch/arm/mach-exynos/include/mach/gpio.h
create mode 100644 arch/arm/mach-exynos/include/mach/hardware.h
create mode 100644 arch/arm/mach-exynos/include/mach/irqs.h
create mode 100644 arch/arm/mach-exynos/include/mach/map.h
create mode 100644 arch/arm/mach-exynos/include/mach/memory.h
create mode 100644 arch/arm/mach-exynos/include/mach/ohci.h
create mode 100644 arch/arm/mach-exynos/include/mach/pm-core.h
create mode 100644 arch/arm/mach-exynos/include/mach/pmu.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-audss.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-mct.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-mem.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-pmu.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-sysmmu.h
create mode 100644 arch/arm/mach-exynos/include/mach/regs-usb-phy.h
create mode 100644 arch/arm/mach-exynos/include/mach/spi-clocks.h
create mode 100644 arch/arm/mach-exynos/include/mach/sysmmu.h
create mode 100644 arch/arm/mach-exynos/include/mach/timex.h
create mode 100644 arch/arm/mach-exynos/include/mach/uncompress.h
create mode 100644 arch/arm/mach-exynos/mach-armlex4210.c
create mode 100644 arch/arm/mach-exynos/mach-exynos4-dt.c
create mode 100644 arch/arm/mach-exynos/mach-exynos5-dt.c
create mode 100644 arch/arm/mach-exynos/mach-nuri.c
create mode 100644 arch/arm/mach-exynos/mach-origen.c
create mode 100644 arch/arm/mach-exynos/mach-smdk4x12.c
create mode 100644 arch/arm/mach-exynos/mach-smdkv310.c
create mode 100644 arch/arm/mach-exynos/mach-universal_c210.c
create mode 100644 arch/arm/mach-exynos/mct.c
create mode 100644 arch/arm/mach-exynos/platsmp.c
create mode 100644 arch/arm/mach-exynos/pm.c
create mode 100644 arch/arm/mach-exynos/pm_domains.c
create mode 100644 arch/arm/mach-exynos/pmu.c
create mode 100644 arch/arm/mach-exynos/setup-fimc.c
create mode 100644 arch/arm/mach-exynos/setup-fimd0.c
create mode 100644 arch/arm/mach-exynos/setup-i2c0.c
create mode 100644 arch/arm/mach-exynos/setup-i2c1.c
create mode 100644 arch/arm/mach-exynos/setup-i2c2.c
create mode 100644 arch/arm/mach-exynos/setup-i2c3.c
create mode 100644 arch/arm/mach-exynos/setup-i2c4.c
create mode 100644 arch/arm/mach-exynos/setup-i2c5.c
create mode 100644 arch/arm/mach-exynos/setup-i2c6.c
create mode 100644 arch/arm/mach-exynos/setup-i2c7.c
create mode 100644 arch/arm/mach-exynos/setup-keypad.c
create mode 100644 arch/arm/mach-exynos/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-exynos/setup-spi.c
create mode 100644 arch/arm/mach-exynos/setup-usb-phy.c
create mode 100644 arch/arm/mach-footbridge/Kconfig
create mode 100644 arch/arm/mach-footbridge/Makefile
create mode 100644 arch/arm/mach-footbridge/Makefile.boot
create mode 100644 arch/arm/mach-footbridge/cats-hw.c
create mode 100644 arch/arm/mach-footbridge/cats-pci.c
create mode 100644 arch/arm/mach-footbridge/common.c
create mode 100644 arch/arm/mach-footbridge/common.h
create mode 100644 arch/arm/mach-footbridge/dc21285-timer.c
create mode 100644 arch/arm/mach-footbridge/dc21285.c
create mode 100644 arch/arm/mach-footbridge/dma.c
create mode 100644 arch/arm/mach-footbridge/ebsa285-leds.c
create mode 100644 arch/arm/mach-footbridge/ebsa285-pci.c
create mode 100644 arch/arm/mach-footbridge/ebsa285.c
create mode 100644 arch/arm/mach-footbridge/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-footbridge/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-footbridge/include/mach/hardware.h
create mode 100644 arch/arm/mach-footbridge/include/mach/io.h
create mode 100644 arch/arm/mach-footbridge/include/mach/irqs.h
create mode 100644 arch/arm/mach-footbridge/include/mach/isa-dma.h
create mode 100644 arch/arm/mach-footbridge/include/mach/memory.h
create mode 100644 arch/arm/mach-footbridge/include/mach/timex.h
create mode 100644 arch/arm/mach-footbridge/include/mach/uncompress.h
create mode 100644 arch/arm/mach-footbridge/isa-irq.c
create mode 100644 arch/arm/mach-footbridge/isa-rtc.c
create mode 100644 arch/arm/mach-footbridge/isa-timer.c
create mode 100644 arch/arm/mach-footbridge/isa.c
create mode 100644 arch/arm/mach-footbridge/netwinder-hw.c
create mode 100644 arch/arm/mach-footbridge/netwinder-leds.c
create mode 100644 arch/arm/mach-footbridge/netwinder-pci.c
create mode 100644 arch/arm/mach-footbridge/personal-pci.c
create mode 100644 arch/arm/mach-footbridge/personal.c
create mode 100644 arch/arm/mach-gemini/Kconfig
create mode 100644 arch/arm/mach-gemini/Makefile
create mode 100644 arch/arm/mach-gemini/Makefile.boot
create mode 100644 arch/arm/mach-gemini/board-nas4220b.c
create mode 100644 arch/arm/mach-gemini/board-rut1xx.c
create mode 100644 arch/arm/mach-gemini/board-wbd111.c
create mode 100644 arch/arm/mach-gemini/board-wbd222.c
create mode 100644 arch/arm/mach-gemini/common.h
create mode 100644 arch/arm/mach-gemini/devices.c
create mode 100644 arch/arm/mach-gemini/gpio.c
create mode 100644 arch/arm/mach-gemini/idle.c
create mode 100644 arch/arm/mach-gemini/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-gemini/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-gemini/include/mach/global_reg.h
create mode 100644 arch/arm/mach-gemini/include/mach/gpio.h
create mode 100644 arch/arm/mach-gemini/include/mach/hardware.h
create mode 100644 arch/arm/mach-gemini/include/mach/irqs.h
create mode 100644 arch/arm/mach-gemini/include/mach/system.h
create mode 100644 arch/arm/mach-gemini/include/mach/timex.h
create mode 100644 arch/arm/mach-gemini/include/mach/uncompress.h
create mode 100644 arch/arm/mach-gemini/irq.c
create mode 100644 arch/arm/mach-gemini/mm.c
create mode 100644 arch/arm/mach-gemini/time.c
create mode 100644 arch/arm/mach-h720x/Kconfig
create mode 100644 arch/arm/mach-h720x/Makefile
create mode 100644 arch/arm/mach-h720x/Makefile.boot
create mode 100644 arch/arm/mach-h720x/common.c
create mode 100644 arch/arm/mach-h720x/common.h
create mode 100644 arch/arm/mach-h720x/cpu-h7201.c
create mode 100644 arch/arm/mach-h720x/cpu-h7202.c
create mode 100644 arch/arm/mach-h720x/h7201-eval.c
create mode 100644 arch/arm/mach-h720x/h7202-eval.c
create mode 100644 arch/arm/mach-h720x/include/mach/boards.h
create mode 100644 arch/arm/mach-h720x/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-h720x/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-h720x/include/mach/h7201-regs.h
create mode 100644 arch/arm/mach-h720x/include/mach/h7202-regs.h
create mode 100644 arch/arm/mach-h720x/include/mach/hardware.h
create mode 100644 arch/arm/mach-h720x/include/mach/irqs.h
create mode 100644 arch/arm/mach-h720x/include/mach/isa-dma.h
create mode 100644 arch/arm/mach-h720x/include/mach/timex.h
create mode 100644 arch/arm/mach-h720x/include/mach/uncompress.h
create mode 100644 arch/arm/mach-highbank/Makefile
create mode 100644 arch/arm/mach-highbank/Makefile.boot
create mode 100644 arch/arm/mach-highbank/clock.c
create mode 100644 arch/arm/mach-highbank/core.h
create mode 100644 arch/arm/mach-highbank/highbank.c
create mode 100644 arch/arm/mach-highbank/hotplug.c
create mode 100644 arch/arm/mach-highbank/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-highbank/include/mach/gpio.h
create mode 100644 arch/arm/mach-highbank/include/mach/timex.h
create mode 100644 arch/arm/mach-highbank/include/mach/uncompress.h
create mode 100644 arch/arm/mach-highbank/lluart.c
create mode 100644 arch/arm/mach-highbank/platsmp.c
create mode 100644 arch/arm/mach-highbank/pm.c
create mode 100644 arch/arm/mach-highbank/sysregs.h
create mode 100644 arch/arm/mach-highbank/system.c
create mode 100644 arch/arm/mach-imx/Kconfig
create mode 100644 arch/arm/mach-imx/Makefile
create mode 100644 arch/arm/mach-imx/Makefile.boot
create mode 100644 arch/arm/mach-imx/clock-imx1.c
create mode 100644 arch/arm/mach-imx/clock-imx21.c
create mode 100644 arch/arm/mach-imx/clock-imx25.c
create mode 100644 arch/arm/mach-imx/clock-imx27.c
create mode 100644 arch/arm/mach-imx/clock-imx31.c
create mode 100644 arch/arm/mach-imx/clock-imx35.c
create mode 100644 arch/arm/mach-imx/clock-imx6q.c
create mode 100644 arch/arm/mach-imx/clock-mx51-mx53.c
create mode 100644 arch/arm/mach-imx/cpu-imx25.c
create mode 100644 arch/arm/mach-imx/cpu-imx27.c
create mode 100644 arch/arm/mach-imx/cpu-imx31.c
create mode 100644 arch/arm/mach-imx/cpu-imx35.c
create mode 100644 arch/arm/mach-imx/cpu-imx5.c
create mode 100644 arch/arm/mach-imx/cpu_op-mx51.c
create mode 100644 arch/arm/mach-imx/cpu_op-mx51.h
create mode 100644 arch/arm/mach-imx/crm-regs-imx5.h
create mode 100644 arch/arm/mach-imx/crmregs-imx3.h
create mode 100644 arch/arm/mach-imx/devices-imx1.h
create mode 100644 arch/arm/mach-imx/devices-imx21.h
create mode 100644 arch/arm/mach-imx/devices-imx25.h
create mode 100644 arch/arm/mach-imx/devices-imx27.h
create mode 100644 arch/arm/mach-imx/devices-imx31.h
create mode 100644 arch/arm/mach-imx/devices-imx35.h
create mode 100644 arch/arm/mach-imx/devices-imx50.h
create mode 100644 arch/arm/mach-imx/devices-imx51.h
create mode 100644 arch/arm/mach-imx/devices-imx53.h
create mode 100644 arch/arm/mach-imx/efika.h
create mode 100644 arch/arm/mach-imx/ehci-imx25.c
create mode 100644 arch/arm/mach-imx/ehci-imx27.c
create mode 100644 arch/arm/mach-imx/ehci-imx31.c
create mode 100644 arch/arm/mach-imx/ehci-imx35.c
create mode 100644 arch/arm/mach-imx/ehci-imx5.c
create mode 100644 arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
create mode 100644 arch/arm/mach-imx/eukrea_mbimx51-baseboard.c
create mode 100644 arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c
create mode 100644 arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
create mode 100644 arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c
create mode 100644 arch/arm/mach-imx/gpc.c
create mode 100644 arch/arm/mach-imx/head-v7.S
create mode 100644 arch/arm/mach-imx/hotplug.c
create mode 100644 arch/arm/mach-imx/imx27-dt.c
create mode 100644 arch/arm/mach-imx/imx51-dt.c
create mode 100644 arch/arm/mach-imx/imx53-dt.c
create mode 100644 arch/arm/mach-imx/include/mach/dma-mx1-mx2.h
create mode 100644 arch/arm/mach-imx/iomux-imx31.c
create mode 100644 arch/arm/mach-imx/lluart.c
create mode 100644 arch/arm/mach-imx/mach-apf9328.c
create mode 100644 arch/arm/mach-imx/mach-armadillo5x0.c
create mode 100644 arch/arm/mach-imx/mach-bug.c
create mode 100644 arch/arm/mach-imx/mach-cpuimx27.c
create mode 100644 arch/arm/mach-imx/mach-cpuimx35.c
create mode 100644 arch/arm/mach-imx/mach-cpuimx51.c
create mode 100644 arch/arm/mach-imx/mach-cpuimx51sd.c
create mode 100644 arch/arm/mach-imx/mach-eukrea_cpuimx25.c
create mode 100644 arch/arm/mach-imx/mach-imx27_visstrim_m10.c
create mode 100644 arch/arm/mach-imx/mach-imx27ipcam.c
create mode 100644 arch/arm/mach-imx/mach-imx27lite.c
create mode 100644 arch/arm/mach-imx/mach-imx6q.c
create mode 100644 arch/arm/mach-imx/mach-kzm_arm11_01.c
create mode 100644 arch/arm/mach-imx/mach-mx1ads.c
create mode 100644 arch/arm/mach-imx/mach-mx21ads.c
create mode 100644 arch/arm/mach-imx/mach-mx25_3ds.c
create mode 100644 arch/arm/mach-imx/mach-mx27_3ds.c
create mode 100644 arch/arm/mach-imx/mach-mx27ads.c
create mode 100644 arch/arm/mach-imx/mach-mx31_3ds.c
create mode 100644 arch/arm/mach-imx/mach-mx31ads.c
create mode 100644 arch/arm/mach-imx/mach-mx31lilly.c
create mode 100644 arch/arm/mach-imx/mach-mx31lite.c
create mode 100644 arch/arm/mach-imx/mach-mx31moboard.c
create mode 100644 arch/arm/mach-imx/mach-mx35_3ds.c
create mode 100644 arch/arm/mach-imx/mach-mx50_rdp.c
create mode 100644 arch/arm/mach-imx/mach-mx51_3ds.c
create mode 100644 arch/arm/mach-imx/mach-mx51_babbage.c
create mode 100644 arch/arm/mach-imx/mach-mx51_efikamx.c
create mode 100644 arch/arm/mach-imx/mach-mx51_efikasb.c
create mode 100644 arch/arm/mach-imx/mach-mx53_ard.c
create mode 100644 arch/arm/mach-imx/mach-mx53_evk.c
create mode 100644 arch/arm/mach-imx/mach-mx53_loco.c
create mode 100644 arch/arm/mach-imx/mach-mx53_smd.c
create mode 100644 arch/arm/mach-imx/mach-mxt_td60.c
create mode 100644 arch/arm/mach-imx/mach-pca100.c
create mode 100644 arch/arm/mach-imx/mach-pcm037.c
create mode 100644 arch/arm/mach-imx/mach-pcm037_eet.c
create mode 100644 arch/arm/mach-imx/mach-pcm038.c
create mode 100644 arch/arm/mach-imx/mach-pcm043.c
create mode 100644 arch/arm/mach-imx/mach-qong.c
create mode 100644 arch/arm/mach-imx/mach-scb9328.c
create mode 100644 arch/arm/mach-imx/mach-vpr200.c
create mode 100644 arch/arm/mach-imx/mm-imx1.c
create mode 100644 arch/arm/mach-imx/mm-imx21.c
create mode 100644 arch/arm/mach-imx/mm-imx25.c
create mode 100644 arch/arm/mach-imx/mm-imx27.c
create mode 100644 arch/arm/mach-imx/mm-imx3.c
create mode 100644 arch/arm/mach-imx/mm-imx5.c
create mode 100644 arch/arm/mach-imx/mmdc.c
create mode 100644 arch/arm/mach-imx/mx1-camera-fiq-ksym.c
create mode 100644 arch/arm/mach-imx/mx1-camera-fiq.S
create mode 100644 arch/arm/mach-imx/mx31lilly-db.c
create mode 100644 arch/arm/mach-imx/mx31lite-db.c
create mode 100644 arch/arm/mach-imx/mx31moboard-devboard.c
create mode 100644 arch/arm/mach-imx/mx31moboard-marxbot.c
create mode 100644 arch/arm/mach-imx/mx31moboard-smartbot.c
create mode 100644 arch/arm/mach-imx/mx51_efika.c
create mode 100644 arch/arm/mach-imx/pcm037.h
create mode 100644 arch/arm/mach-imx/pcm970-baseboard.c
create mode 100644 arch/arm/mach-imx/platsmp.c
create mode 100644 arch/arm/mach-imx/pm-imx27.c
create mode 100644 arch/arm/mach-imx/pm-imx3.c
create mode 100644 arch/arm/mach-imx/pm-imx5.c
create mode 100644 arch/arm/mach-imx/pm-imx6q.c
create mode 100644 arch/arm/mach-imx/src.c
create mode 100644 arch/arm/mach-integrator/Kconfig
create mode 100644 arch/arm/mach-integrator/Makefile
create mode 100644 arch/arm/mach-integrator/Makefile.boot
create mode 100644 arch/arm/mach-integrator/common.h
create mode 100644 arch/arm/mach-integrator/core.c
create mode 100644 arch/arm/mach-integrator/cpu.c
create mode 100644 arch/arm/mach-integrator/impd1.c
create mode 100644 arch/arm/mach-integrator/include/mach/clkdev.h
create mode 100644 arch/arm/mach-integrator/include/mach/cm.h
create mode 100644 arch/arm/mach-integrator/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-integrator/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-integrator/include/mach/hardware.h
create mode 100644 arch/arm/mach-integrator/include/mach/impd1.h
create mode 100644 arch/arm/mach-integrator/include/mach/io.h
create mode 100644 arch/arm/mach-integrator/include/mach/irqs.h
create mode 100644 arch/arm/mach-integrator/include/mach/lm.h
create mode 100644 arch/arm/mach-integrator/include/mach/memory.h
create mode 100644 arch/arm/mach-integrator/include/mach/platform.h
create mode 100644 arch/arm/mach-integrator/include/mach/timex.h
create mode 100644 arch/arm/mach-integrator/include/mach/uncompress.h
create mode 100644 arch/arm/mach-integrator/integrator_ap.c
create mode 100644 arch/arm/mach-integrator/integrator_cp.c
create mode 100644 arch/arm/mach-integrator/leds.c
create mode 100644 arch/arm/mach-integrator/lm.c
create mode 100644 arch/arm/mach-integrator/pci.c
create mode 100644 arch/arm/mach-integrator/pci_v3.c
create mode 100644 arch/arm/mach-iop13xx/Kconfig
create mode 100644 arch/arm/mach-iop13xx/Makefile
create mode 100644 arch/arm/mach-iop13xx/Makefile.boot
create mode 100644 arch/arm/mach-iop13xx/include/mach/adma.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-iop13xx/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-iop13xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/io.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/iop13xx.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/iq81340.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/memory.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/msi.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/pci.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/time.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/timex.h
create mode 100644 arch/arm/mach-iop13xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-iop13xx/io.c
create mode 100644 arch/arm/mach-iop13xx/iq81340mc.c
create mode 100644 arch/arm/mach-iop13xx/iq81340sc.c
create mode 100644 arch/arm/mach-iop13xx/irq.c
create mode 100644 arch/arm/mach-iop13xx/msi.c
create mode 100644 arch/arm/mach-iop13xx/pci.c
create mode 100644 arch/arm/mach-iop13xx/pci.h
create mode 100644 arch/arm/mach-iop13xx/setup.c
create mode 100644 arch/arm/mach-iop13xx/tpmi.c
create mode 100644 arch/arm/mach-iop32x/Kconfig
create mode 100644 arch/arm/mach-iop32x/Makefile
create mode 100644 arch/arm/mach-iop32x/Makefile.boot
create mode 100644 arch/arm/mach-iop32x/em7210.c
create mode 100644 arch/arm/mach-iop32x/glantank.c
create mode 100644 arch/arm/mach-iop32x/include/mach/adma.h
create mode 100644 arch/arm/mach-iop32x/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-iop32x/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-iop32x/include/mach/glantank.h
create mode 100644 arch/arm/mach-iop32x/include/mach/gpio.h
create mode 100644 arch/arm/mach-iop32x/include/mach/hardware.h
create mode 100644 arch/arm/mach-iop32x/include/mach/io.h
create mode 100644 arch/arm/mach-iop32x/include/mach/iop32x.h
create mode 100644 arch/arm/mach-iop32x/include/mach/iq31244.h
create mode 100644 arch/arm/mach-iop32x/include/mach/iq80321.h
create mode 100644 arch/arm/mach-iop32x/include/mach/irqs.h
create mode 100644 arch/arm/mach-iop32x/include/mach/n2100.h
create mode 100644 arch/arm/mach-iop32x/include/mach/time.h
create mode 100644 arch/arm/mach-iop32x/include/mach/timex.h
create mode 100644 arch/arm/mach-iop32x/include/mach/uncompress.h
create mode 100644 arch/arm/mach-iop32x/iq31244.c
create mode 100644 arch/arm/mach-iop32x/iq80321.c
create mode 100644 arch/arm/mach-iop32x/irq.c
create mode 100644 arch/arm/mach-iop32x/n2100.c
create mode 100644 arch/arm/mach-iop33x/Kconfig
create mode 100644 arch/arm/mach-iop33x/Makefile
create mode 100644 arch/arm/mach-iop33x/Makefile.boot
create mode 100644 arch/arm/mach-iop33x/include/mach/adma.h
create mode 100644 arch/arm/mach-iop33x/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-iop33x/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-iop33x/include/mach/gpio.h
create mode 100644 arch/arm/mach-iop33x/include/mach/hardware.h
create mode 100644 arch/arm/mach-iop33x/include/mach/io.h
create mode 100644 arch/arm/mach-iop33x/include/mach/iop33x.h
create mode 100644 arch/arm/mach-iop33x/include/mach/iq80331.h
create mode 100644 arch/arm/mach-iop33x/include/mach/iq80332.h
create mode 100644 arch/arm/mach-iop33x/include/mach/irqs.h
create mode 100644 arch/arm/mach-iop33x/include/mach/time.h
create mode 100644 arch/arm/mach-iop33x/include/mach/timex.h
create mode 100644 arch/arm/mach-iop33x/include/mach/uncompress.h
create mode 100644 arch/arm/mach-iop33x/iq80331.c
create mode 100644 arch/arm/mach-iop33x/iq80332.c
create mode 100644 arch/arm/mach-iop33x/irq.c
create mode 100644 arch/arm/mach-iop33x/uart.c
create mode 100644 arch/arm/mach-ixp2000/Kconfig
create mode 100644 arch/arm/mach-ixp2000/Makefile
create mode 100644 arch/arm/mach-ixp2000/Makefile.boot
create mode 100644 arch/arm/mach-ixp2000/core.c
create mode 100644 arch/arm/mach-ixp2000/enp2611.c
create mode 100644 arch/arm/mach-ixp2000/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ixp2000/include/mach/enp2611.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/hardware.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/io.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/irqs.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/ixdp2x00.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/ixdp2x01.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/memory.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/platform.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/timex.h
create mode 100644 arch/arm/mach-ixp2000/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ixp2000/ixdp2400.c
create mode 100644 arch/arm/mach-ixp2000/ixdp2800.c
create mode 100644 arch/arm/mach-ixp2000/ixdp2x00.c
create mode 100644 arch/arm/mach-ixp2000/ixdp2x01.c
create mode 100644 arch/arm/mach-ixp2000/pci.c
create mode 100644 arch/arm/mach-ixp23xx/Kconfig
create mode 100644 arch/arm/mach-ixp23xx/Makefile
create mode 100644 arch/arm/mach-ixp23xx/Makefile.boot
create mode 100644 arch/arm/mach-ixp23xx/core.c
create mode 100644 arch/arm/mach-ixp23xx/espresso.c
create mode 100644 arch/arm/mach-ixp23xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ixp23xx/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-ixp23xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/io.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/ixdp2351.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/ixp23xx.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/memory.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/platform.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/time.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/timex.h
create mode 100644 arch/arm/mach-ixp23xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ixp23xx/ixdp2351.c
create mode 100644 arch/arm/mach-ixp23xx/pci.c
create mode 100644 arch/arm/mach-ixp23xx/roadrunner.c
create mode 100644 arch/arm/mach-ixp4xx/Kconfig
create mode 100644 arch/arm/mach-ixp4xx/Makefile
create mode 100644 arch/arm/mach-ixp4xx/Makefile.boot
create mode 100644 arch/arm/mach-ixp4xx/avila-pci.c
create mode 100644 arch/arm/mach-ixp4xx/avila-setup.c
create mode 100644 arch/arm/mach-ixp4xx/common-pci.c
create mode 100644 arch/arm/mach-ixp4xx/common.c
create mode 100644 arch/arm/mach-ixp4xx/coyote-pci.c
create mode 100644 arch/arm/mach-ixp4xx/coyote-setup.c
create mode 100644 arch/arm/mach-ixp4xx/dsmg600-pci.c
create mode 100644 arch/arm/mach-ixp4xx/dsmg600-setup.c
create mode 100644 arch/arm/mach-ixp4xx/fsg-pci.c
create mode 100644 arch/arm/mach-ixp4xx/fsg-setup.c
create mode 100644 arch/arm/mach-ixp4xx/gateway7001-pci.c
create mode 100644 arch/arm/mach-ixp4xx/gateway7001-setup.c
create mode 100644 arch/arm/mach-ixp4xx/goramo_mlr.c
create mode 100644 arch/arm/mach-ixp4xx/gtwx5715-pci.c
create mode 100644 arch/arm/mach-ixp4xx/gtwx5715-setup.c
create mode 100644 arch/arm/mach-ixp4xx/include/mach/cpu.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ixp4xx/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-ixp4xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/io.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/npe.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/platform.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/qmgr.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/timex.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/udc.h
create mode 100644 arch/arm/mach-ixp4xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ixp4xx/ixdp425-pci.c
create mode 100644 arch/arm/mach-ixp4xx/ixdp425-setup.c
create mode 100644 arch/arm/mach-ixp4xx/ixdpg425-pci.c
create mode 100644 arch/arm/mach-ixp4xx/ixp4xx_npe.c
create mode 100644 arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
create mode 100644 arch/arm/mach-ixp4xx/miccpt-pci.c
create mode 100644 arch/arm/mach-ixp4xx/nas100d-pci.c
create mode 100644 arch/arm/mach-ixp4xx/nas100d-setup.c
create mode 100644 arch/arm/mach-ixp4xx/nslu2-pci.c
create mode 100644 arch/arm/mach-ixp4xx/nslu2-setup.c
create mode 100644 arch/arm/mach-ixp4xx/omixp-setup.c
create mode 100644 arch/arm/mach-ixp4xx/vulcan-pci.c
create mode 100644 arch/arm/mach-ixp4xx/vulcan-setup.c
create mode 100644 arch/arm/mach-ixp4xx/wg302v2-pci.c
create mode 100644 arch/arm/mach-ixp4xx/wg302v2-setup.c
create mode 100644 arch/arm/mach-kirkwood/Kconfig
create mode 100644 arch/arm/mach-kirkwood/Makefile
create mode 100644 arch/arm/mach-kirkwood/Makefile.boot
create mode 100644 arch/arm/mach-kirkwood/addr-map.c
create mode 100644 arch/arm/mach-kirkwood/board-dreamplug.c
create mode 100644 arch/arm/mach-kirkwood/board-dt.c
create mode 100644 arch/arm/mach-kirkwood/common.c
create mode 100644 arch/arm/mach-kirkwood/common.h
create mode 100644 arch/arm/mach-kirkwood/cpuidle.c
create mode 100644 arch/arm/mach-kirkwood/d2net_v2-setup.c
create mode 100644 arch/arm/mach-kirkwood/db88f6281-bp-setup.c
create mode 100644 arch/arm/mach-kirkwood/dockstar-setup.c
create mode 100644 arch/arm/mach-kirkwood/guruplug-setup.c
create mode 100644 arch/arm/mach-kirkwood/include/mach/bridge-regs.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-kirkwood/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-kirkwood/include/mach/gpio.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/hardware.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/io.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/irqs.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/kirkwood.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/leds-netxbig.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/leds-ns2.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/timex.h
create mode 100644 arch/arm/mach-kirkwood/include/mach/uncompress.h
create mode 100644 arch/arm/mach-kirkwood/irq.c
create mode 100644 arch/arm/mach-kirkwood/lacie_v2-common.c
create mode 100644 arch/arm/mach-kirkwood/lacie_v2-common.h
create mode 100644 arch/arm/mach-kirkwood/mpp.c
create mode 100644 arch/arm/mach-kirkwood/mpp.h
create mode 100644 arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
create mode 100644 arch/arm/mach-kirkwood/netspace_v2-setup.c
create mode 100644 arch/arm/mach-kirkwood/netxbig_v2-setup.c
create mode 100644 arch/arm/mach-kirkwood/openrd-setup.c
create mode 100644 arch/arm/mach-kirkwood/pcie.c
create mode 100644 arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
create mode 100644 arch/arm/mach-kirkwood/rd88f6281-setup.c
create mode 100644 arch/arm/mach-kirkwood/sheevaplug-setup.c
create mode 100644 arch/arm/mach-kirkwood/t5325-setup.c
create mode 100644 arch/arm/mach-kirkwood/ts219-setup.c
create mode 100644 arch/arm/mach-kirkwood/ts41x-setup.c
create mode 100644 arch/arm/mach-kirkwood/tsx1x-common.c
create mode 100644 arch/arm/mach-kirkwood/tsx1x-common.h
create mode 100644 arch/arm/mach-ks8695/Kconfig
create mode 100644 arch/arm/mach-ks8695/Makefile
create mode 100644 arch/arm/mach-ks8695/Makefile.boot
create mode 100644 arch/arm/mach-ks8695/board-acs5k.c
create mode 100644 arch/arm/mach-ks8695/board-dsm320.c
create mode 100644 arch/arm/mach-ks8695/board-micrel.c
create mode 100644 arch/arm/mach-ks8695/cpu.c
create mode 100644 arch/arm/mach-ks8695/devices.c
create mode 100644 arch/arm/mach-ks8695/generic.h
create mode 100644 arch/arm/mach-ks8695/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ks8695/include/mach/devices.h
create mode 100644 arch/arm/mach-ks8695/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-ks8695/include/mach/gpio-ks8695.h
create mode 100644 arch/arm/mach-ks8695/include/mach/gpio.h
create mode 100644 arch/arm/mach-ks8695/include/mach/hardware.h
create mode 100644 arch/arm/mach-ks8695/include/mach/irqs.h
create mode 100644 arch/arm/mach-ks8695/include/mach/memory.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-hpna.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-lan.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-mem.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-misc.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-pci.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-switch.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-sys.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-timer.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-uart.h
create mode 100644 arch/arm/mach-ks8695/include/mach/regs-wan.h
create mode 100644 arch/arm/mach-ks8695/include/mach/timex.h
create mode 100644 arch/arm/mach-ks8695/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ks8695/irq.c
create mode 100644 arch/arm/mach-ks8695/leds.c
create mode 100644 arch/arm/mach-ks8695/pci.c
create mode 100644 arch/arm/mach-ks8695/time.c
create mode 100644 arch/arm/mach-l7200/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-lpc32xx/Kconfig
create mode 100644 arch/arm/mach-lpc32xx/Makefile
create mode 100644 arch/arm/mach-lpc32xx/Makefile.boot
create mode 100644 arch/arm/mach-lpc32xx/clock.c
create mode 100644 arch/arm/mach-lpc32xx/clock.h
create mode 100644 arch/arm/mach-lpc32xx/common.c
create mode 100644 arch/arm/mach-lpc32xx/common.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/board.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-lpc32xx/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-lpc32xx/include/mach/gpio-lpc32xx.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/i2c.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/platform.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/timex.h
create mode 100644 arch/arm/mach-lpc32xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-lpc32xx/irq.c
create mode 100644 arch/arm/mach-lpc32xx/phy3250.c
create mode 100644 arch/arm/mach-lpc32xx/pm.c
create mode 100644 arch/arm/mach-lpc32xx/serial.c
create mode 100644 arch/arm/mach-lpc32xx/suspend.S
create mode 100644 arch/arm/mach-lpc32xx/timer.c
create mode 100644 arch/arm/mach-mmp/Kconfig
create mode 100644 arch/arm/mach-mmp/Makefile
create mode 100644 arch/arm/mach-mmp/Makefile.boot
create mode 100644 arch/arm/mach-mmp/aspenite.c
create mode 100644 arch/arm/mach-mmp/avengers_lite.c
create mode 100644 arch/arm/mach-mmp/brownstone.c
create mode 100644 arch/arm/mach-mmp/clock.c
create mode 100644 arch/arm/mach-mmp/clock.h
create mode 100644 arch/arm/mach-mmp/common.c
create mode 100644 arch/arm/mach-mmp/common.h
create mode 100644 arch/arm/mach-mmp/devices.c
create mode 100644 arch/arm/mach-mmp/flint.c
create mode 100644 arch/arm/mach-mmp/gplugd.c
create mode 100644 arch/arm/mach-mmp/include/mach/addr-map.h
create mode 100644 arch/arm/mach-mmp/include/mach/cputype.h
create mode 100644 arch/arm/mach-mmp/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-mmp/include/mach/devices.h
create mode 100644 arch/arm/mach-mmp/include/mach/dma.h
create mode 100644 arch/arm/mach-mmp/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-mmp/include/mach/gpio-pxa.h
create mode 100644 arch/arm/mach-mmp/include/mach/gpio.h
create mode 100644 arch/arm/mach-mmp/include/mach/hardware.h
create mode 100644 arch/arm/mach-mmp/include/mach/irqs.h
create mode 100644 arch/arm/mach-mmp/include/mach/mfp-mmp2.h
create mode 100644 arch/arm/mach-mmp/include/mach/mfp-pxa168.h
create mode 100644 arch/arm/mach-mmp/include/mach/mfp-pxa910.h
create mode 100644 arch/arm/mach-mmp/include/mach/mfp.h
create mode 100644 arch/arm/mach-mmp/include/mach/mmp2.h
create mode 100644 arch/arm/mach-mmp/include/mach/pxa168.h
create mode 100644 arch/arm/mach-mmp/include/mach/pxa910.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-apbc.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-apmu.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-icu.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-rtc.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-smc.h
create mode 100644 arch/arm/mach-mmp/include/mach/regs-timers.h
create mode 100644 arch/arm/mach-mmp/include/mach/sram.h
create mode 100644 arch/arm/mach-mmp/include/mach/teton_bga.h
create mode 100644 arch/arm/mach-mmp/include/mach/timex.h
create mode 100644 arch/arm/mach-mmp/include/mach/uncompress.h
create mode 100644 arch/arm/mach-mmp/irq-mmp2.c
create mode 100644 arch/arm/mach-mmp/irq-pxa168.c
create mode 100644 arch/arm/mach-mmp/jasper.c
create mode 100644 arch/arm/mach-mmp/mmp-dt.c
create mode 100644 arch/arm/mach-mmp/mmp2.c
create mode 100644 arch/arm/mach-mmp/pxa168.c
create mode 100644 arch/arm/mach-mmp/pxa910.c
create mode 100644 arch/arm/mach-mmp/sram.c
create mode 100644 arch/arm/mach-mmp/tavorevb.c
create mode 100644 arch/arm/mach-mmp/teton_bga.c
create mode 100644 arch/arm/mach-mmp/time.c
create mode 100644 arch/arm/mach-mmp/ttc_dkb.c
create mode 100644 arch/arm/mach-msm/Kconfig
create mode 100644 arch/arm/mach-msm/Makefile
create mode 100644 arch/arm/mach-msm/Makefile.boot
create mode 100644 arch/arm/mach-msm/acpuclock-arm11.c
create mode 100644 arch/arm/mach-msm/acpuclock.h
create mode 100644 arch/arm/mach-msm/board-halibut.c
create mode 100644 arch/arm/mach-msm/board-mahimahi.c
create mode 100644 arch/arm/mach-msm/board-msm7x27.c
create mode 100644 arch/arm/mach-msm/board-msm7x30.c
create mode 100644 arch/arm/mach-msm/board-msm8960.c
create mode 100644 arch/arm/mach-msm/board-msm8x60.c
create mode 100644 arch/arm/mach-msm/board-qsd8x50.c
create mode 100644 arch/arm/mach-msm/board-sapphire.c
create mode 100644 arch/arm/mach-msm/board-trout-gpio.c
create mode 100644 arch/arm/mach-msm/board-trout-mmc.c
create mode 100644 arch/arm/mach-msm/board-trout-panel.c
create mode 100644 arch/arm/mach-msm/board-trout.c
create mode 100644 arch/arm/mach-msm/board-trout.h
create mode 100644 arch/arm/mach-msm/clock-7x30.h
create mode 100644 arch/arm/mach-msm/clock-debug.c
create mode 100644 arch/arm/mach-msm/clock-pcom.c
create mode 100644 arch/arm/mach-msm/clock-pcom.h
create mode 100644 arch/arm/mach-msm/clock.c
create mode 100644 arch/arm/mach-msm/clock.h
create mode 100644 arch/arm/mach-msm/devices-iommu.c
create mode 100644 arch/arm/mach-msm/devices-msm7x00.c
create mode 100644 arch/arm/mach-msm/devices-msm7x30.c
create mode 100644 arch/arm/mach-msm/devices-msm8960.c
create mode 100644 arch/arm/mach-msm/devices-qsd8x50.c
create mode 100644 arch/arm/mach-msm/devices.h
create mode 100644 arch/arm/mach-msm/dma.c
create mode 100644 arch/arm/mach-msm/gpiomux-8x50.c
create mode 100644 arch/arm/mach-msm/gpiomux-8x60.c
create mode 100644 arch/arm/mach-msm/gpiomux-v1.c
create mode 100644 arch/arm/mach-msm/gpiomux-v1.h
create mode 100644 arch/arm/mach-msm/gpiomux-v2.c
create mode 100644 arch/arm/mach-msm/gpiomux-v2.h
create mode 100644 arch/arm/mach-msm/gpiomux.c
create mode 100644 arch/arm/mach-msm/gpiomux.h
create mode 100644 arch/arm/mach-msm/headsmp.S
create mode 100644 arch/arm/mach-msm/hotplug.c
create mode 100644 arch/arm/mach-msm/idle.c
create mode 100644 arch/arm/mach-msm/include/mach/board.h
create mode 100644 arch/arm/mach-msm/include/mach/clk.h
create mode 100644 arch/arm/mach-msm/include/mach/cpu.h
create mode 100644 arch/arm/mach-msm/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-msm/include/mach/dma.h
create mode 100644 arch/arm/mach-msm/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-msm/include/mach/gpio.h
create mode 100644 arch/arm/mach-msm/include/mach/hardware.h
create mode 100644 arch/arm/mach-msm/include/mach/iommu.h
create mode 100644 arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs-7x00.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs-7x30.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs-8960.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs-8x50.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs-8x60.h
create mode 100644 arch/arm/mach-msm/include/mach/irqs.h
create mode 100644 arch/arm/mach-msm/include/mach/mmc.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_fb.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_gpiomux.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap-7x00.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap-7x30.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap-8960.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap-8x50.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_iomap.h
create mode 100644 arch/arm/mach-msm/include/mach/msm_smd.h
create mode 100644 arch/arm/mach-msm/include/mach/sirc.h
create mode 100644 arch/arm/mach-msm/include/mach/system.h
create mode 100644 arch/arm/mach-msm/include/mach/timex.h
create mode 100644 arch/arm/mach-msm/include/mach/uncompress.h
create mode 100644 arch/arm/mach-msm/include/mach/vreg.h
create mode 100644 arch/arm/mach-msm/io.c
create mode 100644 arch/arm/mach-msm/irq-vic.c
create mode 100644 arch/arm/mach-msm/irq.c
create mode 100644 arch/arm/mach-msm/last_radio_log.c
create mode 100644 arch/arm/mach-msm/platsmp.c
create mode 100644 arch/arm/mach-msm/proc_comm.c
create mode 100644 arch/arm/mach-msm/proc_comm.h
create mode 100644 arch/arm/mach-msm/scm-boot.c
create mode 100644 arch/arm/mach-msm/scm-boot.h
create mode 100644 arch/arm/mach-msm/scm.c
create mode 100644 arch/arm/mach-msm/scm.h
create mode 100644 arch/arm/mach-msm/sirc.c
create mode 100644 arch/arm/mach-msm/smd.c
create mode 100644 arch/arm/mach-msm/smd_debug.c
create mode 100644 arch/arm/mach-msm/smd_private.h
create mode 100644 arch/arm/mach-msm/timer.c
create mode 100644 arch/arm/mach-msm/vreg.c
create mode 100644 arch/arm/mach-mv78xx0/Kconfig
create mode 100644 arch/arm/mach-mv78xx0/Makefile
create mode 100644 arch/arm/mach-mv78xx0/Makefile.boot
create mode 100644 arch/arm/mach-mv78xx0/addr-map.c
create mode 100644 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
create mode 100644 arch/arm/mach-mv78xx0/common.c
create mode 100644 arch/arm/mach-mv78xx0/common.h
create mode 100644 arch/arm/mach-mv78xx0/db78x00-bp-setup.c
create mode 100644 arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-mv78xx0/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-mv78xx0/include/mach/gpio.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/hardware.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/io.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/irqs.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/timex.h
create mode 100644 arch/arm/mach-mv78xx0/include/mach/uncompress.h
create mode 100644 arch/arm/mach-mv78xx0/irq.c
create mode 100644 arch/arm/mach-mv78xx0/mpp.c
create mode 100644 arch/arm/mach-mv78xx0/mpp.h
create mode 100644 arch/arm/mach-mv78xx0/pcie.c
create mode 100644 arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
create mode 100644 arch/arm/mach-mxs/Kconfig
create mode 100644 arch/arm/mach-mxs/Makefile
create mode 100644 arch/arm/mach-mxs/Makefile.boot
create mode 100644 arch/arm/mach-mxs/clock-mx23.c
create mode 100644 arch/arm/mach-mxs/clock-mx28.c
create mode 100644 arch/arm/mach-mxs/clock.c
create mode 100644 arch/arm/mach-mxs/devices-mx23.h
create mode 100644 arch/arm/mach-mxs/devices-mx28.h
create mode 100644 arch/arm/mach-mxs/devices.c
create mode 100644 arch/arm/mach-mxs/devices/Kconfig
create mode 100644 arch/arm/mach-mxs/devices/Makefile
create mode 100644 arch/arm/mach-mxs/devices/amba-duart.c
create mode 100644 arch/arm/mach-mxs/devices/platform-auart.c
create mode 100644 arch/arm/mach-mxs/devices/platform-dma.c
create mode 100644 arch/arm/mach-mxs/devices/platform-fec.c
create mode 100644 arch/arm/mach-mxs/devices/platform-flexcan.c
create mode 100644 arch/arm/mach-mxs/devices/platform-gpio-mxs.c
create mode 100644 arch/arm/mach-mxs/devices/platform-gpmi-nand.c
create mode 100644 arch/arm/mach-mxs/devices/platform-mxs-i2c.c
create mode 100644 arch/arm/mach-mxs/devices/platform-mxs-mmc.c
create mode 100644 arch/arm/mach-mxs/devices/platform-mxs-pwm.c
create mode 100644 arch/arm/mach-mxs/devices/platform-mxs-saif.c
create mode 100644 arch/arm/mach-mxs/devices/platform-mxsfb.c
create mode 100644 arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c
create mode 100644 arch/arm/mach-mxs/icoll.c
create mode 100644 arch/arm/mach-mxs/include/mach/clock.h
create mode 100644 arch/arm/mach-mxs/include/mach/common.h
create mode 100644 arch/arm/mach-mxs/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-mxs/include/mach/devices-common.h
create mode 100644 arch/arm/mach-mxs/include/mach/digctl.h
create mode 100644 arch/arm/mach-mxs/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-mxs/include/mach/gpio.h
create mode 100644 arch/arm/mach-mxs/include/mach/hardware.h
create mode 100644 arch/arm/mach-mxs/include/mach/iomux-mx23.h
create mode 100644 arch/arm/mach-mxs/include/mach/iomux-mx28.h
create mode 100644 arch/arm/mach-mxs/include/mach/iomux.h
create mode 100644 arch/arm/mach-mxs/include/mach/irqs.h
create mode 100644 arch/arm/mach-mxs/include/mach/mmc.h
create mode 100644 arch/arm/mach-mxs/include/mach/mx23.h
create mode 100644 arch/arm/mach-mxs/include/mach/mx28.h
create mode 100644 arch/arm/mach-mxs/include/mach/mxs.h
create mode 100644 arch/arm/mach-mxs/include/mach/mxsfb.h
create mode 100644 arch/arm/mach-mxs/include/mach/timex.h
create mode 100644 arch/arm/mach-mxs/include/mach/uncompress.h
create mode 100644 arch/arm/mach-mxs/iomux.c
create mode 100644 arch/arm/mach-mxs/mach-apx4devkit.c
create mode 100644 arch/arm/mach-mxs/mach-m28evk.c
create mode 100644 arch/arm/mach-mxs/mach-mx23evk.c
create mode 100644 arch/arm/mach-mxs/mach-mx28evk.c
create mode 100644 arch/arm/mach-mxs/mach-stmp378x_devb.c
create mode 100644 arch/arm/mach-mxs/mach-tx28.c
create mode 100644 arch/arm/mach-mxs/mm.c
create mode 100644 arch/arm/mach-mxs/module-tx28.c
create mode 100644 arch/arm/mach-mxs/module-tx28.h
create mode 100644 arch/arm/mach-mxs/ocotp.c
create mode 100644 arch/arm/mach-mxs/pm.c
create mode 100644 arch/arm/mach-mxs/regs-clkctrl-mx23.h
create mode 100644 arch/arm/mach-mxs/regs-clkctrl-mx28.h
create mode 100644 arch/arm/mach-mxs/system.c
create mode 100644 arch/arm/mach-mxs/timer.c
create mode 100644 arch/arm/mach-netx/Kconfig
create mode 100644 arch/arm/mach-netx/Makefile
create mode 100644 arch/arm/mach-netx/Makefile.boot
create mode 100644 arch/arm/mach-netx/fb.c
create mode 100644 arch/arm/mach-netx/fb.h
create mode 100644 arch/arm/mach-netx/generic.c
create mode 100644 arch/arm/mach-netx/generic.h
create mode 100644 arch/arm/mach-netx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-netx/include/mach/eth.h
create mode 100644 arch/arm/mach-netx/include/mach/hardware.h
create mode 100644 arch/arm/mach-netx/include/mach/irqs.h
create mode 100644 arch/arm/mach-netx/include/mach/netx-regs.h
create mode 100644 arch/arm/mach-netx/include/mach/param.h
create mode 100644 arch/arm/mach-netx/include/mach/pfifo.h
create mode 100644 arch/arm/mach-netx/include/mach/timex.h
create mode 100644 arch/arm/mach-netx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-netx/include/mach/xc.h
create mode 100644 arch/arm/mach-netx/nxdb500.c
create mode 100644 arch/arm/mach-netx/nxdkn.c
create mode 100644 arch/arm/mach-netx/nxeb500hmi.c
create mode 100644 arch/arm/mach-netx/pfifo.c
create mode 100644 arch/arm/mach-netx/time.c
create mode 100644 arch/arm/mach-netx/xc.c
create mode 100644 arch/arm/mach-nomadik/Kconfig
create mode 100644 arch/arm/mach-nomadik/Makefile
create mode 100644 arch/arm/mach-nomadik/Makefile.boot
create mode 100644 arch/arm/mach-nomadik/board-nhk8815.c
create mode 100644 arch/arm/mach-nomadik/clock.c
create mode 100644 arch/arm/mach-nomadik/clock.h
create mode 100644 arch/arm/mach-nomadik/cpu-8815.c
create mode 100644 arch/arm/mach-nomadik/cpu-8815.h
create mode 100644 arch/arm/mach-nomadik/i2c-8815nhk.c
create mode 100644 arch/arm/mach-nomadik/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-nomadik/include/mach/fsmc.h
create mode 100644 arch/arm/mach-nomadik/include/mach/gpio.h
create mode 100644 arch/arm/mach-nomadik/include/mach/hardware.h
create mode 100644 arch/arm/mach-nomadik/include/mach/irqs.h
create mode 100644 arch/arm/mach-nomadik/include/mach/nand.h
create mode 100644 arch/arm/mach-nomadik/include/mach/timex.h
create mode 100644 arch/arm/mach-nomadik/include/mach/uncompress.h
create mode 100644 arch/arm/mach-omap1/Kconfig
create mode 100644 arch/arm/mach-omap1/Makefile
create mode 100644 arch/arm/mach-omap1/Makefile.boot
create mode 100644 arch/arm/mach-omap1/ams-delta-fiq-handler.S
create mode 100644 arch/arm/mach-omap1/ams-delta-fiq.c
create mode 100644 arch/arm/mach-omap1/board-ams-delta.c
create mode 100644 arch/arm/mach-omap1/board-fsample.c
create mode 100644 arch/arm/mach-omap1/board-generic.c
create mode 100644 arch/arm/mach-omap1/board-h2-mmc.c
create mode 100644 arch/arm/mach-omap1/board-h2.c
create mode 100644 arch/arm/mach-omap1/board-h2.h
create mode 100644 arch/arm/mach-omap1/board-h3-mmc.c
create mode 100644 arch/arm/mach-omap1/board-h3.c
create mode 100644 arch/arm/mach-omap1/board-h3.h
create mode 100644 arch/arm/mach-omap1/board-htcherald.c
create mode 100644 arch/arm/mach-omap1/board-innovator.c
create mode 100644 arch/arm/mach-omap1/board-nokia770.c
create mode 100644 arch/arm/mach-omap1/board-osk.c
create mode 100644 arch/arm/mach-omap1/board-palmte.c
create mode 100644 arch/arm/mach-omap1/board-palmtt.c
create mode 100644 arch/arm/mach-omap1/board-palmz71.c
create mode 100644 arch/arm/mach-omap1/board-perseus2.c
create mode 100644 arch/arm/mach-omap1/board-sx1-mmc.c
create mode 100644 arch/arm/mach-omap1/board-sx1.c
create mode 100644 arch/arm/mach-omap1/board-voiceblue.c
create mode 100644 arch/arm/mach-omap1/clock.c
create mode 100644 arch/arm/mach-omap1/clock.h
create mode 100644 arch/arm/mach-omap1/clock_data.c
create mode 100644 arch/arm/mach-omap1/common.h
create mode 100644 arch/arm/mach-omap1/devices.c
create mode 100644 arch/arm/mach-omap1/dma.c
create mode 100644 arch/arm/mach-omap1/flash.c
create mode 100644 arch/arm/mach-omap1/fpga.c
create mode 100644 arch/arm/mach-omap1/gpio15xx.c
create mode 100644 arch/arm/mach-omap1/gpio16xx.c
create mode 100644 arch/arm/mach-omap1/gpio7xx.c
create mode 100644 arch/arm/mach-omap1/i2c.c
create mode 100644 arch/arm/mach-omap1/id.c
create mode 100644 arch/arm/mach-omap1/include/mach/ams-delta-fiq.h
create mode 100644 arch/arm/mach-omap1/include/mach/camera.h
create mode 100644 arch/arm/mach-omap1/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-omap1/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-omap1/include/mach/gpio.h
create mode 100644 arch/arm/mach-omap1/include/mach/hardware.h
create mode 100644 arch/arm/mach-omap1/include/mach/io.h
create mode 100644 arch/arm/mach-omap1/include/mach/irqs.h
create mode 100644 arch/arm/mach-omap1/include/mach/lcd_dma.h
create mode 100644 arch/arm/mach-omap1/include/mach/lcdc.h
create mode 100644 arch/arm/mach-omap1/include/mach/memory.h
create mode 100644 arch/arm/mach-omap1/include/mach/mtd-xip.h
create mode 100644 arch/arm/mach-omap1/include/mach/smp.h
create mode 100644 arch/arm/mach-omap1/include/mach/timex.h
create mode 100644 arch/arm/mach-omap1/include/mach/uncompress.h
create mode 100644 arch/arm/mach-omap1/io.c
create mode 100644 arch/arm/mach-omap1/iomap.h
create mode 100644 arch/arm/mach-omap1/irq.c
create mode 100644 arch/arm/mach-omap1/lcd_dma.c
create mode 100644 arch/arm/mach-omap1/leds-h2p2-debug.c
create mode 100644 arch/arm/mach-omap1/leds-innovator.c
create mode 100644 arch/arm/mach-omap1/leds-osk.c
create mode 100644 arch/arm/mach-omap1/leds.c
create mode 100644 arch/arm/mach-omap1/leds.h
create mode 100644 arch/arm/mach-omap1/mailbox.c
create mode 100644 arch/arm/mach-omap1/mcbsp.c
create mode 100644 arch/arm/mach-omap1/mux.c
create mode 100644 arch/arm/mach-omap1/opp.h
create mode 100644 arch/arm/mach-omap1/opp_data.c
create mode 100644 arch/arm/mach-omap1/pm.c
create mode 100644 arch/arm/mach-omap1/pm.h
create mode 100644 arch/arm/mach-omap1/pm_bus.c
create mode 100644 arch/arm/mach-omap1/reset.c
create mode 100644 arch/arm/mach-omap1/serial.c
create mode 100644 arch/arm/mach-omap1/sleep.S
create mode 100644 arch/arm/mach-omap1/sram.S
create mode 100644 arch/arm/mach-omap1/time.c
create mode 100644 arch/arm/mach-omap1/timer.c
create mode 100644 arch/arm/mach-omap1/timer32k.c
create mode 100644 arch/arm/mach-omap1/usb.c
create mode 100644 arch/arm/mach-omap2/Kconfig
create mode 100644 arch/arm/mach-omap2/Makefile
create mode 100644 arch/arm/mach-omap2/Makefile.boot
create mode 100644 arch/arm/mach-omap2/am35xx-emac.c
create mode 100644 arch/arm/mach-omap2/am35xx-emac.h
create mode 100644 arch/arm/mach-omap2/board-2430sdp.c
create mode 100644 arch/arm/mach-omap2/board-3430sdp.c
create mode 100644 arch/arm/mach-omap2/board-3630sdp.c
create mode 100644 arch/arm/mach-omap2/board-4430sdp.c
create mode 100644 arch/arm/mach-omap2/board-am3517crane.c
create mode 100644 arch/arm/mach-omap2/board-am3517evm.c
create mode 100644 arch/arm/mach-omap2/board-apollon.c
create mode 100644 arch/arm/mach-omap2/board-cm-t35.c
create mode 100644 arch/arm/mach-omap2/board-cm-t3517.c
create mode 100644 arch/arm/mach-omap2/board-devkit8000.c
create mode 100644 arch/arm/mach-omap2/board-flash.c
create mode 100644 arch/arm/mach-omap2/board-flash.h
create mode 100644 arch/arm/mach-omap2/board-generic.c
create mode 100644 arch/arm/mach-omap2/board-h4.c
create mode 100644 arch/arm/mach-omap2/board-igep0020.c
create mode 100644 arch/arm/mach-omap2/board-ldp.c
create mode 100644 arch/arm/mach-omap2/board-n8x0.c
create mode 100644 arch/arm/mach-omap2/board-omap3beagle.c
create mode 100644 arch/arm/mach-omap2/board-omap3evm.c
create mode 100644 arch/arm/mach-omap2/board-omap3logic.c
create mode 100644 arch/arm/mach-omap2/board-omap3pandora.c
create mode 100644 arch/arm/mach-omap2/board-omap3stalker.c
create mode 100644 arch/arm/mach-omap2/board-omap3touchbook.c
create mode 100644 arch/arm/mach-omap2/board-omap4panda.c
create mode 100644 arch/arm/mach-omap2/board-overo.c
create mode 100644 arch/arm/mach-omap2/board-rm680.c
create mode 100644 arch/arm/mach-omap2/board-rx51-peripherals.c
create mode 100644 arch/arm/mach-omap2/board-rx51-video.c
create mode 100644 arch/arm/mach-omap2/board-rx51.c
create mode 100644 arch/arm/mach-omap2/board-ti8168evm.c
create mode 100644 arch/arm/mach-omap2/board-zoom-debugboard.c
create mode 100644 arch/arm/mach-omap2/board-zoom-display.c
create mode 100644 arch/arm/mach-omap2/board-zoom-peripherals.c
create mode 100644 arch/arm/mach-omap2/board-zoom.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_apll.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_dpll.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_dpllcore.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_osc.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_sys.c
create mode 100644 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
create mode 100644 arch/arm/mach-omap2/clkt34xx_dpll3m2.c
create mode 100644 arch/arm/mach-omap2/clkt_clksel.c
create mode 100644 arch/arm/mach-omap2/clkt_dpll.c
create mode 100644 arch/arm/mach-omap2/clkt_iclk.c
create mode 100644 arch/arm/mach-omap2/clock.c
create mode 100644 arch/arm/mach-omap2/clock.h
create mode 100644 arch/arm/mach-omap2/clock2420_data.c
create mode 100644 arch/arm/mach-omap2/clock2430.c
create mode 100644 arch/arm/mach-omap2/clock2430_data.c
create mode 100644 arch/arm/mach-omap2/clock2xxx.c
create mode 100644 arch/arm/mach-omap2/clock2xxx.h
create mode 100644 arch/arm/mach-omap2/clock34xx.c
create mode 100644 arch/arm/mach-omap2/clock34xx.h
create mode 100644 arch/arm/mach-omap2/clock3517.c
create mode 100644 arch/arm/mach-omap2/clock3517.h
create mode 100644 arch/arm/mach-omap2/clock36xx.c
create mode 100644 arch/arm/mach-omap2/clock36xx.h
create mode 100644 arch/arm/mach-omap2/clock3xxx.c
create mode 100644 arch/arm/mach-omap2/clock3xxx.h
create mode 100644 arch/arm/mach-omap2/clock3xxx_data.c
create mode 100644 arch/arm/mach-omap2/clock44xx.h
create mode 100644 arch/arm/mach-omap2/clock44xx_data.c
create mode 100644 arch/arm/mach-omap2/clock_common_data.c
create mode 100644 arch/arm/mach-omap2/clockdomain.c
create mode 100644 arch/arm/mach-omap2/clockdomain.h
create mode 100644 arch/arm/mach-omap2/clockdomain2xxx_3xxx.c
create mode 100644 arch/arm/mach-omap2/clockdomain44xx.c
create mode 100644 arch/arm/mach-omap2/clockdomains2420_data.c
create mode 100644 arch/arm/mach-omap2/clockdomains2430_data.c
create mode 100644 arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
create mode 100644 arch/arm/mach-omap2/clockdomains3xxx_data.c
create mode 100644 arch/arm/mach-omap2/clockdomains44xx_data.c
create mode 100644 arch/arm/mach-omap2/cm-regbits-24xx.h
create mode 100644 arch/arm/mach-omap2/cm-regbits-34xx.h
create mode 100644 arch/arm/mach-omap2/cm-regbits-44xx.h
create mode 100644 arch/arm/mach-omap2/cm.h
create mode 100644 arch/arm/mach-omap2/cm1_44xx.h
create mode 100644 arch/arm/mach-omap2/cm2_44xx.h
create mode 100644 arch/arm/mach-omap2/cm2xxx_3xxx.c
create mode 100644 arch/arm/mach-omap2/cm2xxx_3xxx.h
create mode 100644 arch/arm/mach-omap2/cm44xx.c
create mode 100644 arch/arm/mach-omap2/cm44xx.h
create mode 100644 arch/arm/mach-omap2/cminst44xx.c
create mode 100644 arch/arm/mach-omap2/cminst44xx.h
create mode 100644 arch/arm/mach-omap2/common-board-devices.c
create mode 100644 arch/arm/mach-omap2/common-board-devices.h
create mode 100644 arch/arm/mach-omap2/common.c
create mode 100644 arch/arm/mach-omap2/common.h
create mode 100644 arch/arm/mach-omap2/control.c
create mode 100644 arch/arm/mach-omap2/control.h
create mode 100644 arch/arm/mach-omap2/cpuidle34xx.c
create mode 100644 arch/arm/mach-omap2/cpuidle44xx.c
create mode 100644 arch/arm/mach-omap2/devices.c
create mode 100644 arch/arm/mach-omap2/devices.h
create mode 100644 arch/arm/mach-omap2/display.c
create mode 100644 arch/arm/mach-omap2/display.h
create mode 100644 arch/arm/mach-omap2/dma.c
create mode 100644 arch/arm/mach-omap2/dpll3xxx.c
create mode 100644 arch/arm/mach-omap2/dpll44xx.c
create mode 100644 arch/arm/mach-omap2/dsp.c
create mode 100644 arch/arm/mach-omap2/emu.c
create mode 100644 arch/arm/mach-omap2/gpio.c
create mode 100644 arch/arm/mach-omap2/gpmc-nand.c
create mode 100644 arch/arm/mach-omap2/gpmc-onenand.c
create mode 100644 arch/arm/mach-omap2/gpmc-smc91x.c
create mode 100644 arch/arm/mach-omap2/gpmc-smsc911x.c
create mode 100644 arch/arm/mach-omap2/gpmc.c
create mode 100644 arch/arm/mach-omap2/hsmmc.c
create mode 100644 arch/arm/mach-omap2/hsmmc.h
create mode 100644 arch/arm/mach-omap2/hwspinlock.c
create mode 100644 arch/arm/mach-omap2/i2c.c
create mode 100644 arch/arm/mach-omap2/id.c
create mode 100644 arch/arm/mach-omap2/include/mach/am35xx.h
create mode 100644 arch/arm/mach-omap2/include/mach/barriers.h
create mode 100644 arch/arm/mach-omap2/include/mach/board-rx51.h
create mode 100644 arch/arm/mach-omap2/include/mach/board-zoom.h
create mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h
create mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h
create mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_pad_wkup_44xx.h
create mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h
create mode 100644 arch/arm/mach-omap2/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-omap2/include/mach/gpio.h
create mode 100644 arch/arm/mach-omap2/include/mach/hardware.h
create mode 100644 arch/arm/mach-omap2/include/mach/id.h
create mode 100644 arch/arm/mach-omap2/include/mach/irqs.h
create mode 100644 arch/arm/mach-omap2/include/mach/omap-secure.h
create mode 100644 arch/arm/mach-omap2/include/mach/omap-wakeupgen.h
create mode 100644 arch/arm/mach-omap2/include/mach/smp.h
create mode 100644 arch/arm/mach-omap2/include/mach/timex.h
create mode 100644 arch/arm/mach-omap2/include/mach/uncompress.h
create mode 100644 arch/arm/mach-omap2/io.c
create mode 100644 arch/arm/mach-omap2/iomap.h
create mode 100644 arch/arm/mach-omap2/iommu2.c
create mode 100644 arch/arm/mach-omap2/irq.c
create mode 100644 arch/arm/mach-omap2/mailbox.c
create mode 100644 arch/arm/mach-omap2/mcbsp.c
create mode 100644 arch/arm/mach-omap2/mux.c
create mode 100644 arch/arm/mach-omap2/mux.h
create mode 100644 arch/arm/mach-omap2/mux2420.c
create mode 100644 arch/arm/mach-omap2/mux2420.h
create mode 100644 arch/arm/mach-omap2/mux2430.c
create mode 100644 arch/arm/mach-omap2/mux2430.h
create mode 100644 arch/arm/mach-omap2/mux34xx.c
create mode 100644 arch/arm/mach-omap2/mux34xx.h
create mode 100644 arch/arm/mach-omap2/mux44xx.c
create mode 100644 arch/arm/mach-omap2/mux44xx.h
create mode 100644 arch/arm/mach-omap2/omap-headsmp.S
create mode 100644 arch/arm/mach-omap2/omap-hotplug.c
create mode 100644 arch/arm/mach-omap2/omap-iommu.c
create mode 100644 arch/arm/mach-omap2/omap-mpuss-lowpower.c
create mode 100644 arch/arm/mach-omap2/omap-secure.c
create mode 100644 arch/arm/mach-omap2/omap-smc.S
create mode 100644 arch/arm/mach-omap2/omap-smp.c
create mode 100644 arch/arm/mach-omap2/omap-wakeupgen.c
create mode 100644 arch/arm/mach-omap2/omap4-common.c
create mode 100644 arch/arm/mach-omap2/omap4-sar-layout.h
create mode 100644 arch/arm/mach-omap2/omap_hwmod.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2420_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2430_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_44xx_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_common_data.c
create mode 100644 arch/arm/mach-omap2/omap_hwmod_common_data.h
create mode 100644 arch/arm/mach-omap2/omap_l3_noc.c
create mode 100644 arch/arm/mach-omap2/omap_l3_noc.h
create mode 100644 arch/arm/mach-omap2/omap_l3_smx.c
create mode 100644 arch/arm/mach-omap2/omap_l3_smx.h
create mode 100644 arch/arm/mach-omap2/omap_opp_data.h
create mode 100644 arch/arm/mach-omap2/omap_phy_internal.c
create mode 100644 arch/arm/mach-omap2/omap_twl.c
create mode 100644 arch/arm/mach-omap2/opp.c
create mode 100644 arch/arm/mach-omap2/opp2420_data.c
create mode 100644 arch/arm/mach-omap2/opp2430_data.c
create mode 100644 arch/arm/mach-omap2/opp2xxx.h
create mode 100644 arch/arm/mach-omap2/opp3xxx_data.c
create mode 100644 arch/arm/mach-omap2/opp4xxx_data.c
create mode 100644 arch/arm/mach-omap2/pm-debug.c
create mode 100644 arch/arm/mach-omap2/pm.c
create mode 100644 arch/arm/mach-omap2/pm.h
create mode 100644 arch/arm/mach-omap2/pm24xx.c
create mode 100644 arch/arm/mach-omap2/pm34xx.c
create mode 100644 arch/arm/mach-omap2/pm44xx.c
create mode 100644 arch/arm/mach-omap2/powerdomain-common.c
create mode 100644 arch/arm/mach-omap2/powerdomain.c
create mode 100644 arch/arm/mach-omap2/powerdomain.h
create mode 100644 arch/arm/mach-omap2/powerdomain2xxx_3xxx.c
create mode 100644 arch/arm/mach-omap2/powerdomain44xx.c
create mode 100644 arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c
create mode 100644 arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h
create mode 100644 arch/arm/mach-omap2/powerdomains2xxx_data.c
create mode 100644 arch/arm/mach-omap2/powerdomains3xxx_data.c
create mode 100644 arch/arm/mach-omap2/powerdomains44xx_data.c
create mode 100644 arch/arm/mach-omap2/prcm-common.h
create mode 100644 arch/arm/mach-omap2/prcm.c
create mode 100644 arch/arm/mach-omap2/prcm44xx.h
create mode 100644 arch/arm/mach-omap2/prcm_mpu44xx.c
create mode 100644 arch/arm/mach-omap2/prcm_mpu44xx.h
create mode 100644 arch/arm/mach-omap2/prm-regbits-24xx.h
create mode 100644 arch/arm/mach-omap2/prm-regbits-34xx.h
create mode 100644 arch/arm/mach-omap2/prm-regbits-44xx.h
create mode 100644 arch/arm/mach-omap2/prm.h
create mode 100644 arch/arm/mach-omap2/prm2xxx_3xxx.c
create mode 100644 arch/arm/mach-omap2/prm2xxx_3xxx.h
create mode 100644 arch/arm/mach-omap2/prm44xx.c
create mode 100644 arch/arm/mach-omap2/prm44xx.h
create mode 100644 arch/arm/mach-omap2/prm_common.c
create mode 100644 arch/arm/mach-omap2/prminst44xx.c
create mode 100644 arch/arm/mach-omap2/prminst44xx.h
create mode 100644 arch/arm/mach-omap2/scrm44xx.h
create mode 100644 arch/arm/mach-omap2/sdram-hynix-h8mbx00u0mer-0em.h
create mode 100644 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h
create mode 100644 arch/arm/mach-omap2/sdram-nokia.c
create mode 100644 arch/arm/mach-omap2/sdram-nokia.h
create mode 100644 arch/arm/mach-omap2/sdram-numonyx-m65kxxxxam.h
create mode 100644 arch/arm/mach-omap2/sdram-qimonda-hyb18m512160af-6.h
create mode 100644 arch/arm/mach-omap2/sdrc.c
create mode 100644 arch/arm/mach-omap2/sdrc.h
create mode 100644 arch/arm/mach-omap2/sdrc2xxx.c
create mode 100644 arch/arm/mach-omap2/serial.c
create mode 100644 arch/arm/mach-omap2/sleep24xx.S
create mode 100644 arch/arm/mach-omap2/sleep34xx.S
create mode 100644 arch/arm/mach-omap2/sleep44xx.S
create mode 100644 arch/arm/mach-omap2/smartreflex-class3.c
create mode 100644 arch/arm/mach-omap2/smartreflex.c
create mode 100644 arch/arm/mach-omap2/smartreflex.h
create mode 100644 arch/arm/mach-omap2/sr_device.c
create mode 100644 arch/arm/mach-omap2/sram242x.S
create mode 100644 arch/arm/mach-omap2/sram243x.S
create mode 100644 arch/arm/mach-omap2/sram34xx.S
create mode 100644 arch/arm/mach-omap2/timer.c
create mode 100644 arch/arm/mach-omap2/twl-common.c
create mode 100644 arch/arm/mach-omap2/twl-common.h
create mode 100644 arch/arm/mach-omap2/usb-fs.c
create mode 100644 arch/arm/mach-omap2/usb-host.c
create mode 100644 arch/arm/mach-omap2/usb-musb.c
create mode 100644 arch/arm/mach-omap2/usb-tusb6010.c
create mode 100644 arch/arm/mach-omap2/vc.c
create mode 100644 arch/arm/mach-omap2/vc.h
create mode 100644 arch/arm/mach-omap2/vc3xxx_data.c
create mode 100644 arch/arm/mach-omap2/vc44xx_data.c
create mode 100644 arch/arm/mach-omap2/voltage.c
create mode 100644 arch/arm/mach-omap2/voltage.h
create mode 100644 arch/arm/mach-omap2/voltagedomains2xxx_data.c
create mode 100644 arch/arm/mach-omap2/voltagedomains3xxx_data.c
create mode 100644 arch/arm/mach-omap2/voltagedomains44xx_data.c
create mode 100644 arch/arm/mach-omap2/vp.c
create mode 100644 arch/arm/mach-omap2/vp.h
create mode 100644 arch/arm/mach-omap2/vp3xxx_data.c
create mode 100644 arch/arm/mach-omap2/vp44xx_data.c
create mode 100644 arch/arm/mach-omap2/wd_timer.c
create mode 100644 arch/arm/mach-omap2/wd_timer.h
create mode 100644 arch/arm/mach-orion5x/Kconfig
create mode 100644 arch/arm/mach-orion5x/Makefile
create mode 100644 arch/arm/mach-orion5x/Makefile.boot
create mode 100644 arch/arm/mach-orion5x/addr-map.c
create mode 100644 arch/arm/mach-orion5x/common.c
create mode 100644 arch/arm/mach-orion5x/common.h
create mode 100644 arch/arm/mach-orion5x/d2net-setup.c
create mode 100644 arch/arm/mach-orion5x/db88f5281-setup.c
create mode 100644 arch/arm/mach-orion5x/dns323-setup.c
create mode 100644 arch/arm/mach-orion5x/edmini_v2-setup.c
create mode 100644 arch/arm/mach-orion5x/include/mach/bridge-regs.h
create mode 100644 arch/arm/mach-orion5x/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-orion5x/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-orion5x/include/mach/gpio.h
create mode 100644 arch/arm/mach-orion5x/include/mach/hardware.h
create mode 100644 arch/arm/mach-orion5x/include/mach/irqs.h
create mode 100644 arch/arm/mach-orion5x/include/mach/orion5x.h
create mode 100644 arch/arm/mach-orion5x/include/mach/timex.h
create mode 100644 arch/arm/mach-orion5x/include/mach/uncompress.h
create mode 100644 arch/arm/mach-orion5x/irq.c
create mode 100644 arch/arm/mach-orion5x/kurobox_pro-setup.c
create mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c
create mode 100644 arch/arm/mach-orion5x/ls_hgl-setup.c
create mode 100644 arch/arm/mach-orion5x/lsmini-setup.c
create mode 100644 arch/arm/mach-orion5x/mpp.c
create mode 100644 arch/arm/mach-orion5x/mpp.h
create mode 100644 arch/arm/mach-orion5x/mss2-setup.c
create mode 100644 arch/arm/mach-orion5x/mv2120-setup.c
create mode 100644 arch/arm/mach-orion5x/net2big-setup.c
create mode 100644 arch/arm/mach-orion5x/pci.c
create mode 100644 arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
create mode 100644 arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
create mode 100644 arch/arm/mach-orion5x/rd88f5182-setup.c
create mode 100644 arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
create mode 100644 arch/arm/mach-orion5x/terastation_pro2-setup.c
create mode 100644 arch/arm/mach-orion5x/ts209-setup.c
create mode 100644 arch/arm/mach-orion5x/ts409-setup.c
create mode 100644 arch/arm/mach-orion5x/ts78xx-fpga.h
create mode 100644 arch/arm/mach-orion5x/ts78xx-setup.c
create mode 100644 arch/arm/mach-orion5x/tsx09-common.c
create mode 100644 arch/arm/mach-orion5x/tsx09-common.h
create mode 100644 arch/arm/mach-orion5x/wnr854t-setup.c
create mode 100644 arch/arm/mach-orion5x/wrt350n-v2-setup.c
create mode 100644 arch/arm/mach-picoxcell/Makefile
create mode 100644 arch/arm/mach-picoxcell/Makefile.boot
create mode 100644 arch/arm/mach-picoxcell/common.c
create mode 100644 arch/arm/mach-picoxcell/common.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-picoxcell/include/mach/gpio.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/hardware.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/map.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/picoxcell_soc.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/timex.h
create mode 100644 arch/arm/mach-picoxcell/include/mach/uncompress.h
create mode 100644 arch/arm/mach-picoxcell/time.c
create mode 100644 arch/arm/mach-pnx4008/Makefile
create mode 100644 arch/arm/mach-pnx4008/Makefile.boot
create mode 100644 arch/arm/mach-pnx4008/clock.c
create mode 100644 arch/arm/mach-pnx4008/clock.h
create mode 100644 arch/arm/mach-pnx4008/core.c
create mode 100644 arch/arm/mach-pnx4008/dma.c
create mode 100644 arch/arm/mach-pnx4008/gpio.c
create mode 100644 arch/arm/mach-pnx4008/i2c.c
create mode 100644 arch/arm/mach-pnx4008/include/mach/clock.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-pnx4008/include/mach/dma.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-pnx4008/include/mach/gpio-pnx4008.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/hardware.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/i2c.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/irq.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/irqs.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/param.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/platform.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/pm.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/timex.h
create mode 100644 arch/arm/mach-pnx4008/include/mach/uncompress.h
create mode 100644 arch/arm/mach-pnx4008/irq.c
create mode 100644 arch/arm/mach-pnx4008/pm.c
create mode 100644 arch/arm/mach-pnx4008/serial.c
create mode 100644 arch/arm/mach-pnx4008/sleep.S
create mode 100644 arch/arm/mach-pnx4008/time.c
create mode 100644 arch/arm/mach-pnx4008/time.h
create mode 100644 arch/arm/mach-prima2/Makefile
create mode 100644 arch/arm/mach-prima2/Makefile.boot
create mode 100644 arch/arm/mach-prima2/clock.c
create mode 100644 arch/arm/mach-prima2/common.h
create mode 100644 arch/arm/mach-prima2/include/mach/clkdev.h
create mode 100644 arch/arm/mach-prima2/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-prima2/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-prima2/include/mach/hardware.h
create mode 100644 arch/arm/mach-prima2/include/mach/irqs.h
create mode 100644 arch/arm/mach-prima2/include/mach/map.h
create mode 100644 arch/arm/mach-prima2/include/mach/timex.h
create mode 100644 arch/arm/mach-prima2/include/mach/uart.h
create mode 100644 arch/arm/mach-prima2/include/mach/uncompress.h
create mode 100644 arch/arm/mach-prima2/irq.c
create mode 100644 arch/arm/mach-prima2/l2x0.c
create mode 100644 arch/arm/mach-prima2/lluart.c
create mode 100644 arch/arm/mach-prima2/pm.c
create mode 100644 arch/arm/mach-prima2/pm.h
create mode 100644 arch/arm/mach-prima2/prima2.c
create mode 100644 arch/arm/mach-prima2/rstc.c
create mode 100644 arch/arm/mach-prima2/rtciobrg.c
create mode 100644 arch/arm/mach-prima2/sleep.S
create mode 100644 arch/arm/mach-prima2/timer.c
create mode 100644 arch/arm/mach-pxa/Kconfig
create mode 100644 arch/arm/mach-pxa/Makefile
create mode 100644 arch/arm/mach-pxa/Makefile.boot
create mode 100644 arch/arm/mach-pxa/am200epd.c
create mode 100644 arch/arm/mach-pxa/am300epd.c
create mode 100644 arch/arm/mach-pxa/balloon3.c
create mode 100644 arch/arm/mach-pxa/capc7117.c
create mode 100644 arch/arm/mach-pxa/clock-pxa2xx.c
create mode 100644 arch/arm/mach-pxa/clock-pxa3xx.c
create mode 100644 arch/arm/mach-pxa/clock.c
create mode 100644 arch/arm/mach-pxa/clock.h
create mode 100644 arch/arm/mach-pxa/cm-x255.c
create mode 100644 arch/arm/mach-pxa/cm-x270.c
create mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.c
create mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.h
create mode 100644 arch/arm/mach-pxa/cm-x2xx.c
create mode 100644 arch/arm/mach-pxa/cm-x300.c
create mode 100644 arch/arm/mach-pxa/colibri-evalboard.c
create mode 100644 arch/arm/mach-pxa/colibri-pxa270-income.c
create mode 100644 arch/arm/mach-pxa/colibri-pxa270.c
create mode 100644 arch/arm/mach-pxa/colibri-pxa300.c
create mode 100644 arch/arm/mach-pxa/colibri-pxa320.c
create mode 100644 arch/arm/mach-pxa/colibri-pxa3xx.c
create mode 100644 arch/arm/mach-pxa/corgi.c
create mode 100644 arch/arm/mach-pxa/corgi_pm.c
create mode 100644 arch/arm/mach-pxa/cpufreq-pxa2xx.c
create mode 100644 arch/arm/mach-pxa/cpufreq-pxa3xx.c
create mode 100644 arch/arm/mach-pxa/csb701.c
create mode 100644 arch/arm/mach-pxa/csb726.c
create mode 100644 arch/arm/mach-pxa/devices.c
create mode 100644 arch/arm/mach-pxa/devices.h
create mode 100644 arch/arm/mach-pxa/em-x270.c
create mode 100644 arch/arm/mach-pxa/eseries.c
create mode 100644 arch/arm/mach-pxa/eseries.h
create mode 100644 arch/arm/mach-pxa/ezx.c
create mode 100644 arch/arm/mach-pxa/generic.c
create mode 100644 arch/arm/mach-pxa/generic.h
create mode 100644 arch/arm/mach-pxa/gumstix.c
create mode 100644 arch/arm/mach-pxa/h5000.c
create mode 100644 arch/arm/mach-pxa/himalaya.c
create mode 100644 arch/arm/mach-pxa/hx4700.c
create mode 100644 arch/arm/mach-pxa/icontrol.c
create mode 100644 arch/arm/mach-pxa/idp.c
create mode 100644 arch/arm/mach-pxa/include/mach/addr-map.h
create mode 100644 arch/arm/mach-pxa/include/mach/arcom-pcmcia.h
create mode 100644 arch/arm/mach-pxa/include/mach/audio.h
create mode 100644 arch/arm/mach-pxa/include/mach/balloon3.h
create mode 100644 arch/arm/mach-pxa/include/mach/bitfield.h
create mode 100644 arch/arm/mach-pxa/include/mach/camera.h
create mode 100644 arch/arm/mach-pxa/include/mach/colibri.h
create mode 100644 arch/arm/mach-pxa/include/mach/corgi.h
create mode 100644 arch/arm/mach-pxa/include/mach/csb726.h
create mode 100644 arch/arm/mach-pxa/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-pxa/include/mach/dma.h
create mode 100644 arch/arm/mach-pxa/include/mach/eseries-gpio.h
create mode 100644 arch/arm/mach-pxa/include/mach/eseries-irq.h
create mode 100644 arch/arm/mach-pxa/include/mach/gpio.h
create mode 100644 arch/arm/mach-pxa/include/mach/gumstix.h
create mode 100644 arch/arm/mach-pxa/include/mach/h5000.h
create mode 100644 arch/arm/mach-pxa/include/mach/hardware.h
create mode 100644 arch/arm/mach-pxa/include/mach/hx4700.h
create mode 100644 arch/arm/mach-pxa/include/mach/idp.h
create mode 100644 arch/arm/mach-pxa/include/mach/io.h
create mode 100644 arch/arm/mach-pxa/include/mach/irda.h
create mode 100644 arch/arm/mach-pxa/include/mach/irqs.h
create mode 100644 arch/arm/mach-pxa/include/mach/littleton.h
create mode 100644 arch/arm/mach-pxa/include/mach/lpd270.h
create mode 100644 arch/arm/mach-pxa/include/mach/lubbock.h
create mode 100644 arch/arm/mach-pxa/include/mach/magician.h
create mode 100644 arch/arm/mach-pxa/include/mach/mainstone.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa25x.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa300.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa320.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp-pxa930.h
create mode 100644 arch/arm/mach-pxa/include/mach/mfp.h
create mode 100644 arch/arm/mach-pxa/include/mach/mioa701.h
create mode 100644 arch/arm/mach-pxa/include/mach/mmc.h
create mode 100644 arch/arm/mach-pxa/include/mach/mtd-xip.h
create mode 100644 arch/arm/mach-pxa/include/mach/mxm8x10.h
create mode 100644 arch/arm/mach-pxa/include/mach/ohci.h
create mode 100644 arch/arm/mach-pxa/include/mach/palm27x.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmasoc.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmld.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmt5.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmtc.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmte2.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmtreo.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmtx.h
create mode 100644 arch/arm/mach-pxa/include/mach/palmz72.h
create mode 100644 arch/arm/mach-pxa/include/mach/pata_pxa.h
create mode 100644 arch/arm/mach-pxa/include/mach/pcm027.h
create mode 100644 arch/arm/mach-pxa/include/mach/pcm990_baseboard.h
create mode 100644 arch/arm/mach-pxa/include/mach/pm.h
create mode 100644 arch/arm/mach-pxa/include/mach/poodle.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa25x-udc.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa25x.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa27x-udc.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa27x.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa2xx-regs.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa300.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa320.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa3xx.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa930.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa930_rotary.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa930_trkball.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxa95x.h
create mode 100644 arch/arm/mach-pxa/include/mach/pxafb.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-ac97.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-lcd.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-ost.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-rtc.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-u2d.h
create mode 100644 arch/arm/mach-pxa/include/mach/regs-uart.h
create mode 100644 arch/arm/mach-pxa/include/mach/reset.h
create mode 100644 arch/arm/mach-pxa/include/mach/sharpsl_pm.h
create mode 100644 arch/arm/mach-pxa/include/mach/smemc.h
create mode 100644 arch/arm/mach-pxa/include/mach/spitz.h
create mode 100644 arch/arm/mach-pxa/include/mach/timex.h
create mode 100644 arch/arm/mach-pxa/include/mach/tosa.h
create mode 100644 arch/arm/mach-pxa/include/mach/tosa_bt.h
create mode 100644 arch/arm/mach-pxa/include/mach/trizeps4.h
create mode 100644 arch/arm/mach-pxa/include/mach/udc.h
create mode 100644 arch/arm/mach-pxa/include/mach/uncompress.h
create mode 100644 arch/arm/mach-pxa/include/mach/viper.h
create mode 100644 arch/arm/mach-pxa/include/mach/vpac270.h
create mode 100644 arch/arm/mach-pxa/include/mach/z2.h
create mode 100644 arch/arm/mach-pxa/include/mach/zeus.h
create mode 100644 arch/arm/mach-pxa/include/mach/zylonite.h
create mode 100644 arch/arm/mach-pxa/irq.c
create mode 100644 arch/arm/mach-pxa/leds-idp.c
create mode 100644 arch/arm/mach-pxa/leds-lubbock.c
create mode 100644 arch/arm/mach-pxa/leds-mainstone.c
create mode 100644 arch/arm/mach-pxa/leds.c
create mode 100644 arch/arm/mach-pxa/leds.h
create mode 100644 arch/arm/mach-pxa/littleton.c
create mode 100644 arch/arm/mach-pxa/lpd270.c
create mode 100644 arch/arm/mach-pxa/lubbock.c
create mode 100644 arch/arm/mach-pxa/magician.c
create mode 100644 arch/arm/mach-pxa/mainstone.c
create mode 100644 arch/arm/mach-pxa/mfp-pxa2xx.c
create mode 100644 arch/arm/mach-pxa/mfp-pxa3xx.c
create mode 100644 arch/arm/mach-pxa/mioa701.c
create mode 100644 arch/arm/mach-pxa/mioa701_bootresume.S
create mode 100644 arch/arm/mach-pxa/mp900.c
create mode 100644 arch/arm/mach-pxa/mxm8x10.c
create mode 100644 arch/arm/mach-pxa/palm27x.c
create mode 100644 arch/arm/mach-pxa/palmld.c
create mode 100644 arch/arm/mach-pxa/palmt5.c
create mode 100644 arch/arm/mach-pxa/palmtc.c
create mode 100644 arch/arm/mach-pxa/palmte2.c
create mode 100644 arch/arm/mach-pxa/palmtreo.c
create mode 100644 arch/arm/mach-pxa/palmtx.c
create mode 100644 arch/arm/mach-pxa/palmz72.c
create mode 100644 arch/arm/mach-pxa/pcm027.c
create mode 100644 arch/arm/mach-pxa/pcm990-baseboard.c
create mode 100644 arch/arm/mach-pxa/pm.c
create mode 100644 arch/arm/mach-pxa/poodle.c
create mode 100644 arch/arm/mach-pxa/pxa25x.c
create mode 100644 arch/arm/mach-pxa/pxa27x.c
create mode 100644 arch/arm/mach-pxa/pxa2xx.c
create mode 100644 arch/arm/mach-pxa/pxa300.c
create mode 100644 arch/arm/mach-pxa/pxa320.c
create mode 100644 arch/arm/mach-pxa/pxa3xx-ulpi.c
create mode 100644 arch/arm/mach-pxa/pxa3xx.c
create mode 100644 arch/arm/mach-pxa/pxa930.c
create mode 100644 arch/arm/mach-pxa/pxa95x.c
create mode 100644 arch/arm/mach-pxa/raumfeld.c
create mode 100644 arch/arm/mach-pxa/reset.c
create mode 100644 arch/arm/mach-pxa/saar.c
create mode 100644 arch/arm/mach-pxa/saarb.c
create mode 100644 arch/arm/mach-pxa/sharpsl_pm.c
create mode 100644 arch/arm/mach-pxa/sleep.S
create mode 100644 arch/arm/mach-pxa/smemc.c
create mode 100644 arch/arm/mach-pxa/spitz.c
create mode 100644 arch/arm/mach-pxa/spitz_pm.c
create mode 100644 arch/arm/mach-pxa/standby.S
create mode 100644 arch/arm/mach-pxa/stargate2.c
create mode 100644 arch/arm/mach-pxa/tavorevb.c
create mode 100644 arch/arm/mach-pxa/tavorevb3.c
create mode 100644 arch/arm/mach-pxa/time.c
create mode 100644 arch/arm/mach-pxa/tosa-bt.c
create mode 100644 arch/arm/mach-pxa/tosa.c
create mode 100644 arch/arm/mach-pxa/trizeps4.c
create mode 100644 arch/arm/mach-pxa/viper.c
create mode 100644 arch/arm/mach-pxa/vpac270.c
create mode 100644 arch/arm/mach-pxa/xcep.c
create mode 100644 arch/arm/mach-pxa/z2.c
create mode 100644 arch/arm/mach-pxa/zeus.c
create mode 100644 arch/arm/mach-pxa/zylonite.c
create mode 100644 arch/arm/mach-pxa/zylonite_pxa300.c
create mode 100644 arch/arm/mach-pxa/zylonite_pxa320.c
create mode 100644 arch/arm/mach-realview/Kconfig
create mode 100644 arch/arm/mach-realview/Makefile
create mode 100644 arch/arm/mach-realview/Makefile.boot
create mode 100644 arch/arm/mach-realview/core.c
create mode 100644 arch/arm/mach-realview/core.h
create mode 100644 arch/arm/mach-realview/hotplug.c
create mode 100644 arch/arm/mach-realview/include/mach/barriers.h
create mode 100644 arch/arm/mach-realview/include/mach/board-eb.h
create mode 100644 arch/arm/mach-realview/include/mach/board-pb1176.h
create mode 100644 arch/arm/mach-realview/include/mach/board-pb11mp.h
create mode 100644 arch/arm/mach-realview/include/mach/board-pba8.h
create mode 100644 arch/arm/mach-realview/include/mach/board-pbx.h
create mode 100644 arch/arm/mach-realview/include/mach/clkdev.h
create mode 100644 arch/arm/mach-realview/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-realview/include/mach/gpio.h
create mode 100644 arch/arm/mach-realview/include/mach/hardware.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs-eb.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs-pb1176.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs-pb11mp.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs-pba8.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs-pbx.h
create mode 100644 arch/arm/mach-realview/include/mach/irqs.h
create mode 100644 arch/arm/mach-realview/include/mach/memory.h
create mode 100644 arch/arm/mach-realview/include/mach/platform.h
create mode 100644 arch/arm/mach-realview/include/mach/timex.h
create mode 100644 arch/arm/mach-realview/include/mach/uncompress.h
create mode 100644 arch/arm/mach-realview/platsmp.c
create mode 100644 arch/arm/mach-realview/realview_eb.c
create mode 100644 arch/arm/mach-realview/realview_pb1176.c
create mode 100644 arch/arm/mach-realview/realview_pb11mp.c
create mode 100644 arch/arm/mach-realview/realview_pba8.c
create mode 100644 arch/arm/mach-realview/realview_pbx.c
create mode 100644 arch/arm/mach-rpc/Makefile
create mode 100644 arch/arm/mach-rpc/Makefile.boot
create mode 100644 arch/arm/mach-rpc/dma.c
create mode 100644 arch/arm/mach-rpc/ecard.c
create mode 100644 arch/arm/mach-rpc/ecard.h
create mode 100644 arch/arm/mach-rpc/fiq.S
create mode 100644 arch/arm/mach-rpc/include/mach/acornfb.h
create mode 100644 arch/arm/mach-rpc/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-rpc/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-rpc/include/mach/hardware.h
create mode 100644 arch/arm/mach-rpc/include/mach/io.h
create mode 100644 arch/arm/mach-rpc/include/mach/irqs.h
create mode 100644 arch/arm/mach-rpc/include/mach/isa-dma.h
create mode 100644 arch/arm/mach-rpc/include/mach/memory.h
create mode 100644 arch/arm/mach-rpc/include/mach/timex.h
create mode 100644 arch/arm/mach-rpc/include/mach/uncompress.h
create mode 100644 arch/arm/mach-rpc/irq.c
create mode 100644 arch/arm/mach-rpc/riscpc.c
create mode 100644 arch/arm/mach-rpc/time.c
create mode 100644 arch/arm/mach-s3c2410/Kconfig
create mode 100644 arch/arm/mach-s3c2410/Makefile
create mode 100644 arch/arm/mach-s3c2410/cpu-freq.c
create mode 100644 arch/arm/mach-s3c2410/pll.c
create mode 100644 arch/arm/mach-s3c2412/Kconfig
create mode 100644 arch/arm/mach-s3c2412/Makefile
create mode 100644 arch/arm/mach-s3c2412/cpu-freq.c
create mode 100644 arch/arm/mach-s3c2412/gpio.c
create mode 100644 arch/arm/mach-s3c2440/Kconfig
create mode 100644 arch/arm/mach-s3c2440/Makefile
create mode 100644 arch/arm/mach-s3c2440/dsc.c
create mode 100644 arch/arm/mach-s3c2440/s3c2440-cpufreq.c
create mode 100644 arch/arm/mach-s3c2440/s3c2440-pll-12000000.c
create mode 100644 arch/arm/mach-s3c2440/s3c2440-pll-16934400.c
create mode 100644 arch/arm/mach-s3c24xx/Kconfig
create mode 100644 arch/arm/mach-s3c24xx/Makefile
create mode 100644 arch/arm/mach-s3c24xx/Makefile.boot
create mode 100644 arch/arm/mach-s3c24xx/bast-ide.c
create mode 100644 arch/arm/mach-s3c24xx/bast-irq.c
create mode 100644 arch/arm/mach-s3c24xx/clock-s3c2412.c
create mode 100644 arch/arm/mach-s3c24xx/clock-s3c2416.c
create mode 100644 arch/arm/mach-s3c24xx/clock-s3c2440.c
create mode 100644 arch/arm/mach-s3c24xx/clock-s3c2443.c
create mode 100644 arch/arm/mach-s3c24xx/clock-s3c244x.c
create mode 100644 arch/arm/mach-s3c24xx/common-s3c2443.c
create mode 100644 arch/arm/mach-s3c24xx/common-smdk.c
create mode 100644 arch/arm/mach-s3c24xx/common.h
create mode 100644 arch/arm/mach-s3c24xx/dma-s3c2410.c
create mode 100644 arch/arm/mach-s3c24xx/dma-s3c2412.c
create mode 100644 arch/arm/mach-s3c24xx/dma-s3c2440.c
create mode 100644 arch/arm/mach-s3c24xx/dma-s3c2443.c
create mode 100644 arch/arm/mach-s3c24xx/h1940-bluetooth.c
create mode 100644 arch/arm/mach-s3c24xx/include/mach/anubis-cpld.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/anubis-irq.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/anubis-map.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/bast-cpld.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/bast-irq.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/bast-map.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/bast-pmu.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-s3c24xx/include/mach/dma.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-s3c24xx/include/mach/fb.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/gpio-fns.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/gpio-nrs.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/gpio-track.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/gta02.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/h1940-latch.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/h1940.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/idle.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/io.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/leds-gpio.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/map.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/osiris-cpld.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/osiris-map.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/otom-map.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/pm-core.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-dsc.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-gpioj.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-lcd.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-mem.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-power.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-s3c2412-mem.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-s3c2412.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-s3c2416-mem.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-s3c2416.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-s3c2443-clock.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/regs-sdi.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/tick.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/timex.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/vr1000-cpld.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/vr1000-irq.h
create mode 100644 arch/arm/mach-s3c24xx/include/mach/vr1000-map.h
create mode 100644 arch/arm/mach-s3c24xx/irq-s3c2412.c
create mode 100644 arch/arm/mach-s3c24xx/irq-s3c2416.c
create mode 100644 arch/arm/mach-s3c24xx/irq-s3c2440.c
create mode 100644 arch/arm/mach-s3c24xx/irq-s3c2443.c
create mode 100644 arch/arm/mach-s3c24xx/irq-s3c244x.c
create mode 100644 arch/arm/mach-s3c24xx/mach-amlm5900.c
create mode 100644 arch/arm/mach-s3c24xx/mach-anubis.c
create mode 100644 arch/arm/mach-s3c24xx/mach-at2440evb.c
create mode 100644 arch/arm/mach-s3c24xx/mach-bast.c
create mode 100644 arch/arm/mach-s3c24xx/mach-gta02.c
create mode 100644 arch/arm/mach-s3c24xx/mach-h1940.c
create mode 100644 arch/arm/mach-s3c24xx/mach-jive.c
create mode 100644 arch/arm/mach-s3c24xx/mach-mini2440.c
create mode 100644 arch/arm/mach-s3c24xx/mach-n30.c
create mode 100644 arch/arm/mach-s3c24xx/mach-nexcoder.c
create mode 100644 arch/arm/mach-s3c24xx/mach-osiris-dvs.c
create mode 100644 arch/arm/mach-s3c24xx/mach-osiris.c
create mode 100644 arch/arm/mach-s3c24xx/mach-otom.c
create mode 100644 arch/arm/mach-s3c24xx/mach-qt2410.c
create mode 100644 arch/arm/mach-s3c24xx/mach-rx1950.c
create mode 100644 arch/arm/mach-s3c24xx/mach-rx3715.c
create mode 100644 arch/arm/mach-s3c24xx/mach-smdk2410.c
create mode 100644 arch/arm/mach-s3c24xx/mach-smdk2413.c
create mode 100644 arch/arm/mach-s3c24xx/mach-smdk2416.c
create mode 100644 arch/arm/mach-s3c24xx/mach-smdk2440.c
create mode 100644 arch/arm/mach-s3c24xx/mach-smdk2443.c
create mode 100644 arch/arm/mach-s3c24xx/mach-tct_hammer.c
create mode 100644 arch/arm/mach-s3c24xx/mach-vr1000.c
create mode 100644 arch/arm/mach-s3c24xx/mach-vstms.c
create mode 100644 arch/arm/mach-s3c24xx/pm-h1940.S
create mode 100644 arch/arm/mach-s3c24xx/pm-s3c2410.c
create mode 100644 arch/arm/mach-s3c24xx/pm-s3c2412.c
create mode 100644 arch/arm/mach-s3c24xx/pm-s3c2416.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2410.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2412.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2416.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2440.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2442.c
create mode 100644 arch/arm/mach-s3c24xx/s3c2443.c
create mode 100644 arch/arm/mach-s3c24xx/s3c244x.c
create mode 100644 arch/arm/mach-s3c24xx/setup-i2c.c
create mode 100644 arch/arm/mach-s3c24xx/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-s3c24xx/setup-ts.c
create mode 100644 arch/arm/mach-s3c24xx/simtec-audio.c
create mode 100644 arch/arm/mach-s3c24xx/simtec-nor.c
create mode 100644 arch/arm/mach-s3c24xx/simtec-pm.c
create mode 100644 arch/arm/mach-s3c24xx/simtec-usb.c
create mode 100644 arch/arm/mach-s3c24xx/simtec.h
create mode 100644 arch/arm/mach-s3c24xx/sleep-s3c2410.S
create mode 100644 arch/arm/mach-s3c24xx/sleep-s3c2412.S
create mode 100644 arch/arm/mach-s3c64xx/Kconfig
create mode 100644 arch/arm/mach-s3c64xx/Makefile
create mode 100644 arch/arm/mach-s3c64xx/Makefile.boot
create mode 100644 arch/arm/mach-s3c64xx/clock.c
create mode 100644 arch/arm/mach-s3c64xx/common.c
create mode 100644 arch/arm/mach-s3c64xx/common.h
create mode 100644 arch/arm/mach-s3c64xx/cpuidle.c
create mode 100644 arch/arm/mach-s3c64xx/dev-audio.c
create mode 100644 arch/arm/mach-s3c64xx/dev-uart.c
create mode 100644 arch/arm/mach-s3c64xx/dma.c
create mode 100644 arch/arm/mach-s3c64xx/include/mach/crag6410.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-s3c64xx/include/mach/dma.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/map.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/pm-core.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-gpio-memport.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-modem.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-srom.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-sys.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/regs-syscon-power.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/spi-clocks.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/tick.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/timex.h
create mode 100644 arch/arm/mach-s3c64xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-s3c64xx/irq-pm.c
create mode 100644 arch/arm/mach-s3c64xx/mach-anw6410.c
create mode 100644 arch/arm/mach-s3c64xx/mach-crag6410-module.c
create mode 100644 arch/arm/mach-s3c64xx/mach-crag6410.c
create mode 100644 arch/arm/mach-s3c64xx/mach-hmt.c
create mode 100644 arch/arm/mach-s3c64xx/mach-mini6410.c
create mode 100644 arch/arm/mach-s3c64xx/mach-ncp.c
create mode 100644 arch/arm/mach-s3c64xx/mach-real6410.c
create mode 100644 arch/arm/mach-s3c64xx/mach-smartq.c
create mode 100644 arch/arm/mach-s3c64xx/mach-smartq.h
create mode 100644 arch/arm/mach-s3c64xx/mach-smartq5.c
create mode 100644 arch/arm/mach-s3c64xx/mach-smartq7.c
create mode 100644 arch/arm/mach-s3c64xx/mach-smdk6400.c
create mode 100644 arch/arm/mach-s3c64xx/mach-smdk6410.c
create mode 100644 arch/arm/mach-s3c64xx/pm.c
create mode 100644 arch/arm/mach-s3c64xx/s3c6400.c
create mode 100644 arch/arm/mach-s3c64xx/s3c6410.c
create mode 100644 arch/arm/mach-s3c64xx/setup-fb-24bpp.c
create mode 100644 arch/arm/mach-s3c64xx/setup-i2c0.c
create mode 100644 arch/arm/mach-s3c64xx/setup-i2c1.c
create mode 100644 arch/arm/mach-s3c64xx/setup-ide.c
create mode 100644 arch/arm/mach-s3c64xx/setup-keypad.c
create mode 100644 arch/arm/mach-s3c64xx/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-s3c64xx/setup-spi.c
create mode 100644 arch/arm/mach-s3c64xx/setup-usb-phy.c
create mode 100644 arch/arm/mach-s3c64xx/sleep.S
create mode 100644 arch/arm/mach-s5p64x0/Kconfig
create mode 100644 arch/arm/mach-s5p64x0/Makefile
create mode 100644 arch/arm/mach-s5p64x0/Makefile.boot
create mode 100644 arch/arm/mach-s5p64x0/clock-s5p6440.c
create mode 100644 arch/arm/mach-s5p64x0/clock-s5p6450.c
create mode 100644 arch/arm/mach-s5p64x0/clock.c
create mode 100644 arch/arm/mach-s5p64x0/common.c
create mode 100644 arch/arm/mach-s5p64x0/common.h
create mode 100644 arch/arm/mach-s5p64x0/dev-audio.c
create mode 100644 arch/arm/mach-s5p64x0/dma.c
create mode 100644 arch/arm/mach-s5p64x0/gpiolib.c
create mode 100644 arch/arm/mach-s5p64x0/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-s5p64x0/include/mach/dma.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/gpio.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/hardware.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/i2c.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/irqs.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/map.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/pm-core.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/s5p64x0-clock.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/spi-clocks.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/tick.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/timex.h
create mode 100644 arch/arm/mach-s5p64x0/include/mach/uncompress.h
create mode 100644 arch/arm/mach-s5p64x0/irq-pm.c
create mode 100644 arch/arm/mach-s5p64x0/mach-smdk6440.c
create mode 100644 arch/arm/mach-s5p64x0/mach-smdk6450.c
create mode 100644 arch/arm/mach-s5p64x0/pm.c
create mode 100644 arch/arm/mach-s5p64x0/setup-fb-24bpp.c
create mode 100644 arch/arm/mach-s5p64x0/setup-i2c0.c
create mode 100644 arch/arm/mach-s5p64x0/setup-i2c1.c
create mode 100644 arch/arm/mach-s5p64x0/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-s5p64x0/setup-spi.c
create mode 100644 arch/arm/mach-s5pc100/Kconfig
create mode 100644 arch/arm/mach-s5pc100/Makefile
create mode 100644 arch/arm/mach-s5pc100/Makefile.boot
create mode 100644 arch/arm/mach-s5pc100/clock.c
create mode 100644 arch/arm/mach-s5pc100/common.c
create mode 100644 arch/arm/mach-s5pc100/common.h
create mode 100644 arch/arm/mach-s5pc100/dev-audio.c
create mode 100644 arch/arm/mach-s5pc100/dma.c
create mode 100644 arch/arm/mach-s5pc100/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-s5pc100/include/mach/dma.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-s5pc100/include/mach/gpio.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/hardware.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/irqs.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/map.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/spi-clocks.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/tick.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/timex.h
create mode 100644 arch/arm/mach-s5pc100/include/mach/uncompress.h
create mode 100644 arch/arm/mach-s5pc100/mach-smdkc100.c
create mode 100644 arch/arm/mach-s5pc100/setup-fb-24bpp.c
create mode 100644 arch/arm/mach-s5pc100/setup-i2c0.c
create mode 100644 arch/arm/mach-s5pc100/setup-i2c1.c
create mode 100644 arch/arm/mach-s5pc100/setup-ide.c
create mode 100644 arch/arm/mach-s5pc100/setup-keypad.c
create mode 100644 arch/arm/mach-s5pc100/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-s5pc100/setup-spi.c
create mode 100644 arch/arm/mach-s5pv210/Kconfig
create mode 100644 arch/arm/mach-s5pv210/Makefile
create mode 100644 arch/arm/mach-s5pv210/Makefile.boot
create mode 100644 arch/arm/mach-s5pv210/clock.c
create mode 100644 arch/arm/mach-s5pv210/common.c
create mode 100644 arch/arm/mach-s5pv210/common.h
create mode 100644 arch/arm/mach-s5pv210/dev-audio.c
create mode 100644 arch/arm/mach-s5pv210/dma.c
create mode 100644 arch/arm/mach-s5pv210/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-s5pv210/include/mach/dma.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/gpio.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/hardware.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/irqs.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/map.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/memory.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/pm-core.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-audss.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-gpio.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-sys.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/spi-clocks.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/tick.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/timex.h
create mode 100644 arch/arm/mach-s5pv210/include/mach/uncompress.h
create mode 100644 arch/arm/mach-s5pv210/mach-aquila.c
create mode 100644 arch/arm/mach-s5pv210/mach-goni.c
create mode 100644 arch/arm/mach-s5pv210/mach-smdkc110.c
create mode 100644 arch/arm/mach-s5pv210/mach-smdkv210.c
create mode 100644 arch/arm/mach-s5pv210/mach-torbreck.c
create mode 100644 arch/arm/mach-s5pv210/pm.c
create mode 100644 arch/arm/mach-s5pv210/setup-fb-24bpp.c
create mode 100644 arch/arm/mach-s5pv210/setup-fimc.c
create mode 100644 arch/arm/mach-s5pv210/setup-i2c0.c
create mode 100644 arch/arm/mach-s5pv210/setup-i2c1.c
create mode 100644 arch/arm/mach-s5pv210/setup-i2c2.c
create mode 100644 arch/arm/mach-s5pv210/setup-ide.c
create mode 100644 arch/arm/mach-s5pv210/setup-keypad.c
create mode 100644 arch/arm/mach-s5pv210/setup-sdhci-gpio.c
create mode 100644 arch/arm/mach-s5pv210/setup-spi.c
create mode 100644 arch/arm/mach-s5pv210/setup-usb-phy.c
create mode 100644 arch/arm/mach-sa1100/Kconfig
create mode 100644 arch/arm/mach-sa1100/Makefile
create mode 100644 arch/arm/mach-sa1100/Makefile.boot
create mode 100644 arch/arm/mach-sa1100/assabet.c
create mode 100644 arch/arm/mach-sa1100/badge4.c
create mode 100644 arch/arm/mach-sa1100/cerf.c
create mode 100644 arch/arm/mach-sa1100/clock.c
create mode 100644 arch/arm/mach-sa1100/collie.c
create mode 100644 arch/arm/mach-sa1100/cpu-sa1100.c
create mode 100644 arch/arm/mach-sa1100/cpu-sa1110.c
create mode 100644 arch/arm/mach-sa1100/generic.c
create mode 100644 arch/arm/mach-sa1100/generic.h
create mode 100644 arch/arm/mach-sa1100/h3100.c
create mode 100644 arch/arm/mach-sa1100/h3600.c
create mode 100644 arch/arm/mach-sa1100/h3xxx.c
create mode 100644 arch/arm/mach-sa1100/hackkit.c
create mode 100644 arch/arm/mach-sa1100/include/mach/SA-1100.h
create mode 100644 arch/arm/mach-sa1100/include/mach/SA-1101.h
create mode 100644 arch/arm/mach-sa1100/include/mach/SA-1111.h
create mode 100644 arch/arm/mach-sa1100/include/mach/assabet.h
create mode 100644 arch/arm/mach-sa1100/include/mach/badge4.h
create mode 100644 arch/arm/mach-sa1100/include/mach/bitfield.h
create mode 100644 arch/arm/mach-sa1100/include/mach/cerf.h
create mode 100644 arch/arm/mach-sa1100/include/mach/collie.h
create mode 100644 arch/arm/mach-sa1100/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-sa1100/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-sa1100/include/mach/gpio.h
create mode 100644 arch/arm/mach-sa1100/include/mach/h3xxx.h
create mode 100644 arch/arm/mach-sa1100/include/mach/hardware.h
create mode 100644 arch/arm/mach-sa1100/include/mach/irqs.h
create mode 100644 arch/arm/mach-sa1100/include/mach/jornada720.h
create mode 100644 arch/arm/mach-sa1100/include/mach/lart.h
create mode 100644 arch/arm/mach-sa1100/include/mach/mcp.h
create mode 100644 arch/arm/mach-sa1100/include/mach/memory.h
create mode 100644 arch/arm/mach-sa1100/include/mach/mtd-xip.h
create mode 100644 arch/arm/mach-sa1100/include/mach/nanoengine.h
create mode 100644 arch/arm/mach-sa1100/include/mach/neponset.h
create mode 100644 arch/arm/mach-sa1100/include/mach/reset.h
create mode 100644 arch/arm/mach-sa1100/include/mach/shannon.h
create mode 100644 arch/arm/mach-sa1100/include/mach/simpad.h
create mode 100644 arch/arm/mach-sa1100/include/mach/timex.h
create mode 100644 arch/arm/mach-sa1100/include/mach/uncompress.h
create mode 100644 arch/arm/mach-sa1100/irq.c
create mode 100644 arch/arm/mach-sa1100/jornada720.c
create mode 100644 arch/arm/mach-sa1100/jornada720_ssp.c
create mode 100644 arch/arm/mach-sa1100/lart.c
create mode 100644 arch/arm/mach-sa1100/leds-assabet.c
create mode 100644 arch/arm/mach-sa1100/leds-badge4.c
create mode 100644 arch/arm/mach-sa1100/leds-cerf.c
create mode 100644 arch/arm/mach-sa1100/leds-hackkit.c
create mode 100644 arch/arm/mach-sa1100/leds-lart.c
create mode 100644 arch/arm/mach-sa1100/leds.c
create mode 100644 arch/arm/mach-sa1100/leds.h
create mode 100644 arch/arm/mach-sa1100/nanoengine.c
create mode 100644 arch/arm/mach-sa1100/neponset.c
create mode 100644 arch/arm/mach-sa1100/pci-nanoengine.c
create mode 100644 arch/arm/mach-sa1100/pleb.c
create mode 100644 arch/arm/mach-sa1100/pm.c
create mode 100644 arch/arm/mach-sa1100/shannon.c
create mode 100644 arch/arm/mach-sa1100/simpad.c
create mode 100644 arch/arm/mach-sa1100/sleep.S
create mode 100644 arch/arm/mach-sa1100/ssp.c
create mode 100644 arch/arm/mach-sa1100/time.c
create mode 100644 arch/arm/mach-shark/Makefile
create mode 100644 arch/arm/mach-shark/Makefile.boot
create mode 100644 arch/arm/mach-shark/core.c
create mode 100644 arch/arm/mach-shark/dma.c
create mode 100644 arch/arm/mach-shark/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-shark/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-shark/include/mach/framebuffer.h
create mode 100644 arch/arm/mach-shark/include/mach/hardware.h
create mode 100644 arch/arm/mach-shark/include/mach/io.h
create mode 100644 arch/arm/mach-shark/include/mach/irqs.h
create mode 100644 arch/arm/mach-shark/include/mach/isa-dma.h
create mode 100644 arch/arm/mach-shark/include/mach/memory.h
create mode 100644 arch/arm/mach-shark/include/mach/timex.h
create mode 100644 arch/arm/mach-shark/include/mach/uncompress.h
create mode 100644 arch/arm/mach-shark/irq.c
create mode 100644 arch/arm/mach-shark/leds.c
create mode 100644 arch/arm/mach-shark/pci.c
create mode 100644 arch/arm/mach-shmobile/Kconfig
create mode 100644 arch/arm/mach-shmobile/Makefile
create mode 100644 arch/arm/mach-shmobile/Makefile.boot
create mode 100644 arch/arm/mach-shmobile/board-ag5evm.c
create mode 100644 arch/arm/mach-shmobile/board-ap4evb.c
create mode 100644 arch/arm/mach-shmobile/board-bonito.c
create mode 100644 arch/arm/mach-shmobile/board-g3evm.c
create mode 100644 arch/arm/mach-shmobile/board-g4evm.c
create mode 100644 arch/arm/mach-shmobile/board-kota2.c
create mode 100644 arch/arm/mach-shmobile/board-mackerel.c
create mode 100644 arch/arm/mach-shmobile/board-marzen.c
create mode 100644 arch/arm/mach-shmobile/clock-r8a7740.c
create mode 100644 arch/arm/mach-shmobile/clock-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/clock-sh7367.c
create mode 100644 arch/arm/mach-shmobile/clock-sh7372.c
create mode 100644 arch/arm/mach-shmobile/clock-sh7377.c
create mode 100644 arch/arm/mach-shmobile/clock-sh73a0.c
create mode 100644 arch/arm/mach-shmobile/clock.c
create mode 100644 arch/arm/mach-shmobile/console.c
create mode 100644 arch/arm/mach-shmobile/cpuidle.c
create mode 100644 arch/arm/mach-shmobile/entry-intc.S
create mode 100644 arch/arm/mach-shmobile/headsmp.S
create mode 100644 arch/arm/mach-shmobile/hotplug.c
create mode 100644 arch/arm/mach-shmobile/include/mach/clkdev.h
create mode 100644 arch/arm/mach-shmobile/include/mach/common.h
create mode 100644 arch/arm/mach-shmobile/include/mach/dma.h
create mode 100644 arch/arm/mach-shmobile/include/mach/gpio.h
create mode 100644 arch/arm/mach-shmobile/include/mach/hardware.h
create mode 100644 arch/arm/mach-shmobile/include/mach/head-ap4evb.txt
create mode 100644 arch/arm/mach-shmobile/include/mach/head-mackerel.txt
create mode 100644 arch/arm/mach-shmobile/include/mach/intc.h
create mode 100644 arch/arm/mach-shmobile/include/mach/irqs.h
create mode 100644 arch/arm/mach-shmobile/include/mach/memory.h
create mode 100644 arch/arm/mach-shmobile/include/mach/mmc-ap4eb.h
create mode 100644 arch/arm/mach-shmobile/include/mach/mmc-mackerel.h
create mode 100644 arch/arm/mach-shmobile/include/mach/mmc.h
create mode 100644 arch/arm/mach-shmobile/include/mach/r8a7740.h
create mode 100644 arch/arm/mach-shmobile/include/mach/r8a7779.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sdhi-sh7372.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sdhi.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sh7367.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sh7372.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sh7377.h
create mode 100644 arch/arm/mach-shmobile/include/mach/sh73a0.h
create mode 100644 arch/arm/mach-shmobile/include/mach/system.h
create mode 100644 arch/arm/mach-shmobile/include/mach/timex.h
create mode 100644 arch/arm/mach-shmobile/include/mach/uncompress.h
create mode 100644 arch/arm/mach-shmobile/include/mach/zboot.h
create mode 100644 arch/arm/mach-shmobile/include/mach/zboot_macros.h
create mode 100644 arch/arm/mach-shmobile/intc-r8a7740.c
create mode 100644 arch/arm/mach-shmobile/intc-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/intc-sh7367.c
create mode 100644 arch/arm/mach-shmobile/intc-sh7372.c
create mode 100644 arch/arm/mach-shmobile/intc-sh7377.c
create mode 100644 arch/arm/mach-shmobile/intc-sh73a0.c
create mode 100644 arch/arm/mach-shmobile/pfc-r8a7740.c
create mode 100644 arch/arm/mach-shmobile/pfc-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/pfc-sh7367.c
create mode 100644 arch/arm/mach-shmobile/pfc-sh7372.c
create mode 100644 arch/arm/mach-shmobile/pfc-sh7377.c
create mode 100644 arch/arm/mach-shmobile/pfc-sh73a0.c
create mode 100644 arch/arm/mach-shmobile/platsmp.c
create mode 100644 arch/arm/mach-shmobile/pm-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/pm-sh7372.c
create mode 100644 arch/arm/mach-shmobile/setup-r8a7740.c
create mode 100644 arch/arm/mach-shmobile/setup-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/setup-sh7367.c
create mode 100644 arch/arm/mach-shmobile/setup-sh7372.c
create mode 100644 arch/arm/mach-shmobile/setup-sh7377.c
create mode 100644 arch/arm/mach-shmobile/setup-sh73a0.c
create mode 100644 arch/arm/mach-shmobile/sleep-sh7372.S
create mode 100644 arch/arm/mach-shmobile/smp-r8a7779.c
create mode 100644 arch/arm/mach-shmobile/smp-sh73a0.c
create mode 100644 arch/arm/mach-shmobile/suspend.c
create mode 100644 arch/arm/mach-shmobile/timer.c
create mode 100644 arch/arm/mach-spear3xx/Kconfig
create mode 100644 arch/arm/mach-spear3xx/Makefile
create mode 100644 arch/arm/mach-spear3xx/Makefile.boot
create mode 100644 arch/arm/mach-spear3xx/clock.c
create mode 100644 arch/arm/mach-spear3xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-spear3xx/include/mach/generic.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/misc_regs.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/spear.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/spear300.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/spear310.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/spear320.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/timex.h
create mode 100644 arch/arm/mach-spear3xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-spear3xx/spear300.c
create mode 100644 arch/arm/mach-spear3xx/spear300_evb.c
create mode 100644 arch/arm/mach-spear3xx/spear310.c
create mode 100644 arch/arm/mach-spear3xx/spear310_evb.c
create mode 100644 arch/arm/mach-spear3xx/spear320.c
create mode 100644 arch/arm/mach-spear3xx/spear320_evb.c
create mode 100644 arch/arm/mach-spear3xx/spear3xx.c
create mode 100644 arch/arm/mach-spear6xx/Kconfig
create mode 100644 arch/arm/mach-spear6xx/Makefile
create mode 100644 arch/arm/mach-spear6xx/Makefile.boot
create mode 100644 arch/arm/mach-spear6xx/clock.c
create mode 100644 arch/arm/mach-spear6xx/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-spear6xx/include/mach/generic.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/gpio.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/hardware.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/irqs.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/misc_regs.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/spear.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/spear600.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/timex.h
create mode 100644 arch/arm/mach-spear6xx/include/mach/uncompress.h
create mode 100644 arch/arm/mach-spear6xx/spear6xx.c
create mode 100644 arch/arm/mach-tegra/Kconfig
create mode 100644 arch/arm/mach-tegra/Makefile
create mode 100644 arch/arm/mach-tegra/Makefile.boot
create mode 100644 arch/arm/mach-tegra/apbio.c
create mode 100644 arch/arm/mach-tegra/apbio.h
create mode 100644 arch/arm/mach-tegra/board-dt-tegra20.c
create mode 100644 arch/arm/mach-tegra/board-dt-tegra30.c
create mode 100644 arch/arm/mach-tegra/board-harmony-pcie.c
create mode 100644 arch/arm/mach-tegra/board-harmony-pinmux.c
create mode 100644 arch/arm/mach-tegra/board-harmony-power.c
create mode 100644 arch/arm/mach-tegra/board-harmony.c
create mode 100644 arch/arm/mach-tegra/board-harmony.h
create mode 100644 arch/arm/mach-tegra/board-paz00-pinmux.c
create mode 100644 arch/arm/mach-tegra/board-paz00.c
create mode 100644 arch/arm/mach-tegra/board-paz00.h
create mode 100644 arch/arm/mach-tegra/board-pinmux.c
create mode 100644 arch/arm/mach-tegra/board-pinmux.h
create mode 100644 arch/arm/mach-tegra/board-seaboard-pinmux.c
create mode 100644 arch/arm/mach-tegra/board-seaboard.c
create mode 100644 arch/arm/mach-tegra/board-seaboard.h
create mode 100644 arch/arm/mach-tegra/board-trimslice-pinmux.c
create mode 100644 arch/arm/mach-tegra/board-trimslice.c
create mode 100644 arch/arm/mach-tegra/board-trimslice.h
create mode 100644 arch/arm/mach-tegra/board.h
create mode 100644 arch/arm/mach-tegra/clock.c
create mode 100644 arch/arm/mach-tegra/clock.h
create mode 100644 arch/arm/mach-tegra/common.c
create mode 100644 arch/arm/mach-tegra/cpu-tegra.c
create mode 100644 arch/arm/mach-tegra/cpuidle.c
create mode 100644 arch/arm/mach-tegra/devices.c
create mode 100644 arch/arm/mach-tegra/devices.h
create mode 100644 arch/arm/mach-tegra/dma.c
create mode 100644 arch/arm/mach-tegra/flowctrl.c
create mode 100644 arch/arm/mach-tegra/flowctrl.h
create mode 100644 arch/arm/mach-tegra/fuse.c
create mode 100644 arch/arm/mach-tegra/fuse.h
create mode 100644 arch/arm/mach-tegra/gpio-names.h
create mode 100644 arch/arm/mach-tegra/headsmp.S
create mode 100644 arch/arm/mach-tegra/hotplug.c
create mode 100644 arch/arm/mach-tegra/include/mach/clk.h
create mode 100644 arch/arm/mach-tegra/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-tegra/include/mach/dma.h
create mode 100644 arch/arm/mach-tegra/include/mach/gpio-tegra.h
create mode 100644 arch/arm/mach-tegra/include/mach/gpio.h
create mode 100644 arch/arm/mach-tegra/include/mach/io.h
create mode 100644 arch/arm/mach-tegra/include/mach/iomap.h
create mode 100644 arch/arm/mach-tegra/include/mach/irammap.h
create mode 100644 arch/arm/mach-tegra/include/mach/irqs.h
create mode 100644 arch/arm/mach-tegra/include/mach/kbc.h
create mode 100644 arch/arm/mach-tegra/include/mach/pinconf-tegra.h
create mode 100644 arch/arm/mach-tegra/include/mach/pinmux-tegra20.h
create mode 100644 arch/arm/mach-tegra/include/mach/pinmux-tegra30.h
create mode 100644 arch/arm/mach-tegra/include/mach/pinmux.h
create mode 100644 arch/arm/mach-tegra/include/mach/powergate.h
create mode 100644 arch/arm/mach-tegra/include/mach/sdhci.h
create mode 100644 arch/arm/mach-tegra/include/mach/smmu.h
create mode 100644 arch/arm/mach-tegra/include/mach/suspend.h
create mode 100644 arch/arm/mach-tegra/include/mach/tegra_wm8903_pdata.h
create mode 100644 arch/arm/mach-tegra/include/mach/timex.h
create mode 100644 arch/arm/mach-tegra/include/mach/uncompress.h
create mode 100644 arch/arm/mach-tegra/include/mach/usb_phy.h
create mode 100644 arch/arm/mach-tegra/io.c
create mode 100644 arch/arm/mach-tegra/irq.c
create mode 100644 arch/arm/mach-tegra/pcie.c
create mode 100644 arch/arm/mach-tegra/pinmux-tegra20-tables.c
create mode 100644 arch/arm/mach-tegra/pinmux-tegra30-tables.c
create mode 100644 arch/arm/mach-tegra/pinmux.c
create mode 100644 arch/arm/mach-tegra/platsmp.c
create mode 100644 arch/arm/mach-tegra/pmc.c
create mode 100644 arch/arm/mach-tegra/pmc.h
create mode 100644 arch/arm/mach-tegra/powergate.c
create mode 100644 arch/arm/mach-tegra/reset.c
create mode 100644 arch/arm/mach-tegra/reset.h
create mode 100644 arch/arm/mach-tegra/sleep.S
create mode 100644 arch/arm/mach-tegra/tegra2_clocks.c
create mode 100644 arch/arm/mach-tegra/tegra2_emc.c
create mode 100644 arch/arm/mach-tegra/tegra2_emc.h
create mode 100644 arch/arm/mach-tegra/tegra30_clocks.c
create mode 100644 arch/arm/mach-tegra/timer.c
create mode 100644 arch/arm/mach-tegra/usb_phy.c
create mode 100644 arch/arm/mach-u300/Kconfig
create mode 100644 arch/arm/mach-u300/Makefile
create mode 100644 arch/arm/mach-u300/Makefile.boot
create mode 100644 arch/arm/mach-u300/clock.c
create mode 100644 arch/arm/mach-u300/clock.h
create mode 100644 arch/arm/mach-u300/core.c
create mode 100644 arch/arm/mach-u300/dummyspichip.c
create mode 100644 arch/arm/mach-u300/i2c.c
create mode 100644 arch/arm/mach-u300/i2c.h
create mode 100644 arch/arm/mach-u300/include/mach/clkdev.h
create mode 100644 arch/arm/mach-u300/include/mach/coh901318.h
create mode 100644 arch/arm/mach-u300/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-u300/include/mach/dma_channels.h
create mode 100644 arch/arm/mach-u300/include/mach/gpio-u300.h
create mode 100644 arch/arm/mach-u300/include/mach/gpio.h
create mode 100644 arch/arm/mach-u300/include/mach/hardware.h
create mode 100644 arch/arm/mach-u300/include/mach/irqs.h
create mode 100644 arch/arm/mach-u300/include/mach/platform.h
create mode 100644 arch/arm/mach-u300/include/mach/syscon.h
create mode 100644 arch/arm/mach-u300/include/mach/timex.h
create mode 100644 arch/arm/mach-u300/include/mach/u300-regs.h
create mode 100644 arch/arm/mach-u300/include/mach/uncompress.h
create mode 100644 arch/arm/mach-u300/regulator.c
create mode 100644 arch/arm/mach-u300/spi.c
create mode 100644 arch/arm/mach-u300/spi.h
create mode 100644 arch/arm/mach-u300/timer.c
create mode 100644 arch/arm/mach-u300/u300-gpio.h
create mode 100644 arch/arm/mach-u300/u300.c
create mode 100644 arch/arm/mach-ux500/Kconfig
create mode 100644 arch/arm/mach-ux500/Makefile
create mode 100644 arch/arm/mach-ux500/Makefile.boot
create mode 100644 arch/arm/mach-ux500/board-mop500-pins.c
create mode 100644 arch/arm/mach-ux500/board-mop500-regulators.c
create mode 100644 arch/arm/mach-ux500/board-mop500-regulators.h
create mode 100644 arch/arm/mach-ux500/board-mop500-sdi.c
create mode 100644 arch/arm/mach-ux500/board-mop500-stuib.c
create mode 100644 arch/arm/mach-ux500/board-mop500-u8500uib.c
create mode 100644 arch/arm/mach-ux500/board-mop500-uib.c
create mode 100644 arch/arm/mach-ux500/board-mop500.c
create mode 100644 arch/arm/mach-ux500/board-mop500.h
create mode 100644 arch/arm/mach-ux500/board-u5500-sdi.c
create mode 100644 arch/arm/mach-ux500/board-u5500.c
create mode 100644 arch/arm/mach-ux500/cache-l2x0.c
create mode 100644 arch/arm/mach-ux500/clock.c
create mode 100644 arch/arm/mach-ux500/clock.h
create mode 100644 arch/arm/mach-ux500/cpu-db5500.c
create mode 100644 arch/arm/mach-ux500/cpu-db8500.c
create mode 100644 arch/arm/mach-ux500/cpu.c
create mode 100644 arch/arm/mach-ux500/devices-common.c
create mode 100644 arch/arm/mach-ux500/devices-common.h
create mode 100644 arch/arm/mach-ux500/devices-db5500.h
create mode 100644 arch/arm/mach-ux500/devices-db8500.c
create mode 100644 arch/arm/mach-ux500/devices-db8500.h
create mode 100644 arch/arm/mach-ux500/devices.c
create mode 100644 arch/arm/mach-ux500/dma-db5500.c
create mode 100644 arch/arm/mach-ux500/headsmp.S
create mode 100644 arch/arm/mach-ux500/hotplug.c
create mode 100644 arch/arm/mach-ux500/id.c
create mode 100644 arch/arm/mach-ux500/include/mach/db5500-regs.h
create mode 100644 arch/arm/mach-ux500/include/mach/db8500-regs.h
create mode 100644 arch/arm/mach-ux500/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-ux500/include/mach/devices.h
create mode 100644 arch/arm/mach-ux500/include/mach/gpio.h
create mode 100644 arch/arm/mach-ux500/include/mach/hardware.h
create mode 100644 arch/arm/mach-ux500/include/mach/id.h
create mode 100644 arch/arm/mach-ux500/include/mach/irqs-board-mop500.h
create mode 100644 arch/arm/mach-ux500/include/mach/irqs-board-u5500.h
create mode 100644 arch/arm/mach-ux500/include/mach/irqs-db5500.h
create mode 100644 arch/arm/mach-ux500/include/mach/irqs-db8500.h
create mode 100644 arch/arm/mach-ux500/include/mach/irqs.h
create mode 100644 arch/arm/mach-ux500/include/mach/mbox-db5500.h
create mode 100644 arch/arm/mach-ux500/include/mach/setup.h
create mode 100644 arch/arm/mach-ux500/include/mach/timex.h
create mode 100644 arch/arm/mach-ux500/include/mach/uncompress.h
create mode 100644 arch/arm/mach-ux500/include/mach/usb.h
create mode 100644 arch/arm/mach-ux500/mbox-db5500.c
create mode 100644 arch/arm/mach-ux500/modem-irq-db5500.c
create mode 100644 arch/arm/mach-ux500/pins-db5500.h
create mode 100644 arch/arm/mach-ux500/pins-db8500.h
create mode 100644 arch/arm/mach-ux500/platsmp.c
create mode 100644 arch/arm/mach-ux500/ste-dma40-db5500.h
create mode 100644 arch/arm/mach-ux500/ste-dma40-db8500.h
create mode 100644 arch/arm/mach-ux500/timer.c
create mode 100644 arch/arm/mach-ux500/usb.c
create mode 100644 arch/arm/mach-versatile/Kconfig
create mode 100644 arch/arm/mach-versatile/Makefile
create mode 100644 arch/arm/mach-versatile/Makefile.boot
create mode 100644 arch/arm/mach-versatile/core.c
create mode 100644 arch/arm/mach-versatile/core.h
create mode 100644 arch/arm/mach-versatile/include/mach/clkdev.h
create mode 100644 arch/arm/mach-versatile/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-versatile/include/mach/gpio.h
create mode 100644 arch/arm/mach-versatile/include/mach/hardware.h
create mode 100644 arch/arm/mach-versatile/include/mach/irqs.h
create mode 100644 arch/arm/mach-versatile/include/mach/platform.h
create mode 100644 arch/arm/mach-versatile/include/mach/timex.h
create mode 100644 arch/arm/mach-versatile/include/mach/uncompress.h
create mode 100644 arch/arm/mach-versatile/pci.c
create mode 100644 arch/arm/mach-versatile/versatile_ab.c
create mode 100644 arch/arm/mach-versatile/versatile_dt.c
create mode 100644 arch/arm/mach-versatile/versatile_pb.c
create mode 100644 arch/arm/mach-vexpress/Kconfig
create mode 100644 arch/arm/mach-vexpress/Makefile
create mode 100644 arch/arm/mach-vexpress/Makefile.boot
create mode 100644 arch/arm/mach-vexpress/core.h
create mode 100644 arch/arm/mach-vexpress/ct-ca9x4.c
create mode 100644 arch/arm/mach-vexpress/hotplug.c
create mode 100644 arch/arm/mach-vexpress/include/mach/clkdev.h
create mode 100644 arch/arm/mach-vexpress/include/mach/ct-ca9x4.h
create mode 100644 arch/arm/mach-vexpress/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-vexpress/include/mach/gpio.h
create mode 100644 arch/arm/mach-vexpress/include/mach/hardware.h
create mode 100644 arch/arm/mach-vexpress/include/mach/irqs.h
create mode 100644 arch/arm/mach-vexpress/include/mach/motherboard.h
create mode 100644 arch/arm/mach-vexpress/include/mach/timex.h
create mode 100644 arch/arm/mach-vexpress/include/mach/uncompress.h
create mode 100644 arch/arm/mach-vexpress/platsmp.c
create mode 100644 arch/arm/mach-vexpress/v2m.c
create mode 100644 arch/arm/mach-vt8500/Kconfig
create mode 100644 arch/arm/mach-vt8500/Makefile
create mode 100644 arch/arm/mach-vt8500/Makefile.boot
create mode 100644 arch/arm/mach-vt8500/bv07.c
create mode 100644 arch/arm/mach-vt8500/devices-vt8500.c
create mode 100644 arch/arm/mach-vt8500/devices-wm8505.c
create mode 100644 arch/arm/mach-vt8500/devices.c
create mode 100644 arch/arm/mach-vt8500/devices.h
create mode 100644 arch/arm/mach-vt8500/gpio.c
create mode 100644 arch/arm/mach-vt8500/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-vt8500/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-vt8500/include/mach/gpio.h
create mode 100644 arch/arm/mach-vt8500/include/mach/hardware.h
create mode 100644 arch/arm/mach-vt8500/include/mach/i8042.h
create mode 100644 arch/arm/mach-vt8500/include/mach/irqs.h
create mode 100644 arch/arm/mach-vt8500/include/mach/system.h
create mode 100644 arch/arm/mach-vt8500/include/mach/timex.h
create mode 100644 arch/arm/mach-vt8500/include/mach/uncompress.h
create mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_irqs.h
create mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_regs.h
create mode 100644 arch/arm/mach-vt8500/include/mach/vt8500fb.h
create mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_irqs.h
create mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_regs.h
create mode 100644 arch/arm/mach-vt8500/irq.c
create mode 100644 arch/arm/mach-vt8500/pwm.c
create mode 100644 arch/arm/mach-vt8500/timer.c
create mode 100644 arch/arm/mach-vt8500/wm8505_7in.c
create mode 100644 arch/arm/mach-w90x900/Kconfig
create mode 100644 arch/arm/mach-w90x900/Makefile
create mode 100644 arch/arm/mach-w90x900/Makefile.boot
create mode 100644 arch/arm/mach-w90x900/clksel.c
create mode 100644 arch/arm/mach-w90x900/clock.c
create mode 100644 arch/arm/mach-w90x900/clock.h
create mode 100644 arch/arm/mach-w90x900/cpu.c
create mode 100644 arch/arm/mach-w90x900/cpu.h
create mode 100644 arch/arm/mach-w90x900/dev.c
create mode 100644 arch/arm/mach-w90x900/gpio.c
create mode 100644 arch/arm/mach-w90x900/include/mach/entry-macro.S
create mode 100644 arch/arm/mach-w90x900/include/mach/fb.h
create mode 100644 arch/arm/mach-w90x900/include/mach/gpio.h
create mode 100644 arch/arm/mach-w90x900/include/mach/hardware.h
create mode 100644 arch/arm/mach-w90x900/include/mach/i2c.h
create mode 100644 arch/arm/mach-w90x900/include/mach/irqs.h
create mode 100644 arch/arm/mach-w90x900/include/mach/map.h
create mode 100644 arch/arm/mach-w90x900/include/mach/mfp.h
create mode 100644 arch/arm/mach-w90x900/include/mach/nuc900_spi.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-clock.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-ebi.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-gcr.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-irq.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-ldm.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-serial.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-timer.h
create mode 100644 arch/arm/mach-w90x900/include/mach/regs-usb.h
create mode 100644 arch/arm/mach-w90x900/include/mach/timex.h
create mode 100644 arch/arm/mach-w90x900/include/mach/uncompress.h
create mode 100644 arch/arm/mach-w90x900/include/mach/w90p910_keypad.h
create mode 100644 arch/arm/mach-w90x900/irq.c
create mode 100644 arch/arm/mach-w90x900/mach-nuc910evb.c
create mode 100644 arch/arm/mach-w90x900/mach-nuc950evb.c
create mode 100644 arch/arm/mach-w90x900/mach-nuc960evb.c
create mode 100644 arch/arm/mach-w90x900/mfp.c
create mode 100644 arch/arm/mach-w90x900/nuc910.c
create mode 100644 arch/arm/mach-w90x900/nuc910.h
create mode 100644 arch/arm/mach-w90x900/nuc950.c
create mode 100644 arch/arm/mach-w90x900/nuc950.h
create mode 100644 arch/arm/mach-w90x900/nuc960.c
create mode 100644 arch/arm/mach-w90x900/nuc960.h
create mode 100644 arch/arm/mach-w90x900/nuc9xx.h
create mode 100644 arch/arm/mach-w90x900/time.c
create mode 100755 arch/arm/mach-wmt/Kconfig
create mode 100755 arch/arm/mach-wmt/Makefile
create mode 100755 arch/arm/mach-wmt/Makefile.boot
create mode 100755 arch/arm/mach-wmt/board.c
create mode 100755 arch/arm/mach-wmt/dma.c
create mode 100755 arch/arm/mach-wmt/generic.c
create mode 100755 arch/arm/mach-wmt/generic.h
create mode 100755 arch/arm/mach-wmt/gpio.c
create mode 100755 arch/arm/mach-wmt/gpio_ctrl.c
create mode 100755 arch/arm/mach-wmt/gpio_customize_ease.c
create mode 100755 arch/arm/mach-wmt/headsmp.S
create mode 100755 arch/arm/mach-wmt/hotplug.c
create mode 100755 arch/arm/mach-wmt/include/mach/com-video.h
create mode 100755 arch/arm/mach-wmt/include/mach/common_def.h
create mode 100755 arch/arm/mach-wmt/include/mach/debug-macro.S
create mode 100755 arch/arm/mach-wmt/include/mach/dma.h
create mode 100755 arch/arm/mach-wmt/include/mach/gmt-core.h
create mode 100755 arch/arm/mach-wmt/include/mach/gpio.h
create mode 100755 arch/arm/mach-wmt/include/mach/gpio_customize_ease.h
create mode 100755 arch/arm/mach-wmt/include/mach/hardware.h
create mode 100755 arch/arm/mach-wmt/include/mach/io.h
create mode 100755 arch/arm/mach-wmt/include/mach/iomux.h
create mode 100755 arch/arm/mach-wmt/include/mach/irqs.h
create mode 100755 arch/arm/mach-wmt/include/mach/kpad.h
create mode 100755 arch/arm/mach-wmt/include/mach/memory.h
create mode 100755 arch/arm/mach-wmt/include/mach/serial.h
create mode 100755 arch/arm/mach-wmt/include/mach/system.h
create mode 100755 arch/arm/mach-wmt/include/mach/timex.h
create mode 100755 arch/arm/mach-wmt/include/mach/uncompress.h
create mode 100755 arch/arm/mach-wmt/include/mach/viatel.h
create mode 100755 arch/arm/mach-wmt/include/mach/vmalloc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt-i2c-bus.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt-spi.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_env.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_gpio.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_i2c.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_i2s.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_iomux.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_kpad.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_mc5.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_misc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_mmap.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_pcm.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_pmc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_rtc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_saradc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_scc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_sdmmc.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_secure.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_sf.h
create mode 100755 arch/arm/mach-wmt/include/mach/wmt_uart.h
create mode 100755 arch/arm/mach-wmt/irq.c
create mode 100755 arch/arm/mach-wmt/platsmp.c
create mode 100755 arch/arm/mach-wmt/pm.c
create mode 100755 arch/arm/mach-wmt/pm_cpai.c
create mode 100755 arch/arm/mach-wmt/pwm.c
create mode 100755 arch/arm/mach-wmt/sleep.S
create mode 100755 arch/arm/mach-wmt/wmt_clk.h
create mode 100755 arch/arm/mach-wmt/wmt_clock.c
create mode 100755 arch/arm/mach-wmt/wmt_cpuidle.c
create mode 100755 arch/arm/mach-wmt/wmt_misc.c
create mode 100755 arch/arm/mach-wmt/wmt_reset.c
create mode 100755 arch/arm/mach-wmt/wmt_secure_wait_wake.c
create mode 100755 arch/arm/mach-wmt/wmt_smc.c
create mode 100644 arch/arm/mach-zynq/Makefile
create mode 100644 arch/arm/mach-zynq/Makefile.boot
create mode 100644 arch/arm/mach-zynq/common.c
create mode 100644 arch/arm/mach-zynq/common.h
create mode 100644 arch/arm/mach-zynq/include/mach/clkdev.h
create mode 100644 arch/arm/mach-zynq/include/mach/debug-macro.S
create mode 100644 arch/arm/mach-zynq/include/mach/hardware.h
create mode 100644 arch/arm/mach-zynq/include/mach/irqs.h
create mode 100644 arch/arm/mach-zynq/include/mach/timex.h
create mode 100644 arch/arm/mach-zynq/include/mach/uart.h
create mode 100644 arch/arm/mach-zynq/include/mach/uncompress.h
create mode 100644 arch/arm/mach-zynq/include/mach/zynq_soc.h
create mode 100644 arch/arm/mach-zynq/timer.c
create mode 100644 arch/arm/mm/Kconfig
create mode 100644 arch/arm/mm/Makefile
create mode 100644 arch/arm/mm/abort-ev4.S
create mode 100644 arch/arm/mm/abort-ev4t.S
create mode 100644 arch/arm/mm/abort-ev5t.S
create mode 100644 arch/arm/mm/abort-ev5tj.S
create mode 100644 arch/arm/mm/abort-ev6.S
create mode 100644 arch/arm/mm/abort-ev7.S
create mode 100644 arch/arm/mm/abort-lv4t.S
create mode 100644 arch/arm/mm/abort-macro.S
create mode 100644 arch/arm/mm/abort-nommu.S
create mode 100644 arch/arm/mm/alignment.c
create mode 100644 arch/arm/mm/cache-fa.S
create mode 100644 arch/arm/mm/cache-feroceon-l2.c
create mode 100644 arch/arm/mm/cache-l2x0.c
create mode 100644 arch/arm/mm/cache-tauros2.c
create mode 100644 arch/arm/mm/cache-v3.S
create mode 100644 arch/arm/mm/cache-v4.S
create mode 100644 arch/arm/mm/cache-v4wb.S
create mode 100644 arch/arm/mm/cache-v4wt.S
create mode 100644 arch/arm/mm/cache-v6.S
create mode 100644 arch/arm/mm/cache-v7.S
create mode 100644 arch/arm/mm/cache-xsc3l2.c
create mode 100644 arch/arm/mm/context.c
create mode 100644 arch/arm/mm/copypage-fa.c
create mode 100644 arch/arm/mm/copypage-feroceon.c
create mode 100644 arch/arm/mm/copypage-v3.c
create mode 100644 arch/arm/mm/copypage-v4mc.c
create mode 100644 arch/arm/mm/copypage-v4wb.c
create mode 100644 arch/arm/mm/copypage-v4wt.c
create mode 100644 arch/arm/mm/copypage-v6.c
create mode 100644 arch/arm/mm/copypage-xsc3.c
create mode 100644 arch/arm/mm/copypage-xscale.c
create mode 100644 arch/arm/mm/dma-mapping.c
create mode 100644 arch/arm/mm/extable.c
create mode 100644 arch/arm/mm/fault-armv.c
create mode 100644 arch/arm/mm/fault.c
create mode 100644 arch/arm/mm/fault.h
create mode 100644 arch/arm/mm/flush.c
create mode 100644 arch/arm/mm/fsr-2level.c
create mode 100644 arch/arm/mm/fsr-3level.c
create mode 100644 arch/arm/mm/highmem.c
create mode 100644 arch/arm/mm/idmap.c
create mode 100644 arch/arm/mm/init.c
create mode 100644 arch/arm/mm/iomap.c
create mode 100644 arch/arm/mm/ioremap.c
create mode 100644 arch/arm/mm/mm.h
create mode 100644 arch/arm/mm/mmap.c
create mode 100644 arch/arm/mm/mmu.c
create mode 100644 arch/arm/mm/nommu.c
create mode 100644 arch/arm/mm/pabort-legacy.S
create mode 100644 arch/arm/mm/pabort-v6.S
create mode 100644 arch/arm/mm/pabort-v7.S
create mode 100644 arch/arm/mm/pgd.c
create mode 100644 arch/arm/mm/proc-arm1020.S
create mode 100644 arch/arm/mm/proc-arm1020e.S
create mode 100644 arch/arm/mm/proc-arm1022.S
create mode 100644 arch/arm/mm/proc-arm1026.S
create mode 100644 arch/arm/mm/proc-arm6_7.S
create mode 100644 arch/arm/mm/proc-arm720.S
create mode 100644 arch/arm/mm/proc-arm740.S
create mode 100644 arch/arm/mm/proc-arm7tdmi.S
create mode 100644 arch/arm/mm/proc-arm920.S
create mode 100644 arch/arm/mm/proc-arm922.S
create mode 100644 arch/arm/mm/proc-arm925.S
create mode 100644 arch/arm/mm/proc-arm926.S
create mode 100644 arch/arm/mm/proc-arm940.S
create mode 100644 arch/arm/mm/proc-arm946.S
create mode 100644 arch/arm/mm/proc-arm9tdmi.S
create mode 100644 arch/arm/mm/proc-fa526.S
create mode 100644 arch/arm/mm/proc-feroceon.S
create mode 100644 arch/arm/mm/proc-macros.S
create mode 100644 arch/arm/mm/proc-mohawk.S
create mode 100644 arch/arm/mm/proc-sa110.S
create mode 100644 arch/arm/mm/proc-sa1100.S
create mode 100644 arch/arm/mm/proc-syms.c
create mode 100644 arch/arm/mm/proc-v6.S
create mode 100644 arch/arm/mm/proc-v7-2level.S
create mode 100644 arch/arm/mm/proc-v7-3level.S
create mode 100644 arch/arm/mm/proc-v7.S
create mode 100644 arch/arm/mm/proc-xsc3.S
create mode 100644 arch/arm/mm/proc-xscale.S
create mode 100644 arch/arm/mm/rodata.c
create mode 100644 arch/arm/mm/tlb-fa.S
create mode 100644 arch/arm/mm/tlb-v3.S
create mode 100644 arch/arm/mm/tlb-v4.S
create mode 100644 arch/arm/mm/tlb-v4wb.S
create mode 100644 arch/arm/mm/tlb-v4wbi.S
create mode 100644 arch/arm/mm/tlb-v6.S
create mode 100644 arch/arm/mm/tlb-v7.S
create mode 100644 arch/arm/mm/vmregion.c
create mode 100644 arch/arm/mm/vmregion.h
create mode 100644 arch/arm/net/Makefile
create mode 100644 arch/arm/net/bpf_jit_32.c
create mode 100644 arch/arm/net/bpf_jit_32.h
create mode 100644 arch/arm/nwfpe/ARM-gcc.h
create mode 100644 arch/arm/nwfpe/ChangeLog
create mode 100644 arch/arm/nwfpe/Makefile
create mode 100644 arch/arm/nwfpe/double_cpdo.c
create mode 100644 arch/arm/nwfpe/entry.S
create mode 100644 arch/arm/nwfpe/extended_cpdo.c
create mode 100644 arch/arm/nwfpe/fpa11.c
create mode 100644 arch/arm/nwfpe/fpa11.h
create mode 100644 arch/arm/nwfpe/fpa11.inl
create mode 100644 arch/arm/nwfpe/fpa11_cpdo.c
create mode 100644 arch/arm/nwfpe/fpa11_cpdt.c
create mode 100644 arch/arm/nwfpe/fpa11_cprt.c
create mode 100644 arch/arm/nwfpe/fpmodule.c
create mode 100644 arch/arm/nwfpe/fpmodule.h
create mode 100644 arch/arm/nwfpe/fpmodule.inl
create mode 100644 arch/arm/nwfpe/fpopcode.c
create mode 100644 arch/arm/nwfpe/fpopcode.h
create mode 100644 arch/arm/nwfpe/fpsr.h
create mode 100644 arch/arm/nwfpe/milieu.h
create mode 100644 arch/arm/nwfpe/single_cpdo.c
create mode 100644 arch/arm/nwfpe/softfloat-macros
create mode 100644 arch/arm/nwfpe/softfloat-specialize
create mode 100644 arch/arm/nwfpe/softfloat.c
create mode 100644 arch/arm/nwfpe/softfloat.h
create mode 100644 arch/arm/oprofile/Makefile
create mode 100644 arch/arm/oprofile/common.c
create mode 100644 arch/arm/plat-iop/Makefile
create mode 100644 arch/arm/plat-iop/adma.c
create mode 100644 arch/arm/plat-iop/cp6.c
create mode 100644 arch/arm/plat-iop/gpio.c
create mode 100644 arch/arm/plat-iop/i2c.c
create mode 100644 arch/arm/plat-iop/pci.c
create mode 100644 arch/arm/plat-iop/pmu.c
create mode 100644 arch/arm/plat-iop/restart.c
create mode 100644 arch/arm/plat-iop/setup.c
create mode 100644 arch/arm/plat-iop/time.c
create mode 100644 arch/arm/plat-mxc/3ds_debugboard.c
create mode 100644 arch/arm/plat-mxc/Kconfig
create mode 100644 arch/arm/plat-mxc/Makefile
create mode 100644 arch/arm/plat-mxc/avic.c
create mode 100644 arch/arm/plat-mxc/clock.c
create mode 100644 arch/arm/plat-mxc/cpu.c
create mode 100644 arch/arm/plat-mxc/cpufreq.c
create mode 100644 arch/arm/plat-mxc/devices.c
create mode 100644 arch/arm/plat-mxc/devices/Kconfig
create mode 100644 arch/arm/plat-mxc/devices/Makefile
create mode 100644 arch/arm/plat-mxc/devices/platform-ahci-imx.c
create mode 100644 arch/arm/plat-mxc/devices/platform-fec.c
create mode 100644 arch/arm/plat-mxc/devices/platform-flexcan.c
create mode 100644 arch/arm/plat-mxc/devices/platform-fsl-usb2-udc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-gpio-mxc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-gpio_keys.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-dma.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-fb.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-i2c.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-keypad.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-ssi.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx-uart.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx2-wdt.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx21-hcd.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imx_udc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-imxdi_rtc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-ipu-core.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mx1-camera.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mx2-camera.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc-ehci.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc-mmc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc_nand.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc_pwm.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc_rnga.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc_rtc.c
create mode 100644 arch/arm/plat-mxc/devices/platform-mxc_w1.c
create mode 100644 arch/arm/plat-mxc/devices/platform-pata_imx.c
create mode 100644 arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
create mode 100644 arch/arm/plat-mxc/devices/platform-spi_imx.c
create mode 100644 arch/arm/plat-mxc/epit.c
create mode 100644 arch/arm/plat-mxc/include/mach/3ds_debugboard.h
create mode 100644 arch/arm/plat-mxc/include/mach/board-mx31lilly.h
create mode 100644 arch/arm/plat-mxc/include/mach/board-mx31lite.h
create mode 100644 arch/arm/plat-mxc/include/mach/board-mx31moboard.h
create mode 100644 arch/arm/plat-mxc/include/mach/board-pcm038.h
create mode 100644 arch/arm/plat-mxc/include/mach/clock.h
create mode 100644 arch/arm/plat-mxc/include/mach/common.h
create mode 100644 arch/arm/plat-mxc/include/mach/debug-macro.S
create mode 100644 arch/arm/plat-mxc/include/mach/devices-common.h
create mode 100644 arch/arm/plat-mxc/include/mach/dma.h
create mode 100644 arch/arm/plat-mxc/include/mach/esdhc.h
create mode 100644 arch/arm/plat-mxc/include/mach/eukrea-baseboards.h
create mode 100644 arch/arm/plat-mxc/include/mach/gpio.h
create mode 100644 arch/arm/plat-mxc/include/mach/hardware.h
create mode 100644 arch/arm/plat-mxc/include/mach/i2c.h
create mode 100644 arch/arm/plat-mxc/include/mach/iim.h
create mode 100644 arch/arm/plat-mxc/include/mach/imx-uart.h
create mode 100644 arch/arm/plat-mxc/include/mach/imxfb.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx1.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx21.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx25.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx27.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx2x.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx3.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx35.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx50.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx51.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-mx53.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-v1.h
create mode 100644 arch/arm/plat-mxc/include/mach/iomux-v3.h
create mode 100644 arch/arm/plat-mxc/include/mach/ipu.h
create mode 100644 arch/arm/plat-mxc/include/mach/iram.h
create mode 100644 arch/arm/plat-mxc/include/mach/irqs.h
create mode 100644 arch/arm/plat-mxc/include/mach/mmc.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx1.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx1_camera.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx21-usbhost.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx21.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx25.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx27.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx2_cam.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx2x.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx31.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx35.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx3_camera.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx3fb.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx3x.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx50.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx51.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx53.h
create mode 100644 arch/arm/plat-mxc/include/mach/mx6q.h
create mode 100644 arch/arm/plat-mxc/include/mach/mxc.h
create mode 100644 arch/arm/plat-mxc/include/mach/mxc_ehci.h
create mode 100644 arch/arm/plat-mxc/include/mach/mxc_nand.h
create mode 100644 arch/arm/plat-mxc/include/mach/sdma.h
create mode 100644 arch/arm/plat-mxc/include/mach/spi.h
create mode 100644 arch/arm/plat-mxc/include/mach/ssi.h
create mode 100644 arch/arm/plat-mxc/include/mach/timex.h
create mode 100644 arch/arm/plat-mxc/include/mach/ulpi.h
create mode 100644 arch/arm/plat-mxc/include/mach/uncompress.h
create mode 100644 arch/arm/plat-mxc/include/mach/usb.h
create mode 100644 arch/arm/plat-mxc/iomux-v1.c
create mode 100644 arch/arm/plat-mxc/iomux-v3.c
create mode 100644 arch/arm/plat-mxc/iram_alloc.c
create mode 100644 arch/arm/plat-mxc/irq-common.c
create mode 100644 arch/arm/plat-mxc/irq-common.h
create mode 100644 arch/arm/plat-mxc/pwm.c
create mode 100644 arch/arm/plat-mxc/ssi-fiq-ksym.c
create mode 100644 arch/arm/plat-mxc/ssi-fiq.S
create mode 100644 arch/arm/plat-mxc/system.c
create mode 100644 arch/arm/plat-mxc/time.c
create mode 100644 arch/arm/plat-mxc/tzic.c
create mode 100644 arch/arm/plat-mxc/ulpi.c
create mode 100644 arch/arm/plat-nomadik/Kconfig
create mode 100644 arch/arm/plat-nomadik/Makefile
create mode 100644 arch/arm/plat-nomadik/include/plat/gpio-nomadik.h
create mode 100644 arch/arm/plat-nomadik/include/plat/i2c.h
create mode 100644 arch/arm/plat-nomadik/include/plat/mtu.h
create mode 100644 arch/arm/plat-nomadik/include/plat/pincfg.h
create mode 100644 arch/arm/plat-nomadik/include/plat/ske.h
create mode 100644 arch/arm/plat-nomadik/include/plat/ste_dma40.h
create mode 100644 arch/arm/plat-nomadik/timer.c
create mode 100644 arch/arm/plat-omap/Kconfig
create mode 100644 arch/arm/plat-omap/Makefile
create mode 100644 arch/arm/plat-omap/clock.c
create mode 100644 arch/arm/plat-omap/common.c
create mode 100644 arch/arm/plat-omap/counter_32k.c
create mode 100644 arch/arm/plat-omap/debug-devices.c
create mode 100644 arch/arm/plat-omap/debug-leds.c
create mode 100644 arch/arm/plat-omap/devices.c
create mode 100644 arch/arm/plat-omap/dma.c
create mode 100644 arch/arm/plat-omap/dmtimer.c
create mode 100644 arch/arm/plat-omap/fb.c
create mode 100644 arch/arm/plat-omap/i2c.c
create mode 100644 arch/arm/plat-omap/include/plat/am33xx.h
create mode 100644 arch/arm/plat-omap/include/plat/board-ams-delta.h
create mode 100644 arch/arm/plat-omap/include/plat/board-sx1.h
create mode 100644 arch/arm/plat-omap/include/plat/board-voiceblue.h
create mode 100644 arch/arm/plat-omap/include/plat/board.h
create mode 100644 arch/arm/plat-omap/include/plat/clkdev_omap.h
create mode 100644 arch/arm/plat-omap/include/plat/clock.h
create mode 100644 arch/arm/plat-omap/include/plat/common.h
create mode 100644 arch/arm/plat-omap/include/plat/cpu.h
create mode 100644 arch/arm/plat-omap/include/plat/dma-44xx.h
create mode 100644 arch/arm/plat-omap/include/plat/dma.h
create mode 100644 arch/arm/plat-omap/include/plat/dmtimer.h
create mode 100644 arch/arm/plat-omap/include/plat/dsp.h
create mode 100644 arch/arm/plat-omap/include/plat/flash.h
create mode 100644 arch/arm/plat-omap/include/plat/fpga.h
create mode 100644 arch/arm/plat-omap/include/plat/gpio-switch.h
create mode 100644 arch/arm/plat-omap/include/plat/gpio.h
create mode 100644 arch/arm/plat-omap/include/plat/gpmc-smc91x.h
create mode 100644 arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
create mode 100644 arch/arm/plat-omap/include/plat/gpmc.h
create mode 100644 arch/arm/plat-omap/include/plat/hardware.h
create mode 100644 arch/arm/plat-omap/include/plat/i2c.h
create mode 100644 arch/arm/plat-omap/include/plat/iommu.h
create mode 100644 arch/arm/plat-omap/include/plat/iommu2.h
create mode 100644 arch/arm/plat-omap/include/plat/iopgtable.h
create mode 100644 arch/arm/plat-omap/include/plat/iovmm.h
create mode 100644 arch/arm/plat-omap/include/plat/irda.h
create mode 100644 arch/arm/plat-omap/include/plat/irqs-44xx.h
create mode 100644 arch/arm/plat-omap/include/plat/irqs.h
create mode 100644 arch/arm/plat-omap/include/plat/keypad.h
create mode 100644 arch/arm/plat-omap/include/plat/l3_2xxx.h
create mode 100644 arch/arm/plat-omap/include/plat/l3_3xxx.h
create mode 100644 arch/arm/plat-omap/include/plat/l4_2xxx.h
create mode 100644 arch/arm/plat-omap/include/plat/l4_3xxx.h
create mode 100644 arch/arm/plat-omap/include/plat/lcd_mipid.h
create mode 100644 arch/arm/plat-omap/include/plat/led.h
create mode 100644 arch/arm/plat-omap/include/plat/mailbox.h
create mode 100644 arch/arm/plat-omap/include/plat/mcbsp.h
create mode 100644 arch/arm/plat-omap/include/plat/mcspi.h
create mode 100644 arch/arm/plat-omap/include/plat/menelaus.h
create mode 100644 arch/arm/plat-omap/include/plat/mmc.h
create mode 100644 arch/arm/plat-omap/include/plat/multi.h
create mode 100644 arch/arm/plat-omap/include/plat/mux.h
create mode 100644 arch/arm/plat-omap/include/plat/nand.h
create mode 100644 arch/arm/plat-omap/include/plat/omap-pm.h
create mode 100644 arch/arm/plat-omap/include/plat/omap-secure.h
create mode 100644 arch/arm/plat-omap/include/plat/omap-serial.h
create mode 100644 arch/arm/plat-omap/include/plat/omap1510.h
create mode 100644 arch/arm/plat-omap/include/plat/omap16xx.h
create mode 100644 arch/arm/plat-omap/include/plat/omap24xx.h
create mode 100644 arch/arm/plat-omap/include/plat/omap34xx.h
create mode 100644 arch/arm/plat-omap/include/plat/omap4-keypad.h
create mode 100644 arch/arm/plat-omap/include/plat/omap44xx.h
create mode 100644 arch/arm/plat-omap/include/plat/omap730.h
create mode 100644 arch/arm/plat-omap/include/plat/omap7xx.h
create mode 100644 arch/arm/plat-omap/include/plat/omap850.h
create mode 100644 arch/arm/plat-omap/include/plat/omap_device.h
create mode 100644 arch/arm/plat-omap/include/plat/omap_hwmod.h
create mode 100644 arch/arm/plat-omap/include/plat/onenand.h
create mode 100644 arch/arm/plat-omap/include/plat/param.h
create mode 100644 arch/arm/plat-omap/include/plat/prcm.h
create mode 100644 arch/arm/plat-omap/include/plat/remoteproc.h
create mode 100644 arch/arm/plat-omap/include/plat/sdrc.h
create mode 100644 arch/arm/plat-omap/include/plat/serial.h
create mode 100644 arch/arm/plat-omap/include/plat/sram.h
create mode 100644 arch/arm/plat-omap/include/plat/tc.h
create mode 100644 arch/arm/plat-omap/include/plat/ti81xx.h
create mode 100644 arch/arm/plat-omap/include/plat/timex.h
create mode 100644 arch/arm/plat-omap/include/plat/uncompress.h
create mode 100644 arch/arm/plat-omap/include/plat/usb.h
create mode 100644 arch/arm/plat-omap/include/plat/voltage.h
create mode 100644 arch/arm/plat-omap/include/plat/vram.h
create mode 100644 arch/arm/plat-omap/include/plat/vrfb.h
create mode 100644 arch/arm/plat-omap/mailbox.c
create mode 100644 arch/arm/plat-omap/mux.c
create mode 100644 arch/arm/plat-omap/ocpi.c
create mode 100644 arch/arm/plat-omap/omap-pm-noop.c
create mode 100644 arch/arm/plat-omap/omap_device.c
create mode 100644 arch/arm/plat-omap/sram.c
create mode 100644 arch/arm/plat-omap/sram.h
create mode 100644 arch/arm/plat-omap/usb.c
create mode 100644 arch/arm/plat-orion/Makefile
create mode 100644 arch/arm/plat-orion/addr-map.c
create mode 100644 arch/arm/plat-orion/common.c
create mode 100644 arch/arm/plat-orion/gpio.c
create mode 100644 arch/arm/plat-orion/include/plat/addr-map.h
create mode 100644 arch/arm/plat-orion/include/plat/audio.h
create mode 100644 arch/arm/plat-orion/include/plat/cache-feroceon-l2.h
create mode 100644 arch/arm/plat-orion/include/plat/common.h
create mode 100644 arch/arm/plat-orion/include/plat/ehci-orion.h
create mode 100644 arch/arm/plat-orion/include/plat/gpio.h
create mode 100644 arch/arm/plat-orion/include/plat/irq.h
create mode 100644 arch/arm/plat-orion/include/plat/mpp.h
create mode 100644 arch/arm/plat-orion/include/plat/mv_xor.h
create mode 100644 arch/arm/plat-orion/include/plat/mvsdio.h
create mode 100644 arch/arm/plat-orion/include/plat/orion_nand.h
create mode 100644 arch/arm/plat-orion/include/plat/orion_wdt.h
create mode 100644 arch/arm/plat-orion/include/plat/pcie.h
create mode 100644 arch/arm/plat-orion/include/plat/time.h
create mode 100644 arch/arm/plat-orion/irq.c
create mode 100644 arch/arm/plat-orion/mpp.c
create mode 100644 arch/arm/plat-orion/pcie.c
create mode 100644 arch/arm/plat-orion/time.c
create mode 100644 arch/arm/plat-pxa/Kconfig
create mode 100644 arch/arm/plat-pxa/Makefile
create mode 100644 arch/arm/plat-pxa/dma.c
create mode 100644 arch/arm/plat-pxa/include/plat/dma.h
create mode 100644 arch/arm/plat-pxa/include/plat/mfp.h
create mode 100644 arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
create mode 100644 arch/arm/plat-pxa/include/plat/pxa3xx_nand.h
create mode 100644 arch/arm/plat-pxa/mfp.c
create mode 100644 arch/arm/plat-pxa/pwm.c
create mode 100644 arch/arm/plat-pxa/ssp.c
create mode 100644 arch/arm/plat-s3c24xx/Kconfig
create mode 100644 arch/arm/plat-s3c24xx/Makefile
create mode 100644 arch/arm/plat-s3c24xx/clock-dclk.c
create mode 100644 arch/arm/plat-s3c24xx/clock.c
create mode 100644 arch/arm/plat-s3c24xx/cpu-freq-debugfs.c
create mode 100644 arch/arm/plat-s3c24xx/cpu-freq.c
create mode 100644 arch/arm/plat-s3c24xx/cpu.c
create mode 100644 arch/arm/plat-s3c24xx/dev-uart.c
create mode 100644 arch/arm/plat-s3c24xx/dma.c
create mode 100644 arch/arm/plat-s3c24xx/irq-pm.c
create mode 100644 arch/arm/plat-s3c24xx/irq.c
create mode 100644 arch/arm/plat-s3c24xx/pm.c
create mode 100644 arch/arm/plat-s3c24xx/s3c2410-clock.c
create mode 100644 arch/arm/plat-s3c24xx/s3c2410-cpufreq-utils.c
create mode 100644 arch/arm/plat-s3c24xx/s3c2410-iotiming.c
create mode 100644 arch/arm/plat-s3c24xx/s3c2412-iotiming.c
create mode 100644 arch/arm/plat-s3c24xx/sleep.S
create mode 100644 arch/arm/plat-s5p/Kconfig
create mode 100644 arch/arm/plat-s5p/Makefile
create mode 100644 arch/arm/plat-s5p/clock.c
create mode 100644 arch/arm/plat-s5p/dev-mfc.c
create mode 100644 arch/arm/plat-s5p/dev-uart.c
create mode 100644 arch/arm/plat-s5p/irq-eint.c
create mode 100644 arch/arm/plat-s5p/irq-gpioint.c
create mode 100644 arch/arm/plat-s5p/irq-pm.c
create mode 100644 arch/arm/plat-s5p/irq.c
create mode 100644 arch/arm/plat-s5p/pm.c
create mode 100644 arch/arm/plat-s5p/s5p-time.c
create mode 100644 arch/arm/plat-s5p/setup-mipiphy.c
create mode 100644 arch/arm/plat-s5p/sleep.S
create mode 100644 arch/arm/plat-s5p/sysmmu.c
create mode 100644 arch/arm/plat-samsung/Kconfig
create mode 100644 arch/arm/plat-samsung/Makefile
create mode 100644 arch/arm/plat-samsung/adc.c
create mode 100644 arch/arm/plat-samsung/clock-clksrc.c
create mode 100644 arch/arm/plat-samsung/clock.c
create mode 100644 arch/arm/plat-samsung/cpu.c
create mode 100644 arch/arm/plat-samsung/dev-backlight.c
create mode 100644 arch/arm/plat-samsung/dev-uart.c
create mode 100644 arch/arm/plat-samsung/devs.c
create mode 100644 arch/arm/plat-samsung/dma-ops.c
create mode 100644 arch/arm/plat-samsung/dma.c
create mode 100644 arch/arm/plat-samsung/include/plat/adc-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/adc.h
create mode 100644 arch/arm/plat-samsung/include/plat/ata-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/ata.h
create mode 100644 arch/arm/plat-samsung/include/plat/audio-simtec.h
create mode 100644 arch/arm/plat-samsung/include/plat/audio.h
create mode 100644 arch/arm/plat-samsung/include/plat/backlight.h
create mode 100644 arch/arm/plat-samsung/include/plat/camport.h
create mode 100644 arch/arm/plat-samsung/include/plat/clock-clksrc.h
create mode 100644 arch/arm/plat-samsung/include/plat/clock.h
create mode 100644 arch/arm/plat-samsung/include/plat/common-smdk.h
create mode 100644 arch/arm/plat-samsung/include/plat/cpu-freq-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/cpu-freq.h
create mode 100644 arch/arm/plat-samsung/include/plat/cpu.h
create mode 100644 arch/arm/plat-samsung/include/plat/debug-macro.S
create mode 100644 arch/arm/plat-samsung/include/plat/devs.h
create mode 100644 arch/arm/plat-samsung/include/plat/dma-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/dma-ops.h
create mode 100644 arch/arm/plat-samsung/include/plat/dma-pl330.h
create mode 100644 arch/arm/plat-samsung/include/plat/dma-s3c24xx.h
create mode 100644 arch/arm/plat-samsung/include/plat/dma.h
create mode 100644 arch/arm/plat-samsung/include/plat/ehci.h
create mode 100644 arch/arm/plat-samsung/include/plat/fb-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/fb-s3c2410.h
create mode 100644 arch/arm/plat-samsung/include/plat/fb.h
create mode 100644 arch/arm/plat-samsung/include/plat/fimc-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/fiq.h
create mode 100644 arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
create mode 100644 arch/arm/plat-samsung/include/plat/gpio-cfg.h
create mode 100644 arch/arm/plat-samsung/include/plat/gpio-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/gpio-fns.h
create mode 100644 arch/arm/plat-samsung/include/plat/hwmon.h
create mode 100644 arch/arm/plat-samsung/include/plat/iic-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/iic.h
create mode 100644 arch/arm/plat-samsung/include/plat/irq-uart.h
create mode 100644 arch/arm/plat-samsung/include/plat/irq-vic-timer.h
create mode 100644 arch/arm/plat-samsung/include/plat/irq.h
create mode 100644 arch/arm/plat-samsung/include/plat/irqs.h
create mode 100644 arch/arm/plat-samsung/include/plat/keypad-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/keypad.h
create mode 100644 arch/arm/plat-samsung/include/plat/map-base.h
create mode 100644 arch/arm/plat-samsung/include/plat/map-s3c.h
create mode 100644 arch/arm/plat-samsung/include/plat/map-s5p.h
create mode 100644 arch/arm/plat-samsung/include/plat/mci.h
create mode 100644 arch/arm/plat-samsung/include/plat/mfc.h
create mode 100644 arch/arm/plat-samsung/include/plat/mipi_csis.h
create mode 100644 arch/arm/plat-samsung/include/plat/nand-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/nand.h
create mode 100644 arch/arm/plat-samsung/include/plat/onenand-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/pd.h
create mode 100644 arch/arm/plat-samsung/include/plat/pll.h
create mode 100644 arch/arm/plat-samsung/include/plat/pm.h
create mode 100644 arch/arm/plat-samsung/include/plat/pwm-clock.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-ac97.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-adc.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-ata.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-dma.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-fb-v4.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-fb.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-iic.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-iis.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-irqtype.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-nand.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-onenand.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-rtc.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-sdhci.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-serial.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-spi.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-srom.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-timer.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-udc.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-usb-hsotg-phy.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h
create mode 100644 arch/arm/plat-samsung/include/plat/regs-watchdog.h
create mode 100644 arch/arm/plat-samsung/include/plat/rtc-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c2410.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c2412.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c2416.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c2443.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c244x.h
create mode 100644 arch/arm/plat-samsung/include/plat/s3c64xx-spi.h
create mode 100644 arch/arm/plat-samsung/include/plat/s5p-clock.h
create mode 100644 arch/arm/plat-samsung/include/plat/s5p-time.h
create mode 100644 arch/arm/plat-samsung/include/plat/sdhci.h
create mode 100644 arch/arm/plat-samsung/include/plat/sysmmu.h
create mode 100644 arch/arm/plat-samsung/include/plat/ts.h
create mode 100644 arch/arm/plat-samsung/include/plat/tv-core.h
create mode 100644 arch/arm/plat-samsung/include/plat/udc-hs.h
create mode 100644 arch/arm/plat-samsung/include/plat/udc.h
create mode 100644 arch/arm/plat-samsung/include/plat/uncompress.h
create mode 100644 arch/arm/plat-samsung/include/plat/usb-control.h
create mode 100644 arch/arm/plat-samsung/include/plat/usb-phy.h
create mode 100644 arch/arm/plat-samsung/include/plat/wakeup-mask.h
create mode 100644 arch/arm/plat-samsung/include/plat/watchdog-reset.h
create mode 100644 arch/arm/plat-samsung/init.c
create mode 100644 arch/arm/plat-samsung/irq-vic-timer.c
create mode 100644 arch/arm/plat-samsung/pd.c
create mode 100644 arch/arm/plat-samsung/platformdata.c
create mode 100644 arch/arm/plat-samsung/pm-check.c
create mode 100644 arch/arm/plat-samsung/pm-gpio.c
create mode 100644 arch/arm/plat-samsung/pm.c
create mode 100644 arch/arm/plat-samsung/pwm-clock.c
create mode 100644 arch/arm/plat-samsung/pwm.c
create mode 100644 arch/arm/plat-samsung/s3c-dma-ops.c
create mode 100644 arch/arm/plat-samsung/time.c
create mode 100644 arch/arm/plat-samsung/wakeup-mask.c
create mode 100644 arch/arm/plat-spear/Kconfig
create mode 100644 arch/arm/plat-spear/Makefile
create mode 100644 arch/arm/plat-spear/clock.c
create mode 100644 arch/arm/plat-spear/include/plat/clock.h
create mode 100644 arch/arm/plat-spear/include/plat/debug-macro.S
create mode 100644 arch/arm/plat-spear/include/plat/gpio.h
create mode 100644 arch/arm/plat-spear/include/plat/hardware.h
create mode 100644 arch/arm/plat-spear/include/plat/keyboard.h
create mode 100644 arch/arm/plat-spear/include/plat/padmux.h
create mode 100644 arch/arm/plat-spear/include/plat/shirq.h
create mode 100644 arch/arm/plat-spear/include/plat/timex.h
create mode 100644 arch/arm/plat-spear/include/plat/uncompress.h
create mode 100644 arch/arm/plat-spear/padmux.c
create mode 100644 arch/arm/plat-spear/restart.c
create mode 100644 arch/arm/plat-spear/shirq.c
create mode 100644 arch/arm/plat-spear/time.c
create mode 100644 arch/arm/plat-versatile/Kconfig
create mode 100644 arch/arm/plat-versatile/Makefile
create mode 100644 arch/arm/plat-versatile/clcd.c
create mode 100644 arch/arm/plat-versatile/clock.c
create mode 100644 arch/arm/plat-versatile/fpga-irq.c
create mode 100644 arch/arm/plat-versatile/headsmp.S
create mode 100644 arch/arm/plat-versatile/include/plat/clcd.h
create mode 100644 arch/arm/plat-versatile/include/plat/clock.h
create mode 100644 arch/arm/plat-versatile/include/plat/fpga-irq.h
create mode 100644 arch/arm/plat-versatile/include/plat/sched_clock.h
create mode 100644 arch/arm/plat-versatile/leds.c
create mode 100644 arch/arm/plat-versatile/platsmp.c
create mode 100644 arch/arm/plat-versatile/sched-clock.c
create mode 100644 arch/arm/tools/Makefile
create mode 100644 arch/arm/tools/gen-mach-types
create mode 100644 arch/arm/tools/mach-types
create mode 100644 arch/arm/vfp/Makefile
create mode 100644 arch/arm/vfp/entry.S
create mode 100644 arch/arm/vfp/vfp.h
create mode 100644 arch/arm/vfp/vfpdouble.c
create mode 100644 arch/arm/vfp/vfphw.S
create mode 100644 arch/arm/vfp/vfpinstr.h
create mode 100644 arch/arm/vfp/vfpmodule.c
create mode 100644 arch/arm/vfp/vfpsingle.c
(limited to 'arch/arm')
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
new file mode 100644
index 00000000..dca45ca6
--- /dev/null
+++ b/arch/arm/Kconfig
@@ -0,0 +1,2343 @@
+config ARM
+ bool
+ default y
+ select HAVE_AOUT
+ select HAVE_DMA_API_DEBUG
+ select HAVE_IDE if PCI || ISA || PCMCIA
+ select HAVE_MEMBLOCK
+ select RTC_LIB
+ select SYS_SUPPORTS_APM_EMULATION
+ select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI)
+ select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
+ select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
+ select HAVE_ARCH_KGDB
+ select HAVE_KPROBES if !XIP_KERNEL
+ select HAVE_KRETPROBES if (HAVE_KPROBES)
+ select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
+ select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
+ select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
+ select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
+ select ARCH_BINFMT_ELF_RANDOMIZE_PIE
+ select HAVE_GENERIC_DMA_COHERENT
+ select HAVE_KERNEL_GZIP
+ select HAVE_KERNEL_LZO
+ select HAVE_KERNEL_LZMA
+ select HAVE_KERNEL_XZ
+ select HAVE_IRQ_WORK
+ select HAVE_PERF_EVENTS
+ select PERF_USE_VMALLOC
+ select HAVE_REGS_AND_STACK_ACCESS_API
+ select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
+ select HAVE_C_RECORDMCOUNT
+ select HAVE_GENERIC_HARDIRQS
+ select GENERIC_IRQ_SHOW
+ select CPU_PM if (SUSPEND || CPU_IDLE)
+ select GENERIC_PCI_IOMAP
+ select HAVE_BPF_JIT if NET
+ help
+ The ARM series is a line of low-power-consumption RISC chip designs
+ licensed by ARM Ltd and targeted at embedded applications and
+ handhelds such as the Compaq IPAQ. ARM-based PCs are no longer
+ manufactured, but legacy ARM-based PC hardware remains popular in
+ Europe. There is an ARM Linux project with a web page at
+ .
+
+config ARM_HAS_SG_CHAIN
+ bool
+
+config HAVE_PWM
+ bool
+
+config MIGHT_HAVE_PCI
+ bool
+
+config SYS_SUPPORTS_APM_EMULATION
+ bool
+
+config GENERIC_GPIO
+ bool
+
+config ARCH_USES_GETTIMEOFFSET
+ bool
+ default n
+
+config GENERIC_CLOCKEVENTS
+ bool
+
+config GENERIC_CLOCKEVENTS_BROADCAST
+ bool
+ depends on GENERIC_CLOCKEVENTS
+ default y if SMP
+
+config KTIME_SCALAR
+ bool
+ default y
+
+config HAVE_TCM
+ bool
+ select GENERIC_ALLOCATOR
+
+config HAVE_PROC_CPU
+ bool
+
+config NO_IOPORT
+ bool
+
+config EISA
+ bool
+ ---help---
+ The Extended Industry Standard Architecture (EISA) bus was
+ developed as an open alternative to the IBM MicroChannel bus.
+
+ The EISA bus provided some of the features of the IBM MicroChannel
+ bus while maintaining backward compatibility with cards made for
+ the older ISA bus. The EISA bus saw limited use between 1988 and
+ 1995 when it was made obsolete by the PCI bus.
+
+ Say Y here if you are building a kernel for an EISA-based machine.
+
+ Otherwise, say N.
+
+config SBUS
+ bool
+
+config MCA
+ bool
+ help
+ MicroChannel Architecture is found in some IBM PS/2 machines and
+ laptops. It is a bus system similar to PCI or ISA. See
+ (and especially the web page given
+ there) before attempting to build an MCA bus kernel.
+
+config STACKTRACE_SUPPORT
+ bool
+ default y
+
+config HAVE_LATENCYTOP_SUPPORT
+ bool
+ depends on !SMP
+ default y
+
+config LOCKDEP_SUPPORT
+ bool
+ default y
+
+config TRACE_IRQFLAGS_SUPPORT
+ bool
+ default y
+
+config HARDIRQS_SW_RESEND
+ bool
+ default y
+
+config GENERIC_IRQ_PROBE
+ bool
+ default y
+
+config GENERIC_LOCKBREAK
+ bool
+ default y
+ depends on SMP && PREEMPT
+
+config RWSEM_GENERIC_SPINLOCK
+ bool
+ default y
+
+config RWSEM_XCHGADD_ALGORITHM
+ bool
+
+config ARCH_HAS_ILOG2_U32
+ bool
+
+config ARCH_HAS_ILOG2_U64
+ bool
+
+config ARCH_HAS_CPUFREQ
+ bool
+ help
+ Internal node to signify that the ARCH has CPUFREQ support
+ and that the relevant menu configurations are displayed for
+ it.
+
+config ARCH_HAS_CPU_IDLE_WAIT
+ def_bool y
+
+config GENERIC_HWEIGHT
+ bool
+ default y
+
+config GENERIC_CALIBRATE_DELAY
+ bool
+ default y
+
+config ARCH_MAY_HAVE_PC_FDC
+ bool
+
+config ZONE_DMA
+ bool
+
+config NEED_DMA_MAP_STATE
+ def_bool y
+
+config ARCH_HAS_DMA_SET_COHERENT_MASK
+ bool
+
+config GENERIC_ISA_DMA
+ bool
+
+config FIQ
+ bool
+
+config NEED_RET_TO_USER
+ bool
+
+config ARCH_MTD_XIP
+ bool
+
+config VECTORS_BASE
+ hex
+ default 0xffff0000 if MMU || CPU_HIGH_VECTOR
+ default DRAM_BASE if REMAP_VECTORS_TO_RAM
+ default 0x00000000
+ help
+ The base address of exception vectors.
+
+config ARM_PATCH_PHYS_VIRT
+ bool "Patch physical to virtual translations at runtime" if EMBEDDED
+ default y
+ depends on !XIP_KERNEL && MMU
+ depends on !ARCH_REALVIEW || !SPARSEMEM
+ help
+ Patch phys-to-virt and virt-to-phys translation functions at
+ boot and module load time according to the position of the
+ kernel in system memory.
+
+ This can only be used with non-XIP MMU kernels where the base
+ of physical memory is at a 16MB boundary.
+
+ Only disable this option if you know that you do not require
+ this feature (eg, building a kernel for a single machine) and
+ you need to shrink the kernel to the minimal size.
+
+config NEED_MACH_IO_H
+ bool
+ help
+ Select this when mach/io.h is required to provide special
+ definitions for this platform. The need for mach/io.h should
+ be avoided when possible.
+
+config NEED_MACH_MEMORY_H
+ bool
+ help
+ Select this when mach/memory.h is required to provide special
+ definitions for this platform. The need for mach/memory.h should
+ be avoided when possible.
+
+config PHYS_OFFSET
+ hex "Physical address of main memory" if MMU
+ depends on !ARM_PATCH_PHYS_VIRT && !NEED_MACH_MEMORY_H
+ default DRAM_BASE if !MMU
+ help
+ Please provide the physical address corresponding to the
+ location of main memory in your system.
+
+config GENERIC_BUG
+ def_bool y
+ depends on BUG
+
+source "init/Kconfig"
+
+source "kernel/Kconfig.freezer"
+
+menu "System Type"
+
+config MMU
+ bool "MMU-based Paged Memory Management Support"
+ default y
+ help
+ Select if you want MMU-based virtualised addressing space
+ support by paged memory management. If unsure, say 'Y'.
+
+#
+# The "ARM system type" choice list is ordered alphabetically by option
+# text. Please add new entries in the option alphabetic order.
+#
+choice
+ prompt "ARM system type"
+ default ARCH_WMT
+
+config ARCH_WMT
+ bool "WonderMedia Technology"
+ select NEED_MACH_IO_H
+ select ARCH_HAS_CPUFREQ
+ select GENERIC_CLOCKEVENTS
+ select MIGHT_HAVE_CACHE_L2X0
+ select ARM_GIC
+ select HAVE_SMP
+ select ARCH_REQUIRE_GPIOLIB
+ select HAVE_PWM
+ select HAVE_CLK
+ select COMMON_CLK
+ select CLKDEV_LOOKUP
+ help
+ This enables support for systems based on a WonderMedia Technology system.
+
+config ARCH_INTEGRATOR
+ bool "ARM Ltd. Integrator family"
+ select ARM_AMBA
+ select ARCH_HAS_CPUFREQ
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select HAVE_TCM
+ select ICST
+ select GENERIC_CLOCKEVENTS
+ select PLAT_VERSATILE
+ select PLAT_VERSATILE_FPGA_IRQ
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ select SPARSE_IRQ
+ help
+ Support for ARM's Integrator platform.
+
+config ARCH_REALVIEW
+ bool "ARM Ltd. RealView family"
+ select ARM_AMBA
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select ICST
+ select GENERIC_CLOCKEVENTS
+ select ARCH_WANT_OPTIONAL_GPIOLIB
+ select PLAT_VERSATILE
+ select PLAT_VERSATILE_CLCD
+ select ARM_TIMER_SP804
+ select GPIO_PL061 if GPIOLIB
+ select NEED_MACH_MEMORY_H
+ help
+ This enables support for ARM Ltd RealView boards.
+
+config ARCH_VERSATILE
+ bool "ARM Ltd. Versatile family"
+ select ARM_AMBA
+ select ARM_VIC
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select ICST
+ select GENERIC_CLOCKEVENTS
+ select ARCH_WANT_OPTIONAL_GPIOLIB
+ select PLAT_VERSATILE
+ select PLAT_VERSATILE_CLCD
+ select PLAT_VERSATILE_FPGA_IRQ
+ select ARM_TIMER_SP804
+ help
+ This enables support for ARM Ltd Versatile board.
+
+config ARCH_VEXPRESS
+ bool "ARM Ltd. Versatile Express family"
+ select ARCH_WANT_OPTIONAL_GPIOLIB
+ select ARM_AMBA
+ select ARM_TIMER_SP804
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select GENERIC_CLOCKEVENTS
+ select HAVE_CLK
+ select HAVE_PATA_PLATFORM
+ select ICST
+ select NO_IOPORT
+ select PLAT_VERSATILE
+ select PLAT_VERSATILE_CLCD
+ help
+ This enables support for the ARM Ltd Versatile Express boards.
+
+config ARCH_AT91
+ bool "Atmel AT91"
+ select ARCH_REQUIRE_GPIOLIB
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select IRQ_DOMAIN
+ select NEED_MACH_IO_H if PCCARD
+ help
+ This enables support for systems based on the Atmel AT91RM9200,
+ AT91SAM9 processors.
+
+config ARCH_BCMRING
+ bool "Broadcom BCMRING"
+ depends on MMU
+ select CPU_V6
+ select ARM_AMBA
+ select ARM_TIMER_SP804
+ select CLKDEV_LOOKUP
+ select GENERIC_CLOCKEVENTS
+ select ARCH_WANT_OPTIONAL_GPIOLIB
+ help
+ Support for Broadcom's BCMRing platform.
+
+config ARCH_HIGHBANK
+ bool "Calxeda Highbank-based"
+ select ARCH_WANT_OPTIONAL_GPIOLIB
+ select ARM_AMBA
+ select ARM_GIC
+ select ARM_TIMER_SP804
+ select CACHE_L2X0
+ select CLKDEV_LOOKUP
+ select CPU_V7
+ select GENERIC_CLOCKEVENTS
+ select HAVE_ARM_SCU
+ select HAVE_SMP
+ select SPARSE_IRQ
+ select USE_OF
+ help
+ Support for the Calxeda Highbank SoC based boards.
+
+config ARCH_CLPS711X
+ bool "Cirrus Logic CLPS711x/EP721x-based"
+ select CPU_ARM720T
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_MEMORY_H
+ help
+ Support for Cirrus Logic 711x/721x based boards.
+
+config ARCH_CNS3XXX
+ bool "Cavium Networks CNS3XXX family"
+ select CPU_V6K
+ select GENERIC_CLOCKEVENTS
+ select ARM_GIC
+ select MIGHT_HAVE_CACHE_L2X0
+ select MIGHT_HAVE_PCI
+ select PCI_DOMAINS if PCI
+ help
+ Support for Cavium Networks CNS3XXX platform.
+
+config ARCH_GEMINI
+ bool "Cortina Systems Gemini"
+ select CPU_FA526
+ select ARCH_REQUIRE_GPIOLIB
+ select ARCH_USES_GETTIMEOFFSET
+ help
+ Support for the Cortina Systems Gemini family SoCs
+
+config ARCH_PRIMA2
+ bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
+ select CPU_V7
+ select NO_IOPORT
+ select GENERIC_CLOCKEVENTS
+ select CLKDEV_LOOKUP
+ select GENERIC_IRQ_CHIP
+ select MIGHT_HAVE_CACHE_L2X0
+ select USE_OF
+ select ZONE_DMA
+ help
+ Support for CSR SiRFSoC ARM Cortex A9 Platform
+
+config ARCH_EBSA110
+ bool "EBSA-110"
+ select CPU_SA110
+ select ISA
+ select NO_IOPORT
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ help
+ This is an evaluation board for the StrongARM processor available
+ from Digital. It has limited hardware on-board, including an
+ Ethernet interface, two PCMCIA sockets, two serial ports and a
+ parallel port.
+
+config ARCH_EP93XX
+ bool "EP93xx-based"
+ select CPU_ARM920T
+ select ARM_AMBA
+ select ARM_VIC
+ select CLKDEV_LOOKUP
+ select ARCH_REQUIRE_GPIOLIB
+ select ARCH_HAS_HOLES_MEMORYMODEL
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_MEMORY_H
+ help
+ This enables support for the Cirrus EP93xx series of CPUs.
+
+config ARCH_FOOTBRIDGE
+ bool "FootBridge"
+ select CPU_SA110
+ select FOOTBRIDGE
+ select GENERIC_CLOCKEVENTS
+ select HAVE_IDE
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ help
+ Support for systems based on the DC21285 companion chip
+ ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
+
+config ARCH_MXC
+ bool "Freescale MXC/iMX-based"
+ select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select GENERIC_IRQ_CHIP
+ select MULTI_IRQ_HANDLER
+ help
+ Support for Freescale MXC/iMX-based family of processors
+
+config ARCH_MXS
+ bool "Freescale MXS-based"
+ select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select HAVE_CLK_PREPARE
+ help
+ Support for Freescale MXS-based family of processors
+
+config ARCH_NETX
+ bool "Hilscher NetX based"
+ select CLKSRC_MMIO
+ select CPU_ARM926T
+ select ARM_VIC
+ select GENERIC_CLOCKEVENTS
+ help
+ This enables support for systems based on the Hilscher NetX Soc
+
+config ARCH_H720X
+ bool "Hynix HMS720x-based"
+ select CPU_ARM720T
+ select ISA_DMA_API
+ select ARCH_USES_GETTIMEOFFSET
+ help
+ This enables support for systems based on the Hynix HMS720x
+
+config ARCH_IOP13XX
+ bool "IOP13xx-based"
+ depends on MMU
+ select CPU_XSC3
+ select PLAT_IOP
+ select PCI
+ select ARCH_SUPPORTS_MSI
+ select VMSPLIT_1G
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ select NEED_RET_TO_USER
+ help
+ Support for Intel's IOP13XX (XScale) family of processors.
+
+config ARCH_IOP32X
+ bool "IOP32x-based"
+ depends on MMU
+ select CPU_XSCALE
+ select NEED_MACH_IO_H
+ select NEED_RET_TO_USER
+ select PLAT_IOP
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ help
+ Support for Intel's 80219 and IOP32X (XScale) family of
+ processors.
+
+config ARCH_IOP33X
+ bool "IOP33x-based"
+ depends on MMU
+ select CPU_XSCALE
+ select NEED_MACH_IO_H
+ select NEED_RET_TO_USER
+ select PLAT_IOP
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ help
+ Support for Intel's IOP33X (XScale) family of processors.
+
+config ARCH_IXP23XX
+ bool "IXP23XX-based"
+ depends on MMU
+ select CPU_XSC3
+ select PCI
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ help
+ Support for Intel's IXP23xx (XScale) family of processors.
+
+config ARCH_IXP2000
+ bool "IXP2400/2800-based"
+ depends on MMU
+ select CPU_XSCALE
+ select PCI
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ help
+ Support for Intel's IXP2400/2800 (XScale) family of processors.
+
+config ARCH_IXP4XX
+ bool "IXP4xx-based"
+ depends on MMU
+ select ARCH_HAS_DMA_SET_COHERENT_MASK
+ select CLKSRC_MMIO
+ select CPU_XSCALE
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select MIGHT_HAVE_PCI
+ select NEED_MACH_IO_H
+ select DMABOUNCE if PCI
+ help
+ Support for Intel's IXP4XX (XScale) family of processors.
+
+config ARCH_DOVE
+ bool "Marvell Dove"
+ select CPU_V7
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select NEED_MACH_IO_H
+ select PLAT_ORION
+ help
+ Support for the Marvell Dove SoC 88AP510
+
+config ARCH_KIRKWOOD
+ bool "Marvell Kirkwood"
+ select CPU_FEROCEON
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select NEED_MACH_IO_H
+ select PLAT_ORION
+ help
+ Support for the following Marvell Kirkwood series SoCs:
+ 88F6180, 88F6192 and 88F6281.
+
+config ARCH_LPC32XX
+ bool "NXP LPC32XX"
+ select CLKSRC_MMIO
+ select CPU_ARM926T
+ select ARCH_REQUIRE_GPIOLIB
+ select HAVE_IDE
+ select ARM_AMBA
+ select USB_ARCH_HAS_OHCI
+ select CLKDEV_LOOKUP
+ select GENERIC_CLOCKEVENTS
+ help
+ Support for the NXP LPC32XX family of processors
+
+config ARCH_MV78XX0
+ bool "Marvell MV78xx0"
+ select CPU_FEROCEON
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select NEED_MACH_IO_H
+ select PLAT_ORION
+ help
+ Support for the following Marvell MV78xx0 series SoCs:
+ MV781x0, MV782x0.
+
+config ARCH_ORION5X
+ bool "Marvell Orion"
+ depends on MMU
+ select CPU_FEROCEON
+ select PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select PLAT_ORION
+ help
+ Support for the following Marvell Orion 5x series SoCs:
+ Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
+ Orion-2 (5281), Orion-1-90 (6183).
+
+config ARCH_MMP
+ bool "Marvell PXA168/910/MMP2"
+ depends on MMU
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ select GENERIC_CLOCKEVENTS
+ select GPIO_PXA
+ select TICK_ONESHOT
+ select PLAT_PXA
+ select SPARSE_IRQ
+ select GENERIC_ALLOCATOR
+ help
+ Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
+
+config ARCH_KS8695
+ bool "Micrel/Kendin KS8695"
+ select CPU_ARM922T
+ select ARCH_REQUIRE_GPIOLIB
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_MEMORY_H
+ help
+ Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
+ System-on-Chip devices.
+
+config ARCH_W90X900
+ bool "Nuvoton W90X900 CPU"
+ select CPU_ARM926T
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select GENERIC_CLOCKEVENTS
+ help
+ Support for Nuvoton (Winbond logic dept.) ARM9 processor,
+ At present, the w90x900 has been renamed nuc900, regarding
+ the ARM series product line, you can login the following
+ link address to know more.
+
+
+
+config ARCH_TEGRA
+ bool "NVIDIA Tegra"
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select GENERIC_CLOCKEVENTS
+ select GENERIC_GPIO
+ select HAVE_CLK
+ select HAVE_SMP
+ select MIGHT_HAVE_CACHE_L2X0
+ select NEED_MACH_IO_H if PCI
+ select ARCH_HAS_CPUFREQ
+ help
+ This enables support for NVIDIA Tegra based systems (Tegra APX,
+ Tegra 6xx and Tegra 2 series).
+
+config ARCH_PICOXCELL
+ bool "Picochip picoXcell"
+ select ARCH_REQUIRE_GPIOLIB
+ select ARM_PATCH_PHYS_VIRT
+ select ARM_VIC
+ select CPU_V6K
+ select DW_APB_TIMER
+ select GENERIC_CLOCKEVENTS
+ select GENERIC_GPIO
+ select HAVE_TCM
+ select NO_IOPORT
+ select SPARSE_IRQ
+ select USE_OF
+ help
+ This enables support for systems based on the Picochip picoXcell
+ family of Femtocell devices. The picoxcell support requires device tree
+ for all boards.
+
+config ARCH_PNX4008
+ bool "Philips Nexperia PNX4008 Mobile"
+ select CPU_ARM926T
+ select CLKDEV_LOOKUP
+ select ARCH_USES_GETTIMEOFFSET
+ help
+ This enables support for Philips PNX4008 mobile platform.
+
+config ARCH_PXA
+ bool "PXA2xx/PXA3xx-based"
+ depends on MMU
+ select ARCH_MTD_XIP
+ select ARCH_HAS_CPUFREQ
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_CLOCKEVENTS
+ select GPIO_PXA
+ select TICK_ONESHOT
+ select PLAT_PXA
+ select SPARSE_IRQ
+ select AUTO_ZRELADDR
+ select MULTI_IRQ_HANDLER
+ select ARM_CPU_SUSPEND if PM
+ select HAVE_IDE
+ help
+ Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
+
+config ARCH_MSM
+ bool "Qualcomm MSM"
+ select HAVE_CLK
+ select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ help
+ Support for Qualcomm MSM/QSD based systems. This runs on the
+ apps processor of the MSM/QSD and depends on a shared memory
+ interface to the modem processor which runs the baseband
+ stack and controls some vital subsystems
+ (clock and power control, etc).
+
+config ARCH_SHMOBILE
+ bool "Renesas SH-Mobile / R-Mobile"
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select HAVE_SMP
+ select GENERIC_CLOCKEVENTS
+ select MIGHT_HAVE_CACHE_L2X0
+ select NO_IOPORT
+ select SPARSE_IRQ
+ select MULTI_IRQ_HANDLER
+ select PM_GENERIC_DOMAINS if PM
+ select NEED_MACH_MEMORY_H
+ help
+ Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
+
+config ARCH_RPC
+ bool "RiscPC"
+ select ARCH_ACORN
+ select FIQ
+ select ARCH_MAY_HAVE_PC_FDC
+ select HAVE_PATA_PLATFORM
+ select ISA_DMA_API
+ select NO_IOPORT
+ select ARCH_SPARSEMEM_ENABLE
+ select ARCH_USES_GETTIMEOFFSET
+ select HAVE_IDE
+ select NEED_MACH_IO_H
+ select NEED_MACH_MEMORY_H
+ help
+ On the Acorn Risc-PC, Linux can support the internal IDE disk and
+ CD-ROM interface, serial and parallel port, and the floppy drive.
+
+config ARCH_SA1100
+ bool "SA1100-based"
+ select CLKSRC_MMIO
+ select CPU_SA1100
+ select ISA
+ select ARCH_SPARSEMEM_ENABLE
+ select ARCH_MTD_XIP
+ select ARCH_HAS_CPUFREQ
+ select CPU_FREQ
+ select GENERIC_CLOCKEVENTS
+ select CLKDEV_LOOKUP
+ select TICK_ONESHOT
+ select ARCH_REQUIRE_GPIOLIB
+ select HAVE_IDE
+ select NEED_MACH_MEMORY_H
+ select SPARSE_IRQ
+ help
+ Support for StrongARM 11x0 based boards.
+
+config ARCH_S3C24XX
+ bool "Samsung S3C24XX SoCs"
+ select GENERIC_GPIO
+ select ARCH_HAS_CPUFREQ
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select ARCH_USES_GETTIMEOFFSET
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C_RTC if RTC_CLASS
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ select NEED_MACH_IO_H
+ help
+ Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
+ and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
+ (), the IPAQ 1940 or the
+ Samsung SMDK2410 development board (and derivatives).
+
+config ARCH_S3C64XX
+ bool "Samsung S3C64XX"
+ select PLAT_SAMSUNG
+ select CPU_V6
+ select ARM_VIC
+ select HAVE_CLK
+ select HAVE_TCM
+ select CLKDEV_LOOKUP
+ select NO_IOPORT
+ select ARCH_USES_GETTIMEOFFSET
+ select ARCH_HAS_CPUFREQ
+ select ARCH_REQUIRE_GPIOLIB
+ select SAMSUNG_CLKSRC
+ select SAMSUNG_IRQ_VIC_TIMER
+ select S3C_GPIO_TRACK
+ select S3C_DEV_NAND
+ select USB_ARCH_HAS_OHCI
+ select SAMSUNG_GPIOLIB_4BIT
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ help
+ Samsung S3C64XX series based systems
+
+config ARCH_S5P64X0
+ bool "Samsung S5P6440 S5P6450"
+ select CPU_V6
+ select GENERIC_GPIO
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ select GENERIC_CLOCKEVENTS
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C_RTC if RTC_CLASS
+ help
+ Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
+ SMDK6450.
+
+config ARCH_S5PC100
+ bool "Samsung S5PC100"
+ select GENERIC_GPIO
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select CPU_V7
+ select ARCH_USES_GETTIMEOFFSET
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C_RTC if RTC_CLASS
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ help
+ Samsung S5PC100 series based systems
+
+config ARCH_S5PV210
+ bool "Samsung S5PV210/S5PC110"
+ select CPU_V7
+ select ARCH_SPARSEMEM_ENABLE
+ select ARCH_HAS_HOLES_MEMORYMODEL
+ select GENERIC_GPIO
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select ARCH_HAS_CPUFREQ
+ select GENERIC_CLOCKEVENTS
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C_RTC if RTC_CLASS
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ select NEED_MACH_MEMORY_H
+ help
+ Samsung S5PV210/S5PC110 series based systems
+
+config ARCH_EXYNOS
+ bool "SAMSUNG EXYNOS"
+ select CPU_V7
+ select ARCH_SPARSEMEM_ENABLE
+ select ARCH_HAS_HOLES_MEMORYMODEL
+ select GENERIC_GPIO
+ select HAVE_CLK
+ select CLKDEV_LOOKUP
+ select ARCH_HAS_CPUFREQ
+ select GENERIC_CLOCKEVENTS
+ select HAVE_S3C_RTC if RTC_CLASS
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C2410_WATCHDOG if WATCHDOG
+ select NEED_MACH_MEMORY_H
+ help
+ Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
+
+config ARCH_SHARK
+ bool "Shark"
+ select CPU_SA110
+ select ISA
+ select ISA_DMA
+ select ZONE_DMA
+ select PCI
+ select ARCH_USES_GETTIMEOFFSET
+ select NEED_MACH_MEMORY_H
+ select NEED_MACH_IO_H
+ help
+ Support for the StrongARM based Digital DNARD machine, also known
+ as "Shark" ().
+
+config ARCH_U300
+ bool "ST-Ericsson U300 Series"
+ depends on MMU
+ select CLKSRC_MMIO
+ select CPU_ARM926T
+ select HAVE_TCM
+ select ARM_AMBA
+ select ARM_PATCH_PHYS_VIRT
+ select ARM_VIC
+ select GENERIC_CLOCKEVENTS
+ select CLKDEV_LOOKUP
+ select HAVE_MACH_CLKDEV
+ select GENERIC_GPIO
+ select ARCH_REQUIRE_GPIOLIB
+ help
+ Support for ST-Ericsson U300 series mobile platforms.
+
+config ARCH_U8500
+ bool "ST-Ericsson U8500 Series"
+ depends on MMU
+ select CPU_V7
+ select ARM_AMBA
+ select GENERIC_CLOCKEVENTS
+ select CLKDEV_LOOKUP
+ select ARCH_REQUIRE_GPIOLIB
+ select ARCH_HAS_CPUFREQ
+ select HAVE_SMP
+ select MIGHT_HAVE_CACHE_L2X0
+ help
+ Support for ST-Ericsson's Ux500 architecture
+
+config ARCH_NOMADIK
+ bool "STMicroelectronics Nomadik"
+ select ARM_AMBA
+ select ARM_VIC
+ select CPU_ARM926T
+ select CLKDEV_LOOKUP
+ select GENERIC_CLOCKEVENTS
+ select MIGHT_HAVE_CACHE_L2X0
+ select ARCH_REQUIRE_GPIOLIB
+ help
+ Support for the Nomadik platform by ST-Ericsson
+
+config ARCH_DAVINCI
+ bool "TI DaVinci"
+ select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
+ select ZONE_DMA
+ select HAVE_IDE
+ select CLKDEV_LOOKUP
+ select GENERIC_ALLOCATOR
+ select GENERIC_IRQ_CHIP
+ select ARCH_HAS_HOLES_MEMORYMODEL
+ help
+ Support for TI's DaVinci platform.
+
+config ARCH_OMAP
+ bool "TI OMAP"
+ select HAVE_CLK
+ select ARCH_REQUIRE_GPIOLIB
+ select ARCH_HAS_CPUFREQ
+ select CLKSRC_MMIO
+ select GENERIC_CLOCKEVENTS
+ select ARCH_HAS_HOLES_MEMORYMODEL
+ help
+ Support for TI's OMAP platform (OMAP1/2/3/4).
+
+config PLAT_SPEAR
+ bool "ST SPEAr"
+ select ARM_AMBA
+ select ARCH_REQUIRE_GPIOLIB
+ select CLKDEV_LOOKUP
+ select CLKSRC_MMIO
+ select GENERIC_CLOCKEVENTS
+ select HAVE_CLK
+ help
+ Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).
+
+config ARCH_VT8500
+ bool "VIA/WonderMedia 85xx"
+ select CPU_ARM926T
+ select GENERIC_GPIO
+ select ARCH_HAS_CPUFREQ
+ select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
+ select HAVE_PWM
+ help
+ Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
+
+config ARCH_ZYNQ
+ bool "Xilinx Zynq ARM Cortex A9 Platform"
+ select CPU_V7
+ select GENERIC_CLOCKEVENTS
+ select CLKDEV_LOOKUP
+ select ARM_GIC
+ select ARM_AMBA
+ select ICST
+ select MIGHT_HAVE_CACHE_L2X0
+ select USE_OF
+ help
+ Support for Xilinx Zynq ARM Cortex A9 Platform
+endchoice
+
+#
+# This is sorted alphabetically by mach-* pathname. However, plat-*
+# Kconfigs may be included either alphabetically (according to the
+# plat- suffix) or along side the corresponding mach-* source.
+#
+source "arch/arm/mach-wmt/Kconfig"
+
+source "arch/arm/mach-at91/Kconfig"
+
+source "arch/arm/mach-bcmring/Kconfig"
+
+source "arch/arm/mach-clps711x/Kconfig"
+
+source "arch/arm/mach-cns3xxx/Kconfig"
+
+source "arch/arm/mach-davinci/Kconfig"
+
+source "arch/arm/mach-dove/Kconfig"
+
+source "arch/arm/mach-ep93xx/Kconfig"
+
+source "arch/arm/mach-footbridge/Kconfig"
+
+source "arch/arm/mach-gemini/Kconfig"
+
+source "arch/arm/mach-h720x/Kconfig"
+
+source "arch/arm/mach-integrator/Kconfig"
+
+source "arch/arm/mach-iop32x/Kconfig"
+
+source "arch/arm/mach-iop33x/Kconfig"
+
+source "arch/arm/mach-iop13xx/Kconfig"
+
+source "arch/arm/mach-ixp4xx/Kconfig"
+
+source "arch/arm/mach-ixp2000/Kconfig"
+
+source "arch/arm/mach-ixp23xx/Kconfig"
+
+source "arch/arm/mach-kirkwood/Kconfig"
+
+source "arch/arm/mach-ks8695/Kconfig"
+
+source "arch/arm/mach-lpc32xx/Kconfig"
+
+source "arch/arm/mach-msm/Kconfig"
+
+source "arch/arm/mach-mv78xx0/Kconfig"
+
+source "arch/arm/plat-mxc/Kconfig"
+
+source "arch/arm/mach-mxs/Kconfig"
+
+source "arch/arm/mach-netx/Kconfig"
+
+source "arch/arm/mach-nomadik/Kconfig"
+source "arch/arm/plat-nomadik/Kconfig"
+
+source "arch/arm/plat-omap/Kconfig"
+
+source "arch/arm/mach-omap1/Kconfig"
+
+source "arch/arm/mach-omap2/Kconfig"
+
+source "arch/arm/mach-orion5x/Kconfig"
+
+source "arch/arm/mach-pxa/Kconfig"
+source "arch/arm/plat-pxa/Kconfig"
+
+source "arch/arm/mach-mmp/Kconfig"
+
+source "arch/arm/mach-realview/Kconfig"
+
+source "arch/arm/mach-sa1100/Kconfig"
+
+source "arch/arm/plat-samsung/Kconfig"
+source "arch/arm/plat-s3c24xx/Kconfig"
+source "arch/arm/plat-s5p/Kconfig"
+
+source "arch/arm/plat-spear/Kconfig"
+
+source "arch/arm/mach-s3c24xx/Kconfig"
+if ARCH_S3C24XX
+source "arch/arm/mach-s3c2412/Kconfig"
+source "arch/arm/mach-s3c2440/Kconfig"
+endif
+
+if ARCH_S3C64XX
+source "arch/arm/mach-s3c64xx/Kconfig"
+endif
+
+source "arch/arm/mach-s5p64x0/Kconfig"
+
+source "arch/arm/mach-s5pc100/Kconfig"
+
+source "arch/arm/mach-s5pv210/Kconfig"
+
+source "arch/arm/mach-exynos/Kconfig"
+
+source "arch/arm/mach-shmobile/Kconfig"
+
+source "arch/arm/mach-tegra/Kconfig"
+
+source "arch/arm/mach-u300/Kconfig"
+
+source "arch/arm/mach-ux500/Kconfig"
+
+source "arch/arm/mach-versatile/Kconfig"
+
+source "arch/arm/mach-vexpress/Kconfig"
+source "arch/arm/plat-versatile/Kconfig"
+
+source "arch/arm/mach-vt8500/Kconfig"
+
+source "arch/arm/mach-w90x900/Kconfig"
+
+# Definitions to make life easier
+config ARCH_ACORN
+ bool
+
+config PLAT_IOP
+ bool
+ select GENERIC_CLOCKEVENTS
+
+config PLAT_ORION
+ bool
+ select CLKSRC_MMIO
+ select GENERIC_IRQ_CHIP
+
+config PLAT_PXA
+ bool
+
+config PLAT_VERSATILE
+ bool
+
+config ARM_TIMER_SP804
+ bool
+ select CLKSRC_MMIO
+ select HAVE_SCHED_CLOCK
+
+source arch/arm/mm/Kconfig
+
+config ARM_NR_BANKS
+ int
+ default 16 if ARCH_EP93XX
+ default 8
+
+config IWMMXT
+ bool "Enable iWMMXt support"
+ depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
+ default y if PXA27x || PXA3xx || PXA95x || ARCH_MMP
+ help
+ Enable support for iWMMXt context switching at run time if
+ running on a CPU that supports it.
+
+config XSCALE_PMU
+ bool
+ depends on CPU_XSCALE
+ default y
+
+config CPU_HAS_PMU
+ depends on (CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && \
+ (!ARCH_OMAP3 || OMAP3_EMU)
+ default y
+ bool
+
+config MULTI_IRQ_HANDLER
+ bool
+ help
+ Allow each machine to specify it's own IRQ handler at run time.
+
+if !MMU
+source "arch/arm/Kconfig-nommu"
+endif
+
+config ARM_ERRATA_326103
+ bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory"
+ depends on CPU_V6
+ help
+ Executing a SWP instruction to read-only memory does not set bit 11
+ of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to
+ treat the access as a read, preventing a COW from occurring and
+ causing the faulting task to livelock.
+
+config ARM_ERRATA_411920
+ bool "ARM errata: Invalidation of the Instruction Cache operation can fail"
+ depends on CPU_V6 || CPU_V6K
+ help
+ Invalidation of the Instruction Cache operation can
+ fail. This erratum is present in 1136 (before r1p4), 1156 and 1176.
+ It does not affect the MPCore. This option enables the ARM Ltd.
+ recommended workaround.
+
+config ARM_ERRATA_430973
+ bool "ARM errata: Stale prediction on replaced interworking branch"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 430973 Cortex-A8
+ (r1p0..r1p2) erratum. If a code sequence containing an ARM/Thumb
+ interworking branch is replaced with another code sequence at the
+ same virtual address, whether due to self-modifying code or virtual
+ to physical address re-mapping, Cortex-A8 does not recover from the
+ stale interworking branch prediction. This results in Cortex-A8
+ executing the new code sequence in the incorrect ARM or Thumb state.
+ The workaround enables the BTB/BTAC operations by setting ACTLR.IBE
+ and also flushes the branch target cache at every context switch.
+ Note that setting specific bits in the ACTLR register may not be
+ available in non-secure mode.
+
+config ARM_ERRATA_458693
+ bool "ARM errata: Processor deadlock when a false hazard is created"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 458693 Cortex-A8 (r2p0)
+ erratum. For very specific sequences of memory operations, it is
+ possible for a hazard condition intended for a cache line to instead
+ be incorrectly associated with a different cache line. This false
+ hazard might then cause a processor deadlock. The workaround enables
+ the L1 caching of the NEON accesses and disables the PLD instruction
+ in the ACTLR register. Note that setting specific bits in the ACTLR
+ register may not be available in non-secure mode.
+
+config ARM_ERRATA_460075
+ bool "ARM errata: Data written to the L2 cache can be overwritten with stale data"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 460075 Cortex-A8 (r2p0)
+ erratum. Any asynchronous access to the L2 cache may encounter a
+ situation in which recent store transactions to the L2 cache are lost
+ and overwritten with stale memory contents from external memory. The
+ workaround disables the write-allocate mode for the L2 cache via the
+ ACTLR register. Note that setting specific bits in the ACTLR register
+ may not be available in non-secure mode.
+
+config ARM_ERRATA_742230
+ bool "ARM errata: DMB operation may be faulty"
+ depends on CPU_V7 && SMP
+ help
+ This option enables the workaround for the 742230 Cortex-A9
+ (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction
+ between two write operations may not ensure the correct visibility
+ ordering of the two writes. This workaround sets a specific bit in
+ the diagnostic register of the Cortex-A9 which causes the DMB
+ instruction to behave as a DSB, ensuring the correct behaviour of
+ the two writes.
+
+config ARM_ERRATA_742231
+ bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption"
+ depends on CPU_V7 && SMP
+ help
+ This option enables the workaround for the 742231 Cortex-A9
+ (r2p0..r2p2) erratum. Under certain conditions, specific to the
+ Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode,
+ accessing some data located in the same cache line, may get corrupted
+ data due to bad handling of the address hazard when the line gets
+ replaced from one of the CPUs at the same time as another CPU is
+ accessing it. This workaround sets specific bits in the diagnostic
+ register of the Cortex-A9 which reduces the linefill issuing
+ capabilities of the processor.
+
+config PL310_ERRATA_588369
+ bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines"
+ depends on CACHE_L2X0
+ help
+ The PL310 L2 cache controller implements three types of Clean &
+ Invalidate maintenance operations: by Physical Address
+ (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC).
+ They are architecturally defined to behave as the execution of a
+ clean operation followed immediately by an invalidate operation,
+ both performing to the same memory location. This functionality
+ is not correctly implemented in PL310 as clean lines are not
+ invalidated as a result of these operations.
+
+config ARM_ERRATA_720789
+ bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 720789 Cortex-A9 (prior to
+ r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
+ broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS.
+ As a consequence of this erratum, some TLB entries which should be
+ invalidated are not, resulting in an incoherency in the system page
+ tables. The workaround changes the TLB flushing routines to invalidate
+ entries regardless of the ASID.
+
+config PL310_ERRATA_727915
+ bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption"
+ depends on CACHE_L2X0
+ help
+ PL310 implements the Clean & Invalidate by Way L2 cache maintenance
+ operation (offset 0x7FC). This operation runs in background so that
+ PL310 can handle normal accesses while it is in progress. Under very
+ rare circumstances, due to this erratum, write data can be lost when
+ PL310 treats a cacheable write transaction during a Clean &
+ Invalidate by Way operation.
+
+config ARM_ERRATA_743622
+ bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 743622 Cortex-A9
+ (r2p*) erratum. Under very rare conditions, a faulty
+ optimisation in the Cortex-A9 Store Buffer may lead to data
+ corruption. This workaround sets a specific bit in the diagnostic
+ register of the Cortex-A9 which disables the Store Buffer
+ optimisation, preventing the defect from occurring. This has no
+ visible impact on the overall performance or power consumption of the
+ processor.
+
+config ARM_ERRATA_751472
+ bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 751472 Cortex-A9 (prior
+ to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
+ completion of a following broadcasted operation if the second
+ operation is received by a CPU before the ICIALLUIS has completed,
+ potentially leading to corrupted entries in the cache or TLB.
+
+config PL310_ERRATA_753970
+ bool "PL310 errata: cache sync operation may be faulty"
+ depends on CACHE_PL310
+ help
+ This option enables the workaround for the 753970 PL310 (r3p0) erratum.
+
+ Under some condition the effect of cache sync operation on
+ the store buffer still remains when the operation completes.
+ This means that the store buffer is always asked to drain and
+ this prevents it from merging any further writes. The workaround
+ is to replace the normal offset of cache sync operation (0x730)
+ by another offset targeting an unmapped PL310 register 0x740.
+ This has the same effect as the cache sync operation: store buffer
+ drain and waiting for all buffers empty.
+
+config ARM_ERRATA_754322
+ bool "ARM errata: possible faulty MMU translations following an ASID switch"
+ depends on CPU_V7
+ help
+ This option enables the workaround for the 754322 Cortex-A9 (r2p*,
+ r3p*) erratum. A speculative memory access may cause a page table walk
+ which starts prior to an ASID switch but completes afterwards. This
+ can populate the micro-TLB with a stale entry which may be hit with
+ the new ASID. This workaround places two dsb instructions in the mm
+ switching code so that no page table walks can cross the ASID switch.
+
+config ARM_ERRATA_754327
+ bool "ARM errata: no automatic Store Buffer drain"
+ depends on CPU_V7 && SMP
+ help
+ This option enables the workaround for the 754327 Cortex-A9 (prior to
+ r2p0) erratum. The Store Buffer does not have any automatic draining
+ mechanism and therefore a livelock may occur if an external agent
+ continuously polls a memory location waiting to observe an update.
+ This workaround defines cpu_relax() as smp_mb(), preventing correctly
+ written polling loops from denying visibility of updates to memory.
+
+config ARM_ERRATA_364296
+ bool "ARM errata: Possible cache data corruption with hit-under-miss enabled"
+ depends on CPU_V6 && !SMP
+ help
+ This options enables the workaround for the 364296 ARM1136
+ r0p2 erratum (possible cache data corruption with
+ hit-under-miss enabled). It sets the undocumented bit 31 in
+ the auxiliary control register and the FI bit in the control
+ register, thus disabling hit-under-miss without putting the
+ processor into full low interrupt latency mode. ARM11MPCore
+ is not affected.
+
+config ARM_ERRATA_764369
+ bool "ARM errata: Data cache line maintenance operation by MVA may not succeed"
+ depends on CPU_V7 && SMP
+ help
+ This option enables the workaround for erratum 764369
+ affecting Cortex-A9 MPCore with two or more processors (all
+ current revisions). Under certain timing circumstances, a data
+ cache line maintenance operation by MVA targeting an Inner
+ Shareable memory region may fail to proceed up to either the
+ Point of Coherency or to the Point of Unification of the
+ system. This workaround adds a DSB instruction before the
+ relevant cache maintenance functions and sets a specific bit
+ in the diagnostic control register of the SCU.
+
+config PL310_ERRATA_769419
+ bool "PL310 errata: no automatic Store Buffer drain"
+ depends on CACHE_L2X0
+ help
+ On revisions of the PL310 prior to r3p2, the Store Buffer does
+ not automatically drain. This can cause normal, non-cacheable
+ writes to be retained when the memory system is idle, leading
+ to suboptimal I/O performance for drivers using coherent DMA.
+ This option adds a write barrier to the cpu_idle loop so that,
+ on systems with an outer cache, the store buffer is drained
+ explicitly.
+
+endmenu
+
+source "arch/arm/common/Kconfig"
+
+menu "Bus support"
+
+config ARM_AMBA
+ bool
+
+config ISA
+ bool
+ help
+ Find out whether you have ISA slots on your motherboard. ISA is the
+ name of a bus system, i.e. the way the CPU talks to the other stuff
+ inside your box. Other bus systems are PCI, EISA, MicroChannel
+ (MCA) or VESA. ISA is an older system, now being displaced by PCI;
+ newer boards don't support it. If you have ISA, say Y, otherwise N.
+
+# Select ISA DMA controller support
+config ISA_DMA
+ bool
+ select ISA_DMA_API
+
+# Select ISA DMA interface
+config ISA_DMA_API
+ bool
+
+config PCI
+ bool "PCI support" if ARCH_WMT || MIGHT_HAVE_PCI
+ help
+ Find out whether you have a PCI motherboard. PCI is the name of a
+ bus system, i.e. the way the CPU talks to the other stuff inside
+ your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
+ VESA. If you have PCI, say Y, otherwise N.
+
+config PCI_DOMAINS
+ bool
+ depends on PCI
+
+config PCI_NANOENGINE
+ bool "BSE nanoEngine PCI support"
+ depends on SA1100_NANOENGINE
+ help
+ Enable PCI on the BSE nanoEngine board.
+
+config PCI_SYSCALL
+ def_bool PCI
+
+# Select the host bridge type
+config PCI_HOST_VIA82C505
+ bool
+ depends on PCI && ARCH_SHARK
+ default y
+
+config PCI_HOST_ITE8152
+ bool
+ depends on PCI && MACH_ARMCORE
+ default y
+ select DMABOUNCE
+
+source "drivers/pci/Kconfig"
+
+source "drivers/pcmcia/Kconfig"
+
+endmenu
+
+menu "Kernel Features"
+
+source "kernel/time/Kconfig"
+
+config HAVE_SMP
+ bool
+ help
+ This option should be selected by machines which have an SMP-
+ capable CPU.
+
+ The only effect of this option is to make the SMP-related
+ options available to the user for configuration.
+
+config SMP
+ bool "Symmetric Multi-Processing"
+ depends on CPU_V6K || CPU_V7
+ depends on GENERIC_CLOCKEVENTS
+ depends on HAVE_SMP
+ depends on MMU
+ select USE_GENERIC_SMP_HELPERS
+ select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
+ help
+ This enables support for systems with more than one CPU. If you have
+ a system with only one CPU, like most personal computers, say N. If
+ you have a system with more than one CPU, say Y.
+
+ If you say N here, the kernel will run on single and multiprocessor
+ machines, but will use only one CPU of a multiprocessor machine. If
+ you say Y here, the kernel will run on many, but not all, single
+ processor machines. On a single processor machine, the kernel will
+ run faster if you say N here.
+
+ See also ,
+ and the SMP-HOWTO available at
+ .
+
+ If you don't know what to do here, say N.
+
+config SMP_ON_UP
+ bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
+ depends on SMP && !XIP_KERNEL
+ default y
+ help
+ SMP kernels contain instructions which fail on non-SMP processors.
+ Enabling this option allows the kernel to modify itself to make
+ these instructions safe. Disabling it allows about 1K of space
+ savings.
+
+ If you don't know what to do here, say Y.
+
+config ARM_CPU_TOPOLOGY
+ bool "Support cpu topology definition"
+ depends on SMP && CPU_V7
+ default y
+ help
+ Support ARM cpu topology definition. The MPIDR register defines
+ affinity between processors which is then used to describe the cpu
+ topology of an ARM System.
+
+config SCHED_MC
+ bool "Multi-core scheduler support"
+ depends on ARM_CPU_TOPOLOGY
+ help
+ Multi-core scheduler support improves the CPU scheduler's decision
+ making when dealing with multi-core CPU chips at a cost of slightly
+ increased overhead in some places. If unsure say N here.
+
+config SCHED_SMT
+ bool "SMT scheduler support"
+ depends on ARM_CPU_TOPOLOGY
+ help
+ Improves the CPU scheduler's decision making when dealing with
+ MultiThreading at a cost of slightly increased overhead in some
+ places. If unsure say N here.
+
+config HAVE_ARM_SCU
+ bool
+ help
+ This option enables support for the ARM system coherency unit
+
+config HAVE_ARM_TWD
+ bool
+ depends on SMP
+ select TICK_ONESHOT
+ help
+ This options enables support for the ARM timer and watchdog unit
+
+choice
+ prompt "Memory split"
+ default VMSPLIT_3G
+ help
+ Select the desired split between kernel and user memory.
+
+ If you are not absolutely sure what you are doing, leave this
+ option alone!
+
+ config VMSPLIT_3G
+ bool "3G/1G user/kernel split"
+ config VMSPLIT_2G
+ bool "2G/2G user/kernel split"
+ config VMSPLIT_1G
+ bool "1G/3G user/kernel split"
+endchoice
+
+config PAGE_OFFSET
+ hex
+ default 0x40000000 if VMSPLIT_1G
+ default 0x80000000 if VMSPLIT_2G
+ default 0xC0000000
+
+config NR_CPUS
+ int "Maximum number of CPUs (2-32)"
+ range 2 32
+ depends on SMP
+ default "4"
+
+config HOTPLUG_CPU
+ bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
+ depends on SMP && HOTPLUG && EXPERIMENTAL
+ help
+ Say Y here to experiment with turning CPUs off and on. CPUs
+ can be controlled through /sys/devices/system/cpu.
+
+config LOCAL_TIMERS
+ bool "Use local timer interrupts"
+ depends on SMP
+ default y
+ select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT)
+ help
+ Enable support for local timers on SMP platforms, rather then the
+ legacy IPI broadcast method. Local timers allows the system
+ accounting to be spread across the timer interval, preventing a
+ "thundering herd" at every timer tick.
+
+config ARCH_NR_GPIO
+ int
+ default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
+ default 355 if ARCH_U8500
+ default 264 if MACH_H4700
+ default 0
+ help
+ Maximum number of GPIOs in the system.
+
+ If unsure, leave the default value.
+
+source kernel/Kconfig.preempt
+
+config HZ
+ int
+ default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
+ ARCH_S5PV210 || ARCH_EXYNOS4
+ default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
+ default AT91_TIMER_HZ if ARCH_AT91
+ default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
+ default 300 if ARCH_WMT
+ default 100
+
+config THUMB2_KERNEL
+ bool "Compile the kernel in Thumb-2 mode (EXPERIMENTAL)"
+ depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL
+ select AEABI
+ select ARM_ASM_UNIFIED
+ select ARM_UNWIND
+ help
+ By enabling this option, the kernel will be compiled in
+ Thumb-2 mode. A compiler/assembler that understand the unified
+ ARM-Thumb syntax is needed.
+
+ If unsure, say N.
+
+config THUMB2_AVOID_R_ARM_THM_JUMP11
+ bool "Work around buggy Thumb-2 short branch relocations in gas"
+ depends on THUMB2_KERNEL && MODULES
+ default y
+ help
+ Various binutils versions can resolve Thumb-2 branches to
+ locally-defined, preemptible global symbols as short-range "b.n"
+ branch instructions.
+
+ This is a problem, because there's no guarantee the final
+ destination of the symbol, or any candidate locations for a
+ trampoline, are within range of the branch. For this reason, the
+ kernel does not support fixing up the R_ARM_THM_JUMP11 (102)
+ relocation in modules at all, and it makes little sense to add
+ support.
+
+ The symptom is that the kernel fails with an "unsupported
+ relocation" error when loading some modules.
+
+ Until fixed tools are available, passing
+ -fno-optimize-sibling-calls to gcc should prevent gcc generating
+ code which hits this problem, at the cost of a bit of extra runtime
+ stack usage in some cases.
+
+ The problem is described in more detail at:
+ https://bugs.launchpad.net/binutils-linaro/+bug/725126
+
+ Only Thumb-2 kernels are affected.
+
+ Unless you are sure your tools don't have this problem, say Y.
+
+config ARM_ASM_UNIFIED
+ bool
+
+config AEABI
+ bool "Use the ARM EABI to compile the kernel"
+ help
+ This option allows for the kernel to be compiled using the latest
+ ARM ABI (aka EABI). This is only useful if you are using a user
+ space environment that is also compiled with EABI.
+
+ Since there are major incompatibilities between the legacy ABI and
+ EABI, especially with regard to structure member alignment, this
+ option also changes the kernel syscall calling convention to
+ disambiguate both ABIs and allow for backward compatibility support
+ (selected with CONFIG_OABI_COMPAT).
+
+ To use this you need GCC version 4.0.0 or later.
+
+config OABI_COMPAT
+ bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
+ depends on AEABI && EXPERIMENTAL && !THUMB2_KERNEL
+ default y
+ help
+ This option preserves the old syscall interface along with the
+ new (ARM EABI) one. It also provides a compatibility layer to
+ intercept syscalls that have structure arguments which layout
+ in memory differs between the legacy ABI and the new ARM EABI
+ (only for non "thumb" binaries). This option adds a tiny
+ overhead to all syscalls and produces a slightly larger kernel.
+ If you know you'll be using only pure EABI user space then you
+ can say N here. If this option is not selected and you attempt
+ to execute a legacy ABI binary then the result will be
+ UNPREDICTABLE (in fact it can be predicted that it won't work
+ at all). If in doubt say Y.
+
+config ARCH_HAS_HOLES_MEMORYMODEL
+ bool
+
+config ARCH_SPARSEMEM_ENABLE
+ bool
+
+config ARCH_SPARSEMEM_DEFAULT
+ def_bool ARCH_SPARSEMEM_ENABLE
+
+config ARCH_SELECT_MEMORY_MODEL
+ def_bool ARCH_SPARSEMEM_ENABLE
+
+config HAVE_ARCH_PFN_VALID
+ def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
+
+config HIGHMEM
+ bool "High Memory Support"
+ depends on MMU
+ help
+ The address space of ARM processors is only 4 Gigabytes large
+ and it has to accommodate user address space, kernel address
+ space as well as some memory mapped IO. That means that, if you
+ have a large amount of physical memory and/or IO, not all of the
+ memory can be "permanently mapped" by the kernel. The physical
+ memory that is not permanently mapped is called "high memory".
+
+ Depending on the selected kernel/user memory split, minimum
+ vmalloc space and actual amount of RAM, you may not need this
+ option which should result in a slightly faster kernel.
+
+ If unsure, say n.
+
+config HIGHPTE
+ bool "Allocate 2nd-level pagetables from highmem"
+ depends on HIGHMEM
+
+config HW_PERF_EVENTS
+ bool "Enable hardware performance counter support for perf events"
+ depends on PERF_EVENTS && CPU_HAS_PMU
+ default y
+ help
+ Enable hardware performance counter support for perf events. If
+ disabled, perf events will use software events only.
+
+source "mm/Kconfig"
+
+config FORCE_MAX_ZONEORDER
+ int "Maximum zone order" if ARCH_SHMOBILE
+ range 11 64 if ARCH_SHMOBILE
+ default "9" if SA1111
+ default "11"
+ help
+ The kernel memory allocator divides physically contiguous memory
+ blocks into "zones", where each zone is a power of two number of
+ pages. This option selects the largest power of two that the kernel
+ keeps in the memory allocator. If you need to allocate very large
+ blocks of physically contiguous memory, then you may need to
+ increase this value.
+
+ This config option is actually maximum order plus one. For example,
+ a value of 11 means that the largest free memory block is 2^10 pages.
+
+config LEDS
+ bool "Timer and CPU usage LEDs"
+ depends on ARCH_WMT || ARCH_CDB89712 || ARCH_EBSA110 || \
+ ARCH_EBSA285 || ARCH_INTEGRATOR || \
+ ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
+ ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
+ ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
+ ARCH_AT91 || ARCH_DAVINCI || \
+ ARCH_KS8695 || MACH_RD88F5182 || ARCH_REALVIEW
+ help
+ If you say Y here, the LEDs on your machine will be used
+ to provide useful information about your current system status.
+
+ If you are compiling a kernel for a NetWinder or EBSA-285, you will
+ be able to select which LEDs are active using the options below. If
+ you are compiling a kernel for the EBSA-110 or the LART however, the
+ red LED will simply flash regularly to indicate that the system is
+ still functional. It is safe to say Y here if you have a CATS
+ system, but the driver will do nothing.
+
+config LEDS_TIMER
+ bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \
+ OMAP_OSK_MISTRAL || MACH_OMAP_H2 \
+ || MACH_OMAP_PERSEUS2
+ depends on LEDS
+ depends on !GENERIC_CLOCKEVENTS
+ default y if ARCH_WMT
+ help
+ If you say Y here, one of the system LEDs (the green one on the
+ NetWinder, the amber one on the EBSA285, or the red one on the LART)
+ will flash regularly to indicate that the system is still
+ operational. This is mainly useful to kernel hackers who are
+ debugging unstable kernels.
+
+ The LART uses the same LED for both Timer LED and CPU usage LED
+ functions. You may choose to use both, but the Timer LED function
+ will overrule the CPU usage LED.
+
+config LEDS_CPU
+ bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \
+ !ARCH_OMAP) \
+ || OMAP_OSK_MISTRAL || MACH_OMAP_H2 \
+ || MACH_OMAP_PERSEUS2
+ depends on LEDS
+ help
+ If you say Y here, the red LED will be used to give a good real
+ time indication of CPU usage, by lighting whenever the idle task
+ is not currently executing.
+
+ The LART uses the same LED for both Timer LED and CPU usage LED
+ functions. You may choose to use both, but the Timer LED function
+ will overrule the CPU usage LED.
+
+config ALIGNMENT_TRAP
+ bool
+ depends on CPU_CP15_MMU
+ default y if !ARCH_EBSA110
+ select HAVE_PROC_CPU if PROC_FS
+ help
+ ARM processors cannot fetch/store information which is not
+ naturally aligned on the bus, i.e., a 4 byte fetch must start at an
+ address divisible by 4. On 32-bit ARM processors, these non-aligned
+ fetch/store instructions will be emulated in software if you say
+ here, which has a severe performance impact. This is necessary for
+ correct operation of some network protocols. With an IP-only
+ configuration it is safe to say N, otherwise say Y.
+
+config UACCESS_WITH_MEMCPY
+ bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL)"
+ depends on MMU && EXPERIMENTAL
+ default y if CPU_FEROCEON
+ help
+ Implement faster copy_to_user and clear_user methods for CPU
+ cores where a 8-word STM instruction give significantly higher
+ memory write throughput than a sequence of individual 32bit stores.
+
+ A possible side effect is a slight increase in scheduling latency
+ between threads sharing the same address space if they invoke
+ such copy operations with large buffers.
+
+ However, if the CPU data cache is using a write-allocate mode,
+ this option is unlikely to provide any performance gain.
+
+config SECCOMP
+ bool
+ prompt "Enable seccomp to safely compute untrusted bytecode"
+ ---help---
+ This kernel feature is useful for number crunching applications
+ that may need to compute untrusted bytecode during their
+ execution. By using pipes or other transports made available to
+ the process as file descriptors supporting the read/write
+ syscalls, it's possible to isolate those applications in
+ their own address space using seccomp. Once seccomp is
+ enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
+ and the task is only allowed to execute a few safe syscalls
+ defined by each seccomp mode.
+
+config CC_STACKPROTECTOR
+ bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
+ help
+ This option turns on the -fstack-protector GCC feature. This
+ feature puts, at the beginning of functions, a canary value on
+ the stack just before the return address, and validates
+ the value just before actually returning. Stack based buffer
+ overflows (that need to overwrite this return address) now also
+ overwrite the canary, which gets detected and the attack is then
+ neutralized via a kernel panic.
+ This feature requires gcc version 4.2 or above.
+
+config DEPRECATED_PARAM_STRUCT
+ bool "Provide old way to pass kernel parameters"
+ help
+ This was deprecated in 2001 and announced to live on for 5 years.
+ Some old boot loaders still use this way.
+
+config ARM_FLUSH_CONSOLE_ON_RESTART
+ bool "Force flush the console on restart"
+ help
+ If the console is locked while the system is rebooted, the messages
+ in the temporary logbuffer would not have propogated to all the
+ console drivers. This option forces the console lock to be
+ released if it failed to be acquired, which will cause all the
+ pending messages to be flushed.
+
+endmenu
+
+menu "Boot options"
+
+config USE_OF
+ bool "Flattened Device Tree support"
+ select OF
+ select OF_EARLY_FLATTREE
+ select IRQ_DOMAIN
+ help
+ Include support for flattened device tree machine descriptions.
+
+# Compressed boot loader in ROM. Yes, we really want to ask about
+# TEXT and BSS so we preserve their values in the config files.
+config ZBOOT_ROM_TEXT
+ hex "Compressed ROM boot loader base address"
+ default "0"
+ help
+ The physical address at which the ROM-able zImage is to be
+ placed in the target. Platforms which normally make use of
+ ROM-able zImage formats normally set this to a suitable
+ value in their defconfig file.
+
+ If ZBOOT_ROM is not enabled, this has no effect.
+
+config ZBOOT_ROM_BSS
+ hex "Compressed ROM boot loader BSS address"
+ default "0"
+ help
+ The base address of an area of read/write memory in the target
+ for the ROM-able zImage which must be available while the
+ decompressor is running. It must be large enough to hold the
+ entire decompressed kernel plus an additional 128 KiB.
+ Platforms which normally make use of ROM-able zImage formats
+ normally set this to a suitable value in their defconfig file.
+
+ If ZBOOT_ROM is not enabled, this has no effect.
+
+config ZBOOT_ROM
+ bool "Compressed boot loader in ROM/flash"
+ depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
+ help
+ Say Y here if you intend to execute your compressed kernel image
+ (zImage) directly from ROM or flash. If unsure, say N.
+
+choice
+ prompt "Include SD/MMC loader in zImage (EXPERIMENTAL)"
+ depends on ZBOOT_ROM && ARCH_SH7372 && EXPERIMENTAL
+ default ZBOOT_ROM_NONE
+ help
+ Include experimental SD/MMC loading code in the ROM-able zImage.
+ With this enabled it is possible to write the the ROM-able zImage
+ kernel image to an MMC or SD card and boot the kernel straight
+ from the reset vector. At reset the processor Mask ROM will load
+ the first part of the the ROM-able zImage which in turn loads the
+ rest the kernel image to RAM.
+
+config ZBOOT_ROM_NONE
+ bool "No SD/MMC loader in zImage (EXPERIMENTAL)"
+ help
+ Do not load image from SD or MMC
+
+config ZBOOT_ROM_MMCIF
+ bool "Include MMCIF loader in zImage (EXPERIMENTAL)"
+ help
+ Load image from MMCIF hardware block.
+
+config ZBOOT_ROM_SH_MOBILE_SDHI
+ bool "Include SuperH Mobile SDHI loader in zImage (EXPERIMENTAL)"
+ help
+ Load image from SDHI hardware block
+
+endchoice
+
+config ARM_APPENDED_DTB
+ bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
+ depends on OF && !ZBOOT_ROM && EXPERIMENTAL
+ help
+ With this option, the boot code will look for a device tree binary
+ (DTB) appended to zImage
+ (e.g. cat zImage .dtb > zImage_w_dtb).
+
+ This is meant as a backward compatibility convenience for those
+ systems with a bootloader that can't be upgraded to accommodate
+ the documented boot protocol using a device tree.
+
+ Beware that there is very little in terms of protection against
+ this option being confused by leftover garbage in memory that might
+ look like a DTB header after a reboot if no actual DTB is appended
+ to zImage. Do not leave this option active in a production kernel
+ if you don't intend to always append a DTB. Proper passing of the
+ location into r2 of a bootloader provided DTB is always preferable
+ to this option.
+
+config ARM_ATAG_DTB_COMPAT
+ bool "Supplement the appended DTB with traditional ATAG information"
+ depends on ARM_APPENDED_DTB
+ help
+ Some old bootloaders can't be updated to a DTB capable one, yet
+ they provide ATAGs with memory configuration, the ramdisk address,
+ the kernel cmdline string, etc. Such information is dynamically
+ provided by the bootloader and can't always be stored in a static
+ DTB. To allow a device tree enabled kernel to be used with such
+ bootloaders, this option allows zImage to extract the information
+ from the ATAG list and store it at run time into the appended DTB.
+
+config CMDLINE
+ string "Default kernel command string"
+ default ""
+ help
+ On some architectures (EBSA110 and CATS), there is currently no way
+ for the boot loader to pass arguments to the kernel. For these
+ architectures, you should supply some command-line options at build
+ time by entering them here. As a minimum, you should specify the
+ memory size and the root device (e.g., mem=64M root=/dev/nfs).
+
+choice
+ prompt "Kernel command line type" if CMDLINE != ""
+ default CMDLINE_FROM_BOOTLOADER
+
+config CMDLINE_FROM_BOOTLOADER
+ bool "Use bootloader kernel arguments if available"
+ help
+ Uses the command-line options passed by the boot loader. If
+ the boot loader doesn't provide any, the default kernel command
+ string provided in CMDLINE will be used.
+
+config CMDLINE_EXTEND
+ bool "Extend bootloader kernel arguments"
+ help
+ The command-line arguments provided by the boot loader will be
+ appended to the default kernel command string.
+
+config CMDLINE_FORCE
+ bool "Always use the default kernel command string"
+ help
+ Always use the default kernel command string, even if the boot
+ loader passes other arguments to the kernel.
+ This is useful if you cannot or don't want to change the
+ command-line options your boot loader passes to the kernel.
+endchoice
+
+config XIP_KERNEL
+ bool "Kernel Execute-In-Place from ROM"
+ depends on !ZBOOT_ROM && !ARM_LPAE
+ help
+ Execute-In-Place allows the kernel to run from non-volatile storage
+ directly addressable by the CPU, such as NOR flash. This saves RAM
+ space since the text section of the kernel is not loaded from flash
+ to RAM. Read-write sections, such as the data section and stack,
+ are still copied to RAM. The XIP kernel is not compressed since
+ it has to run directly from flash, so it will take more space to
+ store it. The flash address used to link the kernel object files,
+ and for storing it, is configuration dependent. Therefore, if you
+ say Y here, you must know the proper physical address where to
+ store the kernel image depending on your own flash memory usage.
+
+ Also note that the make target becomes "make xipImage" rather than
+ "make zImage" or "make Image". The final kernel binary to put in
+ ROM memory will be arch/arm/boot/xipImage.
+
+ If unsure, say N.
+
+config XIP_PHYS_ADDR
+ hex "XIP Kernel Physical Location"
+ depends on XIP_KERNEL
+ default "0x00080000"
+ help
+ This is the physical address in your flash memory the kernel will
+ be linked for and stored to. This address is dependent on your
+ own flash usage.
+
+config KEXEC
+ bool "Kexec system call (EXPERIMENTAL)"
+ depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU)
+ help
+ kexec is a system call that implements the ability to shutdown your
+ current kernel, and to start another kernel. It is like a reboot
+ but it is independent of the system firmware. And like a reboot
+ you can start any kernel with it, not just Linux.
+
+ It is an ongoing process to be certain the hardware in a machine
+ is properly shutdown, so do not be surprised if this code does not
+ initially work for you. It may help to enable device hotplugging
+ support.
+
+config ATAGS_PROC
+ bool "Export atags in procfs"
+ depends on KEXEC
+ default y
+ help
+ Should the atags used to boot the kernel be exported in an "atags"
+ file in procfs. Useful with kexec.
+
+config CRASH_DUMP
+ bool "Build kdump crash kernel (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
+ help
+ Generate crash dump after being started by kexec. This should
+ be normally only set in special crash dump kernels which are
+ loaded in the main kernel with kexec-tools into a specially
+ reserved region and then later executed after a crash by
+ kdump/kexec. The crash dump kernel must be compiled to a
+ memory address not used by the main kernel
+
+ For more details see Documentation/kdump/kdump.txt
+
+config AUTO_ZRELADDR
+ bool "Auto calculation of the decompressed kernel image address"
+ depends on !ZBOOT_ROM && !ARCH_U300
+ help
+ ZRELADDR is the physical address where the decompressed kernel
+ image will be placed. If AUTO_ZRELADDR is selected, the address
+ will be determined at run-time by masking the current IP with
+ 0xf8000000. This assumes the zImage being placed in the first 128MB
+ from start of memory.
+
+endmenu
+
+menu "CPU Power Management"
+
+if ARCH_HAS_CPUFREQ
+
+source "drivers/cpufreq/Kconfig"
+
+config CPU_FREQ_IMX
+ tristate "CPUfreq driver for i.MX CPUs"
+ depends on ARCH_MXC && CPU_FREQ
+ help
+ This enables the CPUfreq driver for i.MX CPUs.
+
+config CPU_FREQ_SA1100
+ bool
+
+config CPU_FREQ_SA1110
+ bool
+
+config CPU_FREQ_INTEGRATOR
+ tristate "CPUfreq driver for ARM Integrator CPUs"
+ depends on ARCH_INTEGRATOR && CPU_FREQ
+ default y
+ help
+ This enables the CPUfreq driver for ARM Integrator CPUs.
+
+ For details, take a look at .
+
+ If in doubt, say Y.
+
+config CPU_FREQ_PXA
+ bool
+ depends on CPU_FREQ && ARCH_PXA && PXA25x
+ default y
+ select CPU_FREQ_TABLE
+ select CPU_FREQ_DEFAULT_GOV_USERSPACE
+
+config CPU_FREQ_S3C
+ bool
+ help
+ Internal configuration node for common cpufreq on Samsung SoC
+
+config CPU_FREQ_S3C24XX
+ bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)"
+ depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL
+ select CPU_FREQ_S3C
+ help
+ This enables the CPUfreq driver for the Samsung S3C24XX family
+ of CPUs.
+
+ For details, take a look at .
+
+ If in doubt, say N.
+
+config CPU_FREQ_S3C24XX_PLL
+ bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
+ depends on CPU_FREQ_S3C24XX && EXPERIMENTAL
+ help
+ Compile in support for changing the PLL frequency from the
+ S3C24XX series CPUfreq driver. The PLL takes time to settle
+ after a frequency change, so by default it is not enabled.
+
+ This also means that the PLL tables for the selected CPU(s) will
+ be built which may increase the size of the kernel image.
+
+config CPU_FREQ_S3C24XX_DEBUG
+ bool "Debug CPUfreq Samsung driver core"
+ depends on CPU_FREQ_S3C24XX
+ help
+ Enable s3c_freq_dbg for the Samsung S3C CPUfreq core
+
+config CPU_FREQ_S3C24XX_IODEBUG
+ bool "Debug CPUfreq Samsung driver IO timing"
+ depends on CPU_FREQ_S3C24XX
+ help
+ Enable s3c_freq_iodbg for the Samsung S3C CPUfreq core
+
+config CPU_FREQ_S3C24XX_DEBUGFS
+ bool "Export debugfs for CPUFreq"
+ depends on CPU_FREQ_S3C24XX && DEBUG_FS
+ help
+ Export status information via debugfs.
+
+endif
+
+source "drivers/cpuidle/Kconfig"
+
+endmenu
+
+menu "Floating point emulation"
+
+comment "At least one emulation must be selected"
+
+config FPE_NWFPE
+ bool "NWFPE math emulation"
+ depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL
+ ---help---
+ Say Y to include the NWFPE floating point emulator in the kernel.
+ This is necessary to run most binaries. Linux does not currently
+ support floating point hardware so you need to say Y here even if
+ your machine has an FPA or floating point co-processor podule.
+
+ You may say N here if you are going to load the Acorn FPEmulator
+ early in the bootup.
+
+config FPE_NWFPE_XP
+ bool "Support extended precision"
+ depends on FPE_NWFPE
+ help
+ Say Y to include 80-bit support in the kernel floating-point
+ emulator. Otherwise, only 32 and 64-bit support is compiled in.
+ Note that gcc does not generate 80-bit operations by default,
+ so in most cases this option only enlarges the size of the
+ floating point emulator without any good reason.
+
+ You almost surely want to say N here.
+
+config FPE_FASTFPE
+ bool "FastFPE math emulation (EXPERIMENTAL)"
+ depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL
+ ---help---
+ Say Y here to include the FAST floating point emulator in the kernel.
+ This is an experimental much faster emulator which now also has full
+ precision for the mantissa. It does not support any exceptions.
+ It is very simple, and approximately 3-6 times faster than NWFPE.
+
+ It should be sufficient for most programs. It may be not suitable
+ for scientific calculations, but you have to check this for yourself.
+ If you do not feel you need a faster FP emulation you should better
+ choose NWFPE.
+
+config VFP
+ bool "VFP-format floating point maths"
+ depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON
+ help
+ Say Y to include VFP support code in the kernel. This is needed
+ if your hardware includes a VFP unit.
+
+ Please see for
+ release notes and additional status information.
+
+ Say N if your target does not have VFP hardware.
+
+config VFPv3
+ bool
+ depends on VFP
+ default y if CPU_V7
+
+config NEON
+ bool "Advanced SIMD (NEON) Extension support"
+ depends on VFPv3 && CPU_V7
+ help
+ Say Y to include support code for NEON, the ARMv7 Advanced SIMD
+ Extension.
+
+endmenu
+
+menu "Userspace binary formats"
+
+source "fs/Kconfig.binfmt"
+
+config ARTHUR
+ tristate "RISC OS personality"
+ depends on !AEABI
+ help
+ Say Y here to include the kernel code necessary if you want to run
+ Acorn RISC OS/Arthur binaries under Linux. This code is still very
+ experimental; if this sounds frightening, say N and sleep in peace.
+ You can also say M here to compile this support as a module (which
+ will be called arthur).
+
+endmenu
+
+menu "Power management options"
+
+source "kernel/power/Kconfig"
+
+config ARCH_SUSPEND_POSSIBLE
+ depends on !ARCH_S5PC100
+ depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
+ CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
+ def_bool y
+
+config ARM_CPU_SUSPEND
+ def_bool PM_SLEEP
+
+config ARCH_HIBERNATION_POSSIBLE
+ bool
+ depends on MMU
+ default y if CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || CPU_XSCALE || CPU_XSC3 || CPU_V6 || CPU_V6K || CPU_V7
+ help
+ Support for Suspend to Disk.
+
+source "kernel/power/Kconfig"
+
+endmenu
+
+source "net/Kconfig"
+
+source "drivers/Kconfig"
+
+source "fs/Kconfig"
+
+source "arch/arm/Kconfig.debug"
+
+source "security/Kconfig"
+
+source "crypto/Kconfig"
+
+source "lib/Kconfig"
diff --git a/arch/arm/Kconfig-nommu b/arch/arm/Kconfig-nommu
new file mode 100644
index 00000000..2cef8e13
--- /dev/null
+++ b/arch/arm/Kconfig-nommu
@@ -0,0 +1,52 @@
+#
+# Kconfig for uClinux(non-paged MM) depend configurations
+# Hyok S. Choi
+#
+
+config SET_MEM_PARAM
+ bool "Set flash/sdram size and base addr"
+ help
+ Say Y to manually set the base addresses and sizes.
+ otherwise, the default values are assigned.
+
+config DRAM_BASE
+ hex '(S)DRAM Base Address' if SET_MEM_PARAM
+ default 0x00800000
+
+config DRAM_SIZE
+ hex '(S)DRAM SIZE' if SET_MEM_PARAM
+ default 0x00800000
+
+config FLASH_MEM_BASE
+ hex 'FLASH Base Address' if SET_MEM_PARAM
+ default 0x00400000
+
+config FLASH_SIZE
+ hex 'FLASH Size' if SET_MEM_PARAM
+ default 0x00400000
+
+config PROCESSOR_ID
+ hex 'Hard wire the processor ID'
+ default 0x00007700
+ depends on !CPU_CP15
+ help
+ If processor has no CP15 register, this processor ID is
+ used instead of the auto-probing which utilizes the register.
+
+config REMAP_VECTORS_TO_RAM
+ bool 'Install vectors to the beginning of RAM' if DRAM_BASE
+ depends on DRAM_BASE
+ help
+ The kernel needs to change the hardware exception vectors.
+ In nommu mode, the hardware exception vectors are normally
+ placed at address 0x00000000. However, this region may be
+ occupied by read-only memory depending on H/W design.
+
+ If the region contains read-write memory, say 'n' here.
+
+ If your CPU provides a remap facility which allows the exception
+ vectors to be mapped to writable memory, say 'n' here.
+
+ Otherwise, say 'y' here. In this case, the kernel will require
+ external support to redirect the hardware exception vectors to
+ the writable versions located at DRAM_BASE.
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
new file mode 100644
index 00000000..037bd5af
--- /dev/null
+++ b/arch/arm/Kconfig.debug
@@ -0,0 +1,356 @@
+menu "Kernel hacking"
+
+source "lib/Kconfig.debug"
+
+config STRICT_DEVMEM
+ bool "Filter access to /dev/mem"
+ depends on MMU
+ ---help---
+ If this option is disabled, you allow userspace (root) access to all
+ of memory, including kernel and userspace memory. Accidental
+ access to this is obviously disastrous, but specific access can
+ be used by people debugging the kernel.
+
+ If this option is switched on, the /dev/mem file only allows
+ userspace access to memory mapped peripherals.
+
+ If in doubt, say Y.
+
+# RMK wants arm kernels compiled with frame pointers or stack unwinding.
+# If you know what you are doing and are willing to live without stack
+# traces, you can get a slightly smaller kernel by setting this option to
+# n, but then RMK will have to kill you ;).
+config FRAME_POINTER
+ bool
+ depends on !THUMB2_KERNEL
+ default y if !ARM_UNWIND || FUNCTION_GRAPH_TRACER
+ help
+ If you say N here, the resulting kernel will be slightly smaller and
+ faster. However, if neither FRAME_POINTER nor ARM_UNWIND are enabled,
+ when a problem occurs with the kernel, the information that is
+ reported is severely limited.
+
+config ARM_UNWIND
+ bool "Enable stack unwinding support (EXPERIMENTAL)"
+ depends on AEABI && EXPERIMENTAL
+ default y
+ help
+ This option enables stack unwinding support in the kernel
+ using the information automatically generated by the
+ compiler. The resulting kernel image is slightly bigger but
+ the performance is not affected. Currently, this feature
+ only works with EABI compilers. If unsure say Y.
+
+config OLD_MCOUNT
+ bool
+ depends on FUNCTION_TRACER && FRAME_POINTER
+ default y
+
+config DEBUG_USER
+ bool "Verbose user fault messages"
+ help
+ When a user program crashes due to an exception, the kernel can
+ print a brief message explaining what the problem was. This is
+ sometimes helpful for debugging but serves no purpose on a
+ production system. Most people should say N here.
+
+ In addition, you need to pass user_debug=N on the kernel command
+ line to enable this feature. N consists of the sum of:
+
+ 1 - undefined instruction events
+ 2 - system calls
+ 4 - invalid data aborts
+ 8 - SIGSEGV faults
+ 16 - SIGBUS faults
+
+config DEBUG_RODATA
+ bool "Write protect kernel text section"
+ default n
+ depends on DEBUG_KERNEL && MMU
+ ---help---
+ Mark the kernel text section as write-protected in the pagetables,
+ in order to catch accidental (and incorrect) writes to such const
+ data. This will cause the size of the kernel, plus up to 4MB, to
+ be mapped as pages instead of sections, which will increase TLB
+ pressure.
+ If in doubt, say "N".
+
+config DEBUG_RODATA_TEST
+ bool "Testcase for the DEBUG_RODATA feature"
+ depends on DEBUG_RODATA
+ default n
+ ---help---
+ This option enables a testcase for the DEBUG_RODATA
+ feature.
+ If in doubt, say "N"
+
+# These options are only for real kernel hackers who want to get their hands dirty.
+config DEBUG_LL
+ bool "Kernel low-level debugging functions (read help!)"
+ depends on DEBUG_KERNEL
+ help
+ Say Y here to include definitions of printascii, printch, printhex
+ in the kernel. This is helpful if you are debugging code that
+ executes before the console is initialized.
+
+ Note that selecting this option will limit the kernel to a single
+ UART definition, as specified below. Attempting to boot the kernel
+ image on a different platform *will not work*, so this option should
+ not be enabled for kernels that are intended to be portable.
+
+choice
+ prompt "Kernel low-level debugging port"
+ depends on DEBUG_LL
+
+ config AT91_DEBUG_LL_DBGU0
+ bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl"
+ depends on HAVE_AT91_DBGU0
+
+ config AT91_DEBUG_LL_DBGU1
+ bool "Kernel low-level debugging on 9263 and 9g45"
+ depends on HAVE_AT91_DBGU1
+
+ config DEBUG_CLPS711X_UART1
+ bool "Kernel low-level debugging messages via UART1"
+ depends on ARCH_CLPS711X
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the first serial port on these devices.
+
+ config DEBUG_CLPS711X_UART2
+ bool "Kernel low-level debugging messages via UART2"
+ depends on ARCH_CLPS711X
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the second serial port on these devices.
+
+ config DEBUG_DC21285_PORT
+ bool "Kernel low-level debugging messages via footbridge serial port"
+ depends on FOOTBRIDGE
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the serial port in the DC21285 (Footbridge).
+
+ config DEBUG_FOOTBRIDGE_COM1
+ bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1"
+ depends on FOOTBRIDGE
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the 8250 at PCI COM1.
+
+ config DEBUG_HIGHBANK_UART
+ bool "Kernel low-level debugging messages via Highbank UART"
+ depends on ARCH_HIGHBANK
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the UART on Highbank based devices.
+
+ config DEBUG_IMX1_UART
+ bool "i.MX1 Debug UART"
+ depends on SOC_IMX1
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX1.
+
+ config DEBUG_IMX23_UART
+ bool "i.MX23 Debug UART"
+ depends on SOC_IMX23
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX23.
+
+ config DEBUG_IMX25_UART
+ bool "i.MX25 Debug UART"
+ depends on SOC_IMX25
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX25.
+
+ config DEBUG_IMX21_IMX27_UART
+ bool "i.MX21 and i.MX27 Debug UART"
+ depends on SOC_IMX21 || SOC_IMX27
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX21 or i.MX27.
+
+ config DEBUG_IMX28_UART
+ bool "i.MX28 Debug UART"
+ depends on SOC_IMX28
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX28.
+
+ config DEBUG_IMX31_IMX35_UART
+ bool "i.MX31 and i.MX35 Debug UART"
+ depends on SOC_IMX31 || SOC_IMX35
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX31 or i.MX35.
+
+ config DEBUG_IMX51_UART
+ bool "i.MX51 Debug UART"
+ depends on SOC_IMX51
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX51.
+
+ config DEBUG_IMX50_IMX53_UART
+ bool "i.MX50 and i.MX53 Debug UART"
+ depends on SOC_IMX50 || SOC_IMX53
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX50 or i.MX53.
+
+ config DEBUG_IMX6Q_UART4
+ bool "i.MX6Q Debug UART4"
+ depends on SOC_IMX6Q
+ help
+ Say Y here if you want kernel low-level debugging support
+ on i.MX6Q UART4.
+
+ config DEBUG_MSM_UART1
+ bool "Kernel low-level debugging messages via MSM UART1"
+ depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the first serial port on MSM devices.
+
+ config DEBUG_MSM_UART2
+ bool "Kernel low-level debugging messages via MSM UART2"
+ depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the second serial port on MSM devices.
+
+ config DEBUG_MSM_UART3
+ bool "Kernel low-level debugging messages via MSM UART3"
+ depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the third serial port on MSM devices.
+
+ config DEBUG_MSM8660_UART
+ bool "Kernel low-level debugging messages via MSM 8660 UART"
+ depends on ARCH_MSM8X60
+ select MSM_HAS_DEBUG_UART_HS
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the serial port on MSM 8660 devices.
+
+ config DEBUG_MSM8960_UART
+ bool "Kernel low-level debugging messages via MSM 8960 UART"
+ depends on ARCH_MSM8960
+ select MSM_HAS_DEBUG_UART_HS
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the serial port on MSM 8960 devices.
+
+ config DEBUG_REALVIEW_STD_PORT
+ bool "RealView Default UART"
+ depends on ARCH_REALVIEW
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the serial port on RealView EB, PB11MP, PBA8
+ and PBX platforms.
+
+ config DEBUG_REALVIEW_PB1176_PORT
+ bool "RealView PB1176 UART"
+ depends on MACH_REALVIEW_PB1176
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the standard serial port on the RealView
+ PB1176 platform.
+
+ config DEBUG_S3C_UART0
+ depends on PLAT_SAMSUNG
+ bool "Use S3C UART 0 for low-level debug"
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to UART 0. The port must have been initialised
+ by the boot-loader before use.
+
+ The uncompressor code port configuration is now handled
+ by CONFIG_S3C_LOWLEVEL_UART_PORT.
+
+ config DEBUG_S3C_UART1
+ depends on PLAT_SAMSUNG
+ bool "Use S3C UART 1 for low-level debug"
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to UART 1. The port must have been initialised
+ by the boot-loader before use.
+
+ The uncompressor code port configuration is now handled
+ by CONFIG_S3C_LOWLEVEL_UART_PORT.
+
+ config DEBUG_S3C_UART2
+ depends on PLAT_SAMSUNG
+ bool "Use S3C UART 2 for low-level debug"
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to UART 2. The port must have been initialised
+ by the boot-loader before use.
+
+ The uncompressor code port configuration is now handled
+ by CONFIG_S3C_LOWLEVEL_UART_PORT.
+
+ config DEBUG_LL_UART_NONE
+ bool "No low-level debugging UART"
+ help
+ Say Y here if your platform doesn't provide a UART option
+ below. This relies on your platform choosing the right UART
+ definition internally in order for low-level debugging to
+ work.
+
+ config DEBUG_ICEDCC
+ bool "Kernel low-level debugging via EmbeddedICE DCC channel"
+ help
+ Say Y here if you want the debug print routines to direct
+ their output to the EmbeddedICE macrocell's DCC channel using
+ co-processor 14. This is known to work on the ARM9 style ICE
+ channel and on the XScale with the PEEDI.
+
+ Note that the system will appear to hang during boot if there
+ is nothing connected to read from the DCC.
+
+ config DEBUG_SEMIHOSTING
+ bool "Kernel low-level debug output via semihosting I"
+ help
+ Semihosting enables code running on an ARM target to use
+ the I/O facilities on a host debugger/emulator through a
+ simple SVC calls. The host debugger or emulator must have
+ semihosting enabled for the special svc call to be trapped
+ otherwise the kernel will crash.
+
+ This is known to work with OpenOCD, as wellas
+ ARM's Fast Models, or any other controlling environment
+ that implements semihosting.
+
+ For more details about semihosting, please see
+ chapter 8 of DUI0203I_rvct_developer_guide.pdf from ARM Ltd.
+
+endchoice
+
+config EARLY_PRINTK
+ bool "Early printk"
+ depends on DEBUG_LL
+ help
+ Say Y here if you want to have an early console using the
+ kernel low-level debugging functions. Add earlyprintk to your
+ kernel parameters to enable this console.
+
+config OC_ETM
+ bool "On-chip ETM and ETB"
+ depends on ARM_AMBA
+ help
+ Enables the on-chip embedded trace macrocell and embedded trace
+ buffer driver that will allow you to collect traces of the
+ kernel code.
+
+config ARM_KPROBES_TEST
+ tristate "Kprobes test module"
+ depends on KPROBES && MODULES
+ help
+ Perform tests of kprobes API and instruction set simulation.
+
+endmenu
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
new file mode 100644
index 00000000..c4c34cac
--- /dev/null
+++ b/arch/arm/Makefile
@@ -0,0 +1,316 @@
+#
+# arch/arm/Makefile
+#
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License. See the file "COPYING" in the main directory of this archive
+# for more details.
+#
+# Copyright (C) 1995-2001 by Russell King
+
+LDFLAGS_vmlinux :=-p --no-undefined -X
+ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
+LDFLAGS_vmlinux += --be8
+endif
+
+OBJCOPYFLAGS :=-O binary -R .comment -S
+GZFLAGS :=-9
+#KBUILD_CFLAGS +=-pipe
+# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
+KBUILD_CFLAGS +=$(call cc-option,-marm,)
+
+# Never generate .eh_frame
+KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
+
+# Do not use arch/arm/defconfig - it's always outdated.
+# Select a platform tht is kept up-to-date
+KBUILD_DEFCONFIG := versatile_defconfig
+
+# defines filename extension depending memory management type.
+ifeq ($(CONFIG_MMU),)
+MMUEXT := -nommu
+endif
+
+ifeq ($(CONFIG_FRAME_POINTER),y)
+KBUILD_CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog
+endif
+
+ifeq ($(CONFIG_CC_STACKPROTECTOR),y)
+KBUILD_CFLAGS +=-fstack-protector
+endif
+
+ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
+KBUILD_CPPFLAGS += -mbig-endian
+AS += -EB
+LD += -EB
+else
+KBUILD_CPPFLAGS += -mlittle-endian
+AS += -EL
+LD += -EL
+endif
+
+comma = ,
+
+# This selects which instruction set is used.
+# Note that GCC does not numerically define an architecture version
+# macro, but instead defines a whole series of macros which makes
+# testing for a specific architecture or later rather impossible.
+arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
+arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
+# Only override the compiler option if ARMv6. The ARMv6K extensions are
+# always available in ARMv7
+ifeq ($(CONFIG_CPU_32v6),y)
+arch-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
+endif
+arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
+arch-$(CONFIG_CPU_32v4T) :=-D__LINUX_ARM_ARCH__=4 -march=armv4t
+arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4
+arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3
+
+# This selects how we optimise for the processor.
+tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610
+tune-$(CONFIG_CPU_ARM710) :=-mtune=arm710
+tune-$(CONFIG_CPU_ARM7TDMI) :=-mtune=arm7tdmi
+tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi
+tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
+tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
+tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_FA526) :=-mtune=arm9tdmi
+tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
+tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
+tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
+tune-$(CONFIG_CPU_XSC3) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
+tune-$(CONFIG_CPU_FEROCEON) :=$(call cc-option,-mtune=marvell-f,-mtune=xscale)
+tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
+tune-$(CONFIG_CPU_V6K) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
+
+ifeq ($(CONFIG_AEABI),y)
+CFLAGS_ABI :=-mabi=aapcs-linux -mno-thumb-interwork
+else
+CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
+endif
+
+ifeq ($(CONFIG_ARM_UNWIND),y)
+CFLAGS_ABI +=-funwind-tables
+endif
+
+ifeq ($(CONFIG_THUMB2_KERNEL),y)
+AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
+AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
+CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
+AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
+# Work around buggy relocation from gas if requested:
+ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y)
+CFLAGS_MODULE +=-fno-optimize-sibling-calls
+endif
+endif
+
+# Need -Uarm for gcc < 3.x
+KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_THUMB2) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
+KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_THUMB2) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
+
+CHECKFLAGS += -D__arm__
+
+#Default value
+head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
+textofs-y := 0x00008000
+textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000
+# We don't want the htc bootloader to corrupt kernel during resume
+textofs-$(CONFIG_PM_H1940) := 0x00108000
+# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
+ifeq ($(CONFIG_ARCH_SA1100),y)
+textofs-$(CONFIG_SA1111) := 0x00208000
+endif
+textofs-$(CONFIG_ARCH_MSM7X30) := 0x00208000
+textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
+textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
+
+# Machine directory name. This list is sorted alphanumerically
+# by CONFIG_* macro name.
+machine-$(CONFIG_ARCH_WMT) := wmt
+machine-$(CONFIG_ARCH_AT91) := at91
+machine-$(CONFIG_ARCH_BCMRING) := bcmring
+machine-$(CONFIG_ARCH_CLPS711X) := clps711x
+machine-$(CONFIG_ARCH_CNS3XXX) := cns3xxx
+machine-$(CONFIG_ARCH_DAVINCI) := davinci
+machine-$(CONFIG_ARCH_DOVE) := dove
+machine-$(CONFIG_ARCH_EBSA110) := ebsa110
+machine-$(CONFIG_ARCH_EP93XX) := ep93xx
+machine-$(CONFIG_ARCH_GEMINI) := gemini
+machine-$(CONFIG_ARCH_H720X) := h720x
+machine-$(CONFIG_ARCH_HIGHBANK) := highbank
+machine-$(CONFIG_ARCH_INTEGRATOR) := integrator
+machine-$(CONFIG_ARCH_IOP13XX) := iop13xx
+machine-$(CONFIG_ARCH_IOP32X) := iop32x
+machine-$(CONFIG_ARCH_IOP33X) := iop33x
+machine-$(CONFIG_ARCH_IXP2000) := ixp2000
+machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx
+machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
+machine-$(CONFIG_ARCH_KIRKWOOD) := kirkwood
+machine-$(CONFIG_ARCH_KS8695) := ks8695
+machine-$(CONFIG_ARCH_LPC32XX) := lpc32xx
+machine-$(CONFIG_ARCH_MMP) := mmp
+machine-$(CONFIG_ARCH_MSM) := msm
+machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0
+machine-$(CONFIG_ARCH_IMX_V4_V5) := imx
+machine-$(CONFIG_ARCH_IMX_V6_V7) := imx
+machine-$(CONFIG_ARCH_MXS) := mxs
+machine-$(CONFIG_ARCH_NETX) := netx
+machine-$(CONFIG_ARCH_NOMADIK) := nomadik
+machine-$(CONFIG_ARCH_OMAP1) := omap1
+machine-$(CONFIG_ARCH_OMAP2) := omap2
+machine-$(CONFIG_ARCH_OMAP3) := omap2
+machine-$(CONFIG_ARCH_OMAP4) := omap2
+machine-$(CONFIG_ARCH_ORION5X) := orion5x
+machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell
+machine-$(CONFIG_ARCH_PNX4008) := pnx4008
+machine-$(CONFIG_ARCH_PRIMA2) := prima2
+machine-$(CONFIG_ARCH_PXA) := pxa
+machine-$(CONFIG_ARCH_REALVIEW) := realview
+machine-$(CONFIG_ARCH_RPC) := rpc
+machine-$(CONFIG_ARCH_S3C24XX) := s3c24xx s3c2412 s3c2440
+machine-$(CONFIG_ARCH_S3C64XX) := s3c64xx
+machine-$(CONFIG_ARCH_S5P64X0) := s5p64x0
+machine-$(CONFIG_ARCH_S5PC100) := s5pc100
+machine-$(CONFIG_ARCH_S5PV210) := s5pv210
+machine-$(CONFIG_ARCH_EXYNOS4) := exynos
+machine-$(CONFIG_ARCH_EXYNOS5) := exynos
+machine-$(CONFIG_ARCH_SA1100) := sa1100
+machine-$(CONFIG_ARCH_SHARK) := shark
+machine-$(CONFIG_ARCH_SHMOBILE) := shmobile
+machine-$(CONFIG_ARCH_TEGRA) := tegra
+machine-$(CONFIG_ARCH_U300) := u300
+machine-$(CONFIG_ARCH_U8500) := ux500
+machine-$(CONFIG_ARCH_VERSATILE) := versatile
+machine-$(CONFIG_ARCH_VEXPRESS) := vexpress
+machine-$(CONFIG_ARCH_VT8500) := vt8500
+machine-$(CONFIG_ARCH_W90X900) := w90x900
+machine-$(CONFIG_FOOTBRIDGE) := footbridge
+machine-$(CONFIG_MACH_SPEAR300) := spear3xx
+machine-$(CONFIG_MACH_SPEAR310) := spear3xx
+machine-$(CONFIG_MACH_SPEAR320) := spear3xx
+machine-$(CONFIG_MACH_SPEAR600) := spear6xx
+machine-$(CONFIG_ARCH_ZYNQ) := zynq
+
+# Platform directory name. This list is sorted alphanumerically
+# by CONFIG_* macro name.
+plat-$(CONFIG_ARCH_MXC) := mxc
+plat-$(CONFIG_ARCH_OMAP) := omap
+plat-$(CONFIG_ARCH_S3C64XX) := samsung
+plat-$(CONFIG_ARCH_ZYNQ) := versatile
+plat-$(CONFIG_PLAT_IOP) := iop
+plat-$(CONFIG_PLAT_NOMADIK) := nomadik
+plat-$(CONFIG_PLAT_ORION) := orion
+plat-$(CONFIG_PLAT_PXA) := pxa
+plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx samsung
+plat-$(CONFIG_PLAT_S5P) := s5p samsung
+plat-$(CONFIG_PLAT_SPEAR) := spear
+plat-$(CONFIG_PLAT_VERSATILE) := versatile
+
+ifeq ($(CONFIG_ARCH_EBSA110),y)
+# This is what happens if you forget the IOCS16 line.
+# PCMCIA cards stop working.
+CFLAGS_3c589_cs.o :=-DISA_SIXTEEN_BIT_PERIPHERAL
+export CFLAGS_3c589_cs.o
+endif
+
+# The byte offset of the kernel image in RAM from the start of RAM.
+TEXT_OFFSET := $(textofs-y)
+
+# The first directory contains additional information for the boot setup code
+ifneq ($(machine-y),)
+MACHINE := arch/arm/mach-$(word 1,$(machine-y))/
+else
+MACHINE :=
+endif
+
+machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
+platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))
+
+ifeq ($(KBUILD_SRC),)
+KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
+else
+KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
+endif
+
+export TEXT_OFFSET GZFLAGS MMUEXT
+
+# Do we have FASTFPE?
+FASTFPE :=arch/arm/fastfpe
+ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
+FASTFPE_OBJ :=$(FASTFPE)/
+endif
+
+core-$(CONFIG_FPE_NWFPE) += arch/arm/nwfpe/
+core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ)
+core-$(CONFIG_VFP) += arch/arm/vfp/
+
+# If we have a machine-specific directory, then include it in the build.
+core-y += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
+core-y += arch/arm/net/
+core-y += $(machdirs) $(platdirs)
+
+drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
+
+libs-y := arch/arm/lib/ $(libs-y)
+
+# Default target when executing plain make
+ifeq ($(CONFIG_XIP_KERNEL),y)
+KBUILD_IMAGE := xipImage
+else
+KBUILD_IMAGE := zImage
+endif
+
+all: $(KBUILD_IMAGE)
+
+boot := arch/arm/boot
+
+archprepare:
+ $(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
+
+# Convert bzImage to zImage
+bzImage: zImage
+
+zImage Image xipImage bootpImage uImage: vmlinux
+ $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+
+zinstall uinstall install: vmlinux
+ $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
+
+%.dtb:
+ $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+
+dtbs:
+ $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+
+# We use MRPROPER_FILES and CLEAN_FILES now
+archclean:
+ $(Q)$(MAKE) $(clean)=$(boot)
+
+# My testing targets (bypasses dependencies)
+bp:; $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/bootpImage
+i zi:; $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
+
+
+define archhelp
+ echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
+ echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
+ echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
+ echo ' uImage - U-Boot wrapped zImage'
+ echo ' bootpImage - Combined zImage and initial RAM disk'
+ echo ' (supply initrd image via make variable INITRD=)'
+ echo ' dtbs - Build device tree blobs for enabled boards'
+ echo ' install - Install uncompressed kernel'
+ echo ' zinstall - Install compressed kernel'
+ echo ' uinstall - Install U-Boot wrapped compressed kernel'
+ echo ' Install using (your) ~/bin/$(INSTALLKERNEL) or'
+ echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
+ echo ' install to $$(INSTALL_PATH) and run lilo'
+endef
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
new file mode 100644
index 00000000..c877087d
--- /dev/null
+++ b/arch/arm/boot/Makefile
@@ -0,0 +1,128 @@
+#
+# arch/arm/boot/Makefile
+#
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License. See the file "COPYING" in the main directory of this archive
+# for more details.
+#
+# Copyright (C) 1995-2002 Russell King
+#
+
+ifneq ($(MACHINE),)
+include $(srctree)/$(MACHINE)/Makefile.boot
+endif
+
+# Note: the following conditions must always be true:
+# ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
+# PARAMS_PHYS must be within 4MB of ZRELADDR
+# INITRD_PHYS must be in RAM
+ZRELADDR := $(zreladdr-y)
+PARAMS_PHYS := $(params_phys-y)
+INITRD_PHYS := $(initrd_phys-y)
+
+export ZRELADDR INITRD_PHYS PARAMS_PHYS
+
+targets := Image zImage xipImage bootpImage uImage
+
+ifeq ($(CONFIG_XIP_KERNEL),y)
+
+$(obj)/xipImage: vmlinux FORCE
+ $(call if_changed,objcopy)
+ @echo ' Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'
+
+$(obj)/Image $(obj)/zImage: FORCE
+ @echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
+ @echo 'Only the xipImage target is available in this case'
+ @false
+
+else
+
+$(obj)/xipImage: FORCE
+ @echo 'Kernel not configured for XIP (CONFIG_XIP_KERNEL!=y)'
+ @false
+
+$(obj)/Image: vmlinux FORCE
+ $(call if_changed,objcopy)
+ @echo ' Kernel: $@ is ready'
+
+$(obj)/compressed/vmlinux: $(obj)/Image FORCE
+ $(Q)$(MAKE) $(build)=$(obj)/compressed $@
+
+$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
+ $(call if_changed,objcopy)
+ @echo ' Kernel: $@ is ready'
+
+endif
+
+targets += $(dtb-y)
+
+# Rule to build device tree blobs
+$(obj)/%.dtb: $(src)/dts/%.dts FORCE
+ $(call if_changed_dep,dtc)
+
+$(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
+
+clean-files := *.dtb
+
+ifneq ($(LOADADDR),)
+ UIMAGE_LOADADDR=$(LOADADDR)
+else
+ ifeq ($(CONFIG_ZBOOT_ROM),y)
+ UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
+ else
+ UIMAGE_LOADADDR=$(ZRELADDR)
+ endif
+endif
+
+check_for_multiple_loadaddr = \
+if [ $(words $(UIMAGE_LOADADDR)) -gt 1 ]; then \
+ echo 'multiple load addresses: $(UIMAGE_LOADADDR)'; \
+ echo 'This is incompatible with uImages'; \
+ echo 'Specify LOADADDR on the commandline to build an uImage'; \
+ false; \
+fi
+
+$(obj)/uImage: $(obj)/zImage FORCE
+ @$(check_for_multiple_loadaddr)
+ $(call if_changed,uimage)
+ @echo ' Image $@ is ready'
+
+$(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
+ $(Q)$(MAKE) $(build)=$(obj)/bootp $@
+ @:
+
+$(obj)/bootpImage: $(obj)/bootp/bootp FORCE
+ $(call if_changed,objcopy)
+ @echo ' Kernel: $@ is ready'
+
+PHONY += initrd FORCE
+initrd:
+ @test "$(INITRD_PHYS)" != "" || \
+ (echo This machine does not support INITRD; exit -1)
+ @test "$(INITRD)" != "" || \
+ (echo You must specify INITRD; exit -1)
+
+install: $(obj)/Image
+ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+ $(obj)/Image System.map "$(INSTALL_PATH)"
+
+zinstall: $(obj)/zImage
+ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+ $(obj)/zImage System.map "$(INSTALL_PATH)"
+
+uinstall: $(obj)/uImage
+ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+ $(obj)/uImage System.map "$(INSTALL_PATH)"
+
+zi:
+ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+ $(obj)/zImage System.map "$(INSTALL_PATH)"
+
+i:
+ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+ $(obj)/Image System.map "$(INSTALL_PATH)"
+
+subdir- := bootp compressed
diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
new file mode 100644
index 00000000..c394e305
--- /dev/null
+++ b/arch/arm/boot/bootp/Makefile
@@ -0,0 +1,27 @@
+#
+# linux/arch/arm/boot/bootp/Makefile
+#
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
+
+LDFLAGS_bootp :=-p --no-undefined -X \
+ --defsym initrd_phys=$(INITRD_PHYS) \
+ --defsym params_phys=$(PARAMS_PHYS) -T
+AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"
+
+targets := bootp init.o kernel.o initrd.o
+
+# Note that bootp.lds picks up kernel.o and initrd.o
+$(obj)/bootp: $(src)/bootp.lds $(addprefix $(obj)/,init.o kernel.o initrd.o) FORCE
+ $(call if_changed,ld)
+ @:
+
+# kernel.o and initrd.o includes a binary image using
+# .incbin, a dependency which is not tracked automatically
+
+$(obj)/kernel.o: arch/arm/boot/zImage FORCE
+
+$(obj)/initrd.o: $(INITRD) FORCE
+
+PHONY += $(INITRD) FORCE
diff --git a/arch/arm/boot/bootp/bootp.lds b/arch/arm/boot/bootp/bootp.lds
new file mode 100644
index 00000000..fc54394f
--- /dev/null
+++ b/arch/arm/boot/bootp/bootp.lds
@@ -0,0 +1,30 @@
+/*
+ * linux/arch/arm/boot/bootp/bootp.lds
+ *
+ * Copyright (C) 2000-2002 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+ . = 0;
+ .text : {
+ _stext = .;
+ *(.start)
+ *(.text)
+ initrd_size = initrd_end - initrd_start;
+ _etext = .;
+ }
+
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+}
diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S
new file mode 100644
index 00000000..78b50807
--- /dev/null
+++ b/arch/arm/boot/bootp/init.S
@@ -0,0 +1,88 @@
+/*
+ * linux/arch/arm/boot/bootp/init.S
+ *
+ * Copyright (C) 2000-2003 Russell King.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * "Header" file for splitting kernel + initrd. Note that we pass
+ * r0 through to r3 straight through.
+ *
+ * This demonstrates how to append code to the start of the kernel
+ * zImage, and boot the kernel without copying it around. This
+ * example would be simpler; if we didn't have an object of unknown
+ * size immediately following the kernel, we could build this into
+ * a binary blob, and concatenate the zImage using the cat command.
+ */
+ .section .start,#alloc,#execinstr
+ .type _start, #function
+ .globl _start
+
+_start: add lr, pc, #-0x8 @ lr = current load addr
+ adr r13, data
+ ldmia r13!, {r4-r6} @ r5 = dest, r6 = length
+ add r4, r4, lr @ r4 = initrd_start + load addr
+ bl move @ move the initrd
+
+/*
+ * Setup the initrd parameters to pass to the kernel. This can only be
+ * passed in via the tagged list.
+ */
+ ldmia r13, {r5-r9} @ get size and addr of initrd
+ @ r5 = ATAG_CORE
+ @ r6 = ATAG_INITRD2
+ @ r7 = initrd start
+ @ r8 = initrd end
+ @ r9 = param_struct address
+
+ ldr r10, [r9, #4] @ get first tag
+ teq r10, r5 @ is it ATAG_CORE?
+/*
+ * If we didn't find a valid tag list, create a dummy ATAG_CORE entry.
+ */
+ movne r10, #0 @ terminator
+ movne r4, #2 @ Size of this entry (2 words)
+ stmneia r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator
+
+/*
+ * find the end of the tag list, and then add an INITRD tag on the end.
+ * If there is already an INITRD tag, then we ignore it; the last INITRD
+ * tag takes precedence.
+ */
+taglist: ldr r10, [r9, #0] @ tag length
+ teq r10, #0 @ last tag (zero length)?
+ addne r9, r9, r10, lsl #2
+ bne taglist
+
+ mov r5, #4 @ Size of initrd tag (4 words)
+ stmia r9, {r5, r6, r7, r8, r10}
+ b kernel_start @ call kernel
+
+/*
+ * Move the block of memory length r6 from address r4 to address r5
+ */
+move: ldmia r4!, {r7 - r10} @ move 32-bytes at a time
+ stmia r5!, {r7 - r10}
+ ldmia r4!, {r7 - r10}
+ stmia r5!, {r7 - r10}
+ subs r6, r6, #8 * 4
+ bcs move
+ mov pc, lr
+
+ .size _start, . - _start
+
+ .align
+
+ .type data,#object
+data: .word initrd_start @ source initrd address
+ .word initrd_phys @ destination initrd address
+ .word initrd_size @ initrd size
+
+ .word 0x54410001 @ r5 = ATAG_CORE
+ .word 0x54420005 @ r6 = ATAG_INITRD2
+ .word initrd_phys @ r7
+ .word initrd_size @ r8
+ .word params_phys @ r9
+ .size data, . - data
diff --git a/arch/arm/boot/bootp/initrd.S b/arch/arm/boot/bootp/initrd.S
new file mode 100644
index 00000000..d81ea183
--- /dev/null
+++ b/arch/arm/boot/bootp/initrd.S
@@ -0,0 +1,6 @@
+ .type initrd_start,#object
+ .globl initrd_start
+initrd_start:
+ .incbin INITRD
+ .globl initrd_end
+initrd_end:
diff --git a/arch/arm/boot/bootp/kernel.S b/arch/arm/boot/bootp/kernel.S
new file mode 100644
index 00000000..b87a25c7
--- /dev/null
+++ b/arch/arm/boot/bootp/kernel.S
@@ -0,0 +1,6 @@
+ .globl kernel_start
+kernel_start:
+ .incbin "arch/arm/boot/zImage"
+ .globl kernel_end
+kernel_end:
+ .align 2
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
new file mode 100644
index 00000000..36cf358c
--- /dev/null
+++ b/arch/arm/boot/compressed/Makefile
@@ -0,0 +1,204 @@
+#
+# linux/arch/arm/boot/compressed/Makefile
+#
+# create a compressed vmlinuz image from the original vmlinux
+#
+
+OBJS =
+
+# Ensure that MMCIF loader code appears early in the image
+# to minimise that number of bocks that have to be read in
+# order to load it.
+ifeq ($(CONFIG_ZBOOT_ROM_MMCIF),y)
+OBJS += mmcif-sh7372.o
+endif
+
+# Ensure that SDHI loader code appears early in the image
+# to minimise that number of bocks that have to be read in
+# order to load it.
+ifeq ($(CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI),y)
+OBJS += sdhi-shmobile.o
+OBJS += sdhi-sh7372.o
+endif
+
+AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET)
+HEAD = head.o
+OBJS += misc.o decompress.o
+FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c
+
+# string library code (-Os is enforced to keep it much smaller)
+OBJS += string.o
+CFLAGS_string.o := -Os
+
+#
+# Architecture dependencies
+#
+ifeq ($(CONFIG_ARCH_ACORN),y)
+OBJS += ll_char_wr.o font.o
+endif
+
+ifeq ($(CONFIG_ARCH_SHARK),y)
+OBJS += head-shark.o ofw-shark.o
+endif
+
+ifeq ($(CONFIG_ARCH_P720T),y)
+# Borrow this code from SA1100
+OBJS += head-sa1100.o
+endif
+
+ifeq ($(CONFIG_ARCH_SA1100),y)
+OBJS += head-sa1100.o
+endif
+
+ifeq ($(CONFIG_ARCH_VT8500),y)
+OBJS += head-vt8500.o
+endif
+
+ifeq ($(CONFIG_CPU_XSCALE),y)
+OBJS += head-xscale.o
+endif
+
+ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y)
+OBJS += head-sharpsl.o
+endif
+
+ifeq ($(CONFIG_ARCH_WMT),y)
+OBJS += head-wmt.o
+endif
+
+ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
+ifeq ($(CONFIG_CPU_CP15),y)
+OBJS += big-endian.o
+else
+# The endian should be set by h/w design.
+endif
+endif
+
+ifeq ($(CONFIG_ARCH_SHMOBILE),y)
+OBJS += head-shmobile.o
+endif
+
+#
+# We now have a PIC decompressor implementation. Decompressors running
+# from RAM should not define ZTEXTADDR. Decompressors running directly
+# from ROM or Flash must define ZTEXTADDR (preferably via the config)
+# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK
+ifeq ($(CONFIG_ZBOOT_ROM),y)
+ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT)
+ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS)
+else
+ZTEXTADDR := 0
+ZBSSADDR := ALIGN(8)
+endif
+
+SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
+
+suffix_$(CONFIG_KERNEL_GZIP) = gzip
+suffix_$(CONFIG_KERNEL_LZO) = lzo
+suffix_$(CONFIG_KERNEL_LZMA) = lzma
+suffix_$(CONFIG_KERNEL_XZ) = xzkern
+
+# Borrowed libfdt files for the ATAG compatibility mode
+
+libfdt := fdt_rw.c fdt_ro.c fdt_wip.c fdt.c
+libfdt_hdrs := fdt.h libfdt.h libfdt_internal.h
+
+libfdt_objs := $(addsuffix .o, $(basename $(libfdt)))
+
+$(addprefix $(obj)/,$(libfdt) $(libfdt_hdrs)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/%
+ $(call cmd,shipped)
+
+$(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \
+ $(addprefix $(obj)/,$(libfdt_hdrs))
+
+ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y)
+OBJS += $(libfdt_objs) atags_to_fdt.o
+endif
+
+targets := vmlinux vmlinux.lds \
+ piggy.$(suffix_y) piggy.$(suffix_y).o \
+ lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
+ font.o font.c head.o misc.o $(OBJS)
+
+# Make sure files are removed during clean
+extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \
+ lib1funcs.S ashldi3.S $(libfdt) $(libfdt_hdrs)
+
+ifeq ($(CONFIG_FUNCTION_TRACER),y)
+ORIG_CFLAGS := $(KBUILD_CFLAGS)
+KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
+endif
+
+ccflags-y := -fpic -fno-builtin -I$(obj)
+asflags-y := -Wa,-march=all
+
+# Supply kernel BSS size to the decompressor via a linker symbol.
+KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \
+ awk 'END{print $$3}')
+LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
+# Supply ZRELADDR to the decompressor via a linker symbol.
+ifneq ($(CONFIG_AUTO_ZRELADDR),y)
+LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR)
+endif
+ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
+LDFLAGS_vmlinux += --be8
+endif
+# ?
+LDFLAGS_vmlinux += -p
+# Report unresolved symbol references
+LDFLAGS_vmlinux += --no-undefined
+# Delete all temporary local symbols
+LDFLAGS_vmlinux += -X
+# Next argument is a linker script
+LDFLAGS_vmlinux += -T
+
+# For __aeabi_uidivmod
+lib1funcs = $(obj)/lib1funcs.o
+
+$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
+ $(call cmd,shipped)
+
+# For __aeabi_llsl
+ashldi3 = $(obj)/ashldi3.o
+
+$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
+ $(call cmd,shipped)
+
+# We need to prevent any GOTOFF relocs being used with references
+# to symbols in the .bss section since we cannot relocate them
+# independently from the rest at run time. This can be achieved by
+# ensuring that no private .bss symbols exist, as global symbols
+# always have a GOT entry which is what we need.
+# The .data section is already discarded by the linker script so no need
+# to bother about it here.
+check_for_bad_syms = \
+bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \
+[ -z "$$bad_syms" ] || \
+ ( echo "following symbols must have non local/private scope:" >&2; \
+ echo "$$bad_syms" >&2; rm -f $@; false )
+
+check_for_multiple_zreladdr = \
+if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \
+ echo 'multiple zreladdrs: $(ZRELADDR)'; \
+ echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \
+ false; \
+fi
+
+$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
+ $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) FORCE
+ @$(check_for_multiple_zreladdr)
+ $(call if_changed,ld)
+ @$(check_for_bad_syms)
+
+$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
+ $(call if_changed,$(suffix_y))
+
+$(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE
+
+CFLAGS_font.o := -Dstatic=
+
+$(obj)/font.c: $(FONTC)
+ $(call cmd,shipped)
+
+$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
+ @sed "$(SEDFLAGS)" < $< > $@
diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c
new file mode 100644
index 00000000..797f04be
--- /dev/null
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
@@ -0,0 +1,99 @@
+#include
+#include
+
+static int node_offset(void *fdt, const char *node_path)
+{
+ int offset = fdt_path_offset(fdt, node_path);
+ if (offset == -FDT_ERR_NOTFOUND)
+ offset = fdt_add_subnode(fdt, 0, node_path);
+ return offset;
+}
+
+static int setprop(void *fdt, const char *node_path, const char *property,
+ uint32_t *val_array, int size)
+{
+ int offset = node_offset(fdt, node_path);
+ if (offset < 0)
+ return offset;
+ return fdt_setprop(fdt, offset, property, val_array, size);
+}
+
+static int setprop_string(void *fdt, const char *node_path,
+ const char *property, const char *string)
+{
+ int offset = node_offset(fdt, node_path);
+ if (offset < 0)
+ return offset;
+ return fdt_setprop_string(fdt, offset, property, string);
+}
+
+static int setprop_cell(void *fdt, const char *node_path,
+ const char *property, uint32_t val)
+{
+ int offset = node_offset(fdt, node_path);
+ if (offset < 0)
+ return offset;
+ return fdt_setprop_cell(fdt, offset, property, val);
+}
+
+/*
+ * Convert and fold provided ATAGs into the provided FDT.
+ *
+ * REturn values:
+ * = 0 -> pretend success
+ * = 1 -> bad ATAG (may retry with another possible ATAG pointer)
+ * < 0 -> error from libfdt
+ */
+int atags_to_fdt(void *atag_list, void *fdt, int total_space)
+{
+ struct tag *atag = atag_list;
+ uint32_t mem_reg_property[2 * NR_BANKS];
+ int memcount = 0;
+ int ret;
+
+ /* make sure we've got an aligned pointer */
+ if ((u32)atag_list & 0x3)
+ return 1;
+
+ /* if we get a DTB here we're done already */
+ if (*(u32 *)atag_list == fdt32_to_cpu(FDT_MAGIC))
+ return 0;
+
+ /* validate the ATAG */
+ if (atag->hdr.tag != ATAG_CORE ||
+ (atag->hdr.size != tag_size(tag_core) &&
+ atag->hdr.size != 2))
+ return 1;
+
+ /* let's give it all the room it could need */
+ ret = fdt_open_into(fdt, fdt, total_space);
+ if (ret < 0)
+ return ret;
+
+ for_each_tag(atag, atag_list) {
+ if (atag->hdr.tag == ATAG_CMDLINE) {
+ setprop_string(fdt, "/chosen", "bootargs",
+ atag->u.cmdline.cmdline);
+ } else if (atag->hdr.tag == ATAG_MEM) {
+ if (memcount >= sizeof(mem_reg_property)/4)
+ continue;
+ if (!atag->u.mem.size)
+ continue;
+ mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.start);
+ mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.size);
+ } else if (atag->hdr.tag == ATAG_INITRD2) {
+ uint32_t initrd_start, initrd_size;
+ initrd_start = atag->u.initrd.start;
+ initrd_size = atag->u.initrd.size;
+ setprop_cell(fdt, "/chosen", "linux,initrd-start",
+ initrd_start);
+ setprop_cell(fdt, "/chosen", "linux,initrd-end",
+ initrd_start + initrd_size);
+ }
+ }
+
+ if (memcount)
+ setprop(fdt, "/memory", "reg", mem_reg_property, 4*memcount);
+
+ return fdt_pack(fdt);
+}
diff --git a/arch/arm/boot/compressed/big-endian.S b/arch/arm/boot/compressed/big-endian.S
new file mode 100644
index 00000000..25ab26f1
--- /dev/null
+++ b/arch/arm/boot/compressed/big-endian.S
@@ -0,0 +1,13 @@
+/*
+ * linux/arch/arm/boot/compressed/big-endian.S
+ *
+ * Switch CPU into big endian mode.
+ * Author: Nicolas Pitre
+ */
+
+ .section ".start", #alloc, #execinstr
+
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ orr r0, r0, #(1 << 7) @ enable big endian mode
+ mcr p15, 0, r0, c1, c0, 0 @ write control reg
+
diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c
new file mode 100644
index 00000000..f41b38ca
--- /dev/null
+++ b/arch/arm/boot/compressed/decompress.c
@@ -0,0 +1,56 @@
+#define _LINUX_STRING_H_
+
+#include /* for inline */
+#include /* for size_t */
+#include /* for NULL */
+#include
+#include
+
+extern unsigned long free_mem_ptr;
+extern unsigned long free_mem_end_ptr;
+extern void error(char *);
+
+#define STATIC static
+#define STATIC_RW_DATA /* non-static please */
+
+#define ARCH_HAS_DECOMP_WDOG
+
+/* Diagnostic functions */
+#ifdef DEBUG
+# define Assert(cond,msg) {if(!(cond)) error(msg);}
+# define Trace(x) fprintf x
+# define Tracev(x) {if (verbose) fprintf x ;}
+# define Tracevv(x) {if (verbose>1) fprintf x ;}
+# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
+# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
+#else
+# define Assert(cond,msg)
+# define Trace(x)
+# define Tracev(x)
+# define Tracevv(x)
+# define Tracec(c,x)
+# define Tracecv(c,x)
+#endif
+
+#ifdef CONFIG_KERNEL_GZIP
+#include "../../../../lib/decompress_inflate.c"
+#endif
+
+#ifdef CONFIG_KERNEL_LZO
+#include "../../../../lib/decompress_unlzo.c"
+#endif
+
+#ifdef CONFIG_KERNEL_LZMA
+#include "../../../../lib/decompress_unlzma.c"
+#endif
+
+#ifdef CONFIG_KERNEL_XZ
+#define memmove memmove
+#define memcpy memcpy
+#include "../../../../lib/decompress_unxz.c"
+#endif
+
+int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
+{
+ return decompress(input, len, NULL, NULL, output, NULL, error);
+}
diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S
new file mode 100644
index 00000000..6179d94d
--- /dev/null
+++ b/arch/arm/boot/compressed/head-sa1100.S
@@ -0,0 +1,47 @@
+/*
+ * linux/arch/arm/boot/compressed/head-sa1100.S
+ *
+ * Copyright (C) 1999 Nicolas Pitre
+ *
+ * SA1100 specific tweaks. This is merged into head.S by the linker.
+ *
+ */
+
+#include
+#include
+
+ .section ".start", "ax"
+
+__SA1100_start:
+
+ @ Preserve r8/r7 i.e. kernel entry values
+#ifdef CONFIG_SA1100_COLLIE
+ mov r7, #MACH_TYPE_COLLIE
+#endif
+#ifdef CONFIG_SA1100_SIMPAD
+ @ UNTIL we've something like an open bootldr
+ mov r7, #MACH_TYPE_SIMPAD @should be 87
+#endif
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ ands r0, r0, #0x0d
+ beq 99f
+
+ @ Data cache might be active.
+ @ Be sure to flush kernel binary out of the cache,
+ @ whatever state it is, before it is turned off.
+ @ This is done by fetching through currently executed
+ @ memory to be sure we hit the same cache.
+ bic r2, pc, #0x1f
+ add r3, r2, #0x4000 @ 16 kb is quite enough...
+1: ldr r0, [r2], #32
+ teq r2, r3
+ bne 1b
+ mcr p15, 0, r0, c7, c10, 4 @ drain WB
+ mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
+
+ @ disabling MMU and caches
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ bic r0, r0, #0x0d @ clear WB, DC, MMU
+ bic r0, r0, #0x1000 @ clear Icache
+ mcr p15, 0, r0, c1, c0, 0
+99:
diff --git a/arch/arm/boot/compressed/head-shark.S b/arch/arm/boot/compressed/head-shark.S
new file mode 100644
index 00000000..089c560e
--- /dev/null
+++ b/arch/arm/boot/compressed/head-shark.S
@@ -0,0 +1,139 @@
+/* The head-file for the Shark
+ * by Alexander Schulz
+ *
+ * Does the following:
+ * - get the memory layout from firmware. This can only be done as long as the mmu
+ * is still on.
+ * - switch the mmu off, so we have physical addresses
+ * - copy the kernel to 0x08508000. This is done to have a fixed address where the
+ * C-parts (misc.c) are executed. This address must be known at compile-time,
+ * but the load-address of the kernel depends on how much memory is installed.
+ * - Jump to this location.
+ * - Set r8 with 0, r7 with the architecture ID for head.S
+ */
+
+#include
+
+#include
+
+ .section ".start", "ax"
+
+ b __beginning
+
+__ofw_data: .long 0 @ the number of memory blocks
+ .space 128 @ (startaddr,size) ...
+ .space 128 @ bootargs
+ .align
+
+__beginning: mov r4, r0 @ save the entry to the firmware
+
+ mov r0, #0xC0 @ disable irq and fiq
+ mov r1, r0
+ mrs r3, cpsr
+ bic r2, r3, r0
+ eor r2, r2, r1
+ msr cpsr_c, r2
+
+ mov r0, r4 @ get the Memory layout from firmware
+ adr r1, __ofw_data
+ add r2, r1, #4
+ mov lr, pc
+ b ofw_init
+ mov r1, #0
+
+ adr r2, __mmu_off @ calculate physical address
+ sub r2, r2, #0xf0000000 @ openprom maps us at f000 virt, 0e50 phys
+ adr r0, __ofw_data
+ ldr r0, [r0, #4]
+ add r2, r2, r0
+ add r2, r2, #0x00500000
+
+ mrc p15, 0, r3, c1, c0
+ bic r3, r3, #0xC @ Write Buffer and DCache
+ bic r3, r3, #0x1000 @ ICache
+ mcr p15, 0, r3, c1, c0 @ disabled
+
+ mov r0, #0
+ mcr p15, 0, r0, c7, c7 @ flush I,D caches on v4
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4
+ mcr p15, 0, r0, c8, c7 @ flush I,D TLBs on v4
+
+ bic r3, r3, #0x1 @ MMU
+ mcr p15, 0, r3, c1, c0 @ disabled
+
+ mov pc, r2
+
+__copy_target: .long 0x08507FFC
+__copy_end: .long 0x08607FFC
+
+ .word _start
+ .word __bss_start
+
+ .align
+__temp_stack: .space 128
+
+__mmu_off:
+ adr r0, __ofw_data @ read the 1. entry of the memory map
+ ldr r0, [r0, #4]
+ orr r0, r0, #0x00600000
+ sub r0, r0, #4
+
+ ldr r1, __copy_end
+ ldr r3, __copy_target
+
+/* r0 = 0x0e600000 (current end of kernelcode)
+ * r3 = 0x08508000 (where it should begin)
+ * r1 = 0x08608000 (end of copying area, 1MB)
+ * The kernel is compressed, so 1 MB should be enough.
+ * copy the kernel to the beginning of physical memory
+ * We start from the highest address, so we can copy
+ * from 0x08500000 to 0x08508000 if we have only 8MB
+ */
+
+/* As we get more 2.6-kernels it gets more and more
+ * uncomfortable to be bound to kernel images of 1MB only.
+ * So we add a loop here, to be able to copy some more.
+ * Alexander Schulz 2005-07-17
+ */
+
+ mov r4, #3 @ How many megabytes to copy
+
+
+__MoveCode: sub r4, r4, #1
+
+__Copy: ldr r2, [r0], #-4
+ str r2, [r1], #-4
+ teq r1, r3
+ bne __Copy
+
+ /* The firmware maps us in blocks of 1 MB, the next block is
+ _below_ the last one. So our decrementing source pointer
+ ist right here, but the destination pointer must be increased
+ by 2 MB */
+ add r1, r1, #0x00200000
+ add r3, r3, #0x00100000
+
+ teq r4, #0
+ bne __MoveCode
+
+
+ /* and jump to it */
+ adr r2, __go_on @ where we want to jump
+ adr r0, __ofw_data @ read the 1. entry of the memory map
+ ldr r0, [r0, #4]
+ sub r2, r2, r0 @ we are mapped add 0e50 now, sub that (-0e00)
+ sub r2, r2, #0x00500000 @ -0050
+ ldr r0, __copy_target @ and add 0850 8000 instead
+ add r0, r0, #4
+ add r2, r2, r0
+ mov pc, r2 @ and jump there
+
+__go_on:
+ adr sp, __temp_stack
+ add sp, sp, #128
+ adr r0, __ofw_data
+ mov lr, pc
+ b create_params
+
+ mov r8, #0
+ mov r7, #15
diff --git a/arch/arm/boot/compressed/head-sharpsl.S b/arch/arm/boot/compressed/head-sharpsl.S
new file mode 100644
index 00000000..eb0084ea
--- /dev/null
+++ b/arch/arm/boot/compressed/head-sharpsl.S
@@ -0,0 +1,150 @@
+/*
+ * linux/arch/arm/boot/compressed/head-sharpsl.S
+ *
+ * Copyright (C) 2004-2005 Richard Purdie
+ *
+ * Sharp's bootloader doesn't pass any kind of machine ID
+ * so we have to figure out the machine for ourselves...
+ *
+ * Support for Poodle, Corgi (SL-C700), Shepherd (SL-C750)
+ * Husky (SL-C760), Tosa (SL-C6000), Spitz (SL-C3000),
+ * Akita (SL-C1000) and Borzoi (SL-C3100).
+ *
+ */
+
+#include
+#include
+
+#ifndef CONFIG_PXA_SHARPSL
+#error What am I doing here...
+#endif
+
+ .section ".start", "ax"
+
+__SharpSL_start:
+
+/* Check for TC6393 - if found we have a Tosa */
+ ldr r7, .TOSAID
+ mov r1, #0x10000000 @ Base address of TC6393 chip
+ mov r6, #0x03
+ ldrh r3, [r1, #8] @ Load TC6393XB Revison: This is 0x0003
+ cmp r6, r3
+ beq .SHARPEND @ Success -> tosa
+
+/* Check for pxa270 - if found, branch */
+ mrc p15, 0, r4, c0, c0 @ Get Processor ID
+ and r4, r4, #0xffffff00
+ ldr r3, .PXA270ID
+ cmp r4, r3
+ beq .PXA270
+
+/* Check for w100 - if not found we have a Poodle */
+ ldr r1, .W100ADDR @ Base address of w100 chip + regs offset
+
+ mov r6, #0x31 @ Load Magic Init value
+ str r6, [r1, #0x280] @ to SCRATCH_UMSK
+ mov r5, #0x3000
+.W100LOOP:
+ subs r5, r5, #1
+ bne .W100LOOP
+ mov r6, #0x30 @ Load 2nd Magic Init value
+ str r6, [r1, #0x280] @ to SCRATCH_UMSK
+
+ ldr r6, [r1, #0] @ Load Chip ID
+ ldr r3, .W100ID
+ ldr r7, .POODLEID
+ cmp r6, r3
+ bne .SHARPEND @ We have no w100 - Poodle
+
+/* Check for pxa250 - if found we have a Corgi */
+ ldr r7, .CORGIID
+ ldr r3, .PXA255ID
+ cmp r4, r3
+ blo .SHARPEND @ We have a PXA250 - Corgi
+
+/* Check for 64MiB flash - if found we have a Shepherd */
+ bl get_flash_ids
+ ldr r7, .SHEPHERDID
+ cmp r3, #0x76 @ 64MiB flash
+ beq .SHARPEND @ We have Shepherd
+
+/* Must be a Husky */
+ ldr r7, .HUSKYID @ Must be Husky
+ b .SHARPEND
+
+.PXA270:
+/* Check for 16MiB flash - if found we have Spitz */
+ bl get_flash_ids
+ ldr r7, .SPITZID
+ cmp r3, #0x73 @ 16MiB flash
+ beq .SHARPEND @ We have Spitz
+
+/* Check for a second SCOOP chip - if found we have Borzoi */
+ ldr r1, .SCOOP2ADDR
+ ldr r7, .BORZOIID
+ mov r6, #0x0140
+ strh r6, [r1]
+ ldrh r6, [r1]
+ cmp r6, #0x0140
+ beq .SHARPEND @ We have Borzoi
+
+/* Must be Akita */
+ ldr r7, .AKITAID
+ b .SHARPEND @ We have Borzoi
+
+.PXA255ID:
+ .word 0x69052d00 @ PXA255 Processor ID
+.PXA270ID:
+ .word 0x69054100 @ PXA270 Processor ID
+.W100ID:
+ .word 0x57411002 @ w100 Chip ID
+.W100ADDR:
+ .word 0x08010000 @ w100 Chip ID Reg Address
+.SCOOP2ADDR:
+ .word 0x08800040
+.POODLEID:
+ .word MACH_TYPE_POODLE
+.CORGIID:
+ .word MACH_TYPE_CORGI
+.SHEPHERDID:
+ .word MACH_TYPE_SHEPHERD
+.HUSKYID:
+ .word MACH_TYPE_HUSKY
+.TOSAID:
+ .word MACH_TYPE_TOSA
+.SPITZID:
+ .word MACH_TYPE_SPITZ
+.AKITAID:
+ .word MACH_TYPE_AKITA
+.BORZOIID:
+ .word MACH_TYPE_BORZOI
+
+/*
+ * Return: r2 - NAND Manufacturer ID
+ * r3 - NAND Chip ID
+ * Corrupts: r1
+ */
+get_flash_ids:
+ mov r1, #0x0c000000 @ Base address of NAND chip
+ ldrb r3, [r1, #24] @ Load FLASHCTL
+ bic r3, r3, #0x11 @ SET NCE
+ orr r3, r3, #0x0a @ SET CLR + FLWP
+ strb r3, [r1, #24] @ Save to FLASHCTL
+ mov r2, #0x90 @ Command "readid"
+ strb r2, [r1, #20] @ Save to FLASHIO
+ bic r3, r3, #2 @ CLR CLE
+ orr r3, r3, #4 @ SET ALE
+ strb r3, [r1, #24] @ Save to FLASHCTL
+ mov r2, #0 @ Address 0x00
+ strb r2, [r1, #20] @ Save to FLASHIO
+ bic r3, r3, #4 @ CLR ALE
+ strb r3, [r1, #24] @ Save to FLASHCTL
+.fids1:
+ ldrb r3, [r1, #24] @ Load FLASHCTL
+ tst r3, #32 @ Is chip ready?
+ beq .fids1
+ ldrb r2, [r1, #20] @ NAND Manufacturer ID
+ ldrb r3, [r1, #20] @ NAND Chip ID
+ mov pc, lr
+
+.SHARPEND:
diff --git a/arch/arm/boot/compressed/head-shmobile.S b/arch/arm/boot/compressed/head-shmobile.S
new file mode 100644
index 00000000..fe3719b5
--- /dev/null
+++ b/arch/arm/boot/compressed/head-shmobile.S
@@ -0,0 +1,83 @@
+/*
+ * The head-file for SH-Mobile ARM platforms
+ *
+ * Kuninori Morimoto
+ * Simon Horman
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifdef CONFIG_ZBOOT_ROM
+
+ .section ".start", "ax"
+
+ /* load board-specific initialization code */
+#include
+
+#if defined(CONFIG_ZBOOT_ROM_MMCIF) || defined(CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI)
+ /* Load image from MMC/SD */
+ adr sp, __tmp_stack + 256
+ ldr r0, __image_start
+ ldr r1, __image_end
+ subs r1, r1, r0
+ ldr r0, __load_base
+ bl mmc_loader
+
+ /* Jump to loaded code */
+ ldr r0, __loaded
+ ldr r1, __image_start
+ sub r0, r0, r1
+ ldr r1, __load_base
+ add pc, r0, r1
+
+__image_start:
+ .long _start
+__image_end:
+ .long _got_end
+__load_base:
+ .long CONFIG_MEMORY_START + 0x02000000 @ Load at 32Mb into SDRAM
+__loaded:
+ .long __continue
+ .align
+__tmp_stack:
+ .space 256
+__continue:
+#endif /* CONFIG_ZBOOT_ROM_MMC || CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI */
+
+ b 1f
+__atags:@ tag #1
+ .long 12 @ tag->hdr.size = tag_size(tag_core);
+ .long 0x54410001 @ tag->hdr.tag = ATAG_CORE;
+ .long 0 @ tag->u.core.flags = 0;
+ .long 0 @ tag->u.core.pagesize = 0;
+ .long 0 @ tag->u.core.rootdev = 0;
+ @ tag #2
+ .long 8 @ tag->hdr.size = tag_size(tag_mem32);
+ .long 0x54410002 @ tag->hdr.tag = ATAG_MEM;
+ .long CONFIG_MEMORY_SIZE @ tag->u.mem.size = CONFIG_MEMORY_SIZE;
+ .long CONFIG_MEMORY_START @ @ tag->u.mem.start = CONFIG_MEMORY_START;
+ @ tag #3
+ .long 0 @ tag->hdr.size = 0
+ .long 0 @ tag->hdr.tag = ATAG_NONE;
+1:
+
+ /* Set board ID necessary for boot */
+ ldr r7, 1f @ Set machine type register
+ adr r8, __atags @ Set atag register
+ b 2f
+
+1 : .long MACH_TYPE
+2 :
+
+#endif /* CONFIG_ZBOOT_ROM */
diff --git a/arch/arm/boot/compressed/head-vt8500.S b/arch/arm/boot/compressed/head-vt8500.S
new file mode 100644
index 00000000..1dc1e21a
--- /dev/null
+++ b/arch/arm/boot/compressed/head-vt8500.S
@@ -0,0 +1,46 @@
+/*
+ * linux/arch/arm/boot/compressed/head-vt8500.S
+ *
+ * Copyright (C) 2010 Alexey Charkov
+ *
+ * VIA VT8500 specific tweaks. This is merged into head.S by the linker.
+ *
+ */
+
+#include
+#include
+
+ .section ".start", "ax"
+
+__VT8500_start:
+ @ Compare the SCC ID register against a list of known values
+ ldr r1, .SCCID
+ ldr r3, [r1]
+
+ @ VT8500 override
+ ldr r4, .VT8500SCC
+ cmp r3, r4
+ ldreq r7, .ID_BV07
+ beq .Lendvt8500
+
+ @ WM8505 override
+ ldr r4, .WM8505SCC
+ cmp r3, r4
+ ldreq r7, .ID_8505
+ beq .Lendvt8500
+
+ @ Otherwise, leave the bootloader's machine id untouched
+
+.SCCID:
+ .word 0xd8120000
+.VT8500SCC:
+ .word 0x34000102
+.WM8505SCC:
+ .word 0x34260103
+
+.ID_BV07:
+ .word MACH_TYPE_BV07
+.ID_8505:
+ .word MACH_TYPE_WM8505_7IN_NETBOOK
+
+.Lendvt8500:
diff --git a/arch/arm/boot/compressed/head-wmt.S b/arch/arm/boot/compressed/head-wmt.S
new file mode 100755
index 00000000..934b8437
--- /dev/null
+++ b/arch/arm/boot/compressed/head-wmt.S
@@ -0,0 +1,52 @@
+/**
+ * linux/arch/arm/boot/compressed/head-wmt.S
+ *
+ * WonderMedia SoC specific tweaks. This is merged into head.S by the linker.
+ *
+ * Copyright (c) 2008 WonderMedia Technologies, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software Foundation,
+ * either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * WonderMedia Technologies, Inc.
+ * 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
+ */
+
+#include
+#include
+
+ .section ".start", "ax"
+
+__wmt_start:
+
+ @ Preserve r8/r7 i.e. kernel entry values
+ @ Data cache might be active.
+ @ Be sure to flush kernel binary out of the cache,
+ @ whatever state it is, before it is turned off.
+ @ This is done by fetching through currently executed
+ @ memory to be sure we hit the same cache.
+ bic r2, pc, #0x1f
+ add r3, r2, #0x4000 @ 16 kb is quite enough...
+1: ldr r0, [r2], #32
+ teq r2, r3
+ bne 1b
+ mcr p15, 0, r0, c7, c10, 4 @ drain WB
+ mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
+ mcr p15, 0, r0, c7, c5, 6 @ invalidate BP array
+ mcr p15, 0, r0, c7, c10, 4 @ DSB
+ mcr p15, 0, r0, c7, c5, 4 @ ISB
+
+
+
+ @ disabling MMU and caches
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ bic r0, r0, #0x0d @ clear WB, DC, MMU
+ bic r0, r0, #0x1000 @ clear Icache
+ mcr p15, 0, r0, c1, c0, 0 @ write to CP15 cache and TLB control register 1
diff --git a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S
new file mode 100644
index 00000000..aa5ee49c
--- /dev/null
+++ b/arch/arm/boot/compressed/head-xscale.S
@@ -0,0 +1,41 @@
+/*
+ * linux/arch/arm/boot/compressed/head-xscale.S
+ *
+ * XScale specific tweaks. This is merged into head.S by the linker.
+ *
+ */
+
+#include
+
+ .section ".start", "ax"
+
+__XScale_start:
+
+ @ Preserve r8/r7 i.e. kernel entry values
+
+ @ Data cache might be active.
+ @ Be sure to flush kernel binary out of the cache,
+ @ whatever state it is, before it is turned off.
+ @ This is done by fetching through currently executed
+ @ memory to be sure we hit the same cache.
+ bic r2, pc, #0x1f
+ add r3, r2, #0x10000 @ 64 kb is quite enough...
+1: ldr r0, [r2], #32
+ teq r2, r3
+ bne 1b
+ mcr p15, 0, r0, c7, c10, 4 @ drain WB
+ mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
+
+ @ disabling MMU and caches
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ bic r0, r0, #0x05 @ clear DC, MMU
+ bic r0, r0, #0x1000 @ clear Icache
+ mcr p15, 0, r0, c1, c0, 0
+
+#ifdef CONFIG_ARCH_IXP2000
+ mov r1, #-1
+ mov r0, #0xd6000000
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+#endif
+
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
new file mode 100644
index 00000000..ace2dee2
--- /dev/null
+++ b/arch/arm/boot/compressed/head.S
@@ -0,0 +1,1231 @@
+/*
+ * linux/arch/arm/boot/compressed/head.S
+ *
+ * Copyright (C) 1996-2002 Russell King
+ * Copyright (C) 2004 Hyok S. Choi (MPU support)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include
+
+/*
+ * Debugging stuff
+ *
+ * Note that these macros must not contain any code which is not
+ * 100% relocatable. Any attempt to do so will result in a crash.
+ * Please select one of the following when turning on debugging.
+ */
+#ifdef DEBUG
+
+#if defined(CONFIG_DEBUG_ICEDCC)
+
+#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) || defined(CONFIG_CPU_V7)
+ .macro loadsp, rb, tmp
+ .endm
+ .macro writeb, ch, rb
+ mcr p14, 0, \ch, c0, c5, 0
+ .endm
+#elif defined(CONFIG_CPU_XSCALE)
+ .macro loadsp, rb, tmp
+ .endm
+ .macro writeb, ch, rb
+ mcr p14, 0, \ch, c8, c0, 0
+ .endm
+#else
+ .macro loadsp, rb, tmp
+ .endm
+ .macro writeb, ch, rb
+ mcr p14, 0, \ch, c1, c0, 0
+ .endm
+#endif
+
+#else
+
+#include
+
+ .macro writeb, ch, rb
+ senduart \ch, \rb
+ .endm
+
+#if defined(CONFIG_ARCH_SA1100)
+ .macro loadsp, rb, tmp
+ mov \rb, #0x80000000 @ physical base address
+#ifdef CONFIG_DEBUG_LL_SER3
+ add \rb, \rb, #0x00050000 @ Ser3
+#else
+ add \rb, \rb, #0x00010000 @ Ser1
+#endif
+ .endm
+#elif defined(CONFIG_ARCH_S3C24XX)
+ .macro loadsp, rb, tmp
+ mov \rb, #0x50000000
+ add \rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT
+ .endm
+#else
+ .macro loadsp, rb, tmp
+ addruart \rb, \tmp
+ .endm
+#endif
+#endif
+#endif
+
+ .macro kputc,val
+ mov r0, \val
+ bl putc
+ .endm
+
+ .macro kphex,val,len
+ mov r0, \val
+ mov r1, #\len
+ bl phex
+ .endm
+
+ .macro debug_reloc_start
+#ifdef DEBUG
+ kputc #'\n'
+ kphex r6, 8 /* processor id */
+ kputc #':'
+ kphex r7, 8 /* architecture id */
+#ifdef CONFIG_CPU_CP15
+ kputc #':'
+ mrc p15, 0, r0, c1, c0
+ kphex r0, 8 /* control reg */
+#endif
+ kputc #'\n'
+ kphex r5, 8 /* decompressed kernel start */
+ kputc #'-'
+ kphex r9, 8 /* decompressed kernel end */
+ kputc #'>'
+ kphex r4, 8 /* kernel execution address */
+ kputc #'\n'
+#endif
+ .endm
+
+ .macro debug_reloc_end
+#ifdef DEBUG
+ kphex r5, 8 /* end of kernel */
+ kputc #'\n'
+ mov r0, r4
+ bl memdump /* dump 256 bytes at start of kernel */
+#endif
+ .endm
+
+ .section ".start", #alloc, #execinstr
+/*
+ * sort out different calling conventions
+ */
+ .align
+ .arm @ Always enter in ARM state
+start:
+ .type start,#function
+ .rept 7
+ mov r0, r0
+ .endr
+ ARM( mov r0, r0 )
+ ARM( b 1f )
+ THUMB( adr r12, BSYM(1f) )
+ THUMB( bx r12 )
+
+ .word 0x016f2818 @ Magic numbers to help the loader
+ .word start @ absolute load/run zImage address
+ .word _edata @ zImage end address
+ THUMB( .thumb )
+1: mov r7, r1 @ save architecture ID
+ mov r8, r2 @ save atags pointer
+
+#ifndef __ARM_ARCH_2__
+ /*
+ * Booting from Angel - need to enter SVC mode and disable
+ * FIQs/IRQs (numeric definitions from angel arm.h source).
+ * We only do this if we were in user mode on entry.
+ */
+ mrs r2, cpsr @ get current mode
+ tst r2, #3 @ not user?
+ bne not_angel
+ mov r0, #0x17 @ angel_SWIreason_EnterSVC
+ ARM( swi 0x123456 ) @ angel_SWI_ARM
+ THUMB( svc 0xab ) @ angel_SWI_THUMB
+not_angel:
+ mrs r2, cpsr @ turn off interrupts to
+ orr r2, r2, #0xc0 @ prevent angel from running
+ msr cpsr_c, r2
+#else
+ teqp pc, #0x0c000003 @ turn off interrupts
+#endif
+
+ /*
+ * Note that some cache flushing and other stuff may
+ * be needed here - is there an Angel SWI call for this?
+ */
+
+ /*
+ * some architecture specific code can be inserted
+ * by the linker here, but it should preserve r7, r8, and r9.
+ */
+
+ .text
+
+#ifdef CONFIG_AUTO_ZRELADDR
+ @ determine final kernel image address
+ mov r4, pc
+ and r4, r4, #0xf8000000
+ add r4, r4, #TEXT_OFFSET
+#else
+ ldr r4, =zreladdr
+#endif
+
+ bl cache_on
+
+restart: adr r0, LC0
+ ldmia r0, {r1, r2, r3, r6, r10, r11, r12}
+ ldr sp, [r0, #28]
+
+ /*
+ * We might be running at a different address. We need
+ * to fix up various pointers.
+ */
+ sub r0, r0, r1 @ calculate the delta offset
+ add r6, r6, r0 @ _edata
+ add r10, r10, r0 @ inflated kernel size location
+
+ /*
+ * The kernel build system appends the size of the
+ * decompressed kernel at the end of the compressed data
+ * in little-endian form.
+ */
+ ldrb r9, [r10, #0]
+ ldrb lr, [r10, #1]
+ orr r9, r9, lr, lsl #8
+ ldrb lr, [r10, #2]
+ ldrb r10, [r10, #3]
+ orr r9, r9, lr, lsl #16
+ orr r9, r9, r10, lsl #24
+
+#ifndef CONFIG_ZBOOT_ROM
+ /* malloc space is above the relocated stack (64k max) */
+ add sp, sp, r0
+ add r10, sp, #0x10000
+#else
+ /*
+ * With ZBOOT_ROM the bss/stack is non relocatable,
+ * but someone could still run this code from RAM,
+ * in which case our reference is _edata.
+ */
+ mov r10, r6
+#endif
+
+ mov r5, #0 @ init dtb size to 0
+#ifdef CONFIG_ARM_APPENDED_DTB
+/*
+ * r0 = delta
+ * r2 = BSS start
+ * r3 = BSS end
+ * r4 = final kernel address
+ * r5 = appended dtb size (still unknown)
+ * r6 = _edata
+ * r7 = architecture ID
+ * r8 = atags/device tree pointer
+ * r9 = size of decompressed image
+ * r10 = end of this image, including bss/stack/malloc space if non XIP
+ * r11 = GOT start
+ * r12 = GOT end
+ * sp = stack pointer
+ *
+ * if there are device trees (dtb) appended to zImage, advance r10 so that the
+ * dtb data will get relocated along with the kernel if necessary.
+ */
+
+ ldr lr, [r6, #0]
+#ifndef __ARMEB__
+ ldr r1, =0xedfe0dd0 @ sig is 0xd00dfeed big endian
+#else
+ ldr r1, =0xd00dfeed
+#endif
+ cmp lr, r1
+ bne dtb_check_done @ not found
+
+#ifdef CONFIG_ARM_ATAG_DTB_COMPAT
+ /*
+ * OK... Let's do some funky business here.
+ * If we do have a DTB appended to zImage, and we do have
+ * an ATAG list around, we want the later to be translated
+ * and folded into the former here. To be on the safe side,
+ * let's temporarily move the stack away into the malloc
+ * area. No GOT fixup has occurred yet, but none of the
+ * code we're about to call uses any global variable.
+ */
+ add sp, sp, #0x10000
+ stmfd sp!, {r0-r3, ip, lr}
+ mov r0, r8
+ mov r1, r6
+ sub r2, sp, r6
+ bl atags_to_fdt
+
+ /*
+ * If returned value is 1, there is no ATAG at the location
+ * pointed by r8. Try the typical 0x100 offset from start
+ * of RAM and hope for the best.
+ */
+ cmp r0, #1
+ sub r0, r4, #TEXT_OFFSET
+ add r0, r0, #0x100
+ mov r1, r6
+ sub r2, sp, r6
+ bleq atags_to_fdt
+
+ ldmfd sp!, {r0-r3, ip, lr}
+ sub sp, sp, #0x10000
+#endif
+
+ mov r8, r6 @ use the appended device tree
+
+ /*
+ * Make sure that the DTB doesn't end up in the final
+ * kernel's .bss area. To do so, we adjust the decompressed
+ * kernel size to compensate if that .bss size is larger
+ * than the relocated code.
+ */
+ ldr r5, =_kernel_bss_size
+ adr r1, wont_overwrite
+ sub r1, r6, r1
+ subs r1, r5, r1
+ addhi r9, r9, r1
+
+ /* Get the dtb's size */
+ ldr r5, [r6, #4]
+#ifndef __ARMEB__
+ /* convert r5 (dtb size) to little endian */
+ eor r1, r5, r5, ror #16
+ bic r1, r1, #0x00ff0000
+ mov r5, r5, ror #8
+ eor r5, r5, r1, lsr #8
+#endif
+
+ /* preserve 64-bit alignment */
+ add r5, r5, #7
+ bic r5, r5, #7
+
+ /* relocate some pointers past the appended dtb */
+ add r6, r6, r5
+ add r10, r10, r5
+ add sp, sp, r5
+dtb_check_done:
+#endif
+
+/*
+ * Check to see if we will overwrite ourselves.
+ * r4 = final kernel address
+ * r9 = size of decompressed image
+ * r10 = end of this image, including bss/stack/malloc space if non XIP
+ * We basically want:
+ * r4 - 16k page directory >= r10 -> OK
+ * r4 + image length <= address of wont_overwrite -> OK
+ */
+ add r10, r10, #16384
+ cmp r4, r10
+ bhs wont_overwrite
+ add r10, r4, r9
+ adr r9, wont_overwrite
+ cmp r10, r9
+ bls wont_overwrite
+
+/*
+ * Relocate ourselves past the end of the decompressed kernel.
+ * r6 = _edata
+ * r10 = end of the decompressed kernel
+ * Because we always copy ahead, we need to do it from the end and go
+ * backward in case the source and destination overlap.
+ */
+ /*
+ * Bump to the next 256-byte boundary with the size of
+ * the relocation code added. This avoids overwriting
+ * ourself when the offset is small.
+ */
+ add r10, r10, #((reloc_code_end - restart + 256) & ~255)
+ bic r10, r10, #255
+
+ /* Get start of code we want to copy and align it down. */
+ adr r5, restart
+ bic r5, r5, #31
+
+ sub r9, r6, r5 @ size to copy
+ add r9, r9, #31 @ rounded up to a multiple
+ bic r9, r9, #31 @ ... of 32 bytes
+ add r6, r9, r5
+ add r9, r9, r10
+
+1: ldmdb r6!, {r0 - r3, r10 - r12, lr}
+ cmp r6, r5
+ stmdb r9!, {r0 - r3, r10 - r12, lr}
+ bhi 1b
+
+ /* Preserve offset to relocated code. */
+ sub r6, r9, r6
+
+#ifndef CONFIG_ZBOOT_ROM
+ /* cache_clean_flush may use the stack, so relocate it */
+ add sp, sp, r6
+#endif
+
+ bl cache_clean_flush
+
+ adr r0, BSYM(restart)
+ add r0, r0, r6
+ mov pc, r0
+
+wont_overwrite:
+/*
+ * If delta is zero, we are running at the address we were linked at.
+ * r0 = delta
+ * r2 = BSS start
+ * r3 = BSS end
+ * r4 = kernel execution address
+ * r5 = appended dtb size (0 if not present)
+ * r7 = architecture ID
+ * r8 = atags pointer
+ * r11 = GOT start
+ * r12 = GOT end
+ * sp = stack pointer
+ */
+ orrs r1, r0, r5
+ beq not_relocated
+
+ add r11, r11, r0
+ add r12, r12, r0
+
+#ifndef CONFIG_ZBOOT_ROM
+ /*
+ * If we're running fully PIC === CONFIG_ZBOOT_ROM = n,
+ * we need to fix up pointers into the BSS region.
+ * Note that the stack pointer has already been fixed up.
+ */
+ add r2, r2, r0
+ add r3, r3, r0
+
+ /*
+ * Relocate all entries in the GOT table.
+ * Bump bss entries to _edata + dtb size
+ */
+1: ldr r1, [r11, #0] @ relocate entries in the GOT
+ add r1, r1, r0 @ This fixes up C references
+ cmp r1, r2 @ if entry >= bss_start &&
+ cmphs r3, r1 @ bss_end > entry
+ addhi r1, r1, r5 @ entry += dtb size
+ str r1, [r11], #4 @ next entry
+ cmp r11, r12
+ blo 1b
+
+ /* bump our bss pointers too */
+ add r2, r2, r5
+ add r3, r3, r5
+
+#else
+
+ /*
+ * Relocate entries in the GOT table. We only relocate
+ * the entries that are outside the (relocated) BSS region.
+ */
+1: ldr r1, [r11, #0] @ relocate entries in the GOT
+ cmp r1, r2 @ entry < bss_start ||
+ cmphs r3, r1 @ _end < entry
+ addlo r1, r1, r0 @ table. This fixes up the
+ str r1, [r11], #4 @ C references.
+ cmp r11, r12
+ blo 1b
+#endif
+
+not_relocated: mov r0, #0
+1: str r0, [r2], #4 @ clear bss
+ str r0, [r2], #4
+ str r0, [r2], #4
+ str r0, [r2], #4
+ cmp r2, r3
+ blo 1b
+
+/*
+ * The C runtime environment should now be setup sufficiently.
+ * Set up some pointers, and start decompressing.
+ * r4 = kernel execution address
+ * r7 = architecture ID
+ * r8 = atags pointer
+ */
+ mov r0, r4
+ mov r1, sp @ malloc space above stack
+ add r2, sp, #0x10000 @ 64k max
+ mov r3, r7
+ bl decompress_kernel
+ bl cache_clean_flush
+ bl cache_off
+ mov r0, #0 @ must be zero
+ mov r1, r7 @ restore architecture number
+ mov r2, r8 @ restore atags pointer
+ ARM( mov pc, r4 ) @ call kernel
+ THUMB( bx r4 ) @ entry point is always ARM
+
+ .align 2
+ .type LC0, #object
+LC0: .word LC0 @ r1
+ .word __bss_start @ r2
+ .word _end @ r3
+ .word _edata @ r6
+ .word input_data_end - 4 @ r10 (inflated size location)
+ .word _got_start @ r11
+ .word _got_end @ ip
+ .word .L_user_stack_end @ sp
+ .size LC0, . - LC0
+
+#ifdef CONFIG_ARCH_RPC
+ .globl params
+params: ldr r0, =0x10000100 @ params_phys for RPC
+ mov pc, lr
+ .ltorg
+ .align
+#endif
+
+/*
+ * Turn on the cache. We need to setup some page tables so that we
+ * can have both the I and D caches on.
+ *
+ * We place the page tables 16k down from the kernel execution address,
+ * and we hope that nothing else is using it. If we're using it, we
+ * will go pop!
+ *
+ * On entry,
+ * r4 = kernel execution address
+ * r7 = architecture number
+ * r8 = atags pointer
+ * On exit,
+ * r0, r1, r2, r3, r9, r10, r12 corrupted
+ * This routine must preserve:
+ * r4, r7, r8
+ */
+ .align 5
+cache_on: mov r3, #8 @ cache_on function
+ b call_cache_fn
+
+/*
+ * Initialize the highest priority protection region, PR7
+ * to cover all 32bit address and cacheable and bufferable.
+ */
+__armv4_mpu_cache_on:
+ mov r0, #0x3f @ 4G, the whole
+ mcr p15, 0, r0, c6, c7, 0 @ PR7 Area Setting
+ mcr p15, 0, r0, c6, c7, 1
+
+ mov r0, #0x80 @ PR7
+ mcr p15, 0, r0, c2, c0, 0 @ D-cache on
+ mcr p15, 0, r0, c2, c0, 1 @ I-cache on
+ mcr p15, 0, r0, c3, c0, 0 @ write-buffer on
+
+ mov r0, #0xc000
+ mcr p15, 0, r0, c5, c0, 1 @ I-access permission
+ mcr p15, 0, r0, c5, c0, 0 @ D-access permission
+
+ mov r0, #0
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ mcr p15, 0, r0, c7, c5, 0 @ flush(inval) I-Cache
+ mcr p15, 0, r0, c7, c6, 0 @ flush(inval) D-Cache
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ @ ...I .... ..D. WC.M
+ orr r0, r0, #0x002d @ .... .... ..1. 11.1
+ orr r0, r0, #0x1000 @ ...1 .... .... ....
+
+ mcr p15, 0, r0, c1, c0, 0 @ write control reg
+
+ mov r0, #0
+ mcr p15, 0, r0, c7, c5, 0 @ flush(inval) I-Cache
+ mcr p15, 0, r0, c7, c6, 0 @ flush(inval) D-Cache
+ mov pc, lr
+
+__armv3_mpu_cache_on:
+ mov r0, #0x3f @ 4G, the whole
+ mcr p15, 0, r0, c6, c7, 0 @ PR7 Area Setting
+
+ mov r0, #0x80 @ PR7
+ mcr p15, 0, r0, c2, c0, 0 @ cache on
+ mcr p15, 0, r0, c3, c0, 0 @ write-buffer on
+
+ mov r0, #0xc000
+ mcr p15, 0, r0, c5, c0, 0 @ access permission
+
+ mov r0, #0
+ mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3
+ /*
+ * ?? ARMv3 MMU does not allow reading the control register,
+ * does this really work on ARMv3 MPU?
+ */
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ @ .... .... .... WC.M
+ orr r0, r0, #0x000d @ .... .... .... 11.1
+ /* ?? this overwrites the value constructed above? */
+ mov r0, #0
+ mcr p15, 0, r0, c1, c0, 0 @ write control reg
+
+ /* ?? invalidate for the second time? */
+ mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3
+ mov pc, lr
+
+__setup_mmu: sub r3, r4, #16384 @ Page directory size
+ bic r3, r3, #0xff @ Align the pointer
+ bic r3, r3, #0x3f00
+/*
+ * Initialise the page tables, turning on the cacheable and bufferable
+ * bits for the RAM area only.
+ */
+ mov r0, r3
+ mov r9, r0, lsr #18
+ mov r9, r9, lsl #18 @ start of RAM
+ add r10, r9, #0x10000000 @ a reasonable RAM size
+ mov r1, #0x12
+ orr r1, r1, #3 << 10
+ add r2, r3, #16384
+1: cmp r1, r9 @ if virt > start of RAM
+#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH
+ orrhs r1, r1, #0x08 @ set cacheable
+#else
+ orrhs r1, r1, #0x0c @ set cacheable, bufferable
+#endif
+ cmp r1, r10 @ if virt > end of RAM
+ bichs r1, r1, #0x0c @ clear cacheable, bufferable
+ str r1, [r0], #4 @ 1:1 mapping
+ add r1, r1, #1048576
+ teq r0, r2
+ bne 1b
+/*
+ * If ever we are running from Flash, then we surely want the cache
+ * to be enabled also for our execution instance... We map 2MB of it
+ * so there is no map overlap problem for up to 1 MB compressed kernel.
+ * If the execution is in RAM then we would only be duplicating the above.
+ */
+ mov r1, #0x1e
+ orr r1, r1, #3 << 10
+ mov r2, pc
+ mov r2, r2, lsr #20
+ orr r1, r1, r2, lsl #20
+ add r0, r3, r2, lsl #2
+ str r1, [r0], #4
+ add r1, r1, #1048576
+ str r1, [r0]
+ mov pc, lr
+ENDPROC(__setup_mmu)
+
+__arm926ejs_mmu_cache_on:
+#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH
+ mov r0, #4 @ put dcache in WT mode
+ mcr p15, 7, r0, c15, c0, 0
+#endif
+
+__armv4_mmu_cache_on:
+ mov r12, lr
+#ifdef CONFIG_MMU
+ bl __setup_mmu
+ mov r0, #0
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement
+ orr r0, r0, #0x0030
+#ifdef CONFIG_CPU_ENDIAN_BE8
+ orr r0, r0, #1 << 25 @ big-endian page tables
+#endif
+ bl __common_mmu_cache_on
+ mov r0, #0
+ mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs
+#endif
+ mov pc, r12
+
+__armv7_mmu_cache_on:
+ mov r12, lr
+#ifdef CONFIG_MMU
+ mrc p15, 0, r11, c0, c1, 4 @ read ID_MMFR0
+ tst r11, #0xf @ VMSA
+ blne __setup_mmu
+ mov r0, #0
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ tst r11, #0xf @ VMSA
+ mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs
+#endif
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement
+ orr r0, r0, #0x003c @ write buffer
+#ifdef CONFIG_MMU
+#ifdef CONFIG_CPU_ENDIAN_BE8
+ orr r0, r0, #1 << 25 @ big-endian page tables
+#endif
+ orrne r0, r0, #1 @ MMU enabled
+ movne r1, #-1
+ mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
+ mcrne p15, 0, r1, c3, c0, 0 @ load domain access control
+#endif
+ mcr p15, 0, r0, c7, c5, 4 @ ISB
+ mcr p15, 0, r0, c1, c0, 0 @ load control register
+ mrc p15, 0, r0, c1, c0, 0 @ and read it back
+ mov r0, #0
+ mcr p15, 0, r0, c7, c5, 4 @ ISB
+ mov pc, r12
+
+__fa526_cache_on:
+ mov r12, lr
+ bl __setup_mmu
+ mov r0, #0
+ mcr p15, 0, r0, c7, c7, 0 @ Invalidate whole cache
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ mcr p15, 0, r0, c8, c7, 0 @ flush UTLB
+ mrc p15, 0, r0, c1, c0, 0 @ read control reg
+ orr r0, r0, #0x1000 @ I-cache enable
+ bl __common_mmu_cache_on
+ mov r0, #0
+ mcr p15, 0, r0, c8, c7, 0 @ flush UTLB
+ mov pc, r12
+
+__arm6_mmu_cache_on:
+ mov r12, lr
+ bl __setup_mmu
+ mov r0, #0
+ mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3
+ mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3
+ mov r0, #0x30
+ bl __common_mmu_cache_on
+ mov r0, #0
+ mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3
+ mov pc, r12
+
+__common_mmu_cache_on:
+#ifndef CONFIG_THUMB2_KERNEL
+#ifndef DEBUG
+ orr r0, r0, #0x000d @ Write buffer, mmu
+#endif
+ mov r1, #-1
+ mcr p15, 0, r3, c2, c0, 0 @ load page table pointer
+ mcr p15, 0, r1, c3, c0, 0 @ load domain access control
+ b 1f
+ .align 5 @ cache line aligned
+1: mcr p15, 0, r0, c1, c0, 0 @ load control register
+ mrc p15, 0, r0, c1, c0, 0 @ and read it back to
+ sub pc, lr, r0, lsr #32 @ properly flush pipeline
+#endif
+
+#define PROC_ENTRY_SIZE (4*5)
+
+/*
+ * Here follow the relocatable cache support functions for the
+ * various processors. This is a generic hook for locating an
+ * entry and jumping to an instruction at the specified offset
+ * from the start of the block. Please note this is all position
+ * independent code.
+ *
+ * r1 = corrupted
+ * r2 = corrupted
+ * r3 = block offset
+ * r9 = corrupted
+ * r12 = corrupted
+ */
+
+call_cache_fn: adr r12, proc_types
+#ifdef CONFIG_CPU_CP15
+ mrc p15, 0, r9, c0, c0 @ get processor ID
+#else
+ ldr r9, =CONFIG_PROCESSOR_ID
+#endif
+1: ldr r1, [r12, #0] @ get value
+ ldr r2, [r12, #4] @ get mask
+ eor r1, r1, r9 @ (real ^ match)
+ tst r1, r2 @ & mask
+ ARM( addeq pc, r12, r3 ) @ call cache function
+ THUMB( addeq r12, r3 )
+ THUMB( moveq pc, r12 ) @ call cache function
+ add r12, r12, #PROC_ENTRY_SIZE
+ b 1b
+
+/*
+ * Table for cache operations. This is basically:
+ * - CPU ID match
+ * - CPU ID mask
+ * - 'cache on' method instruction
+ * - 'cache off' method instruction
+ * - 'cache flush' method instruction
+ *
+ * We match an entry using: ((real_id ^ match) & mask) == 0
+ *
+ * Writethrough caches generally only need 'on' and 'off'
+ * methods. Writeback caches _must_ have the flush method
+ * defined.
+ */
+ .align 2
+ .type proc_types,#object
+proc_types:
+ .word 0x41560600 @ ARM6/610
+ .word 0xffffffe0
+ W(b) __arm6_mmu_cache_off @ works, but slow
+ W(b) __arm6_mmu_cache_off
+ mov pc, lr
+ THUMB( nop )
+@ b __arm6_mmu_cache_on @ untested
+@ b __arm6_mmu_cache_off
+@ b __armv3_mmu_cache_flush
+
+#if !defined(CONFIG_CPU_V7)
+ /* This collides with some V7 IDs, preventing correct detection */
+ .word 0x00000000 @ old ARM ID
+ .word 0x0000f000
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+#endif
+
+ .word 0x41007000 @ ARM7/710
+ .word 0xfff8fe00
+ W(b) __arm7_mmu_cache_off
+ W(b) __arm7_mmu_cache_off
+ mov pc, lr
+ THUMB( nop )
+
+ .word 0x41807200 @ ARM720T (writethrough)
+ .word 0xffffff00
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ mov pc, lr
+ THUMB( nop )
+
+ .word 0x41007400 @ ARM74x
+ .word 0xff00ff00
+ W(b) __armv3_mpu_cache_on
+ W(b) __armv3_mpu_cache_off
+ W(b) __armv3_mpu_cache_flush
+
+ .word 0x41009400 @ ARM94x
+ .word 0xff00ff00
+ W(b) __armv4_mpu_cache_on
+ W(b) __armv4_mpu_cache_off
+ W(b) __armv4_mpu_cache_flush
+
+ .word 0x41069260 @ ARM926EJ-S (v5TEJ)
+ .word 0xff0ffff0
+ W(b) __arm926ejs_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv5tej_mmu_cache_flush
+
+ .word 0x00007000 @ ARM7 IDs
+ .word 0x0000f000
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+
+ @ Everything from here on will be the new ID system.
+
+ .word 0x4401a100 @ sa110 / sa1100
+ .word 0xffffffe0
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv4_mmu_cache_flush
+
+ .word 0x6901b110 @ sa1110
+ .word 0xfffffff0
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv4_mmu_cache_flush
+
+ .word 0x56056900
+ .word 0xffffff00 @ PXA9xx
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv4_mmu_cache_flush
+
+ .word 0x56158000 @ PXA168
+ .word 0xfffff000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv5tej_mmu_cache_flush
+
+ .word 0x56050000 @ Feroceon
+ .word 0xff0f0000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv5tej_mmu_cache_flush
+
+#ifdef CONFIG_CPU_FEROCEON_OLD_ID
+ /* this conflicts with the standard ARMv5TE entry */
+ .long 0x41009260 @ Old Feroceon
+ .long 0xff00fff0
+ b __armv4_mmu_cache_on
+ b __armv4_mmu_cache_off
+ b __armv5tej_mmu_cache_flush
+#endif
+
+ .word 0x66015261 @ FA526
+ .word 0xff01fff1
+ W(b) __fa526_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __fa526_cache_flush
+
+ @ These match on the architecture ID
+
+ .word 0x00020000 @ ARMv4T
+ .word 0x000f0000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv4_mmu_cache_flush
+
+ .word 0x00050000 @ ARMv5TE
+ .word 0x000f0000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv4_mmu_cache_flush
+
+ .word 0x00060000 @ ARMv5TEJ
+ .word 0x000f0000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv5tej_mmu_cache_flush
+
+ .word 0x0007b000 @ ARMv6
+ .word 0x000ff000
+ W(b) __armv4_mmu_cache_on
+ W(b) __armv4_mmu_cache_off
+ W(b) __armv6_mmu_cache_flush
+
+ .word 0x000f0000 @ new CPU Id
+ .word 0x000f0000
+ W(b) __armv7_mmu_cache_on
+ W(b) __armv7_mmu_cache_off
+ W(b) __armv7_mmu_cache_flush
+
+ .word 0 @ unrecognised type
+ .word 0
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+ mov pc, lr
+ THUMB( nop )
+
+ .size proc_types, . - proc_types
+
+ /*
+ * If you get a "non-constant expression in ".if" statement"
+ * error from the assembler on this line, check that you have
+ * not accidentally written a "b" instruction where you should
+ * have written W(b).
+ */
+ .if (. - proc_types) % PROC_ENTRY_SIZE != 0
+ .error "The size of one or more proc_types entries is wrong."
+ .endif
+
+/*
+ * Turn off the Cache and MMU. ARMv3 does not support
+ * reading the control register, but ARMv4 does.
+ *
+ * On exit,
+ * r0, r1, r2, r3, r9, r12 corrupted
+ * This routine must preserve:
+ * r4, r7, r8
+ */
+ .align 5
+cache_off: mov r3, #12 @ cache_off function
+ b call_cache_fn
+
+__armv4_mpu_cache_off:
+ mrc p15, 0, r0, c1, c0
+ bic r0, r0, #0x000d
+ mcr p15, 0, r0, c1, c0 @ turn MPU and cache off
+ mov r0, #0
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ mcr p15, 0, r0, c7, c6, 0 @ flush D-Cache
+ mcr p15, 0, r0, c7, c5, 0 @ flush I-Cache
+ mov pc, lr
+
+__armv3_mpu_cache_off:
+ mrc p15, 0, r0, c1, c0
+ bic r0, r0, #0x000d
+ mcr p15, 0, r0, c1, c0, 0 @ turn MPU and cache off
+ mov r0, #0
+ mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3
+ mov pc, lr
+
+__armv4_mmu_cache_off:
+#ifdef CONFIG_MMU
+ mrc p15, 0, r0, c1, c0
+ bic r0, r0, #0x000d
+ mcr p15, 0, r0, c1, c0 @ turn MMU and cache off
+ mov r0, #0
+ mcr p15, 0, r0, c7, c7 @ invalidate whole cache v4
+ mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4
+#endif
+ mov pc, lr
+
+__armv7_mmu_cache_off:
+ mrc p15, 0, r0, c1, c0
+#ifdef CONFIG_MMU
+ bic r0, r0, #0x000d
+#else
+ bic r0, r0, #0x000c
+#endif
+ mcr p15, 0, r0, c1, c0 @ turn MMU and cache off
+ mov r12, lr
+ bl __armv7_mmu_cache_flush
+ mov r0, #0
+#ifdef CONFIG_MMU
+ mcr p15, 0, r0, c8, c7, 0 @ invalidate whole TLB
+#endif
+ mcr p15, 0, r0, c7, c5, 6 @ invalidate BTC
+ mcr p15, 0, r0, c7, c10, 4 @ DSB
+ mcr p15, 0, r0, c7, c5, 4 @ ISB
+ mov pc, r12
+
+__arm6_mmu_cache_off:
+ mov r0, #0x00000030 @ ARM6 control reg.
+ b __armv3_mmu_cache_off
+
+__arm7_mmu_cache_off:
+ mov r0, #0x00000070 @ ARM7 control reg.
+ b __armv3_mmu_cache_off
+
+__armv3_mmu_cache_off:
+ mcr p15, 0, r0, c1, c0, 0 @ turn MMU and cache off
+ mov r0, #0
+ mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3
+ mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3
+ mov pc, lr
+
+/*
+ * Clean and flush the cache to maintain consistency.
+ *
+ * On exit,
+ * r1, r2, r3, r9, r10, r11, r12 corrupted
+ * This routine must preserve:
+ * r4, r6, r7, r8
+ */
+ .align 5
+cache_clean_flush:
+ mov r3, #16
+ b call_cache_fn
+
+__armv4_mpu_cache_flush:
+ mov r2, #1
+ mov r3, #0
+ mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
+ mov r1, #7 << 5 @ 8 segments
+1: orr r3, r1, #63 << 26 @ 64 entries
+2: mcr p15, 0, r3, c7, c14, 2 @ clean & invalidate D index
+ subs r3, r3, #1 << 26
+ bcs 2b @ entries 63 to 0
+ subs r1, r1, #1 << 5
+ bcs 1b @ segments 7 to 0
+
+ teq r2, #0
+ mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache
+ mcr p15, 0, ip, c7, c10, 4 @ drain WB
+ mov pc, lr
+
+__fa526_cache_flush:
+ mov r1, #0
+ mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache
+ mcr p15, 0, r1, c7, c5, 0 @ flush I cache
+ mcr p15, 0, r1, c7, c10, 4 @ drain WB
+ mov pc, lr
+
+__armv6_mmu_cache_flush:
+ mov r1, #0
+ mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D
+ mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB
+ mcr p15, 0, r1, c7, c15, 0 @ clean+invalidate unified
+ mcr p15, 0, r1, c7, c10, 4 @ drain WB
+ mov pc, lr
+
+__armv7_mmu_cache_flush:
+ mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1
+ tst r10, #0xf << 16 @ hierarchical cache (ARMv7)
+ mov r10, #0
+ beq hierarchical
+ mcr p15, 0, r10, c7, c14, 0 @ clean+invalidate D
+ b iflush
+hierarchical:
+ mcr p15, 0, r10, c7, c10, 5 @ DMB
+ stmfd sp!, {r0-r7, r9-r11}
+ mrc p15, 1, r0, c0, c0, 1 @ read clidr
+ ands r3, r0, #0x7000000 @ extract loc from clidr
+ mov r3, r3, lsr #23 @ left align loc bit field
+ beq finished @ if loc is 0, then no need to clean
+ mov r10, #0 @ start clean at cache level 0
+loop1:
+ add r2, r10, r10, lsr #1 @ work out 3x current cache level
+ mov r1, r0, lsr r2 @ extract cache type bits from clidr
+ and r1, r1, #7 @ mask of the bits for current cache only
+ cmp r1, #2 @ see what cache we have at this level
+ blt skip @ skip if no cache, or just i-cache
+ mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
+ mcr p15, 0, r10, c7, c5, 4 @ isb to sych the new cssr&csidr
+ mrc p15, 1, r1, c0, c0, 0 @ read the new csidr
+ and r2, r1, #7 @ extract the length of the cache lines
+ add r2, r2, #4 @ add 4 (line length offset)
+ ldr r4, =0x3ff
+ ands r4, r4, r1, lsr #3 @ find maximum number on the way size
+ clz r5, r4 @ find bit position of way size increment
+ ldr r7, =0x7fff
+ ands r7, r7, r1, lsr #13 @ extract max number of the index size
+loop2:
+ mov r9, r4 @ create working copy of max way size
+loop3:
+ ARM( orr r11, r10, r9, lsl r5 ) @ factor way and cache number into r11
+ ARM( orr r11, r11, r7, lsl r2 ) @ factor index number into r11
+ THUMB( lsl r6, r9, r5 )
+ THUMB( orr r11, r10, r6 ) @ factor way and cache number into r11
+ THUMB( lsl r6, r7, r2 )
+ THUMB( orr r11, r11, r6 ) @ factor index number into r11
+ mcr p15, 0, r11, c7, c14, 2 @ clean & invalidate by set/way
+ subs r9, r9, #1 @ decrement the way
+ bge loop3
+ subs r7, r7, #1 @ decrement the index
+ bge loop2
+skip:
+ add r10, r10, #2 @ increment cache number
+ cmp r3, r10
+ bgt loop1
+finished:
+ ldmfd sp!, {r0-r7, r9-r11}
+ mov r10, #0 @ swith back to cache level 0
+ mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
+iflush:
+ mcr p15, 0, r10, c7, c10, 4 @ DSB
+ mcr p15, 0, r10, c7, c5, 0 @ invalidate I+BTB
+ mcr p15, 0, r10, c7, c10, 4 @ DSB
+ mcr p15, 0, r10, c7, c5, 4 @ ISB
+ mov pc, lr
+
+__armv5tej_mmu_cache_flush:
+1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache
+ bne 1b
+ mcr p15, 0, r0, c7, c5, 0 @ flush I cache
+ mcr p15, 0, r0, c7, c10, 4 @ drain WB
+ mov pc, lr
+
+__armv4_mmu_cache_flush:
+ mov r2, #64*1024 @ default: 32K dcache size (*2)
+ mov r11, #32 @ default: 32 byte line size
+ mrc p15, 0, r3, c0, c0, 1 @ read cache type
+ teq r3, r9 @ cache ID register present?
+ beq no_cache_id
+ mov r1, r3, lsr #18
+ and r1, r1, #7
+ mov r2, #1024
+ mov r2, r2, lsl r1 @ base dcache size *2
+ tst r3, #1 << 14 @ test M bit
+ addne r2, r2, r2, lsr #1 @ +1/2 size if M == 1
+ mov r3, r3, lsr #12
+ and r3, r3, #3
+ mov r11, #8
+ mov r11, r11, lsl r3 @ cache line size in bytes
+no_cache_id:
+ mov r1, pc
+ bic r1, r1, #63 @ align to longest cache line
+ add r2, r1, r2
+1:
+ ARM( ldr r3, [r1], r11 ) @ s/w flush D cache
+ THUMB( ldr r3, [r1] ) @ s/w flush D cache
+ THUMB( add r1, r1, r11 )
+ teq r1, r2
+ bne 1b
+
+ mcr p15, 0, r1, c7, c5, 0 @ flush I cache
+ mcr p15, 0, r1, c7, c6, 0 @ flush D cache
+ mcr p15, 0, r1, c7, c10, 4 @ drain WB
+ mov pc, lr
+
+__armv3_mmu_cache_flush:
+__armv3_mpu_cache_flush:
+ mov r1, #0
+ mcr p15, 0, r1, c7, c0, 0 @ invalidate whole cache v3
+ mov pc, lr
+
+/*
+ * Various debugging routines for printing hex characters and
+ * memory, which again must be relocatable.
+ */
+#ifdef DEBUG
+ .align 2
+ .type phexbuf,#object
+phexbuf: .space 12
+ .size phexbuf, . - phexbuf
+
+@ phex corrupts {r0, r1, r2, r3}
+phex: adr r3, phexbuf
+ mov r2, #0
+ strb r2, [r3, r1]
+1: subs r1, r1, #1
+ movmi r0, r3
+ bmi puts
+ and r2, r0, #15
+ mov r0, r0, lsr #4
+ cmp r2, #10
+ addge r2, r2, #7
+ add r2, r2, #'0'
+ strb r2, [r3, r1]
+ b 1b
+
+@ puts corrupts {r0, r1, r2, r3}
+puts: loadsp r3, r1
+1: ldrb r2, [r0], #1
+ teq r2, #0
+ moveq pc, lr
+2: writeb r2, r3
+ mov r1, #0x00020000
+3: subs r1, r1, #1
+ bne 3b
+ teq r2, #'\n'
+ moveq r2, #'\r'
+ beq 2b
+ teq r0, #0
+ bne 1b
+ mov pc, lr
+@ putc corrupts {r0, r1, r2, r3}
+putc:
+ mov r2, r0
+ mov r0, #0
+ loadsp r3, r1
+ b 2b
+
+@ memdump corrupts {r0, r1, r2, r3, r10, r11, r12, lr}
+memdump: mov r12, r0
+ mov r10, lr
+ mov r11, #0
+2: mov r0, r11, lsl #2
+ add r0, r0, r12
+ mov r1, #8
+ bl phex
+ mov r0, #':'
+ bl putc
+1: mov r0, #' '
+ bl putc
+ ldr r0, [r12, r11, lsl #2]
+ mov r1, #8
+ bl phex
+ and r0, r11, #7
+ teq r0, #3
+ moveq r0, #' '
+ bleq putc
+ and r0, r11, #7
+ add r11, r11, #1
+ teq r0, #7
+ bne 1b
+ mov r0, #'\n'
+ bl putc
+ cmp r11, #64
+ blt 2b
+ mov pc, r10
+#endif
+
+ .ltorg
+reloc_code_end:
+
+ .align
+ .section ".stack", "aw", %nobits
+.L_user_stack: .space 4096
+.L_user_stack_end:
diff --git a/arch/arm/boot/compressed/libfdt_env.h b/arch/arm/boot/compressed/libfdt_env.h
new file mode 100644
index 00000000..1f4e7187
--- /dev/null
+++ b/arch/arm/boot/compressed/libfdt_env.h
@@ -0,0 +1,15 @@
+#ifndef _ARM_LIBFDT_ENV_H
+#define _ARM_LIBFDT_ENV_H
+
+#include
+#include
+#include
+
+#define fdt16_to_cpu(x) be16_to_cpu(x)
+#define cpu_to_fdt16(x) cpu_to_be16(x)
+#define fdt32_to_cpu(x) be32_to_cpu(x)
+#define cpu_to_fdt32(x) cpu_to_be32(x)
+#define fdt64_to_cpu(x) be64_to_cpu(x)
+#define cpu_to_fdt64(x) cpu_to_be64(x)
+
+#endif
diff --git a/arch/arm/boot/compressed/ll_char_wr.S b/arch/arm/boot/compressed/ll_char_wr.S
new file mode 100644
index 00000000..8517c860
--- /dev/null
+++ b/arch/arm/boot/compressed/ll_char_wr.S
@@ -0,0 +1,134 @@
+/*
+ * linux/arch/arm/lib/ll_char_wr.S
+ *
+ * Copyright (C) 1995, 1996 Russell King.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Speedups & 1bpp code (C) 1996 Philip Blundell & Russell King.
+ *
+ * 10-04-96 RMK Various cleanups & reduced register usage.
+ * 08-04-98 RMK Shifts re-ordered
+ */
+
+@ Regs: [] = corruptible
+@ {} = used
+@ () = do not use
+
+#include
+#include
+ .text
+
+LC0: .word LC0
+ .word bytes_per_char_h
+ .word video_size_row
+ .word acorndata_8x8
+ .word con_charconvtable
+
+/*
+ * r0 = ptr
+ * r1 = char
+ * r2 = white
+ */
+ENTRY(ll_write_char)
+ stmfd sp!, {r4 - r7, lr}
+@
+@ Smashable regs: {r0 - r3}, [r4 - r7], (r8 - fp), [ip], (sp), [lr], (pc)
+@
+ /*
+ * calculate offset into character table
+ */
+ mov r1, r1, lsl #3
+ /*
+ * calculate offset required for each row.
+ */
+ adr ip, LC0
+ ldmia ip, {r3, r4, r5, r6, lr}
+ sub ip, ip, r3
+ add r6, r6, ip
+ add lr, lr, ip
+ ldr r4, [r4, ip]
+ ldr r5, [r5, ip]
+ /*
+ * Go to resolution-dependent routine...
+ */
+ cmp r4, #4
+ blt Lrow1bpp
+ add r0, r0, r5, lsl #3 @ Move to bottom of character
+ orr r1, r1, #7
+ ldrb r7, [r6, r1]
+ teq r4, #8
+ beq Lrow8bpplp
+@
+@ Smashable regs: {r0 - r3}, [r4], {r5 - r7}, (r8 - fp), [ip], (sp), {lr}, (pc)
+@
+Lrow4bpplp:
+ ldr r7, [lr, r7, lsl #2]
+ mul r7, r2, r7
+ sub r1, r1, #1 @ avoid using r7 directly after
+ str r7, [r0, -r5]!
+ ldrb r7, [r6, r1]
+ ldr r7, [lr, r7, lsl #2]
+ mul r7, r2, r7
+ tst r1, #7 @ avoid using r7 directly after
+ str r7, [r0, -r5]!
+ subne r1, r1, #1
+ ldrneb r7, [r6, r1]
+ bne Lrow4bpplp
+ ldmfd sp!, {r4 - r7, pc}
+
+@
+@ Smashable regs: {r0 - r3}, [r4], {r5 - r7}, (r8 - fp), [ip], (sp), {lr}, (pc)
+@
+Lrow8bpplp:
+ mov ip, r7, lsr #4
+ ldr ip, [lr, ip, lsl #2]
+ mul r4, r2, ip
+ and ip, r7, #15 @ avoid r4
+ ldr ip, [lr, ip, lsl #2] @ avoid r4
+ mul ip, r2, ip @ avoid r4
+ sub r1, r1, #1 @ avoid ip
+ sub r0, r0, r5 @ avoid ip
+ stmia r0, {r4, ip}
+ ldrb r7, [r6, r1]
+ mov ip, r7, lsr #4
+ ldr ip, [lr, ip, lsl #2]
+ mul r4, r2, ip
+ and ip, r7, #15 @ avoid r4
+ ldr ip, [lr, ip, lsl #2] @ avoid r4
+ mul ip, r2, ip @ avoid r4
+ tst r1, #7 @ avoid ip
+ sub r0, r0, r5 @ avoid ip
+ stmia r0, {r4, ip}
+ subne r1, r1, #1
+ ldrneb r7, [r6, r1]
+ bne Lrow8bpplp
+ ldmfd sp!, {r4 - r7, pc}
+
+@
+@ Smashable regs: {r0 - r3}, [r4], {r5, r6}, [r7], (r8 - fp), [ip], (sp), [lr], (pc)
+@
+Lrow1bpp:
+ add r6, r6, r1
+ ldmia r6, {r4, r7}
+ strb r4, [r0], r5
+ mov r4, r4, lsr #8
+ strb r4, [r0], r5
+ mov r4, r4, lsr #8
+ strb r4, [r0], r5
+ mov r4, r4, lsr #8
+ strb r4, [r0], r5
+ strb r7, [r0], r5
+ mov r7, r7, lsr #8
+ strb r7, [r0], r5
+ mov r7, r7, lsr #8
+ strb r7, [r0], r5
+ mov r7, r7, lsr #8
+ strb r7, [r0], r5
+ ldmfd sp!, {r4 - r7, pc}
+
+ .bss
+ENTRY(con_charconvtable)
+ .space 1024
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
new file mode 100644
index 00000000..8e2a8fca
--- /dev/null
+++ b/arch/arm/boot/compressed/misc.c
@@ -0,0 +1,154 @@
+/*
+ * misc.c
+ *
+ * This is a collection of several routines from gzip-1.0.3
+ * adapted for Linux.
+ *
+ * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
+ *
+ * Modified for ARM Linux by Russell King
+ *
+ * Nicolas Pitre 1999/04/14 :
+ * For this code to run directly from Flash, all constant variables must
+ * be marked with 'const' and all other variables initialized at run-time
+ * only. This way all non constant variables will end up in the bss segment,
+ * which should point to addresses in RAM and cleared to 0 on start.
+ * This allows for a much quicker boot time.
+ */
+
+unsigned int __machine_arch_type;
+
+#include /* for inline */
+#include
+#include
+
+static void putstr(const char *ptr);
+extern void error(char *x);
+
+#include
+
+#ifdef CONFIG_DEBUG_ICEDCC
+
+#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) || defined(CONFIG_CPU_V7)
+
+static void icedcc_putc(int ch)
+{
+ int status, i = 0x4000000;
+
+ do {
+ if (--i < 0)
+ return;
+
+ asm volatile ("mrc p14, 0, %0, c0, c1, 0" : "=r" (status));
+ } while (status & (1 << 29));
+
+ asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
+}
+
+
+#elif defined(CONFIG_CPU_XSCALE)
+
+static void icedcc_putc(int ch)
+{
+ int status, i = 0x4000000;
+
+ do {
+ if (--i < 0)
+ return;
+
+ asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status));
+ } while (status & (1 << 28));
+
+ asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch));
+}
+
+#else
+
+static void icedcc_putc(int ch)
+{
+ int status, i = 0x4000000;
+
+ do {
+ if (--i < 0)
+ return;
+
+ asm volatile ("mrc p14, 0, %0, c0, c0, 0" : "=r" (status));
+ } while (status & 2);
+
+ asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch));
+}
+
+#endif
+
+#define putc(ch) icedcc_putc(ch)
+#endif
+
+static void putstr(const char *ptr)
+{
+ char c;
+
+ while ((c = *ptr++) != '\0') {
+ if (c == '\n')
+ putc('\r');
+ putc(c);
+ }
+
+ flush();
+}
+
+/*
+ * gzip declarations
+ */
+extern char input_data[];
+extern char input_data_end[];
+
+unsigned char *output_data;
+
+unsigned long free_mem_ptr;
+unsigned long free_mem_end_ptr;
+
+#ifndef arch_error
+#define arch_error(x)
+#endif
+
+void error(char *x)
+{
+ arch_error(x);
+
+ putstr("\n\n");
+ putstr(x);
+ putstr("\n\n -- System halted");
+
+ while(1); /* Halt */
+}
+
+asmlinkage void __div0(void)
+{
+ error("Attempting division by 0!");
+}
+
+extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
+
+
+void
+decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
+ unsigned long free_mem_ptr_end_p,
+ int arch_id)
+{
+ int ret;
+
+ output_data = (unsigned char *)output_start;
+ free_mem_ptr = free_mem_ptr_p;
+ free_mem_end_ptr = free_mem_ptr_end_p;
+ __machine_arch_type = arch_id;
+
+ arch_decomp_setup();
+
+ putstr("Uncompressing Linux...");
+ ret = do_decompress(input_data, input_data_end - input_data,
+ output_data, error);
+ if (ret)
+ error("decompressor returned an error");
+ else
+ putstr(" done, booting the kernel.\n");
+}
diff --git a/arch/arm/boot/compressed/mmcif-sh7372.c b/arch/arm/boot/compressed/mmcif-sh7372.c
new file mode 100644
index 00000000..672ae95d
--- /dev/null
+++ b/arch/arm/boot/compressed/mmcif-sh7372.c
@@ -0,0 +1,88 @@
+/*
+ * sh7372 MMCIF loader
+ *
+ * Copyright (C) 2010 Magnus Damm
+ * Copyright (C) 2010 Simon Horman
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+
+#include
+#include
+#include
+
+#define MMCIF_BASE (void __iomem *)0xe6bd0000
+
+#define PORT84CR (void __iomem *)0xe6050054
+#define PORT85CR (void __iomem *)0xe6050055
+#define PORT86CR (void __iomem *)0xe6050056
+#define PORT87CR (void __iomem *)0xe6050057
+#define PORT88CR (void __iomem *)0xe6050058
+#define PORT89CR (void __iomem *)0xe6050059
+#define PORT90CR (void __iomem *)0xe605005a
+#define PORT91CR (void __iomem *)0xe605005b
+#define PORT92CR (void __iomem *)0xe605005c
+#define PORT99CR (void __iomem *)0xe6050063
+
+#define SMSTPCR3 (void __iomem *)0xe615013c
+
+/* SH7372 specific MMCIF loader
+ *
+ * loads the zImage from an MMC card starting from block 1.
+ *
+ * The image must be start with a vrl4 header and
+ * the zImage must start at offset 512 of the image. That is,
+ * at block 2 (=byte 1024) on the media
+ *
+ * Use the following line to write the vrl4 formated zImage
+ * to an MMC card
+ * # dd if=vrl4.out of=/dev/sdx bs=512 seek=1
+ */
+asmlinkage void mmc_loader(unsigned char *buf, unsigned long len)
+{
+ mmc_init_progress();
+ mmc_update_progress(MMC_PROGRESS_ENTER);
+
+ /* Initialise MMC
+ * registers: PORT84CR-PORT92CR
+ * (MMCD0_0-MMCD0_7,MMCCMD0 Control)
+ * value: 0x04 - select function 4
+ */
+ __raw_writeb(0x04, PORT84CR);
+ __raw_writeb(0x04, PORT85CR);
+ __raw_writeb(0x04, PORT86CR);
+ __raw_writeb(0x04, PORT87CR);
+ __raw_writeb(0x04, PORT88CR);
+ __raw_writeb(0x04, PORT89CR);
+ __raw_writeb(0x04, PORT90CR);
+ __raw_writeb(0x04, PORT91CR);
+ __raw_writeb(0x04, PORT92CR);
+
+ /* Initialise MMC
+ * registers: PORT99CR (MMCCLK0 Control)
+ * value: 0x10 | 0x04 - enable output | select function 4
+ */
+ __raw_writeb(0x14, PORT99CR);
+
+ /* Enable clock to MMC hardware block */
+ __raw_writel(__raw_readl(SMSTPCR3) & ~(1 << 12), SMSTPCR3);
+
+ mmc_update_progress(MMC_PROGRESS_INIT);
+
+ /* setup MMCIF hardware */
+ sh_mmcif_boot_init(MMCIF_BASE);
+
+ mmc_update_progress(MMC_PROGRESS_LOAD);
+
+ /* load kernel via MMCIF interface */
+ sh_mmcif_boot_do_read(MMCIF_BASE, 2, /* Kernel is at block 2 */
+ (len + SH_MMCIF_BBS - 1) / SH_MMCIF_BBS, buf);
+
+
+ /* Disable clock to MMC hardware block */
+ __raw_writel(__raw_readl(SMSTPCR3) | (1 << 12), SMSTPCR3);
+
+ mmc_update_progress(MMC_PROGRESS_DONE);
+}
diff --git a/arch/arm/boot/compressed/ofw-shark.c b/arch/arm/boot/compressed/ofw-shark.c
new file mode 100644
index 00000000..465c54b6
--- /dev/null
+++ b/arch/arm/boot/compressed/ofw-shark.c
@@ -0,0 +1,260 @@
+/*
+ * linux/arch/arm/boot/compressed/ofw-shark.c
+ *
+ * by Alexander Schulz
+ *
+ * This file is used to get some basic information
+ * about the memory layout of the shark we are running
+ * on. Memory is usually divided in blocks a 8 MB.
+ * And bootargs are copied from OpenFirmware.
+ */
+
+
+#include
+#include
+#include
+#include
+
+
+asmlinkage void
+create_params (unsigned long *buffer)
+{
+ /* Is there a better address? Also change in mach-shark/core.c */
+ struct tag *tag = (struct tag *) 0x08003000;
+ int j,i,m,k,nr_banks,size;
+ unsigned char *c;
+
+ k = 0;
+
+ /* Head of the taglist */
+ tag->hdr.tag = ATAG_CORE;
+ tag->hdr.size = tag_size(tag_core);
+ tag->u.core.flags = 1;
+ tag->u.core.pagesize = PAGE_SIZE;
+ tag->u.core.rootdev = 0;
+
+ /* Build up one tagged block for each memory region */
+ size=0;
+ nr_banks=(unsigned int) buffer[0];
+ for (j=0;jhdr.tag = ATAG_MEM;
+ tag->hdr.size = tag_size(tag_mem32);
+ tag->u.mem.size = buffer[2*k+2];
+ tag->u.mem.start = buffer[2*k+1];
+
+ size += buffer[2*k+2];
+
+ buffer[2*k+1]=0xffffffff; /* mark as copied */
+ }
+
+ /* The command line */
+ tag = tag_next(tag);
+ tag->hdr.tag = ATAG_CMDLINE;
+
+ c=(unsigned char *)(&buffer[34]);
+ j=0;
+ while (*c) tag->u.cmdline.cmdline[j++]=*c++;
+
+ tag->u.cmdline.cmdline[j]=0;
+ tag->hdr.size = (j + 7 + sizeof(struct tag_header)) >> 2;
+
+ /* Hardware revision */
+ tag = tag_next(tag);
+ tag->hdr.tag = ATAG_REVISION;
+ tag->hdr.size = tag_size(tag_revision);
+ tag->u.revision.rev = ((unsigned char) buffer[33])-'0';
+
+ /* End of the taglist */
+ tag = tag_next(tag);
+ tag->hdr.tag = 0;
+ tag->hdr.size = 0;
+}
+
+
+typedef int (*ofw_handle_t)(void *);
+
+/* Everything below is called with a wrong MMU setting.
+ * This means: no string constants, no initialization of
+ * arrays, no global variables! This is ugly but I didn't
+ * want to write this in assembler :-)
+ */
+
+int
+of_decode_int(const unsigned char *p)
+{
+ unsigned int i = *p++ << 8;
+ i = (i + *p++) << 8;
+ i = (i + *p++) << 8;
+ return (i + *p);
+}
+
+int
+OF_finddevice(ofw_handle_t openfirmware, char *name)
+{
+ unsigned int args[8];
+ char service[12];
+
+ service[0]='f';
+ service[1]='i';
+ service[2]='n';
+ service[3]='d';
+ service[4]='d';
+ service[5]='e';
+ service[6]='v';
+ service[7]='i';
+ service[8]='c';
+ service[9]='e';
+ service[10]='\0';
+
+ args[0]=(unsigned int)service;
+ args[1]=1;
+ args[2]=1;
+ args[3]=(unsigned int)name;
+
+ if (openfirmware(args) == -1)
+ return -1;
+ return args[4];
+}
+
+int
+OF_getproplen(ofw_handle_t openfirmware, int handle, char *prop)
+{
+ unsigned int args[8];
+ char service[12];
+
+ service[0]='g';
+ service[1]='e';
+ service[2]='t';
+ service[3]='p';
+ service[4]='r';
+ service[5]='o';
+ service[6]='p';
+ service[7]='l';
+ service[8]='e';
+ service[9]='n';
+ service[10]='\0';
+
+ args[0] = (unsigned int)service;
+ args[1] = 2;
+ args[2] = 1;
+ args[3] = (unsigned int)handle;
+ args[4] = (unsigned int)prop;
+
+ if (openfirmware(args) == -1)
+ return -1;
+ return args[5];
+}
+
+int
+OF_getprop(ofw_handle_t openfirmware, int handle, char *prop, void *buf, unsigned int buflen)
+{
+ unsigned int args[8];
+ char service[8];
+
+ service[0]='g';
+ service[1]='e';
+ service[2]='t';
+ service[3]='p';
+ service[4]='r';
+ service[5]='o';
+ service[6]='p';
+ service[7]='\0';
+
+ args[0] = (unsigned int)service;
+ args[1] = 4;
+ args[2] = 1;
+ args[3] = (unsigned int)handle;
+ args[4] = (unsigned int)prop;
+ args[5] = (unsigned int)buf;
+ args[6] = buflen;
+
+ if (openfirmware(args) == -1)
+ return -1;
+ return args[7];
+}
+
+asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer)
+{
+ int phandle,i,mem_len,buffer[32];
+ char temp[15];
+
+ temp[0]='/';
+ temp[1]='m';
+ temp[2]='e';
+ temp[3]='m';
+ temp[4]='o';
+ temp[5]='r';
+ temp[6]='y';
+ temp[7]='\0';
+
+ phandle=OF_finddevice(o,temp);
+
+ temp[0]='r';
+ temp[1]='e';
+ temp[2]='g';
+ temp[3]='\0';
+
+ mem_len = OF_getproplen(o,phandle, temp);
+ OF_getprop(o,phandle, temp, buffer, mem_len);
+ *nomr=mem_len >> 3;
+
+ for (i=0; i<=mem_len/4; i++) pointer[i]=of_decode_int((const unsigned char *)&buffer[i]);
+
+ temp[0]='/';
+ temp[1]='c';
+ temp[2]='h';
+ temp[3]='o';
+ temp[4]='s';
+ temp[5]='e';
+ temp[6]='n';
+ temp[7]='\0';
+
+ phandle=OF_finddevice(o,temp);
+
+ temp[0]='b';
+ temp[1]='o';
+ temp[2]='o';
+ temp[3]='t';
+ temp[4]='a';
+ temp[5]='r';
+ temp[6]='g';
+ temp[7]='s';
+ temp[8]='\0';
+
+ mem_len = OF_getproplen(o,phandle, temp);
+ OF_getprop(o,phandle, temp, buffer, mem_len);
+ if (mem_len > 128) mem_len=128;
+ for (i=0; i<=mem_len/4; i++) pointer[i+33]=buffer[i];
+ pointer[i+33]=0;
+
+ temp[0]='/';
+ temp[1]='\0';
+ phandle=OF_finddevice(o,temp);
+ temp[0]='b';
+ temp[1]='a';
+ temp[2]='n';
+ temp[3]='n';
+ temp[4]='e';
+ temp[5]='r';
+ temp[6]='-';
+ temp[7]='n';
+ temp[8]='a';
+ temp[9]='m';
+ temp[10]='e';
+ temp[11]='\0';
+ mem_len = OF_getproplen(o,phandle, temp);
+ OF_getprop(o,phandle, temp, buffer, mem_len);
+ * ((unsigned char *) &pointer[32]) = ((unsigned char *) buffer)[mem_len-2];
+}
diff --git a/arch/arm/boot/compressed/piggy.gzip.S b/arch/arm/boot/compressed/piggy.gzip.S
new file mode 100644
index 00000000..a68adf91
--- /dev/null
+++ b/arch/arm/boot/compressed/piggy.gzip.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/boot/compressed/piggy.gzip"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/boot/compressed/piggy.lzma.S b/arch/arm/boot/compressed/piggy.lzma.S
new file mode 100644
index 00000000..d7e69cff
--- /dev/null
+++ b/arch/arm/boot/compressed/piggy.lzma.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/boot/compressed/piggy.lzma"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/boot/compressed/piggy.lzo.S b/arch/arm/boot/compressed/piggy.lzo.S
new file mode 100644
index 00000000..a425ad95
--- /dev/null
+++ b/arch/arm/boot/compressed/piggy.lzo.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/boot/compressed/piggy.lzo"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/boot/compressed/piggy.xzkern.S b/arch/arm/boot/compressed/piggy.xzkern.S
new file mode 100644
index 00000000..5703f300
--- /dev/null
+++ b/arch/arm/boot/compressed/piggy.xzkern.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/boot/compressed/piggy.xzkern"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/boot/compressed/sdhi-sh7372.c b/arch/arm/boot/compressed/sdhi-sh7372.c
new file mode 100644
index 00000000..d279294f
--- /dev/null
+++ b/arch/arm/boot/compressed/sdhi-sh7372.c
@@ -0,0 +1,95 @@
+/*
+ * SuperH Mobile SDHI
+ *
+ * Copyright (C) 2010 Magnus Damm
+ * Copyright (C) 2010 Kuninori Morimoto
+ * Copyright (C) 2010 Simon Horman
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Parts inspired by u-boot
+ */
+
+#include
+#include
+#include
+#include
+
+#include "sdhi-shmobile.h"
+
+#define PORT179CR 0xe60520b3
+#define PORT180CR 0xe60520b4
+#define PORT181CR 0xe60520b5
+#define PORT182CR 0xe60520b6
+#define PORT183CR 0xe60520b7
+#define PORT184CR 0xe60520b8
+
+#define SMSTPCR3 0xe615013c
+
+#define CR_INPUT_ENABLE 0x10
+#define CR_FUNCTION1 0x01
+
+#define SDHI1_BASE (void __iomem *)0xe6860000
+#define SDHI_BASE SDHI1_BASE
+
+/* SuperH Mobile SDHI loader
+ *
+ * loads the zImage from an SD card starting from block 0
+ * on physical partition 1
+ *
+ * The image must be start with a vrl4 header and
+ * the zImage must start at offset 512 of the image. That is,
+ * at block 1 (=byte 512) of physical partition 1
+ *
+ * Use the following line to write the vrl4 formated zImage
+ * to an SD card
+ * # dd if=vrl4.out of=/dev/sdx bs=512
+ */
+asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
+{
+ int high_capacity;
+
+ mmc_init_progress();
+
+ mmc_update_progress(MMC_PROGRESS_ENTER);
+ /* Initialise SDHI1 */
+ /* PORT184CR: GPIO_FN_SDHICMD1 Control */
+ __raw_writeb(CR_FUNCTION1, PORT184CR);
+ /* PORT179CR: GPIO_FN_SDHICLK1 Control */
+ __raw_writeb(CR_INPUT_ENABLE|CR_FUNCTION1, PORT179CR);
+ /* PORT181CR: GPIO_FN_SDHID1_3 Control */
+ __raw_writeb(CR_FUNCTION1, PORT183CR);
+ /* PORT182CR: GPIO_FN_SDHID1_2 Control */
+ __raw_writeb(CR_FUNCTION1, PORT182CR);
+ /* PORT183CR: GPIO_FN_SDHID1_1 Control */
+ __raw_writeb(CR_FUNCTION1, PORT181CR);
+ /* PORT180CR: GPIO_FN_SDHID1_0 Control */
+ __raw_writeb(CR_FUNCTION1, PORT180CR);
+
+ /* Enable clock to SDHI1 hardware block */
+ __raw_writel(__raw_readl(SMSTPCR3) & ~(1 << 13), SMSTPCR3);
+
+ /* setup SDHI hardware */
+ mmc_update_progress(MMC_PROGRESS_INIT);
+ high_capacity = sdhi_boot_init(SDHI_BASE);
+ if (high_capacity < 0)
+ goto err;
+
+ mmc_update_progress(MMC_PROGRESS_LOAD);
+ /* load kernel */
+ if (sdhi_boot_do_read(SDHI_BASE, high_capacity,
+ 0, /* Kernel is at block 1 */
+ (len + TMIO_BBS - 1) / TMIO_BBS, buf))
+ goto err;
+
+ /* Disable clock to SDHI1 hardware block */
+ __raw_writel(__raw_readl(SMSTPCR3) | (1 << 13), SMSTPCR3);
+
+ mmc_update_progress(MMC_PROGRESS_DONE);
+
+ return;
+err:
+ for(;;);
+}
diff --git a/arch/arm/boot/compressed/sdhi-shmobile.c b/arch/arm/boot/compressed/sdhi-shmobile.c
new file mode 100644
index 00000000..bd3d4698
--- /dev/null
+++ b/arch/arm/boot/compressed/sdhi-shmobile.c
@@ -0,0 +1,449 @@
+/*
+ * SuperH Mobile SDHI
+ *
+ * Copyright (C) 2010 Magnus Damm
+ * Copyright (C) 2010 Kuninori Morimoto
+ * Copyright (C) 2010 Simon Horman
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Parts inspired by u-boot
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define OCR_FASTBOOT (1<<29)
+#define OCR_HCS (1<<30)
+#define OCR_BUSY (1<<31)
+
+#define RESP_CMD12 0x00000030
+
+static inline u16 sd_ctrl_read16(void __iomem *base, int addr)
+{
+ return __raw_readw(base + addr);
+}
+
+static inline u32 sd_ctrl_read32(void __iomem *base, int addr)
+{
+ return __raw_readw(base + addr) |
+ __raw_readw(base + addr + 2) << 16;
+}
+
+static inline void sd_ctrl_write16(void __iomem *base, int addr, u16 val)
+{
+ __raw_writew(val, base + addr);
+}
+
+static inline void sd_ctrl_write32(void __iomem *base, int addr, u32 val)
+{
+ __raw_writew(val, base + addr);
+ __raw_writew(val >> 16, base + addr + 2);
+}
+
+#define ALL_ERROR (TMIO_STAT_CMD_IDX_ERR | TMIO_STAT_CRCFAIL | \
+ TMIO_STAT_STOPBIT_ERR | TMIO_STAT_DATATIMEOUT | \
+ TMIO_STAT_RXOVERFLOW | TMIO_STAT_TXUNDERRUN | \
+ TMIO_STAT_CMDTIMEOUT | TMIO_STAT_ILL_ACCESS | \
+ TMIO_STAT_ILL_FUNC)
+
+static int sdhi_intr(void __iomem *base)
+{
+ unsigned long state = sd_ctrl_read32(base, CTL_STATUS);
+
+ if (state & ALL_ERROR) {
+ sd_ctrl_write32(base, CTL_STATUS, ~ALL_ERROR);
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ ALL_ERROR |
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ return -EINVAL;
+ }
+ if (state & TMIO_STAT_CMDRESPEND) {
+ sd_ctrl_write32(base, CTL_STATUS, ~TMIO_STAT_CMDRESPEND);
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ TMIO_STAT_CMDRESPEND |
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ return 0;
+ }
+ if (state & TMIO_STAT_RXRDY) {
+ sd_ctrl_write32(base, CTL_STATUS, ~TMIO_STAT_RXRDY);
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ TMIO_STAT_RXRDY | TMIO_STAT_TXUNDERRUN |
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ return 0;
+ }
+ if (state & TMIO_STAT_DATAEND) {
+ sd_ctrl_write32(base, CTL_STATUS, ~TMIO_STAT_DATAEND);
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ TMIO_STAT_DATAEND |
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ return 0;
+ }
+
+ return -EAGAIN;
+}
+
+static int sdhi_boot_wait_resp_end(void __iomem *base)
+{
+ int err = -EAGAIN, timeout = 10000000;
+
+ while (timeout--) {
+ err = sdhi_intr(base);
+ if (err != -EAGAIN)
+ break;
+ udelay(1);
+ }
+
+ return err;
+}
+
+/* SDHI_CLK_CTRL */
+#define CLK_MMC_ENABLE (1 << 8)
+#define CLK_MMC_INIT (1 << 6) /* clk / 256 */
+
+static void sdhi_boot_mmc_clk_stop(void __iomem *base)
+{
+ sd_ctrl_write16(base, CTL_CLK_AND_WAIT_CTL, 0x0000);
+ msleep(10);
+ sd_ctrl_write16(base, CTL_SD_CARD_CLK_CTL, ~CLK_MMC_ENABLE &
+ sd_ctrl_read16(base, CTL_SD_CARD_CLK_CTL));
+ msleep(10);
+}
+
+static void sdhi_boot_mmc_clk_start(void __iomem *base)
+{
+ sd_ctrl_write16(base, CTL_SD_CARD_CLK_CTL, CLK_MMC_ENABLE |
+ sd_ctrl_read16(base, CTL_SD_CARD_CLK_CTL));
+ msleep(10);
+ sd_ctrl_write16(base, CTL_CLK_AND_WAIT_CTL, CLK_MMC_ENABLE);
+ msleep(10);
+}
+
+static void sdhi_boot_reset(void __iomem *base)
+{
+ sd_ctrl_write16(base, CTL_RESET_SD, 0x0000);
+ msleep(10);
+ sd_ctrl_write16(base, CTL_RESET_SD, 0x0001);
+ msleep(10);
+}
+
+/* Set MMC clock / power.
+ * Note: This controller uses a simple divider scheme therefore it cannot
+ * run a MMC card at full speed (20MHz). The max clock is 24MHz on SD, but as
+ * MMC wont run that fast, it has to be clocked at 12MHz which is the next
+ * slowest setting.
+ */
+static int sdhi_boot_mmc_set_ios(void __iomem *base, struct mmc_ios *ios)
+{
+ if (sd_ctrl_read32(base, CTL_STATUS) & TMIO_STAT_CMD_BUSY)
+ return -EBUSY;
+
+ if (ios->clock)
+ sd_ctrl_write16(base, CTL_SD_CARD_CLK_CTL,
+ ios->clock | CLK_MMC_ENABLE);
+
+ /* Power sequence - OFF -> ON -> UP */
+ switch (ios->power_mode) {
+ case MMC_POWER_OFF: /* power down SD bus */
+ sdhi_boot_mmc_clk_stop(base);
+ break;
+ case MMC_POWER_ON: /* power up SD bus */
+ break;
+ case MMC_POWER_UP: /* start bus clock */
+ sdhi_boot_mmc_clk_start(base);
+ break;
+ }
+
+ switch (ios->bus_width) {
+ case MMC_BUS_WIDTH_1:
+ sd_ctrl_write16(base, CTL_SD_MEM_CARD_OPT, 0x80e0);
+ break;
+ case MMC_BUS_WIDTH_4:
+ sd_ctrl_write16(base, CTL_SD_MEM_CARD_OPT, 0x00e0);
+ break;
+ }
+
+ /* Let things settle. delay taken from winCE driver */
+ udelay(140);
+
+ return 0;
+}
+
+/* These are the bitmasks the tmio chip requires to implement the MMC response
+ * types. Note that R1 and R6 are the same in this scheme. */
+#define RESP_NONE 0x0300
+#define RESP_R1 0x0400
+#define RESP_R1B 0x0500
+#define RESP_R2 0x0600
+#define RESP_R3 0x0700
+#define DATA_PRESENT 0x0800
+#define TRANSFER_READ 0x1000
+
+static int sdhi_boot_request(void __iomem *base, struct mmc_command *cmd)
+{
+ int err, c = cmd->opcode;
+
+ switch (mmc_resp_type(cmd)) {
+ case MMC_RSP_NONE: c |= RESP_NONE; break;
+ case MMC_RSP_R1: c |= RESP_R1; break;
+ case MMC_RSP_R1B: c |= RESP_R1B; break;
+ case MMC_RSP_R2: c |= RESP_R2; break;
+ case MMC_RSP_R3: c |= RESP_R3; break;
+ default:
+ return -EINVAL;
+ }
+
+ /* No interrupts so this may not be cleared */
+ sd_ctrl_write32(base, CTL_STATUS, ~TMIO_STAT_CMDRESPEND);
+
+ sd_ctrl_write32(base, CTL_IRQ_MASK, TMIO_STAT_CMDRESPEND |
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ sd_ctrl_write32(base, CTL_ARG_REG, cmd->arg);
+ sd_ctrl_write16(base, CTL_SD_CMD, c);
+
+
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ ~(TMIO_STAT_CMDRESPEND | ALL_ERROR) &
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+
+ err = sdhi_boot_wait_resp_end(base);
+ if (err)
+ return err;
+
+ cmd->resp[0] = sd_ctrl_read32(base, CTL_RESPONSE);
+
+ return 0;
+}
+
+static int sdhi_boot_do_read_single(void __iomem *base, int high_capacity,
+ unsigned long block, unsigned short *buf)
+{
+ int err, i;
+
+ /* CMD17 - Read */
+ {
+ struct mmc_command cmd;
+
+ cmd.opcode = MMC_READ_SINGLE_BLOCK | \
+ TRANSFER_READ | DATA_PRESENT;
+ if (high_capacity)
+ cmd.arg = block;
+ else
+ cmd.arg = block * TMIO_BBS;
+ cmd.flags = MMC_RSP_R1;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ }
+
+ sd_ctrl_write32(base, CTL_IRQ_MASK,
+ ~(TMIO_STAT_DATAEND | TMIO_STAT_RXRDY |
+ TMIO_STAT_TXUNDERRUN) &
+ sd_ctrl_read32(base, CTL_IRQ_MASK));
+ err = sdhi_boot_wait_resp_end(base);
+ if (err)
+ return err;
+
+ sd_ctrl_write16(base, CTL_SD_XFER_LEN, TMIO_BBS);
+ for (i = 0; i < TMIO_BBS / sizeof(*buf); i++)
+ *buf++ = sd_ctrl_read16(base, RESP_CMD12);
+
+ err = sdhi_boot_wait_resp_end(base);
+ if (err)
+ return err;
+
+ return 0;
+}
+
+int sdhi_boot_do_read(void __iomem *base, int high_capacity,
+ unsigned long offset, unsigned short count,
+ unsigned short *buf)
+{
+ unsigned long i;
+ int err = 0;
+
+ for (i = 0; i < count; i++) {
+ err = sdhi_boot_do_read_single(base, high_capacity, offset + i,
+ buf + (i * TMIO_BBS /
+ sizeof(*buf)));
+ if (err)
+ return err;
+ }
+
+ return 0;
+}
+
+#define VOLTAGES (MMC_VDD_32_33 | MMC_VDD_33_34)
+
+int sdhi_boot_init(void __iomem *base)
+{
+ bool sd_v2 = false, sd_v1_0 = false;
+ unsigned short cid;
+ int err, high_capacity = 0;
+
+ sdhi_boot_mmc_clk_stop(base);
+ sdhi_boot_reset(base);
+
+ /* mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0 */
+ {
+ struct mmc_ios ios;
+ ios.power_mode = MMC_POWER_ON;
+ ios.bus_width = MMC_BUS_WIDTH_1;
+ ios.clock = CLK_MMC_INIT;
+ err = sdhi_boot_mmc_set_ios(base, &ios);
+ if (err)
+ return err;
+ }
+
+ /* CMD0 */
+ {
+ struct mmc_command cmd;
+ msleep(1);
+ cmd.opcode = MMC_GO_IDLE_STATE;
+ cmd.arg = 0;
+ cmd.flags = MMC_RSP_NONE;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ msleep(2);
+ }
+
+ /* CMD8 - Test for SD version 2 */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = SD_SEND_IF_COND;
+ cmd.arg = (VOLTAGES != 0) << 8 | 0xaa;
+ cmd.flags = MMC_RSP_R1;
+ err = sdhi_boot_request(base, &cmd); /* Ignore error */
+ if ((cmd.resp[0] & 0xff) == 0xaa)
+ sd_v2 = true;
+ }
+
+ /* CMD55 - Get OCR (SD) */
+ {
+ int timeout = 1000;
+ struct mmc_command cmd;
+
+ cmd.arg = 0;
+
+ do {
+ cmd.opcode = MMC_APP_CMD;
+ cmd.flags = MMC_RSP_R1;
+ cmd.arg = 0;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ break;
+
+ cmd.opcode = SD_APP_OP_COND;
+ cmd.flags = MMC_RSP_R3;
+ cmd.arg = (VOLTAGES & 0xff8000);
+ if (sd_v2)
+ cmd.arg |= OCR_HCS;
+ cmd.arg |= OCR_FASTBOOT;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ break;
+
+ msleep(1);
+ } while((!(cmd.resp[0] & OCR_BUSY)) && --timeout);
+
+ if (!err && timeout) {
+ if (!sd_v2)
+ sd_v1_0 = true;
+ high_capacity = (cmd.resp[0] & OCR_HCS) == OCR_HCS;
+ }
+ }
+
+ /* CMD1 - Get OCR (MMC) */
+ if (!sd_v2 && !sd_v1_0) {
+ int timeout = 1000;
+ struct mmc_command cmd;
+
+ do {
+ cmd.opcode = MMC_SEND_OP_COND;
+ cmd.arg = VOLTAGES | OCR_HCS;
+ cmd.flags = MMC_RSP_R3;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+
+ msleep(1);
+ } while((!(cmd.resp[0] & OCR_BUSY)) && --timeout);
+
+ if (!timeout)
+ return -EAGAIN;
+
+ high_capacity = (cmd.resp[0] & OCR_HCS) == OCR_HCS;
+ }
+
+ /* CMD2 - Get CID */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = MMC_ALL_SEND_CID;
+ cmd.arg = 0;
+ cmd.flags = MMC_RSP_R2;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ }
+
+ /* CMD3
+ * MMC: Set the relative address
+ * SD: Get the relative address
+ * Also puts the card into the standby state
+ */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = MMC_SET_RELATIVE_ADDR;
+ cmd.arg = 0;
+ cmd.flags = MMC_RSP_R1;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ cid = cmd.resp[0] >> 16;
+ }
+
+ /* CMD9 - Get CSD */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = MMC_SEND_CSD;
+ cmd.arg = cid << 16;
+ cmd.flags = MMC_RSP_R2;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ }
+
+ /* CMD7 - Select the card */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = MMC_SELECT_CARD;
+ //cmd.arg = rca << 16;
+ cmd.arg = cid << 16;
+ //cmd.flags = MMC_RSP_R1B;
+ cmd.flags = MMC_RSP_R1;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ }
+
+ /* CMD16 - Set the block size */
+ {
+ struct mmc_command cmd;
+ cmd.opcode = MMC_SET_BLOCKLEN;
+ cmd.arg = TMIO_BBS;
+ cmd.flags = MMC_RSP_R1;
+ err = sdhi_boot_request(base, &cmd);
+ if (err)
+ return err;
+ }
+
+ return high_capacity;
+}
diff --git a/arch/arm/boot/compressed/sdhi-shmobile.h b/arch/arm/boot/compressed/sdhi-shmobile.h
new file mode 100644
index 00000000..92eaa09f
--- /dev/null
+++ b/arch/arm/boot/compressed/sdhi-shmobile.h
@@ -0,0 +1,11 @@
+#ifndef SDHI_MOBILE_H
+#define SDHI_MOBILE_H
+
+#include
+
+int sdhi_boot_do_read(void __iomem *base, int high_capacity,
+ unsigned long offset, unsigned short count,
+ unsigned short *buf);
+int sdhi_boot_init(void __iomem *base);
+
+#endif
diff --git a/arch/arm/boot/compressed/string.c b/arch/arm/boot/compressed/string.c
new file mode 100644
index 00000000..36e53ef9
--- /dev/null
+++ b/arch/arm/boot/compressed/string.c
@@ -0,0 +1,127 @@
+/*
+ * arch/arm/boot/compressed/string.c
+ *
+ * Small subset of simple string routines
+ */
+
+#include
+
+void *memcpy(void *__dest, __const void *__src, size_t __n)
+{
+ int i = 0;
+ unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;
+
+ for (i = __n >> 3; i > 0; i--) {
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1 << 2) {
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1 << 1) {
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1)
+ *d++ = *s++;
+
+ return __dest;
+}
+
+void *memmove(void *__dest, __const void *__src, size_t count)
+{
+ unsigned char *d = __dest;
+ const unsigned char *s = __src;
+
+ if (__dest == __src)
+ return __dest;
+
+ if (__dest < __src)
+ return memcpy(__dest, __src, count);
+
+ while (count--)
+ d[count] = s[count];
+ return __dest;
+}
+
+size_t strlen(const char *s)
+{
+ const char *sc = s;
+
+ while (*sc != '\0')
+ sc++;
+ return sc - s;
+}
+
+int memcmp(const void *cs, const void *ct, size_t count)
+{
+ const unsigned char *su1 = cs, *su2 = ct, *end = su1 + count;
+ int res = 0;
+
+ while (su1 < end) {
+ res = *su1++ - *su2++;
+ if (res)
+ break;
+ }
+ return res;
+}
+
+int strcmp(const char *cs, const char *ct)
+{
+ unsigned char c1, c2;
+ int res = 0;
+
+ do {
+ c1 = *cs++;
+ c2 = *ct++;
+ res = c1 - c2;
+ if (res)
+ break;
+ } while (c1);
+ return res;
+}
+
+void *memchr(const void *s, int c, size_t count)
+{
+ const unsigned char *p = s;
+
+ while (count--)
+ if ((unsigned char)c == *p++)
+ return (void *)(p - 1);
+ return NULL;
+}
+
+char *strchr(const char *s, int c)
+{
+ while (*s != (char)c)
+ if (*s++ == '\0')
+ return NULL;
+ return (char *)s;
+}
+
+#undef memset
+
+void *memset(void *s, int c, size_t count)
+{
+ char *xs = s;
+ while (count--)
+ *xs++ = c;
+ return s;
+}
+
+void __memzero(void *s, size_t count)
+{
+ memset(s, 0, count);
+}
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in
new file mode 100644
index 00000000..4919f2ac
--- /dev/null
+++ b/arch/arm/boot/compressed/vmlinux.lds.in
@@ -0,0 +1,76 @@
+/*
+ * linux/arch/arm/boot/compressed/vmlinux.lds.in
+ *
+ * Copyright (C) 2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+ /DISCARD/ : {
+ *(.ARM.exidx*)
+ *(.ARM.extab*)
+ /*
+ * Discard any r/w data - this produces a link error if we have any,
+ * which is required for PIC decompression. Local data generates
+ * GOTOFF relocations, which prevents it being relocated independently
+ * of the text/got segments.
+ */
+ *(.data)
+ }
+
+ . = TEXT_START;
+ _text = .;
+
+ .text : {
+ _start = .;
+ *(.start)
+ *(.text)
+ *(.text.*)
+ *(.fixup)
+ *(.gnu.warning)
+ *(.glue_7t)
+ *(.glue_7)
+ }
+ .rodata : {
+ *(.rodata)
+ *(.rodata.*)
+ }
+ .piggydata : {
+ *(.piggydata)
+ }
+
+ . = ALIGN(4);
+ _etext = .;
+
+ .got.plt : { *(.got.plt) }
+ _got_start = .;
+ .got : { *(.got) }
+ _got_end = .;
+
+ /* ensure the zImage file size is always a multiple of 64 bits */
+ /* (without a dummy byte, ld just ignores the empty section) */
+ .pad : { BYTE(0); . = ALIGN(8); }
+ _edata = .;
+
+ . = BSS_START;
+ __bss_start = .;
+ .bss : { *(.bss) }
+ _end = .;
+
+ . = ALIGN(8); /* the stack must be 64-bit aligned */
+ .stack : { *(.stack) }
+
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+}
+
diff --git a/arch/arm/boot/dts/am3517_mt_ventoux.dts b/arch/arm/boot/dts/am3517_mt_ventoux.dts
new file mode 100644
index 00000000..5eb26d7d
--- /dev/null
+++ b/arch/arm/boot/dts/am3517_mt_ventoux.dts
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2011 Ilya Yanok, EmCraft Systems
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "omap3.dtsi"
+
+/ {
+ model = "TeeJet Mt.Ventoux";
+ compatible = "teejet,mt_ventoux", "ti,omap3";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>; /* 256 MB */
+ };
+
+ /* AM35xx doesn't have IVA */
+ soc {
+ iva {
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9g20.dtsi b/arch/arm/boot/dts/at91sam9g20.dtsi
new file mode 100644
index 00000000..773ef484
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g20.dtsi
@@ -0,0 +1,238 @@
+/*
+ * at91sam9g20.dtsi - Device Tree Include file for AT91SAM9G20 family SoC
+ *
+ * Copyright (C) 2011 Atmel,
+ * 2011 Nicolas Ferre ,
+ * 2011 Jean-Christophe PLAGNIOL-VILLARD
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ model = "Atmel AT91SAM9G20 family SoC";
+ compatible = "atmel,at91sam9g20";
+ interrupt-parent = <&aic>;
+
+ aliases {
+ serial0 = &dbgu;
+ serial1 = &usart0;
+ serial2 = &usart1;
+ serial3 = &usart2;
+ serial4 = &usart3;
+ serial5 = &usart4;
+ serial6 = &usart5;
+ gpio0 = &pioA;
+ gpio1 = &pioB;
+ gpio2 = &pioC;
+ tcb0 = &tcb0;
+ tcb1 = &tcb1;
+ };
+ cpus {
+ cpu@0 {
+ compatible = "arm,arm926ejs";
+ };
+ };
+
+ memory {
+ reg = <0x20000000 0x08000000>;
+ };
+
+ ahb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ aic: interrupt-controller@fffff000 {
+ #interrupt-cells = <2>;
+ compatible = "atmel,at91rm9200-aic";
+ interrupt-controller;
+ reg = <0xfffff000 0x200>;
+ };
+
+ ramc0: ramc@ffffea00 {
+ compatible = "atmel,at91sam9260-sdramc";
+ reg = <0xffffea00 0x200>;
+ };
+
+ pmc: pmc@fffffc00 {
+ compatible = "atmel,at91rm9200-pmc";
+ reg = <0xfffffc00 0x100>;
+ };
+
+ rstc@fffffd00 {
+ compatible = "atmel,at91sam9260-rstc";
+ reg = <0xfffffd00 0x10>;
+ };
+
+ shdwc@fffffd10 {
+ compatible = "atmel,at91sam9260-shdwc";
+ reg = <0xfffffd10 0x10>;
+ };
+
+ pit: timer@fffffd30 {
+ compatible = "atmel,at91sam9260-pit";
+ reg = <0xfffffd30 0xf>;
+ interrupts = <1 4>;
+ };
+
+ tcb0: timer@fffa0000 {
+ compatible = "atmel,at91rm9200-tcb";
+ reg = <0xfffa0000 0x100>;
+ interrupts = <17 4 18 4 19 4>;
+ };
+
+ tcb1: timer@fffdc000 {
+ compatible = "atmel,at91rm9200-tcb";
+ reg = <0xfffdc000 0x100>;
+ interrupts = <26 4 27 4 28 4>;
+ };
+
+ pioA: gpio@fffff400 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff400 0x100>;
+ interrupts = <2 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioB: gpio@fffff600 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff600 0x100>;
+ interrupts = <3 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioC: gpio@fffff800 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff800 0x100>;
+ interrupts = <4 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ dbgu: serial@fffff200 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffff200 0x200>;
+ interrupts = <1 4>;
+ status = "disabled";
+ };
+
+ usart0: serial@fffb0000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb0000 0x200>;
+ interrupts = <6 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart1: serial@fffb4000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb4000 0x200>;
+ interrupts = <7 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart2: serial@fffb8000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb8000 0x200>;
+ interrupts = <8 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart3: serial@fffd0000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffd0000 0x200>;
+ interrupts = <23 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart4: serial@fffd4000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffd4000 0x200>;
+ interrupts = <24 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart5: serial@fffd8000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffd8000 0x200>;
+ interrupts = <25 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ macb0: ethernet@fffc4000 {
+ compatible = "cdns,at32ap7000-macb", "cdns,macb";
+ reg = <0xfffc4000 0x100>;
+ interrupts = <21 4>;
+ status = "disabled";
+ };
+
+ usb1: gadget@fffa4000 {
+ compatible = "atmel,at91rm9200-udc";
+ reg = <0xfffa4000 0x4000>;
+ interrupts = <10 4>;
+ status = "disabled";
+ };
+ };
+
+ nand0: nand@40000000 {
+ compatible = "atmel,at91rm9200-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x40000000 0x10000000
+ 0xffffe800 0x200
+ >;
+ atmel,nand-addr-offset = <21>;
+ atmel,nand-cmd-offset = <22>;
+ gpios = <&pioC 13 0
+ &pioC 14 0
+ 0
+ >;
+ status = "disabled";
+ };
+
+ usb0: ohci@00500000 {
+ compatible = "atmel,at91rm9200-ohci", "usb-ohci";
+ reg = <0x00500000 0x100000>;
+ interrupts = <20 4>;
+ status = "disabled";
+ };
+ };
+
+ i2c@0 {
+ compatible = "i2c-gpio";
+ gpios = <&pioA 23 0 /* sda */
+ &pioA 24 0 /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9g25ek.dts b/arch/arm/boot/dts/at91sam9g25ek.dts
new file mode 100644
index 00000000..7829a4d0
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g25ek.dts
@@ -0,0 +1,49 @@
+/*
+ * at91sam9g25ek.dts - Device Tree file for AT91SAM9G25-EK board
+ *
+ * Copyright (C) 2012 Atmel,
+ * 2012 Nicolas Ferre
+ *
+ * Licensed under GPLv2 or later.
+ */
+/dts-v1/;
+/include/ "at91sam9x5.dtsi"
+/include/ "at91sam9x5cm.dtsi"
+
+/ {
+ model = "Atmel AT91SAM9G25-EK";
+ compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9";
+
+ chosen {
+ bootargs = "128M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs";
+ };
+
+ ahb {
+ apb {
+ dbgu: serial@fffff200 {
+ status = "okay";
+ };
+
+ usart0: serial@f801c000 {
+ status = "okay";
+ };
+
+ macb0: ethernet@f802c000 {
+ phy-mode = "rmii";
+ status = "okay";
+ };
+ };
+
+ usb0: ohci@00600000 {
+ status = "okay";
+ num-ports = <2>;
+ atmel,vbus-gpio = <&pioD 19 1
+ &pioD 20 1
+ >;
+ };
+
+ usb1: ehci@00700000 {
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi
new file mode 100644
index 00000000..c8042147
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g45.dtsi
@@ -0,0 +1,247 @@
+/*
+ * at91sam9g45.dtsi - Device Tree Include file for AT91SAM9G45 family SoC
+ * applies to AT91SAM9G45, AT91SAM9M10,
+ * AT91SAM9G46, AT91SAM9M11 SoC
+ *
+ * Copyright (C) 2011 Atmel,
+ * 2011 Nicolas Ferre
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ model = "Atmel AT91SAM9G45 family SoC";
+ compatible = "atmel,at91sam9g45";
+ interrupt-parent = <&aic>;
+
+ aliases {
+ serial0 = &dbgu;
+ serial1 = &usart0;
+ serial2 = &usart1;
+ serial3 = &usart2;
+ serial4 = &usart3;
+ gpio0 = &pioA;
+ gpio1 = &pioB;
+ gpio2 = &pioC;
+ gpio3 = &pioD;
+ gpio4 = &pioE;
+ tcb0 = &tcb0;
+ tcb1 = &tcb1;
+ };
+ cpus {
+ cpu@0 {
+ compatible = "arm,arm926ejs";
+ };
+ };
+
+ memory {
+ reg = <0x70000000 0x10000000>;
+ };
+
+ ahb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ aic: interrupt-controller@fffff000 {
+ #interrupt-cells = <2>;
+ compatible = "atmel,at91rm9200-aic";
+ interrupt-controller;
+ reg = <0xfffff000 0x200>;
+ };
+
+ ramc0: ramc@ffffe400 {
+ compatible = "atmel,at91sam9g45-ddramc";
+ reg = <0xffffe400 0x200
+ 0xffffe600 0x200>;
+ };
+
+ pmc: pmc@fffffc00 {
+ compatible = "atmel,at91rm9200-pmc";
+ reg = <0xfffffc00 0x100>;
+ };
+
+ rstc@fffffd00 {
+ compatible = "atmel,at91sam9g45-rstc";
+ reg = <0xfffffd00 0x10>;
+ };
+
+ pit: timer@fffffd30 {
+ compatible = "atmel,at91sam9260-pit";
+ reg = <0xfffffd30 0xf>;
+ interrupts = <1 4>;
+ };
+
+
+ shdwc@fffffd10 {
+ compatible = "atmel,at91sam9rl-shdwc";
+ reg = <0xfffffd10 0x10>;
+ };
+
+ tcb0: timer@fff7c000 {
+ compatible = "atmel,at91rm9200-tcb";
+ reg = <0xfff7c000 0x100>;
+ interrupts = <18 4>;
+ };
+
+ tcb1: timer@fffd4000 {
+ compatible = "atmel,at91rm9200-tcb";
+ reg = <0xfffd4000 0x100>;
+ interrupts = <18 4>;
+ };
+
+ dma: dma-controller@ffffec00 {
+ compatible = "atmel,at91sam9g45-dma";
+ reg = <0xffffec00 0x200>;
+ interrupts = <21 4>;
+ };
+
+ pioA: gpio@fffff200 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff200 0x100>;
+ interrupts = <2 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioB: gpio@fffff400 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff400 0x100>;
+ interrupts = <3 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioC: gpio@fffff600 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff600 0x100>;
+ interrupts = <4 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioD: gpio@fffff800 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff800 0x100>;
+ interrupts = <5 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioE: gpio@fffffa00 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffffa00 0x100>;
+ interrupts = <5 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ dbgu: serial@ffffee00 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xffffee00 0x200>;
+ interrupts = <1 4>;
+ status = "disabled";
+ };
+
+ usart0: serial@fff8c000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfff8c000 0x200>;
+ interrupts = <7 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart1: serial@fff90000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfff90000 0x200>;
+ interrupts = <8 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart2: serial@fff94000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfff94000 0x200>;
+ interrupts = <9 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart3: serial@fff98000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfff98000 0x200>;
+ interrupts = <10 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ macb0: ethernet@fffbc000 {
+ compatible = "cdns,at32ap7000-macb", "cdns,macb";
+ reg = <0xfffbc000 0x100>;
+ interrupts = <25 4>;
+ status = "disabled";
+ };
+ };
+
+ nand0: nand@40000000 {
+ compatible = "atmel,at91rm9200-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x40000000 0x10000000
+ 0xffffe200 0x200
+ >;
+ atmel,nand-addr-offset = <21>;
+ atmel,nand-cmd-offset = <22>;
+ gpios = <&pioC 8 0
+ &pioC 14 0
+ 0
+ >;
+ status = "disabled";
+ };
+
+ usb0: ohci@00700000 {
+ compatible = "atmel,at91rm9200-ohci", "usb-ohci";
+ reg = <0x00700000 0x100000>;
+ interrupts = <22 4>;
+ status = "disabled";
+ };
+
+ usb1: ehci@00800000 {
+ compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
+ reg = <0x00800000 0x100000>;
+ interrupts = <22 4>;
+ status = "disabled";
+ };
+ };
+
+ i2c@0 {
+ compatible = "i2c-gpio";
+ gpios = <&pioA 20 0 /* sda */
+ &pioA 21 0 /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <5>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9m10g45ek.dts b/arch/arm/boot/dts/at91sam9m10g45ek.dts
new file mode 100644
index 00000000..a3633bd1
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9m10g45ek.dts
@@ -0,0 +1,156 @@
+/*
+ * at91sam9m10g45ek.dts - Device Tree file for AT91SAM9M10G45-EK board
+ *
+ * Copyright (C) 2011 Atmel,
+ * 2011 Nicolas Ferre
+ *
+ * Licensed under GPLv2 or later.
+ */
+/dts-v1/;
+/include/ "at91sam9g45.dtsi"
+
+/ {
+ model = "Atmel AT91SAM9M10G45-EK";
+ compatible = "atmel,at91sam9m10g45ek", "atmel,at91sam9g45", "atmel,at91sam9";
+
+ chosen {
+ bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2";
+ };
+
+ memory {
+ reg = <0x70000000 0x4000000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ main_clock: clock@0 {
+ compatible = "atmel,osc", "fixed-clock";
+ clock-frequency = <12000000>;
+ };
+ };
+
+ ahb {
+ apb {
+ dbgu: serial@ffffee00 {
+ status = "okay";
+ };
+
+ usart1: serial@fff90000 {
+ status = "okay";
+ };
+
+ macb0: ethernet@fffbc000 {
+ phy-mode = "rmii";
+ status = "okay";
+ };
+ };
+
+ nand0: nand@40000000 {
+ nand-bus-width = <8>;
+ nand-ecc-mode = "soft";
+ nand-on-flash-bbt;
+ status = "okay";
+
+ boot@0 {
+ label = "bootstrap/uboot/kernel";
+ reg = <0x0 0x400000>;
+ };
+
+ rootfs@400000 {
+ label = "rootfs";
+ reg = <0x400000 0x3C00000>;
+ };
+
+ data@4000000 {
+ label = "data";
+ reg = <0x4000000 0xC000000>;
+ };
+ };
+
+ usb0: ohci@00700000 {
+ status = "okay";
+ num-ports = <2>;
+ atmel,vbus-gpio = <&pioD 1 1
+ &pioD 3 1>;
+ };
+
+ usb1: ehci@00800000 {
+ status = "okay";
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ d8 {
+ label = "d8";
+ gpios = <&pioD 30 0>;
+ linux,default-trigger = "heartbeat";
+ };
+
+ d6 {
+ label = "d6";
+ gpios = <&pioD 0 1>;
+ linux,default-trigger = "nand-disk";
+ };
+
+ d7 {
+ label = "d7";
+ gpios = <&pioD 31 1>;
+ linux,default-trigger = "mmc0";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ left_click {
+ label = "left_click";
+ gpios = <&pioB 6 1>;
+ linux,code = <272>;
+ gpio-key,wakeup;
+ };
+
+ right_click {
+ label = "right_click";
+ gpios = <&pioB 7 1>;
+ linux,code = <273>;
+ gpio-key,wakeup;
+ };
+
+ left {
+ label = "Joystick Left";
+ gpios = <&pioB 14 1>;
+ linux,code = <105>;
+ };
+
+ right {
+ label = "Joystick Right";
+ gpios = <&pioB 15 1>;
+ linux,code = <106>;
+ };
+
+ up {
+ label = "Joystick Up";
+ gpios = <&pioB 16 1>;
+ linux,code = <103>;
+ };
+
+ down {
+ label = "Joystick Down";
+ gpios = <&pioB 17 1>;
+ linux,code = <108>;
+ };
+
+ enter {
+ label = "Joystick Press";
+ gpios = <&pioB 18 1>;
+ linux,code = <28>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
new file mode 100644
index 00000000..dd4ed748
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -0,0 +1,263 @@
+/*
+ * at91sam9x5.dtsi - Device Tree Include file for AT91SAM9x5 family SoC
+ * applies to AT91SAM9G15, AT91SAM9G25, AT91SAM9G35,
+ * AT91SAM9X25, AT91SAM9X35 SoC
+ *
+ * Copyright (C) 2012 Atmel,
+ * 2012 Nicolas Ferre
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ model = "Atmel AT91SAM9x5 family SoC";
+ compatible = "atmel,at91sam9x5";
+ interrupt-parent = <&aic>;
+
+ aliases {
+ serial0 = &dbgu;
+ serial1 = &usart0;
+ serial2 = &usart1;
+ serial3 = &usart2;
+ gpio0 = &pioA;
+ gpio1 = &pioB;
+ gpio2 = &pioC;
+ gpio3 = &pioD;
+ tcb0 = &tcb0;
+ tcb1 = &tcb1;
+ };
+ cpus {
+ cpu@0 {
+ compatible = "arm,arm926ejs";
+ };
+ };
+
+ memory {
+ reg = <0x20000000 0x10000000>;
+ };
+
+ ahb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ aic: interrupt-controller@fffff000 {
+ #interrupt-cells = <2>;
+ compatible = "atmel,at91rm9200-aic";
+ interrupt-controller;
+ reg = <0xfffff000 0x200>;
+ };
+
+ ramc0: ramc@ffffe800 {
+ compatible = "atmel,at91sam9g45-ddramc";
+ reg = <0xffffe800 0x200>;
+ };
+
+ pmc: pmc@fffffc00 {
+ compatible = "atmel,at91rm9200-pmc";
+ reg = <0xfffffc00 0x100>;
+ };
+
+ rstc@fffffe00 {
+ compatible = "atmel,at91sam9g45-rstc";
+ reg = <0xfffffe00 0x10>;
+ };
+
+ shdwc@fffffe10 {
+ compatible = "atmel,at91sam9x5-shdwc";
+ reg = <0xfffffe10 0x10>;
+ };
+
+ pit: timer@fffffe30 {
+ compatible = "atmel,at91sam9260-pit";
+ reg = <0xfffffe30 0xf>;
+ interrupts = <1 4>;
+ };
+
+ tcb0: timer@f8008000 {
+ compatible = "atmel,at91sam9x5-tcb";
+ reg = <0xf8008000 0x100>;
+ interrupts = <17 4>;
+ };
+
+ tcb1: timer@f800c000 {
+ compatible = "atmel,at91sam9x5-tcb";
+ reg = <0xf800c000 0x100>;
+ interrupts = <17 4>;
+ };
+
+ dma0: dma-controller@ffffec00 {
+ compatible = "atmel,at91sam9g45-dma";
+ reg = <0xffffec00 0x200>;
+ interrupts = <20 4>;
+ };
+
+ dma1: dma-controller@ffffee00 {
+ compatible = "atmel,at91sam9g45-dma";
+ reg = <0xffffee00 0x200>;
+ interrupts = <21 4>;
+ };
+
+ pioA: gpio@fffff400 {
+ compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
+ reg = <0xfffff400 0x100>;
+ interrupts = <2 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioB: gpio@fffff600 {
+ compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
+ reg = <0xfffff600 0x100>;
+ interrupts = <2 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioC: gpio@fffff800 {
+ compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
+ reg = <0xfffff800 0x100>;
+ interrupts = <3 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pioD: gpio@fffffa00 {
+ compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
+ reg = <0xfffffa00 0x100>;
+ interrupts = <3 4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ dbgu: serial@fffff200 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffff200 0x200>;
+ interrupts = <1 4>;
+ status = "disabled";
+ };
+
+ usart0: serial@f801c000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xf801c000 0x200>;
+ interrupts = <5 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart1: serial@f8020000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xf8020000 0x200>;
+ interrupts = <6 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ usart2: serial@f8024000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xf8024000 0x200>;
+ interrupts = <7 4>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ status = "disabled";
+ };
+
+ macb0: ethernet@f802c000 {
+ compatible = "cdns,at32ap7000-macb", "cdns,macb";
+ reg = <0xf802c000 0x100>;
+ interrupts = <24 4>;
+ status = "disabled";
+ };
+
+ macb1: ethernet@f8030000 {
+ compatible = "cdns,at32ap7000-macb", "cdns,macb";
+ reg = <0xf8030000 0x100>;
+ interrupts = <27 4>;
+ status = "disabled";
+ };
+ };
+
+ nand0: nand@40000000 {
+ compatible = "atmel,at91rm9200-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x40000000 0x10000000
+ >;
+ atmel,nand-addr-offset = <21>;
+ atmel,nand-cmd-offset = <22>;
+ gpios = <&pioD 5 0
+ &pioD 4 0
+ 0
+ >;
+ status = "disabled";
+ };
+
+ usb0: ohci@00600000 {
+ compatible = "atmel,at91rm9200-ohci", "usb-ohci";
+ reg = <0x00600000 0x100000>;
+ interrupts = <22 4>;
+ status = "disabled";
+ };
+
+ usb1: ehci@00700000 {
+ compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
+ reg = <0x00700000 0x100000>;
+ interrupts = <22 4>;
+ status = "disabled";
+ };
+ };
+
+ i2c@0 {
+ compatible = "i2c-gpio";
+ gpios = <&pioA 30 0 /* sda */
+ &pioA 31 0 /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c@1 {
+ compatible = "i2c-gpio";
+ gpios = <&pioC 0 0 /* sda */
+ &pioC 1 0 /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c@2 {
+ compatible = "i2c-gpio";
+ gpios = <&pioB 4 0 /* sda */
+ &pioB 5 0 /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/boot/dts/at91sam9x5cm.dtsi b/arch/arm/boot/dts/at91sam9x5cm.dtsi
new file mode 100644
index 00000000..31e7be23
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9x5cm.dtsi
@@ -0,0 +1,74 @@
+/*
+ * at91sam9x5cm.dtsi - Device Tree Include file for AT91SAM9x5 CPU Module
+ *
+ * Copyright (C) 2012 Atmel,
+ * 2012 Nicolas Ferre
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/ {
+ memory {
+ reg = <0x20000000 0x8000000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ main_clock: clock@0 {
+ compatible = "atmel,osc", "fixed-clock";
+ clock-frequency = <12000000>;
+ };
+ };
+
+ ahb {
+ nand0: nand@40000000 {
+ nand-bus-width = <8>;
+ nand-ecc-mode = "soft";
+ nand-on-flash-bbt;
+ status = "okay";
+
+ at91bootstrap@0 {
+ label = "at91bootstrap";
+ reg = <0x0 0x40000>;
+ };
+
+ uboot@40000 {
+ label = "u-boot";
+ reg = <0x40000 0x80000>;
+ };
+
+ ubootenv@c0000 {
+ label = "U-Boot Env";
+ reg = <0xc0000 0x140000>;
+ };
+
+ kernel@200000 {
+ label = "kernel";
+ reg = <0x200000 0x600000>;
+ };
+
+ rootfs@800000 {
+ label = "rootfs";
+ reg = <0x800000 0x1f800000>;
+ };
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ pb18 {
+ label = "pb18";
+ gpios = <&pioB 18 1>;
+ linux,default-trigger = "heartbeat";
+ };
+
+ pd21 {
+ label = "pd21";
+ gpios = <&pioD 21 0>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/db8500.dtsi b/arch/arm/boot/dts/db8500.dtsi
new file mode 100644
index 00000000..14bc3070
--- /dev/null
+++ b/arch/arm/boot/dts/db8500.dtsi
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2012 Linaro Ltd
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ soc-u9500 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "stericsson,db8500";
+ interrupt-parent = <&intc>;
+ ranges;
+
+ intc: interrupt-controller@a0411000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #address-cells = <1>;
+ interrupt-controller;
+ reg = <0xa0411000 0x1000>,
+ <0xa0410100 0x100>;
+ };
+
+ L2: l2-cache {
+ compatible = "arm,pl310-cache";
+ reg = <0xa0412000 0x1000>;
+ interrupts = <0 13 4>;
+ cache-unified;
+ cache-level = <2>;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a9-pmu";
+ interrupts = <0 7 0x4>;
+ };
+
+ timer@a0410600 {
+ compatible = "arm,cortex-a9-twd-timer";
+ reg = <0xa0410600 0x20>;
+ interrupts = <1 13 0x304>;
+ };
+
+ rtc@80154000 {
+ compatible = "stericsson,db8500-rtc";
+ reg = <0x80154000 0x1000>;
+ interrupts = <0 18 0x4>;
+ };
+
+ gpio0: gpio@8012e000 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8012e000 0x80>;
+ interrupts = <0 119 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio1: gpio@8012e080 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8012e080 0x80>;
+ interrupts = <0 120 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio2: gpio@8000e000 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8000e000 0x80>;
+ interrupts = <0 121 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio3: gpio@8000e080 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8000e080 0x80>;
+ interrupts = <0 122 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio4: gpio@8000e100 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8000e100 0x80>;
+ interrupts = <0 123 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio5: gpio@8000e180 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8000e180 0x80>;
+ interrupts = <0 124 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio6: gpio@8011e000 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8011e000 0x80>;
+ interrupts = <0 125 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio7: gpio@8011e080 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0x8011e080 0x80>;
+ interrupts = <0 126 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ gpio8: gpio@a03fe000 {
+ compatible = "stericsson,db8500-gpio",
+ "stmicroelectronics,nomadik-gpio";
+ reg = <0xa03fe000 0x80>;
+ interrupts = <0 127 0x4>;
+ supports-sleepmode;
+ gpio-controller;
+ };
+
+ usb@a03e0000 {
+ compatible = "stericsson,db8500-musb",
+ "mentor,musb";
+ reg = <0xa03e0000 0x10000>;
+ interrupts = <0 23 0x4>;
+ };
+
+ dma-controller@801C0000 {
+ compatible = "stericsson,db8500-dma40",
+ "stericsson,dma40";
+ reg = <0x801C0000 0x1000 0x40010000 0x800>;
+ interrupts = <0 25 0x4>;
+ };
+
+ prcmu@80157000 {
+ compatible = "stericsson,db8500-prcmu";
+ reg = <0x80157000 0x1000>;
+ interrupts = <46 47>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ab8500@5 {
+ compatible = "stericsson,ab8500";
+ reg = <5>; /* mailbox 5 is i2c */
+ interrupts = <0 40 0x4>;
+ };
+ };
+
+ i2c@80004000 {
+ compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
+ reg = <0x80004000 0x1000>;
+ interrupts = <0 21 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@80122000 {
+ compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
+ reg = <0x80122000 0x1000>;
+ interrupts = <0 22 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@80128000 {
+ compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
+ reg = <0x80128000 0x1000>;
+ interrupts = <0 55 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@80110000 {
+ compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
+ reg = <0x80110000 0x1000>;
+ interrupts = <0 12 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@8012a000 {
+ compatible = "stericsson,db8500-i2c", "stmicroelectronics,nomadik-i2c";
+ reg = <0x8012a000 0x1000>;
+ interrupts = <0 51 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ ssp@80002000 {
+ compatible = "arm,pl022", "arm,primecell";
+ reg = <80002000 0x1000>;
+ interrupts = <0 14 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+
+ // Add one of these for each child device
+ cs-gpios = <&gpio0 31 &gpio4 14 &gpio4 16 &gpio6 22 &gpio7 0>;
+
+ };
+
+ uart@80120000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x80120000 0x1000>;
+ interrupts = <0 11 0x4>;
+ status = "disabled";
+ };
+ uart@80121000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x80121000 0x1000>;
+ interrupts = <0 19 0x4>;
+ status = "disabled";
+ };
+ uart@80007000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x80007000 0x1000>;
+ interrupts = <0 26 0x4>;
+ status = "disabled";
+ };
+
+ sdi@80126000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80126000 0x1000>;
+ interrupts = <0 60 0x4>;
+ status = "disabled";
+ };
+ sdi@80118000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80118000 0x1000>;
+ interrupts = <0 50 0x4>;
+ status = "disabled";
+ };
+ sdi@80005000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80005000 0x1000>;
+ interrupts = <0 41 0x4>;
+ status = "disabled";
+ };
+ sdi@80119000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80119000 0x1000>;
+ interrupts = <0 59 0x4>;
+ status = "disabled";
+ };
+ sdi@80114000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80114000 0x1000>;
+ interrupts = <0 99 0x4>;
+ status = "disabled";
+ };
+ sdi@80008000 {
+ compatible = "arm,pl18x", "arm,primecell";
+ reg = <0x80114000 0x1000>;
+ interrupts = <0 100 0x4>;
+ status = "disabled";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
new file mode 100644
index 00000000..b8c47638
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -0,0 +1,137 @@
+/*
+ * Samsung's Exynos4210 based Origen board device tree source
+ *
+ * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+ * Copyright (c) 2010-2011 Linaro Ltd.
+ * www.linaro.org
+ *
+ * Device tree source file for Insignal's Origen board which is based on
+ * Samsung's Exynos4210 SoC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/dts-v1/;
+/include/ "exynos4210.dtsi"
+
+/ {
+ model = "Insignal Origen evaluation board based on Exynos4210";
+ compatible = "insignal,origen", "samsung,exynos4210";
+
+ memory {
+ reg = <0x40000000 0x40000000>;
+ };
+
+ chosen {
+ bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
+ };
+
+ sdhci@12530000 {
+ samsung,sdhci-bus-width = <4>;
+ linux,mmc_cap_4_bit_data;
+ samsung,sdhci-cd-internal;
+ gpio-cd = <&gpk2 2 2 3 3>;
+ gpios = <&gpk2 0 2 0 3>,
+ <&gpk2 1 2 0 3>,
+ <&gpk2 3 2 3 3>,
+ <&gpk2 4 2 3 3>,
+ <&gpk2 5 2 3 3>,
+ <&gpk2 6 2 3 3>;
+ };
+
+ sdhci@12510000 {
+ samsung,sdhci-bus-width = <4>;
+ linux,mmc_cap_4_bit_data;
+ samsung,sdhci-cd-internal;
+ gpio-cd = <&gpk0 2 2 3 3>;
+ gpios = <&gpk0 0 2 0 3>,
+ <&gpk0 1 2 0 3>,
+ <&gpk0 3 2 3 3>,
+ <&gpk0 4 2 3 3>,
+ <&gpk0 5 2 3 3>,
+ <&gpk0 6 2 3 3>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ up {
+ label = "Up";
+ gpios = <&gpx2 0 0 0 2>;
+ linux,code = <103>;
+ };
+
+ down {
+ label = "Down";
+ gpios = <&gpx2 1 0 0 2>;
+ linux,code = <108>;
+ };
+
+ back {
+ label = "Back";
+ gpios = <&gpx1 7 0 0 2>;
+ linux,code = <158>;
+ };
+
+ home {
+ label = "Home";
+ gpios = <&gpx1 6 0 0 2>;
+ linux,code = <102>;
+ };
+
+ menu {
+ label = "Menu";
+ gpios = <&gpx1 5 0 0 2>;
+ linux,code = <139>;
+ };
+ };
+
+ keypad@100A0000 {
+ status = "disabled";
+ };
+
+ sdhci@12520000 {
+ status = "disabled";
+ };
+
+ sdhci@12540000 {
+ status = "disabled";
+ };
+
+ i2c@13860000 {
+ status = "disabled";
+ };
+
+ i2c@13870000 {
+ status = "disabled";
+ };
+
+ i2c@13880000 {
+ status = "disabled";
+ };
+
+ i2c@13890000 {
+ status = "disabled";
+ };
+
+ i2c@138A0000 {
+ status = "disabled";
+ };
+
+ i2c@138B0000 {
+ status = "disabled";
+ };
+
+ i2c@138C0000 {
+ status = "disabled";
+ };
+
+ i2c@138D0000 {
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
new file mode 100644
index 00000000..27afc8e5
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -0,0 +1,182 @@
+/*
+ * Samsung's Exynos4210 based SMDKV310 board device tree source
+ *
+ * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+ * Copyright (c) 2010-2011 Linaro Ltd.
+ * www.linaro.org
+ *
+ * Device tree source file for Samsung's SMDKV310 board which is based on
+ * Samsung's Exynos4210 SoC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/dts-v1/;
+/include/ "exynos4210.dtsi"
+
+/ {
+ model = "Samsung smdkv310 evaluation board based on Exynos4210";
+ compatible = "samsung,smdkv310", "samsung,exynos4210";
+
+ memory {
+ reg = <0x40000000 0x80000000>;
+ };
+
+ chosen {
+ bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
+ };
+
+ sdhci@12530000 {
+ samsung,sdhci-bus-width = <4>;
+ linux,mmc_cap_4_bit_data;
+ samsung,sdhci-cd-internal;
+ gpio-cd = <&gpk2 2 2 3 3>;
+ gpios = <&gpk2 0 2 0 3>,
+ <&gpk2 1 2 0 3>,
+ <&gpk2 3 2 3 3>,
+ <&gpk2 4 2 3 3>,
+ <&gpk2 5 2 3 3>,
+ <&gpk2 6 2 3 3>;
+ };
+
+ keypad@100A0000 {
+ samsung,keypad-num-rows = <2>;
+ samsung,keypad-num-columns = <8>;
+ linux,keypad-no-autorepeat;
+ linux,keypad-wakeup;
+
+ row-gpios = <&gpx2 0 3 3 0>,
+ <&gpx2 1 3 3 0>;
+
+ col-gpios = <&gpx1 0 3 0 0>,
+ <&gpx1 1 3 0 0>,
+ <&gpx1 2 3 0 0>,
+ <&gpx1 3 3 0 0>,
+ <&gpx1 4 3 0 0>,
+ <&gpx1 5 3 0 0>,
+ <&gpx1 6 3 0 0>,
+ <&gpx1 7 3 0 0>;
+
+ key_1 {
+ keypad,row = <0>;
+ keypad,column = <3>;
+ linux,code = <2>;
+ };
+
+ key_2 {
+ keypad,row = <0>;
+ keypad,column = <4>;
+ linux,code = <3>;
+ };
+
+ key_3 {
+ keypad,row = <0>;
+ keypad,column = <5>;
+ linux,code = <4>;
+ };
+
+ key_4 {
+ keypad,row = <0>;
+ keypad,column = <6>;
+ linux,code = <5>;
+ };
+
+ key_5 {
+ keypad,row = <0>;
+ keypad,column = <7>;
+ linux,code = <6>;
+ };
+
+ key_a {
+ keypad,row = <1>;
+ keypad,column = <3>;
+ linux,code = <30>;
+ };
+
+ key_b {
+ keypad,row = <1>;
+ keypad,column = <4>;
+ linux,code = <48>;
+ };
+
+ key_c {
+ keypad,row = <1>;
+ keypad,column = <5>;
+ linux,code = <46>;
+ };
+
+ key_d {
+ keypad,row = <1>;
+ keypad,column = <6>;
+ linux,code = <32>;
+ };
+
+ key_e {
+ keypad,row = <1>;
+ keypad,column = <7>;
+ linux,code = <18>;
+ };
+ };
+
+ i2c@13860000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ samsung,i2c-sda-delay = <100>;
+ samsung,i2c-max-bus-freq = <20000>;
+ gpios = <&gpd1 0 2 3 0>,
+ <&gpd1 1 2 3 0>;
+
+ eeprom@50 {
+ compatible = "samsung,24ad0xd1";
+ reg = <0x50>;
+ };
+
+ eeprom@52 {
+ compatible = "samsung,24ad0xd1";
+ reg = <0x52>;
+ };
+ };
+
+ sdhci@12510000 {
+ status = "disabled";
+ };
+
+ sdhci@12520000 {
+ status = "disabled";
+ };
+
+ sdhci@12540000 {
+ status = "disabled";
+ };
+
+ i2c@13870000 {
+ status = "disabled";
+ };
+
+ i2c@13880000 {
+ status = "disabled";
+ };
+
+ i2c@13890000 {
+ status = "disabled";
+ };
+
+ i2c@138A0000 {
+ status = "disabled";
+ };
+
+ i2c@138B0000 {
+ status = "disabled";
+ };
+
+ i2c@138C0000 {
+ status = "disabled";
+ };
+
+ i2c@138D0000 {
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
new file mode 100644
index 00000000..a1dd2ee8
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -0,0 +1,398 @@
+/*
+ * Samsung's Exynos4210 SoC device tree source
+ *
+ * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+ * Copyright (c) 2010-2011 Linaro Ltd.
+ * www.linaro.org
+ *
+ * Samsung's Exynos4210 SoC device nodes are listed in this file. Exynos4210
+ * based board files can include this file and provide values for board specfic
+ * bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * Exynos4210 SoC. As device tree coverage for Exynos4210 increases, additional
+ * nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "samsung,exynos4210";
+ interrupt-parent = <&gic>;
+
+ gic:interrupt-controller@10490000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ cpu-offset = <0x8000>;
+ reg = <0x10490000 0x1000>, <0x10480000 0x100>;
+ };
+
+ watchdog@10060000 {
+ compatible = "samsung,s3c2410-wdt";
+ reg = <0x10060000 0x100>;
+ interrupts = <0 43 0>;
+ };
+
+ rtc@10070000 {
+ compatible = "samsung,s3c6410-rtc";
+ reg = <0x10070000 0x100>;
+ interrupts = <0 44 0>, <0 45 0>;
+ };
+
+ keypad@100A0000 {
+ compatible = "samsung,s5pv210-keypad";
+ reg = <0x100A0000 0x100>;
+ interrupts = <0 109 0>;
+ };
+
+ sdhci@12510000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12510000 0x100>;
+ interrupts = <0 73 0>;
+ };
+
+ sdhci@12520000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12520000 0x100>;
+ interrupts = <0 74 0>;
+ };
+
+ sdhci@12530000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12530000 0x100>;
+ interrupts = <0 75 0>;
+ };
+
+ sdhci@12540000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12540000 0x100>;
+ interrupts = <0 76 0>;
+ };
+
+ serial@13800000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x13800000 0x100>;
+ interrupts = <0 52 0>;
+ };
+
+ serial@13810000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x13810000 0x100>;
+ interrupts = <0 53 0>;
+ };
+
+ serial@13820000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x13820000 0x100>;
+ interrupts = <0 54 0>;
+ };
+
+ serial@13830000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x13830000 0x100>;
+ interrupts = <0 55 0>;
+ };
+
+ i2c@13860000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x13860000 0x100>;
+ interrupts = <0 58 0>;
+ };
+
+ i2c@13870000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x13870000 0x100>;
+ interrupts = <0 59 0>;
+ };
+
+ i2c@13880000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x13880000 0x100>;
+ interrupts = <0 60 0>;
+ };
+
+ i2c@13890000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x13890000 0x100>;
+ interrupts = <0 61 0>;
+ };
+
+ i2c@138A0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x138A0000 0x100>;
+ interrupts = <0 62 0>;
+ };
+
+ i2c@138B0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x138B0000 0x100>;
+ interrupts = <0 63 0>;
+ };
+
+ i2c@138C0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x138C0000 0x100>;
+ interrupts = <0 64 0>;
+ };
+
+ i2c@138D0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x138D0000 0x100>;
+ interrupts = <0 65 0>;
+ };
+
+ amba {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "arm,amba-bus";
+ interrupt-parent = <&gic>;
+ ranges;
+
+ pdma0: pdma@12680000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x12680000 0x1000>;
+ interrupts = <0 35 0>;
+ };
+
+ pdma1: pdma@12690000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x12690000 0x1000>;
+ interrupts = <0 36 0>;
+ };
+ };
+
+ gpio-controllers {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ gpio-controller;
+ ranges;
+
+ gpa0: gpio-controller@11400000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400000 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpa1: gpio-controller@11400020 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400020 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpb: gpio-controller@11400040 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400040 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc0: gpio-controller@11400060 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400060 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc1: gpio-controller@11400080 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400080 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpd0: gpio-controller@114000A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpd1: gpio-controller@114000C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe0: gpio-controller@114000E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe1: gpio-controller@11400100 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400100 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe2: gpio-controller@11400120 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400120 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe3: gpio-controller@11400140 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400140 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe4: gpio-controller@11400160 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400160 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf0: gpio-controller@11400180 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400180 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf1: gpio-controller@114001A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf2: gpio-controller@114001C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf3: gpio-controller@114001E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpj0: gpio-controller@11000000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000000 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpj1: gpio-controller@11000020 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000020 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpk0: gpio-controller@11000040 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000040 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpk1: gpio-controller@11000060 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000060 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpk2: gpio-controller@11000080 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000080 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpk3: gpio-controller@110000A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110000A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpl0: gpio-controller@110000C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110000C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpl1: gpio-controller@110000E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110000E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpl2: gpio-controller@11000100 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000100 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy0: gpio-controller@11000120 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000120 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy1: gpio-controller@11000140 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000140 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy2: gpio-controller@11000160 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000160 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy3: gpio-controller@11000180 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000180 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy4: gpio-controller@110001A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110001A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy5: gpio-controller@110001C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110001C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy6: gpio-controller@110001E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x110001E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx0: gpio-controller@11000C00 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000C00 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx1: gpio-controller@11000C20 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000C20 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx2: gpio-controller@11000C40 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000C40 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx3: gpio-controller@11000C60 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11000C60 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpz: gpio-controller@03860000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x03860000 0x20>;
+ #gpio-cells = <4>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
new file mode 100644
index 00000000..399d17b2
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
@@ -0,0 +1,26 @@
+/*
+ * SAMSUNG SMDK5250 board device tree source
+ *
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/dts-v1/;
+/include/ "exynos5250.dtsi"
+
+/ {
+ model = "SAMSUNG SMDK5250 board based on EXYNOS5250";
+ compatible = "samsung,smdk5250", "samsung,exynos5250";
+
+ memory {
+ reg = <0x40000000 0x80000000>;
+ };
+
+ chosen {
+ bootargs = "root=/dev/ram0 rw ramdisk=8192 console=ttySAC1,115200";
+ };
+};
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
new file mode 100644
index 00000000..dfc43359
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5250.dtsi
@@ -0,0 +1,413 @@
+/*
+ * SAMSUNG EXYNOS5250 SoC device tree source
+ *
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+ *
+ * SAMSUNG EXYNOS5250 SoC device nodes are listed in this file.
+ * EXYNOS5250 based board files can include this file and provide
+ * values for board specfic bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * EXYNOS5250 SoC. As device tree coverage for EXYNOS5250 increases,
+ * additional nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "samsung,exynos5250";
+ interrupt-parent = <&gic>;
+
+ gic:interrupt-controller@10490000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ reg = <0x10490000 0x1000>, <0x10480000 0x100>;
+ };
+
+ watchdog {
+ compatible = "samsung,s3c2410-wdt";
+ reg = <0x101D0000 0x100>;
+ interrupts = <0 42 0>;
+ };
+
+ rtc {
+ compatible = "samsung,s3c6410-rtc";
+ reg = <0x101E0000 0x100>;
+ interrupts = <0 43 0>, <0 44 0>;
+ };
+
+ sdhci@12200000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12200000 0x100>;
+ interrupts = <0 75 0>;
+ };
+
+ sdhci@12210000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12210000 0x100>;
+ interrupts = <0 76 0>;
+ };
+
+ sdhci@12220000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12220000 0x100>;
+ interrupts = <0 77 0>;
+ };
+
+ sdhci@12230000 {
+ compatible = "samsung,exynos4210-sdhci";
+ reg = <0x12230000 0x100>;
+ interrupts = <0 78 0>;
+ };
+
+ serial@12C00000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x12C00000 0x100>;
+ interrupts = <0 51 0>;
+ };
+
+ serial@12C10000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x12C10000 0x100>;
+ interrupts = <0 52 0>;
+ };
+
+ serial@12C20000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x12C20000 0x100>;
+ interrupts = <0 53 0>;
+ };
+
+ serial@12C30000 {
+ compatible = "samsung,exynos4210-uart";
+ reg = <0x12C30000 0x100>;
+ interrupts = <0 54 0>;
+ };
+
+ i2c@12C60000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12C60000 0x100>;
+ interrupts = <0 56 0>;
+ };
+
+ i2c@12C70000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12C70000 0x100>;
+ interrupts = <0 57 0>;
+ };
+
+ i2c@12C80000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12C80000 0x100>;
+ interrupts = <0 58 0>;
+ };
+
+ i2c@12C90000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12C90000 0x100>;
+ interrupts = <0 59 0>;
+ };
+
+ i2c@12CA0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12CA0000 0x100>;
+ interrupts = <0 60 0>;
+ };
+
+ i2c@12CB0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12CB0000 0x100>;
+ interrupts = <0 61 0>;
+ };
+
+ i2c@12CC0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12CC0000 0x100>;
+ interrupts = <0 62 0>;
+ };
+
+ i2c@12CD0000 {
+ compatible = "samsung,s3c2440-i2c";
+ reg = <0x12CD0000 0x100>;
+ interrupts = <0 63 0>;
+ };
+
+ amba {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "arm,amba-bus";
+ interrupt-parent = <&gic>;
+ ranges;
+
+ pdma0: pdma@121A0000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x121A0000 0x1000>;
+ interrupts = <0 34 0>;
+ };
+
+ pdma1: pdma@121B0000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x121B0000 0x1000>;
+ interrupts = <0 35 0>;
+ };
+
+ mdma0: pdma@10800000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x10800000 0x1000>;
+ interrupts = <0 33 0>;
+ };
+
+ mdma1: pdma@11C10000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x11C10000 0x1000>;
+ interrupts = <0 124 0>;
+ };
+ };
+
+ gpio-controllers {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ gpio-controller;
+ ranges;
+
+ gpa0: gpio-controller@11400000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400000 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpa1: gpio-controller@11400020 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400020 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpa2: gpio-controller@11400040 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400040 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpb0: gpio-controller@11400060 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400060 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpb1: gpio-controller@11400080 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400080 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpb2: gpio-controller@114000A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpb3: gpio-controller@114000C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc0: gpio-controller@114000E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114000E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc1: gpio-controller@11400100 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400100 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc2: gpio-controller@11400120 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400120 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpc3: gpio-controller@11400140 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400140 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpd0: gpio-controller@11400160 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400160 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpd1: gpio-controller@11400180 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400180 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy0: gpio-controller@114001A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy1: gpio-controller@114001C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy2: gpio-controller@114001E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x114001E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy3: gpio-controller@11400200 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400200 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy4: gpio-controller@11400220 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400220 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy5: gpio-controller@11400240 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400240 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpy6: gpio-controller@11400260 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400260 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx0: gpio-controller@11400C00 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400C00 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx1: gpio-controller@11400C20 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400C20 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx2: gpio-controller@11400C40 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400C40 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpx3: gpio-controller@11400C60 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x11400C60 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe0: gpio-controller@13400000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400000 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpe1: gpio-controller@13400020 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400020 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf0: gpio-controller@13400040 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400040 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpf1: gpio-controller@13400060 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400060 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpg0: gpio-controller@13400080 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400080 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpg1: gpio-controller@134000A0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x134000A0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpg2: gpio-controller@134000C0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x134000C0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gph0: gpio-controller@134000E0 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x134000E0 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gph1: gpio-controller@13400100 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x13400100 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpv0: gpio-controller@10D10000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x10D10000 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpv1: gpio-controller@10D10020 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x10D10020 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpv2: gpio-controller@10D10040 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x10D10040 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpv3: gpio-controller@10D10060 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x10D10060 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpv4: gpio-controller@10D10080 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x10D10080 0x20>;
+ #gpio-cells = <4>;
+ };
+
+ gpz: gpio-controller@03860000 {
+ compatible = "samsung,exynos4-gpio";
+ reg = <0x03860000 0x20>;
+ #gpio-cells = <4>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
new file mode 100644
index 00000000..83e72294
--- /dev/null
+++ b/arch/arm/boot/dts/highbank.dts
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2011 Calxeda, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ */
+
+/dts-v1/;
+
+/* First 4KB has pen for secondary cores. */
+/memreserve/ 0x00000000 0x0001000;
+
+/ {
+ model = "Calxeda Highbank";
+ compatible = "calxeda,highbank";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,cortex-a9";
+ reg = <0>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@1 {
+ compatible = "arm,cortex-a9";
+ reg = <1>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@2 {
+ compatible = "arm,cortex-a9";
+ reg = <2>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@3 {
+ compatible = "arm,cortex-a9";
+ reg = <3>;
+ next-level-cache = <&L2>;
+ };
+ };
+
+ memory {
+ name = "memory";
+ device_type = "memory";
+ reg = <0x00000000 0xff900000>;
+ };
+
+ chosen {
+ bootargs = "console=ttyAMA0";
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&intc>;
+ ranges;
+
+ timer@fff10600 {
+ compatible = "arm,cortex-a9-twd-timer";
+ reg = <0xfff10600 0x20>;
+ interrupts = <1 13 0xf01>;
+ };
+
+ watchdog@fff10620 {
+ compatible = "arm,cortex-a9-twd-wdt";
+ reg = <0xfff10620 0x20>;
+ interrupts = <1 14 0xf01>;
+ };
+
+ intc: interrupt-controller@fff11000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #size-cells = <0>;
+ #address-cells = <1>;
+ interrupt-controller;
+ reg = <0xfff11000 0x1000>,
+ <0xfff10100 0x100>;
+ };
+
+ L2: l2-cache {
+ compatible = "arm,pl310-cache";
+ reg = <0xfff12000 0x1000>;
+ interrupts = <0 70 4>;
+ cache-unified;
+ cache-level = <2>;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a9-pmu";
+ interrupts = <0 76 4 0 75 4 0 74 4 0 73 4>;
+ };
+
+ sata@ffe08000 {
+ compatible = "calxeda,hb-ahci";
+ reg = <0xffe08000 0x10000>;
+ interrupts = <0 83 4>;
+ };
+
+ sdhci@ffe0e000 {
+ compatible = "calxeda,hb-sdhci";
+ reg = <0xffe0e000 0x1000>;
+ interrupts = <0 90 4>;
+ };
+
+ ipc@fff20000 {
+ compatible = "arm,pl320", "arm,primecell";
+ reg = <0xfff20000 0x1000>;
+ interrupts = <0 7 4>;
+ };
+
+ gpioe: gpio@fff30000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xfff30000 0x1000>;
+ interrupts = <0 14 4>;
+ };
+
+ gpiof: gpio@fff31000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xfff31000 0x1000>;
+ interrupts = <0 15 4>;
+ };
+
+ gpiog: gpio@fff32000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xfff32000 0x1000>;
+ interrupts = <0 16 4>;
+ };
+
+ gpioh: gpio@fff33000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xfff33000 0x1000>;
+ interrupts = <0 17 4>;
+ };
+
+ timer {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0xfff34000 0x1000>;
+ interrupts = <0 18 4>;
+ };
+
+ rtc@fff35000 {
+ compatible = "arm,pl031", "arm,primecell";
+ reg = <0xfff35000 0x1000>;
+ interrupts = <0 19 4>;
+ };
+
+ serial@fff36000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0xfff36000 0x1000>;
+ interrupts = <0 20 4>;
+ };
+
+ smic@fff3a000 {
+ compatible = "ipmi-smic";
+ device_type = "ipmi";
+ reg = <0xfff3a000 0x1000>;
+ interrupts = <0 24 4>;
+ reg-size = <4>;
+ reg-spacing = <4>;
+ };
+
+ sregs@fff3c000 {
+ compatible = "calxeda,hb-sregs";
+ reg = <0xfff3c000 0x1000>;
+ };
+
+ dma@fff3d000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0xfff3d000 0x1000>;
+ interrupts = <0 92 4>;
+ };
+
+ ethernet@fff50000 {
+ compatible = "calxeda,hb-xgmac";
+ reg = <0xfff50000 0x1000>;
+ interrupts = <0 77 4 0 78 4 0 79 4>;
+ };
+
+ ethernet@fff51000 {
+ compatible = "calxeda,hb-xgmac";
+ reg = <0xfff51000 0x1000>;
+ interrupts = <0 80 4 0 81 4 0 82 4>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx27-phytec-phycore.dts b/arch/arm/boot/dts/imx27-phytec-phycore.dts
new file mode 100644
index 00000000..a51a08fc
--- /dev/null
+++ b/arch/arm/boot/dts/imx27-phytec-phycore.dts
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012 Sascha Hauer, Pengutronix
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx27.dtsi"
+
+/ {
+ model = "Phytec pcm038";
+ compatible = "phytec,imx27-pcm038", "fsl,imx27";
+
+ memory {
+ reg = <0x0 0x0>;
+ };
+
+ soc {
+ aipi@10000000 { /* aipi */
+
+ wdog@10002000 {
+ status = "okay";
+ };
+
+ uart@1000a000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ uart@1000b000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ uart@1000c000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ fec@1002b000 {
+ status = "okay";
+ };
+
+ i2c@1001d000 {
+ clock-frequency = <400000>;
+ status = "okay";
+ at24@4c {
+ compatible = "at,24c32";
+ pagesize = <32>;
+ reg = <0x52>;
+ };
+ pcf8563@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ };
+ lm75@4a {
+ compatible = "national,lm75";
+ reg = <0x4a>;
+ };
+ };
+ };
+ };
+
+ nor_flash@c0000000 {
+ compatible = "cfi-flash";
+ bank-width = <2>;
+ reg = <0xc0000000 0x02000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
+};
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
new file mode 100644
index 00000000..bc5e7d5d
--- /dev/null
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -0,0 +1,217 @@
+/*
+ * Copyright 2012 Sascha Hauer, Pengutronix
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ serial3 = &uart4;
+ serial4 = &uart5;
+ serial5 = &uart6;
+ };
+
+ avic: avic-interrupt-controller@e0000000 {
+ compatible = "fsl,imx27-avic", "fsl,avic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x10040000 0x1000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ osc26m {
+ compatible = "fsl,imx-osc26m", "fixed-clock";
+ clock-frequency = <26000000>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&avic>;
+ ranges;
+
+ aipi@10000000 { /* AIPI1 */
+ compatible = "fsl,aipi-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x10000000 0x10000000>;
+ ranges;
+
+ wdog@10002000 {
+ compatible = "fsl,imx27-wdt", "fsl,imx21-wdt";
+ reg = <0x10002000 0x4000>;
+ interrupts = <27>;
+ status = "disabled";
+ };
+
+ uart1: uart@1000a000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1000a000 0x1000>;
+ interrupts = <20>;
+ status = "disabled";
+ };
+
+ uart2: uart@1000b000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1000b000 0x1000>;
+ interrupts = <19>;
+ status = "disabled";
+ };
+
+ uart3: uart@1000c000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1000c000 0x1000>;
+ interrupts = <18>;
+ status = "disabled";
+ };
+
+ uart4: uart@1000d000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1000d000 0x1000>;
+ interrupts = <17>;
+ status = "disabled";
+ };
+
+ cspi1: cspi@1000e000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx27-cspi";
+ reg = <0x1000e000 0x1000>;
+ interrupts = <16>;
+ status = "disabled";
+ };
+
+ cspi2: cspi@1000f000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx27-cspi";
+ reg = <0x1000f000 0x1000>;
+ interrupts = <15>;
+ status = "disabled";
+ };
+
+ i2c1: i2c@10012000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx27-i2c", "fsl,imx1-i2c";
+ reg = <0x10012000 0x1000>;
+ interrupts = <12>;
+ status = "disabled";
+ };
+
+ gpio1: gpio@10015000 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015000 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio@10015100 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015100 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio@10015200 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015200 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio4: gpio@10015300 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015300 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio5: gpio@10015400 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015400 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio6: gpio@10015500 {
+ compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
+ reg = <0x10015500 0x100>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ cspi3: cspi@10017000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx27-cspi";
+ reg = <0x10017000 0x1000>;
+ interrupts = <6>;
+ status = "disabled";
+ };
+
+ uart5: uart@1001b000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1001b000 0x1000>;
+ interrupts = <49>;
+ status = "disabled";
+ };
+
+ uart6: uart@1001c000 {
+ compatible = "fsl,imx27-uart", "fsl,imx21-uart";
+ reg = <0x1001c000 0x1000>;
+ interrupts = <48>;
+ status = "disabled";
+ };
+
+ i2c2: i2c@1001d000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx27-i2c", "fsl,imx1-i2c";
+ reg = <0x1001d000 0x1000>;
+ interrupts = <1>;
+ status = "disabled";
+ };
+
+ fec: fec@1002b000 {
+ compatible = "fsl,imx27-fec";
+ reg = <0x1002b000 0x4000>;
+ interrupts = <50>;
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts
new file mode 100644
index 00000000..9949e606
--- /dev/null
+++ b/arch/arm/boot/dts/imx51-babbage.dts
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx51.dtsi"
+
+/ {
+ model = "Freescale i.MX51 Babbage Board";
+ compatible = "fsl,imx51-babbage", "fsl,imx51";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x90000000 0x20000000>;
+ };
+
+ soc {
+ aips@70000000 { /* aips-1 */
+ spba@70000000 {
+ esdhc@70004000 { /* ESDHC1 */
+ fsl,cd-internal;
+ fsl,wp-internal;
+ status = "okay";
+ };
+
+ esdhc@70008000 { /* ESDHC2 */
+ cd-gpios = <&gpio1 6 0>;
+ wp-gpios = <&gpio1 5 0>;
+ status = "okay";
+ };
+
+ uart3: uart@7000c000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ ecspi@70010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio4 24 0>, <&gpio4 25 0>;
+ status = "okay";
+
+ pmic: mc13892@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,mc13892";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <8>;
+
+ regulators {
+ sw1_reg: sw1 {
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1375000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw2_reg: sw2 {
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <1850000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw3_reg: sw3 {
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1850000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw4_reg: sw4 {
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1850000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vpll_reg: vpll {
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdig_reg: vdig {
+ regulator-min-microvolt = <1650000>;
+ regulator-max-microvolt = <1650000>;
+ regulator-boot-on;
+ };
+
+ vsd_reg: vsd {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3150000>;
+ };
+
+ vusb2_reg: vusb2 {
+ regulator-min-microvolt = <2400000>;
+ regulator-max-microvolt = <2775000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vvideo_reg: vvideo {
+ regulator-min-microvolt = <2775000>;
+ regulator-max-microvolt = <2775000>;
+ };
+
+ vaudio_reg: vaudio {
+ regulator-min-microvolt = <2300000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ vcam_reg: vcam {
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ vgen1_reg: vgen1 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ vgen2_reg: vgen2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <3150000>;
+ regulator-always-on;
+ };
+
+ vgen3_reg: vgen3 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2900000>;
+ regulator-always-on;
+ };
+ };
+ };
+
+ flash: at45db321d@1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
+ spi-max-frequency = <25000000>;
+ reg = <1>;
+
+ partition@0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+ };
+
+ wdog@73f98000 { /* WDOG1 */
+ status = "okay";
+ };
+
+ iomuxc@73fa8000 {
+ compatible = "fsl,imx51-iomuxc-babbage";
+ reg = <0x73fa8000 0x4000>;
+ };
+
+ uart1: uart@73fbc000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ uart2: uart@73fc0000 {
+ status = "okay";
+ };
+ };
+
+ aips@80000000 { /* aips-2 */
+ sdma@83fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
+ };
+
+ i2c@83fc4000 { /* I2C2 */
+ status = "okay";
+
+ codec: sgtl5000@0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ fec@83fec000 {
+ phy-mode = "mii";
+ status = "okay";
+ };
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power Button";
+ gpios = <&gpio2 21 0>;
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi
new file mode 100644
index 00000000..6663986f
--- /dev/null
+++ b/arch/arm/boot/dts/imx51.dtsi
@@ -0,0 +1,246 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ };
+
+ tzic: tz-interrupt-controller@e0000000 {
+ compatible = "fsl,imx51-tzic", "fsl,tzic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0xe0000000 0x4000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ckil {
+ compatible = "fsl,imx-ckil", "fixed-clock";
+ clock-frequency = <32768>;
+ };
+
+ ckih1 {
+ compatible = "fsl,imx-ckih1", "fixed-clock";
+ clock-frequency = <22579200>;
+ };
+
+ ckih2 {
+ compatible = "fsl,imx-ckih2", "fixed-clock";
+ clock-frequency = <0>;
+ };
+
+ osc {
+ compatible = "fsl,imx-osc", "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&tzic>;
+ ranges;
+
+ aips@70000000 { /* AIPS1 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x70000000 0x10000000>;
+ ranges;
+
+ spba@70000000 {
+ compatible = "fsl,spba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x70000000 0x40000>;
+ ranges;
+
+ esdhc@70004000 { /* ESDHC1 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70004000 0x4000>;
+ interrupts = <1>;
+ status = "disabled";
+ };
+
+ esdhc@70008000 { /* ESDHC2 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70008000 0x4000>;
+ interrupts = <2>;
+ status = "disabled";
+ };
+
+ uart3: uart@7000c000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x7000c000 0x4000>;
+ interrupts = <33>;
+ status = "disabled";
+ };
+
+ ecspi@70010000 { /* ECSPI1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-ecspi";
+ reg = <0x70010000 0x4000>;
+ interrupts = <36>;
+ status = "disabled";
+ };
+
+ esdhc@70020000 { /* ESDHC3 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70020000 0x4000>;
+ interrupts = <3>;
+ status = "disabled";
+ };
+
+ esdhc@70024000 { /* ESDHC4 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70024000 0x4000>;
+ interrupts = <4>;
+ status = "disabled";
+ };
+ };
+
+ gpio1: gpio@73f84000 {
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f84000 0x4000>;
+ interrupts = <50 51>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio@73f88000 {
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f88000 0x4000>;
+ interrupts = <52 53>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio@73f8c000 {
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f8c000 0x4000>;
+ interrupts = <54 55>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio4: gpio@73f90000 {
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f90000 0x4000>;
+ interrupts = <56 57>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ wdog@73f98000 { /* WDOG1 */
+ compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
+ reg = <0x73f98000 0x4000>;
+ interrupts = <58>;
+ status = "disabled";
+ };
+
+ wdog@73f9c000 { /* WDOG2 */
+ compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
+ reg = <0x73f9c000 0x4000>;
+ interrupts = <59>;
+ status = "disabled";
+ };
+
+ uart1: uart@73fbc000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x73fbc000 0x4000>;
+ interrupts = <31>;
+ status = "disabled";
+ };
+
+ uart2: uart@73fc0000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x73fc0000 0x4000>;
+ interrupts = <32>;
+ status = "disabled";
+ };
+ };
+
+ aips@80000000 { /* AIPS2 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x80000000 0x10000000>;
+ ranges;
+
+ ecspi@83fac000 { /* ECSPI2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-ecspi";
+ reg = <0x83fac000 0x4000>;
+ interrupts = <37>;
+ status = "disabled";
+ };
+
+ sdma@83fb0000 {
+ compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
+ reg = <0x83fb0000 0x4000>;
+ interrupts = <6>;
+ };
+
+ cspi@83fc0000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
+ reg = <0x83fc0000 0x4000>;
+ interrupts = <38>;
+ status = "disabled";
+ };
+
+ i2c@83fc4000 { /* I2C2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
+ reg = <0x83fc4000 0x4000>;
+ interrupts = <63>;
+ status = "disabled";
+ };
+
+ i2c@83fc8000 { /* I2C1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
+ reg = <0x83fc8000 0x4000>;
+ interrupts = <62>;
+ status = "disabled";
+ };
+
+ fec@83fec000 {
+ compatible = "fsl,imx51-fec", "fsl,imx27-fec";
+ reg = <0x83fec000 0x4000>;
+ interrupts = <87>;
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-ard.dts b/arch/arm/boot/dts/imx53-ard.dts
new file mode 100644
index 00000000..2dccce46
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-ard.dts
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Automotive Reference Design Board";
+ compatible = "fsl,imx53-ard", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ soc {
+ aips@50000000 { /* AIPS1 */
+ spba@50000000 {
+ esdhc@50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio1 1 0>;
+ wp-gpios = <&gpio1 9 0>;
+ status = "okay";
+ };
+ };
+
+ wdog@53f98000 { /* WDOG1 */
+ status = "okay";
+ };
+
+ iomuxc@53fa8000 {
+ compatible = "fsl,imx53-iomuxc-ard";
+ reg = <0x53fa8000 0x4000>;
+ };
+
+ uart1: uart@53fbc000 {
+ status = "okay";
+ };
+ };
+
+ aips@60000000 { /* AIPS2 */
+ sdma@63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+ };
+ };
+
+ eim-cs1@f4000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,eim-bus", "simple-bus";
+ reg = <0xf4000000 0x3ff0000>;
+ ranges;
+
+ lan9220@f4000000 {
+ compatible = "smsc,lan9220", "smsc,lan9115";
+ reg = <0xf4000000 0x2000000>;
+ phy-mode = "mii";
+ interrupt-parent = <&gpio2>;
+ interrupts = <31>;
+ reg-io-width = <4>;
+ smsc,irq-push-pull;
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ home {
+ label = "Home";
+ gpios = <&gpio5 10 0>;
+ linux,code = <102>; /* KEY_HOME */
+ gpio-key,wakeup;
+ };
+
+ back {
+ label = "Back";
+ gpios = <&gpio5 11 0>;
+ linux,code = <158>; /* KEY_BACK */
+ gpio-key,wakeup;
+ };
+
+ program {
+ label = "Program";
+ gpios = <&gpio5 12 0>;
+ linux,code = <362>; /* KEY_PROGRAM */
+ gpio-key,wakeup;
+ };
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio5 13 0>;
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio4 0 0>;
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-evk.dts b/arch/arm/boot/dts/imx53-evk.dts
new file mode 100644
index 00000000..5bac4aa4
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-evk.dts
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Evaluation Kit";
+ compatible = "fsl,imx53-evk", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x80000000>;
+ };
+
+ soc {
+ aips@50000000 { /* AIPS1 */
+ spba@50000000 {
+ esdhc@50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio3 13 0>;
+ wp-gpios = <&gpio3 14 0>;
+ status = "okay";
+ };
+
+ ecspi@50010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>;
+ status = "okay";
+
+ flash: at45db321d@1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
+ spi-max-frequency = <25000000>;
+ reg = <1>;
+
+ partition@0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+
+ esdhc@50020000 { /* ESDHC3 */
+ cd-gpios = <&gpio3 11 0>;
+ wp-gpios = <&gpio3 12 0>;
+ status = "okay";
+ };
+ };
+
+ wdog@53f98000 { /* WDOG1 */
+ status = "okay";
+ };
+
+ iomuxc@53fa8000 {
+ compatible = "fsl,imx53-iomuxc-evk";
+ reg = <0x53fa8000 0x4000>;
+ };
+
+ uart1: uart@53fbc000 {
+ status = "okay";
+ };
+ };
+
+ aips@60000000 { /* AIPS2 */
+ sdma@63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ i2c@63fc4000 { /* I2C2 */
+ status = "okay";
+
+ pmic: mc13892@08 {
+ compatible = "fsl,mc13892", "fsl,mc13xxx";
+ reg = <0x08>;
+ };
+
+ codec: sgtl5000@0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ fec@63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio7 6 0>;
+ status = "okay";
+ };
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ green {
+ label = "Heartbeat";
+ gpios = <&gpio7 7 0>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-qsb.dts b/arch/arm/boot/dts/imx53-qsb.dts
new file mode 100644
index 00000000..5c57c867
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-qsb.dts
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Quick Start Board";
+ compatible = "fsl,imx53-qsb", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ soc {
+ aips@50000000 { /* AIPS1 */
+ spba@50000000 {
+ esdhc@50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio3 13 0>;
+ status = "okay";
+ };
+
+ esdhc@50020000 { /* ESDHC3 */
+ cd-gpios = <&gpio3 11 0>;
+ wp-gpios = <&gpio3 12 0>;
+ status = "okay";
+ };
+ };
+
+ wdog@53f98000 { /* WDOG1 */
+ status = "okay";
+ };
+
+ iomuxc@53fa8000 {
+ compatible = "fsl,imx53-iomuxc-qsb";
+ reg = <0x53fa8000 0x4000>;
+ };
+
+ uart1: uart@53fbc000 {
+ status = "okay";
+ };
+ };
+
+ aips@60000000 { /* AIPS2 */
+ sdma@63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ i2c@63fc4000 { /* I2C2 */
+ status = "okay";
+
+ codec: sgtl5000@0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ i2c@63fc8000 { /* I2C1 */
+ status = "okay";
+
+ accelerometer: mma8450@1c {
+ compatible = "fsl,mma8450";
+ reg = <0x1c>;
+ };
+
+ pmic: dialog@48 {
+ compatible = "dialog,da9053", "dialog,da9052";
+ reg = <0x48>;
+ };
+ };
+
+ fec@63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio7 6 0>;
+ status = "okay";
+ };
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power Button";
+ gpios = <&gpio1 8 0>;
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio2 14 0>;
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio2 15 0>;
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ user {
+ label = "Heartbeat";
+ gpios = <&gpio7 7 0>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-smd.dts b/arch/arm/boot/dts/imx53-smd.dts
new file mode 100644
index 00000000..c7ee86c2
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-smd.dts
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Smart Mobile Reference Design Board";
+ compatible = "fsl,imx53-smd", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ soc {
+ aips@50000000 { /* AIPS1 */
+ spba@50000000 {
+ esdhc@50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio3 13 0>;
+ wp-gpios = <&gpio4 11 0>;
+ status = "okay";
+ };
+
+ esdhc@50008000 { /* ESDHC2 */
+ fsl,card-wired;
+ status = "okay";
+ };
+
+ uart3: uart@5000c000 {
+ fsl,uart-has-rtscts;
+ status = "okay";
+ };
+
+ ecspi@50010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>;
+ status = "okay";
+
+ zigbee: mc1323@0 {
+ compatible = "fsl,mc1323";
+ spi-max-frequency = <8000000>;
+ reg = <0>;
+ };
+
+ flash: m25p32@1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "st,m25p32", "st,m25p";
+ spi-max-frequency = <20000000>;
+ reg = <1>;
+
+ partition@0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+
+ esdhc@50020000 { /* ESDHC3 */
+ fsl,card-wired;
+ status = "okay";
+ };
+ };
+
+ wdog@53f98000 { /* WDOG1 */
+ status = "okay";
+ };
+
+ iomuxc@53fa8000 {
+ compatible = "fsl,imx53-iomuxc-smd";
+ reg = <0x53fa8000 0x4000>;
+ };
+
+ uart1: uart@53fbc000 {
+ status = "okay";
+ };
+
+ uart2: uart@53fc0000 {
+ status = "okay";
+ };
+ };
+
+ aips@60000000 { /* AIPS2 */
+ sdma@63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ i2c@63fc4000 { /* I2C2 */
+ status = "okay";
+
+ codec: sgtl5000@0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+
+ magnetometer: mag3110@0e {
+ compatible = "fsl,mag3110";
+ reg = <0x0e>;
+ };
+
+ touchkey: mpr121@5a {
+ compatible = "fsl,mpr121";
+ reg = <0x5a>;
+ };
+ };
+
+ i2c@63fc8000 { /* I2C1 */
+ status = "okay";
+
+ accelerometer: mma8450@1c {
+ compatible = "fsl,mma8450";
+ reg = <0x1c>;
+ };
+
+ camera: ov5642@3c {
+ compatible = "ovti,ov5642";
+ reg = <0x3c>;
+ };
+
+ pmic: dialog@48 {
+ compatible = "dialog,da9053", "dialog,da9052";
+ reg = <0x48>;
+ };
+ };
+
+ fec@63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio7 6 0>;
+ status = "okay";
+ };
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio2 14 0>;
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio2 15 0>;
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
new file mode 100644
index 00000000..5dd91b94
--- /dev/null
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ serial3 = &uart4;
+ serial4 = &uart5;
+ };
+
+ tzic: tz-interrupt-controller@0fffc000 {
+ compatible = "fsl,imx53-tzic", "fsl,tzic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x0fffc000 0x4000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ckil {
+ compatible = "fsl,imx-ckil", "fixed-clock";
+ clock-frequency = <32768>;
+ };
+
+ ckih1 {
+ compatible = "fsl,imx-ckih1", "fixed-clock";
+ clock-frequency = <22579200>;
+ };
+
+ ckih2 {
+ compatible = "fsl,imx-ckih2", "fixed-clock";
+ clock-frequency = <0>;
+ };
+
+ osc {
+ compatible = "fsl,imx-osc", "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&tzic>;
+ ranges;
+
+ aips@50000000 { /* AIPS1 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x50000000 0x10000000>;
+ ranges;
+
+ spba@50000000 {
+ compatible = "fsl,spba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x50000000 0x40000>;
+ ranges;
+
+ esdhc@50004000 { /* ESDHC1 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50004000 0x4000>;
+ interrupts = <1>;
+ status = "disabled";
+ };
+
+ esdhc@50008000 { /* ESDHC2 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50008000 0x4000>;
+ interrupts = <2>;
+ status = "disabled";
+ };
+
+ uart3: uart@5000c000 {
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x5000c000 0x4000>;
+ interrupts = <33>;
+ status = "disabled";
+ };
+
+ ecspi@50010000 { /* ECSPI1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
+ reg = <0x50010000 0x4000>;
+ interrupts = <36>;
+ status = "disabled";
+ };
+
+ esdhc@50020000 { /* ESDHC3 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50020000 0x4000>;
+ interrupts = <3>;
+ status = "disabled";
+ };
+
+ esdhc@50024000 { /* ESDHC4 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50024000 0x4000>;
+ interrupts = <4>;
+ status = "disabled";
+ };
+ };
+
+ gpio1: gpio@53f84000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f84000 0x4000>;
+ interrupts = <50 51>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio@53f88000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f88000 0x4000>;
+ interrupts = <52 53>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio@53f8c000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f8c000 0x4000>;
+ interrupts = <54 55>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio4: gpio@53f90000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f90000 0x4000>;
+ interrupts = <56 57>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ wdog@53f98000 { /* WDOG1 */
+ compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
+ reg = <0x53f98000 0x4000>;
+ interrupts = <58>;
+ status = "disabled";
+ };
+
+ wdog@53f9c000 { /* WDOG2 */
+ compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
+ reg = <0x53f9c000 0x4000>;
+ interrupts = <59>;
+ status = "disabled";
+ };
+
+ uart1: uart@53fbc000 {
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53fbc000 0x4000>;
+ interrupts = <31>;
+ status = "disabled";
+ };
+
+ uart2: uart@53fc0000 {
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53fc0000 0x4000>;
+ interrupts = <32>;
+ status = "disabled";
+ };
+
+ gpio5: gpio@53fdc000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fdc000 0x4000>;
+ interrupts = <103 104>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio6: gpio@53fe0000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fe0000 0x4000>;
+ interrupts = <105 106>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio7: gpio@53fe4000 {
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fe4000 0x4000>;
+ interrupts = <107 108>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ i2c@53fec000 { /* I2C3 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x53fec000 0x4000>;
+ interrupts = <64>;
+ status = "disabled";
+ };
+
+ uart4: uart@53ff0000 {
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53ff0000 0x4000>;
+ interrupts = <13>;
+ status = "disabled";
+ };
+ };
+
+ aips@60000000 { /* AIPS2 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x60000000 0x10000000>;
+ ranges;
+
+ uart5: uart@63f90000 {
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x63f90000 0x4000>;
+ interrupts = <86>;
+ status = "disabled";
+ };
+
+ ecspi@63fac000 { /* ECSPI2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
+ reg = <0x63fac000 0x4000>;
+ interrupts = <37>;
+ status = "disabled";
+ };
+
+ sdma@63fb0000 {
+ compatible = "fsl,imx53-sdma", "fsl,imx35-sdma";
+ reg = <0x63fb0000 0x4000>;
+ interrupts = <6>;
+ };
+
+ cspi@63fc0000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
+ reg = <0x63fc0000 0x4000>;
+ interrupts = <38>;
+ status = "disabled";
+ };
+
+ i2c@63fc4000 { /* I2C2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x63fc4000 0x4000>;
+ interrupts = <63>;
+ status = "disabled";
+ };
+
+ i2c@63fc8000 { /* I2C1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x63fc8000 0x4000>;
+ interrupts = <62>;
+ status = "disabled";
+ };
+
+ fec@63fec000 {
+ compatible = "fsl,imx53-fec", "fsl,imx25-fec";
+ reg = <0x63fec000 0x4000>;
+ interrupts = <87>;
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx6q-arm2.dts b/arch/arm/boot/dts/imx6q-arm2.dts
new file mode 100644
index 00000000..ce1c8238
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-arm2.dts
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx6q.dtsi"
+
+/ {
+ model = "Freescale i.MX6 Quad Armadillo2 Board";
+ compatible = "fsl,imx6q-arm2", "fsl,imx6q";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk3p3 rootwait";
+ };
+
+ memory {
+ reg = <0x10000000 0x80000000>;
+ };
+
+ soc {
+ aips-bus@02100000 { /* AIPS2 */
+ enet@02188000 {
+ phy-mode = "rgmii";
+ local-mac-address = [00 04 9F 01 1B 61];
+ status = "okay";
+ };
+
+ usdhc@02198000 { /* uSDHC3 */
+ cd-gpios = <&gpio6 11 0>;
+ wp-gpios = <&gpio6 14 0>;
+ vmmc-supply = <®_3p3v>;
+ status = "okay";
+ };
+
+ usdhc@0219c000 { /* uSDHC4 */
+ fsl,card-wired;
+ vmmc-supply = <®_3p3v>;
+ status = "okay";
+ };
+
+ uart4: uart@021f0000 {
+ status = "okay";
+ };
+ };
+ };
+
+ regulators {
+ compatible = "simple-bus";
+
+ reg_3p3v: 3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "3P3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ debug-led {
+ label = "Heartbeat";
+ gpios = <&gpio3 25 0>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts
new file mode 100644
index 00000000..4663a4e5
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx6q.dtsi"
+
+/ {
+ model = "Freescale i.MX6 Quad SABRE Lite Board";
+ compatible = "fsl,imx6q-sabrelite", "fsl,imx6q";
+
+ memory {
+ reg = <0x10000000 0x40000000>;
+ };
+
+ soc {
+ aips-bus@02100000 { /* AIPS2 */
+ enet@02188000 {
+ phy-mode = "rgmii";
+ phy-reset-gpios = <&gpio3 23 0>;
+ status = "okay";
+ };
+
+ usdhc@02198000 { /* uSDHC3 */
+ cd-gpios = <&gpio7 0 0>;
+ wp-gpios = <&gpio7 1 0>;
+ vmmc-supply = <®_3p3v>;
+ status = "okay";
+ };
+
+ usdhc@0219c000 { /* uSDHC4 */
+ cd-gpios = <&gpio2 6 0>;
+ wp-gpios = <&gpio2 7 0>;
+ vmmc-supply = <®_3p3v>;
+ status = "okay";
+ };
+
+ uart2: uart@021e8000 {
+ status = "okay";
+ };
+
+ i2c@021a0000 { /* I2C1 */
+ status = "okay";
+ clock-frequency = <100000>;
+
+ codec: sgtl5000@0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ VDDA-supply = <®_2p5v>;
+ VDDIO-supply = <®_3p3v>;
+ };
+ };
+ };
+ };
+
+ regulators {
+ compatible = "simple-bus";
+
+ reg_2p5v: 2p5v {
+ compatible = "regulator-fixed";
+ regulator-name = "2P5V";
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <2500000>;
+ regulator-always-on;
+ };
+
+ reg_3p3v: 3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "3P3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
new file mode 100644
index 00000000..4905f51a
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -0,0 +1,575 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ serial3 = &uart4;
+ serial4 = &uart5;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,cortex-a9";
+ reg = <0>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@1 {
+ compatible = "arm,cortex-a9";
+ reg = <1>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@2 {
+ compatible = "arm,cortex-a9";
+ reg = <2>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@3 {
+ compatible = "arm,cortex-a9";
+ reg = <3>;
+ next-level-cache = <&L2>;
+ };
+ };
+
+ intc: interrupt-controller@00a01000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ interrupt-controller;
+ reg = <0x00a01000 0x1000>,
+ <0x00a00100 0x100>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ckil {
+ compatible = "fsl,imx-ckil", "fixed-clock";
+ clock-frequency = <32768>;
+ };
+
+ ckih1 {
+ compatible = "fsl,imx-ckih1", "fixed-clock";
+ clock-frequency = <0>;
+ };
+
+ osc {
+ compatible = "fsl,imx-osc", "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&intc>;
+ ranges;
+
+ timer@00a00600 {
+ compatible = "arm,cortex-a9-twd-timer";
+ reg = <0x00a00600 0x20>;
+ interrupts = <1 13 0xf01>;
+ };
+
+ L2: l2-cache@00a02000 {
+ compatible = "arm,pl310-cache";
+ reg = <0x00a02000 0x1000>;
+ interrupts = <0 92 0x04>;
+ cache-unified;
+ cache-level = <2>;
+ };
+
+ aips-bus@02000000 { /* AIPS1 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x02000000 0x100000>;
+ ranges;
+
+ spba-bus@02000000 {
+ compatible = "fsl,spba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x02000000 0x40000>;
+ ranges;
+
+ spdif@02004000 {
+ reg = <0x02004000 0x4000>;
+ interrupts = <0 52 0x04>;
+ };
+
+ ecspi@02008000 { /* eCSPI1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
+ reg = <0x02008000 0x4000>;
+ interrupts = <0 31 0x04>;
+ status = "disabled";
+ };
+
+ ecspi@0200c000 { /* eCSPI2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
+ reg = <0x0200c000 0x4000>;
+ interrupts = <0 32 0x04>;
+ status = "disabled";
+ };
+
+ ecspi@02010000 { /* eCSPI3 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
+ reg = <0x02010000 0x4000>;
+ interrupts = <0 33 0x04>;
+ status = "disabled";
+ };
+
+ ecspi@02014000 { /* eCSPI4 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
+ reg = <0x02014000 0x4000>;
+ interrupts = <0 34 0x04>;
+ status = "disabled";
+ };
+
+ ecspi@02018000 { /* eCSPI5 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
+ reg = <0x02018000 0x4000>;
+ interrupts = <0 35 0x04>;
+ status = "disabled";
+ };
+
+ uart1: uart@02020000 {
+ compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
+ reg = <0x02020000 0x4000>;
+ interrupts = <0 26 0x04>;
+ status = "disabled";
+ };
+
+ esai@02024000 {
+ reg = <0x02024000 0x4000>;
+ interrupts = <0 51 0x04>;
+ };
+
+ ssi@02028000 { /* SSI1 */
+ reg = <0x02028000 0x4000>;
+ interrupts = <0 46 0x04>;
+ };
+
+ ssi@0202c000 { /* SSI2 */
+ reg = <0x0202c000 0x4000>;
+ interrupts = <0 47 0x04>;
+ };
+
+ ssi@02030000 { /* SSI3 */
+ reg = <0x02030000 0x4000>;
+ interrupts = <0 48 0x04>;
+ };
+
+ asrc@02034000 {
+ reg = <0x02034000 0x4000>;
+ interrupts = <0 50 0x04>;
+ };
+
+ spba@0203c000 {
+ reg = <0x0203c000 0x4000>;
+ };
+ };
+
+ vpu@02040000 {
+ reg = <0x02040000 0x3c000>;
+ interrupts = <0 3 0x04 0 12 0x04>;
+ };
+
+ aipstz@0207c000 { /* AIPSTZ1 */
+ reg = <0x0207c000 0x4000>;
+ };
+
+ pwm@02080000 { /* PWM1 */
+ reg = <0x02080000 0x4000>;
+ interrupts = <0 83 0x04>;
+ };
+
+ pwm@02084000 { /* PWM2 */
+ reg = <0x02084000 0x4000>;
+ interrupts = <0 84 0x04>;
+ };
+
+ pwm@02088000 { /* PWM3 */
+ reg = <0x02088000 0x4000>;
+ interrupts = <0 85 0x04>;
+ };
+
+ pwm@0208c000 { /* PWM4 */
+ reg = <0x0208c000 0x4000>;
+ interrupts = <0 86 0x04>;
+ };
+
+ flexcan@02090000 { /* CAN1 */
+ reg = <0x02090000 0x4000>;
+ interrupts = <0 110 0x04>;
+ };
+
+ flexcan@02094000 { /* CAN2 */
+ reg = <0x02094000 0x4000>;
+ interrupts = <0 111 0x04>;
+ };
+
+ gpt@02098000 {
+ compatible = "fsl,imx6q-gpt";
+ reg = <0x02098000 0x4000>;
+ interrupts = <0 55 0x04>;
+ };
+
+ gpio1: gpio@0209c000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x0209c000 0x4000>;
+ interrupts = <0 66 0x04 0 67 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio@020a0000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020a0000 0x4000>;
+ interrupts = <0 68 0x04 0 69 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio@020a4000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020a4000 0x4000>;
+ interrupts = <0 70 0x04 0 71 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio4: gpio@020a8000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020a8000 0x4000>;
+ interrupts = <0 72 0x04 0 73 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio5: gpio@020ac000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020ac000 0x4000>;
+ interrupts = <0 74 0x04 0 75 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio6: gpio@020b0000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020b0000 0x4000>;
+ interrupts = <0 76 0x04 0 77 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio7: gpio@020b4000 {
+ compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio";
+ reg = <0x020b4000 0x4000>;
+ interrupts = <0 78 0x04 0 79 0x04>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ kpp@020b8000 {
+ reg = <0x020b8000 0x4000>;
+ interrupts = <0 82 0x04>;
+ };
+
+ wdog@020bc000 { /* WDOG1 */
+ compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
+ reg = <0x020bc000 0x4000>;
+ interrupts = <0 80 0x04>;
+ status = "disabled";
+ };
+
+ wdog@020c0000 { /* WDOG2 */
+ compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
+ reg = <0x020c0000 0x4000>;
+ interrupts = <0 81 0x04>;
+ status = "disabled";
+ };
+
+ ccm@020c4000 {
+ compatible = "fsl,imx6q-ccm";
+ reg = <0x020c4000 0x4000>;
+ interrupts = <0 87 0x04 0 88 0x04>;
+ };
+
+ anatop@020c8000 {
+ compatible = "fsl,imx6q-anatop";
+ reg = <0x020c8000 0x1000>;
+ interrupts = <0 49 0x04 0 54 0x04 0 127 0x04>;
+ };
+
+ usbphy@020c9000 { /* USBPHY1 */
+ reg = <0x020c9000 0x1000>;
+ interrupts = <0 44 0x04>;
+ };
+
+ usbphy@020ca000 { /* USBPHY2 */
+ reg = <0x020ca000 0x1000>;
+ interrupts = <0 45 0x04>;
+ };
+
+ snvs@020cc000 {
+ reg = <0x020cc000 0x4000>;
+ interrupts = <0 19 0x04 0 20 0x04>;
+ };
+
+ epit@020d0000 { /* EPIT1 */
+ reg = <0x020d0000 0x4000>;
+ interrupts = <0 56 0x04>;
+ };
+
+ epit@020d4000 { /* EPIT2 */
+ reg = <0x020d4000 0x4000>;
+ interrupts = <0 57 0x04>;
+ };
+
+ src@020d8000 {
+ compatible = "fsl,imx6q-src";
+ reg = <0x020d8000 0x4000>;
+ interrupts = <0 91 0x04 0 96 0x04>;
+ };
+
+ gpc@020dc000 {
+ compatible = "fsl,imx6q-gpc";
+ reg = <0x020dc000 0x4000>;
+ interrupts = <0 89 0x04 0 90 0x04>;
+ };
+
+ iomuxc@020e0000 {
+ reg = <0x020e0000 0x4000>;
+ };
+
+ dcic@020e4000 { /* DCIC1 */
+ reg = <0x020e4000 0x4000>;
+ interrupts = <0 124 0x04>;
+ };
+
+ dcic@020e8000 { /* DCIC2 */
+ reg = <0x020e8000 0x4000>;
+ interrupts = <0 125 0x04>;
+ };
+
+ sdma@020ec000 {
+ compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma";
+ reg = <0x020ec000 0x4000>;
+ interrupts = <0 2 0x04>;
+ };
+ };
+
+ aips-bus@02100000 { /* AIPS2 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x02100000 0x100000>;
+ ranges;
+
+ caam@02100000 {
+ reg = <0x02100000 0x40000>;
+ interrupts = <0 105 0x04 0 106 0x04>;
+ };
+
+ aipstz@0217c000 { /* AIPSTZ2 */
+ reg = <0x0217c000 0x4000>;
+ };
+
+ enet@02188000 {
+ compatible = "fsl,imx6q-fec";
+ reg = <0x02188000 0x4000>;
+ interrupts = <0 118 0x04 0 119 0x04>;
+ status = "disabled";
+ };
+
+ mlb@0218c000 {
+ reg = <0x0218c000 0x4000>;
+ interrupts = <0 53 0x04 0 117 0x04 0 126 0x04>;
+ };
+
+ usdhc@02190000 { /* uSDHC1 */
+ compatible = "fsl,imx6q-usdhc";
+ reg = <0x02190000 0x4000>;
+ interrupts = <0 22 0x04>;
+ status = "disabled";
+ };
+
+ usdhc@02194000 { /* uSDHC2 */
+ compatible = "fsl,imx6q-usdhc";
+ reg = <0x02194000 0x4000>;
+ interrupts = <0 23 0x04>;
+ status = "disabled";
+ };
+
+ usdhc@02198000 { /* uSDHC3 */
+ compatible = "fsl,imx6q-usdhc";
+ reg = <0x02198000 0x4000>;
+ interrupts = <0 24 0x04>;
+ status = "disabled";
+ };
+
+ usdhc@0219c000 { /* uSDHC4 */
+ compatible = "fsl,imx6q-usdhc";
+ reg = <0x0219c000 0x4000>;
+ interrupts = <0 25 0x04>;
+ status = "disabled";
+ };
+
+ i2c@021a0000 { /* I2C1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c";
+ reg = <0x021a0000 0x4000>;
+ interrupts = <0 36 0x04>;
+ status = "disabled";
+ };
+
+ i2c@021a4000 { /* I2C2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c";
+ reg = <0x021a4000 0x4000>;
+ interrupts = <0 37 0x04>;
+ status = "disabled";
+ };
+
+ i2c@021a8000 { /* I2C3 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c";
+ reg = <0x021a8000 0x4000>;
+ interrupts = <0 38 0x04>;
+ status = "disabled";
+ };
+
+ romcp@021ac000 {
+ reg = <0x021ac000 0x4000>;
+ };
+
+ mmdc@021b0000 { /* MMDC0 */
+ compatible = "fsl,imx6q-mmdc";
+ reg = <0x021b0000 0x4000>;
+ };
+
+ mmdc@021b4000 { /* MMDC1 */
+ reg = <0x021b4000 0x4000>;
+ };
+
+ weim@021b8000 {
+ reg = <0x021b8000 0x4000>;
+ interrupts = <0 14 0x04>;
+ };
+
+ ocotp@021bc000 {
+ reg = <0x021bc000 0x4000>;
+ };
+
+ ocotp@021c0000 {
+ reg = <0x021c0000 0x4000>;
+ interrupts = <0 21 0x04>;
+ };
+
+ tzasc@021d0000 { /* TZASC1 */
+ reg = <0x021d0000 0x4000>;
+ interrupts = <0 108 0x04>;
+ };
+
+ tzasc@021d4000 { /* TZASC2 */
+ reg = <0x021d4000 0x4000>;
+ interrupts = <0 109 0x04>;
+ };
+
+ audmux@021d8000 {
+ reg = <0x021d8000 0x4000>;
+ };
+
+ mipi@021dc000 { /* MIPI-CSI */
+ reg = <0x021dc000 0x4000>;
+ };
+
+ mipi@021e0000 { /* MIPI-DSI */
+ reg = <0x021e0000 0x4000>;
+ };
+
+ vdoa@021e4000 {
+ reg = <0x021e4000 0x4000>;
+ interrupts = <0 18 0x04>;
+ };
+
+ uart2: uart@021e8000 {
+ compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
+ reg = <0x021e8000 0x4000>;
+ interrupts = <0 27 0x04>;
+ status = "disabled";
+ };
+
+ uart3: uart@021ec000 {
+ compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
+ reg = <0x021ec000 0x4000>;
+ interrupts = <0 28 0x04>;
+ status = "disabled";
+ };
+
+ uart4: uart@021f0000 {
+ compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
+ reg = <0x021f0000 0x4000>;
+ interrupts = <0 29 0x04>;
+ status = "disabled";
+ };
+
+ uart5: uart@021f4000 {
+ compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
+ reg = <0x021f4000 0x4000>;
+ interrupts = <0 30 0x04>;
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts
new file mode 100644
index 00000000..a5376b84
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
@@ -0,0 +1,24 @@
+/dts-v1/;
+
+/include/ "kirkwood.dtsi"
+
+/ {
+ model = "Globalscale Technologies Dreamplug";
+ compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "mrvl,kirkwood-88f6281", "mrvl,kirkwood";
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x20000000>;
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200n8 earlyprintk";
+ };
+
+ ocp@f1000000 {
+ serial@12000 {
+ clock-frequency = <200000000>;
+ status = "ok";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
new file mode 100644
index 00000000..3474ef89
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -0,0 +1,36 @@
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "mrvl,kirkwood";
+
+ ocp@f1000000 {
+ compatible = "simple-bus";
+ ranges = <0 0xf1000000 0x1000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ serial@12000 {
+ compatible = "ns16550a";
+ reg = <0x12000 0x100>;
+ reg-shift = <2>;
+ interrupts = <33>;
+ /* set clock-frequency in board dts */
+ status = "disabled";
+ };
+
+ serial@12100 {
+ compatible = "ns16550a";
+ reg = <0x12100 0x100>;
+ reg-shift = <2>;
+ interrupts = <34>;
+ /* set clock-frequency in board dts */
+ status = "disabled";
+ };
+
+ rtc@10300 {
+ compatible = "mrvl,kirkwood-rtc", "mrvl,orion-rtc";
+ reg = <0x10300 0x20>;
+ interrupts = <53>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/msm8660-surf.dts b/arch/arm/boot/dts/msm8660-surf.dts
new file mode 100644
index 00000000..45bc4bb0
--- /dev/null
+++ b/arch/arm/boot/dts/msm8660-surf.dts
@@ -0,0 +1,24 @@
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+
+/ {
+ model = "Qualcomm MSM8660 SURF";
+ compatible = "qcom,msm8660-surf", "qcom,msm8660";
+ interrupt-parent = <&intc>;
+
+ intc: interrupt-controller@02080000 {
+ compatible = "qcom,msm-8660-qgic";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = < 0x02080000 0x1000 >,
+ < 0x02081000 0x1000 >;
+ };
+
+ serial@19c400000 {
+ compatible = "qcom,msm-hsuart", "qcom,msm-uart";
+ reg = <0x19c40000 0x1000>,
+ <0x19c00000 0x1000>;
+ interrupts = <0 195 0x0>;
+ };
+};
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi
new file mode 100644
index 00000000..f2ab4ea7
--- /dev/null
+++ b/arch/arm/boot/dts/omap2.dtsi
@@ -0,0 +1,67 @@
+/*
+ * Device Tree Source for OMAP2 SoC
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2. This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "ti,omap2430", "ti,omap2420", "ti,omap2";
+
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ };
+
+ cpus {
+ cpu@0 {
+ compatible = "arm,arm1136jf-s";
+ };
+ };
+
+ soc {
+ compatible = "ti,omap-infra";
+ mpu {
+ compatible = "ti,omap2-mpu";
+ ti,hwmods = "mpu";
+ };
+ };
+
+ ocp {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ ti,hwmods = "l3_main";
+
+ intc: interrupt-controller@1 {
+ compatible = "ti,omap2-intc";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ uart1: serial@4806a000 {
+ compatible = "ti,omap2-uart";
+ ti,hwmods = "uart1";
+ clock-frequency = <48000000>;
+ };
+
+ uart2: serial@4806c000 {
+ compatible = "ti,omap2-uart";
+ ti,hwmods = "uart2";
+ clock-frequency = <48000000>;
+ };
+
+ uart3: serial@4806e000 {
+ compatible = "ti,omap2-uart";
+ ti,hwmods = "uart3";
+ clock-frequency = <48000000>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
new file mode 100644
index 00000000..9f72cd4c
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-beagle.dts
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "omap3.dtsi"
+
+/ {
+ model = "TI OMAP3 BeagleBoard";
+ compatible = "ti,omap3-beagle", "ti,omap3";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x20000000>; /* 512 MB */
+ };
+};
diff --git a/arch/arm/boot/dts/omap3-evm.dts b/arch/arm/boot/dts/omap3-evm.dts
new file mode 100644
index 00000000..2eee16ec
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-evm.dts
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "omap3.dtsi"
+
+/ {
+ model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
+ compatible = "ti,omap3-evm", "ti,omap3";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>; /* 256 MB */
+ };
+};
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
new file mode 100644
index 00000000..c6121357
--- /dev/null
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -0,0 +1,117 @@
+/*
+ * Device Tree Source for OMAP3 SoC
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2. This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "ti,omap3430", "ti,omap3";
+
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ serial3 = &uart4;
+ };
+
+ cpus {
+ cpu@0 {
+ compatible = "arm,cortex-a8";
+ };
+ };
+
+ /*
+ * The soc node represents the soc top level view. It is uses for IPs
+ * that are not memory mapped in the MPU view or for the MPU itself.
+ */
+ soc {
+ compatible = "ti,omap-infra";
+ mpu {
+ compatible = "ti,omap3-mpu";
+ ti,hwmods = "mpu";
+ };
+
+ iva {
+ compatible = "ti,iva2.2";
+ ti,hwmods = "iva";
+
+ dsp {
+ compatible = "ti,omap3-c64";
+ };
+ };
+ };
+
+ /*
+ * XXX: Use a flat representation of the OMAP3 interconnect.
+ * The real OMAP interconnect network is quite complex.
+ * Since that will not bring real advantage to represent that in DT for
+ * the moment, just use a fake OCP bus entry to represent the whole bus
+ * hierarchy.
+ */
+ ocp {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ ti,hwmods = "l3_main";
+
+ intc: interrupt-controller@48200000 {
+ compatible = "ti,omap2-intc";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ ti,intc-size = <96>;
+ reg = <0x48200000 0x1000>;
+ };
+
+ uart1: serial@4806a000 {
+ compatible = "ti,omap3-uart";
+ ti,hwmods = "uart1";
+ clock-frequency = <48000000>;
+ };
+
+ uart2: serial@4806c000 {
+ compatible = "ti,omap3-uart";
+ ti,hwmods = "uart2";
+ clock-frequency = <48000000>;
+ };
+
+ uart3: serial@49020000 {
+ compatible = "ti,omap3-uart";
+ ti,hwmods = "uart3";
+ clock-frequency = <48000000>;
+ };
+
+ uart4: serial@49042000 {
+ compatible = "ti,omap3-uart";
+ ti,hwmods = "uart4";
+ clock-frequency = <48000000>;
+ };
+
+ i2c1: i2c@48070000 {
+ compatible = "ti,omap3-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c1";
+ };
+
+ i2c2: i2c@48072000 {
+ compatible = "ti,omap3-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c2";
+ };
+
+ i2c3: i2c@48060000 {
+ compatible = "ti,omap3-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c3";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/omap4-panda.dts b/arch/arm/boot/dts/omap4-panda.dts
new file mode 100644
index 00000000..9755ad59
--- /dev/null
+++ b/arch/arm/boot/dts/omap4-panda.dts
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "omap4.dtsi"
+
+/ {
+ model = "TI OMAP4 PandaBoard";
+ compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x40000000>; /* 1 GB */
+ };
+};
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts
new file mode 100644
index 00000000..63c6b2b2
--- /dev/null
+++ b/arch/arm/boot/dts/omap4-sdp.dts
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "omap4.dtsi"
+
+/ {
+ model = "TI OMAP4 SDP board";
+ compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x40000000>; /* 1 GB */
+ };
+};
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
new file mode 100644
index 00000000..3d35559e
--- /dev/null
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Carveout for multimedia usecases
+ * It should be the last 48MB of the first 512MB memory part
+ * In theory, it should not even exist. That zone should be reserved
+ * dynamically during the .reserve callback.
+ */
+/memreserve/ 0x9d000000 0x03000000;
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "ti,omap4430", "ti,omap4";
+ interrupt-parent = <&gic>;
+
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ serial3 = &uart4;
+ };
+
+ cpus {
+ cpu@0 {
+ compatible = "arm,cortex-a9";
+ };
+ cpu@1 {
+ compatible = "arm,cortex-a9";
+ };
+ };
+
+ /*
+ * The soc node represents the soc top level view. It is uses for IPs
+ * that are not memory mapped in the MPU view or for the MPU itself.
+ */
+ soc {
+ compatible = "ti,omap-infra";
+ mpu {
+ compatible = "ti,omap4-mpu";
+ ti,hwmods = "mpu";
+ };
+
+ dsp {
+ compatible = "ti,omap3-c64";
+ ti,hwmods = "dsp";
+ };
+
+ iva {
+ compatible = "ti,ivahd";
+ ti,hwmods = "iva";
+ };
+ };
+
+ /*
+ * XXX: Use a flat representation of the OMAP4 interconnect.
+ * The real OMAP interconnect network is quite complex.
+ *
+ * MPU -+-- MPU_PRIVATE - GIC, L2
+ * |
+ * +----------------+----------+
+ * | | |
+ * + +- EMIF - DDR |
+ * | | |
+ * | + +--------+
+ * | | |
+ * | +- L4_ABE - AESS, MCBSP, TIMERs...
+ * | |
+ * +- L3_MAIN --+- L4_CORE - IPs...
+ * |
+ * +- L4_PER - IPs...
+ * |
+ * +- L4_CFG -+- L4_WKUP - IPs...
+ * | |
+ * | +- IPs...
+ * +- IPU ----+
+ * | |
+ * +- DSP ----+
+ * | |
+ * +- DSS ----+
+ *
+ * Since that will not bring real advantage to represent that in DT for
+ * the moment, just use a fake OCP bus entry to represent the whole bus
+ * hierarchy.
+ */
+ ocp {
+ compatible = "ti,omap4-l3-noc", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
+
+ gic: interrupt-controller@48241000 {
+ compatible = "arm,cortex-a9-gic";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = <0x48241000 0x1000>,
+ <0x48240100 0x0100>;
+ };
+
+ uart1: serial@4806a000 {
+ compatible = "ti,omap4-uart";
+ ti,hwmods = "uart1";
+ clock-frequency = <48000000>;
+ };
+
+ uart2: serial@4806c000 {
+ compatible = "ti,omap4-uart";
+ ti,hwmods = "uart2";
+ clock-frequency = <48000000>;
+ };
+
+ uart3: serial@48020000 {
+ compatible = "ti,omap4-uart";
+ ti,hwmods = "uart3";
+ clock-frequency = <48000000>;
+ };
+
+ uart4: serial@4806e000 {
+ compatible = "ti,omap4-uart";
+ ti,hwmods = "uart4";
+ clock-frequency = <48000000>;
+ };
+
+ i2c1: i2c@48070000 {
+ compatible = "ti,omap4-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c1";
+ };
+
+ i2c2: i2c@48072000 {
+ compatible = "ti,omap4-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c2";
+ };
+
+ i2c3: i2c@48060000 {
+ compatible = "ti,omap4-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c3";
+ };
+
+ i2c4: i2c@48350000 {
+ compatible = "ti,omap4-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ti,hwmods = "i2c4";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/picoxcell-pc3x2.dtsi b/arch/arm/boot/dts/picoxcell-pc3x2.dtsi
new file mode 100644
index 00000000..f0a8c206
--- /dev/null
+++ b/arch/arm/boot/dts/picoxcell-pc3x2.dtsi
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2011 Picochip, Jamie Iles
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+/include/ "skeleton.dtsi"
+/ {
+ model = "Picochip picoXcell PC3X2";
+ compatible = "picochip,pc3x2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,1176jz-s";
+ clock-frequency = <400000000>;
+ reg = <0>;
+ d-cache-line-size = <32>;
+ d-cache-size = <32768>;
+ i-cache-line-size = <32>;
+ i-cache-size = <32768>;
+ };
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ pclk: clock@0 {
+ compatible = "fixed-clock";
+ clock-outputs = "bus", "pclk";
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+ };
+
+ paxi {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x80000000 0x400000>;
+
+ emac: gem@30000 {
+ compatible = "cadence,gem";
+ reg = <0x30000 0x10000>;
+ interrupts = <31>;
+ };
+
+ dmac1: dmac@40000 {
+ compatible = "snps,dw-dmac";
+ reg = <0x40000 0x10000>;
+ interrupts = <25>;
+ };
+
+ dmac2: dmac@50000 {
+ compatible = "snps,dw-dmac";
+ reg = <0x50000 0x10000>;
+ interrupts = <26>;
+ };
+
+ vic0: interrupt-controller@60000 {
+ compatible = "arm,pl192-vic";
+ interrupt-controller;
+ reg = <0x60000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ vic1: interrupt-controller@64000 {
+ compatible = "arm,pl192-vic";
+ interrupt-controller;
+ reg = <0x64000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ fuse: picoxcell-fuse@80000 {
+ compatible = "picoxcell,fuse-pc3x2";
+ reg = <0x80000 0x10000>;
+ };
+
+ ssi: picoxcell-spi@90000 {
+ compatible = "picoxcell,spi";
+ reg = <0x90000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <10>;
+ };
+
+ ipsec: spacc@100000 {
+ compatible = "picochip,spacc-ipsec";
+ reg = <0x100000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <24>;
+ ref-clock = <&pclk>, "ref";
+ };
+
+ srtp: spacc@140000 {
+ compatible = "picochip,spacc-srtp";
+ reg = <0x140000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <23>;
+ };
+
+ l2_engine: spacc@180000 {
+ compatible = "picochip,spacc-l2";
+ reg = <0x180000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <22>;
+ ref-clock = <&pclk>, "ref";
+ };
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x200000 0x80000>;
+
+ rtc0: rtc@00000 {
+ compatible = "picochip,pc3x2-rtc";
+ clock-freq = <200000000>;
+ reg = <0x00000 0xf>;
+ interrupt-parent = <&vic1>;
+ interrupts = <8>;
+ };
+
+ timer0: timer@10000 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <4>;
+ clock-freq = <200000000>;
+ reg = <0x10000 0x14>;
+ };
+
+ timer1: timer@10014 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <5>;
+ clock-freq = <200000000>;
+ reg = <0x10014 0x14>;
+ };
+
+ timer2: timer@10028 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <6>;
+ clock-freq = <200000000>;
+ reg = <0x10028 0x14>;
+ };
+
+ timer3: timer@1003c {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <7>;
+ clock-freq = <200000000>;
+ reg = <0x1003c 0x14>;
+ };
+
+ gpio: gpio@20000 {
+ compatible = "snps,dw-apb-gpio";
+ reg = <0x20000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-io-width = <4>;
+
+ banka: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-bank";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-generic,nr-gpio = <8>;
+
+ regoffset-dat = <0x50>;
+ regoffset-set = <0x00>;
+ regoffset-dirout = <0x04>;
+ };
+
+ bankb: gpio-controller@1 {
+ compatible = "snps,dw-apb-gpio-bank";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-generic,nr-gpio = <8>;
+
+ regoffset-dat = <0x54>;
+ regoffset-set = <0x0c>;
+ regoffset-dirout = <0x10>;
+ };
+ };
+
+ uart0: uart@30000 {
+ compatible = "snps,dw-apb-uart";
+ reg = <0x30000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <10>;
+ clock-frequency = <3686400>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ };
+
+ uart1: uart@40000 {
+ compatible = "snps,dw-apb-uart";
+ reg = <0x40000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <9>;
+ clock-frequency = <3686400>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ };
+
+ wdog: watchdog@50000 {
+ compatible = "snps,dw-apb-wdg";
+ reg = <0x50000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <11>;
+ bus-clock = <&pclk>, "bus";
+ };
+ };
+ };
+
+ rwid-axi {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges;
+
+ ebi@50000000 {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <1>;
+ ranges = <0 0 0x40000000 0x08000000
+ 1 0 0x48000000 0x08000000
+ 2 0 0x50000000 0x08000000
+ 3 0 0x58000000 0x08000000>;
+ };
+
+ axi2pico@c0000000 {
+ compatible = "picochip,axi2pico-pc3x2";
+ reg = <0xc0000000 0x10000>;
+ interrupts = <13 14 15 16 17 18 19 20 21>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/picoxcell-pc3x3.dtsi b/arch/arm/boot/dts/picoxcell-pc3x3.dtsi
new file mode 100644
index 00000000..daa962d1
--- /dev/null
+++ b/arch/arm/boot/dts/picoxcell-pc3x3.dtsi
@@ -0,0 +1,365 @@
+/*
+ * Copyright (C) 2011 Picochip, Jamie Iles
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+/include/ "skeleton.dtsi"
+/ {
+ model = "Picochip picoXcell PC3X3";
+ compatible = "picochip,pc3x3";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,1176jz-s";
+ cpu-clock = <&arm_clk>, "cpu";
+ reg = <0>;
+ d-cache-line-size = <32>;
+ d-cache-size = <32768>;
+ i-cache-line-size = <32>;
+ i-cache-size = <32768>;
+ };
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ clkgate: clkgate@800a0048 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x800a0048 4>;
+ compatible = "picochip,pc3x3-clk-gate";
+
+ tzprot_clk: clock@0 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <0>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ spi_clk: clock@1 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <1>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ dmac0_clk: clock@2 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <2>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ dmac1_clk: clock@3 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <3>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ ebi_clk: clock@4 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <4>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ ipsec_clk: clock@5 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <5>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ l2_clk: clock@6 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <6>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ trng_clk: clock@7 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <7>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ fuse_clk: clock@8 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <8>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+
+ otp_clk: clock@9 {
+ compatible = "picochip,pc3x3-gated-clk";
+ clock-outputs = "bus";
+ picochip,clk-disable-bit = <9>;
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+ };
+
+ arm_clk: clock@11 {
+ compatible = "picochip,pc3x3-pll";
+ reg = <0x800a0050 0x8>;
+ picochip,min-freq = <140000000>;
+ picochip,max-freq = <700000000>;
+ ref-clock = <&ref_clk>, "ref";
+ clock-outputs = "cpu";
+ };
+
+ pclk: clock@12 {
+ compatible = "fixed-clock";
+ clock-outputs = "bus", "pclk";
+ clock-frequency = <200000000>;
+ ref-clock = <&ref_clk>, "ref";
+ };
+ };
+
+ paxi {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x80000000 0x400000>;
+
+ emac: gem@30000 {
+ compatible = "cadence,gem";
+ reg = <0x30000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <31>;
+ };
+
+ dmac1: dmac@40000 {
+ compatible = "snps,dw-dmac";
+ reg = <0x40000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <25>;
+ };
+
+ dmac2: dmac@50000 {
+ compatible = "snps,dw-dmac";
+ reg = <0x50000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <26>;
+ };
+
+ vic0: interrupt-controller@60000 {
+ compatible = "arm,pl192-vic";
+ interrupt-controller;
+ reg = <0x60000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ vic1: interrupt-controller@64000 {
+ compatible = "arm,pl192-vic";
+ interrupt-controller;
+ reg = <0x64000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ fuse: picoxcell-fuse@80000 {
+ compatible = "picoxcell,fuse-pc3x3";
+ reg = <0x80000 0x10000>;
+ };
+
+ ssi: picoxcell-spi@90000 {
+ compatible = "picoxcell,spi";
+ reg = <0x90000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <10>;
+ };
+
+ ipsec: spacc@100000 {
+ compatible = "picochip,spacc-ipsec";
+ reg = <0x100000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <24>;
+ ref-clock = <&ipsec_clk>, "ref";
+ };
+
+ srtp: spacc@140000 {
+ compatible = "picochip,spacc-srtp";
+ reg = <0x140000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <23>;
+ };
+
+ l2_engine: spacc@180000 {
+ compatible = "picochip,spacc-l2";
+ reg = <0x180000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <22>;
+ ref-clock = <&l2_clk>, "ref";
+ };
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x200000 0x80000>;
+
+ rtc0: rtc@00000 {
+ compatible = "picochip,pc3x2-rtc";
+ clock-freq = <200000000>;
+ reg = <0x00000 0xf>;
+ interrupt-parent = <&vic0>;
+ interrupts = <8>;
+ };
+
+ timer0: timer@10000 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <4>;
+ clock-freq = <200000000>;
+ reg = <0x10000 0x14>;
+ };
+
+ timer1: timer@10014 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <5>;
+ clock-freq = <200000000>;
+ reg = <0x10014 0x14>;
+ };
+
+ gpio: gpio@20000 {
+ compatible = "snps,dw-apb-gpio";
+ reg = <0x20000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-io-width = <4>;
+
+ banka: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-bank";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-generic,nr-gpio = <8>;
+
+ regoffset-dat = <0x50>;
+ regoffset-set = <0x00>;
+ regoffset-dirout = <0x04>;
+ };
+
+ bankb: gpio-controller@1 {
+ compatible = "snps,dw-apb-gpio-bank";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-generic,nr-gpio = <16>;
+
+ regoffset-dat = <0x54>;
+ regoffset-set = <0x0c>;
+ regoffset-dirout = <0x10>;
+ };
+
+ bankd: gpio-controller@2 {
+ compatible = "snps,dw-apb-gpio-bank";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-generic,nr-gpio = <30>;
+
+ regoffset-dat = <0x5c>;
+ regoffset-set = <0x24>;
+ regoffset-dirout = <0x28>;
+ };
+ };
+
+ uart0: uart@30000 {
+ compatible = "snps,dw-apb-uart";
+ reg = <0x30000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <10>;
+ clock-frequency = <3686400>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ };
+
+ uart1: uart@40000 {
+ compatible = "snps,dw-apb-uart";
+ reg = <0x40000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <9>;
+ clock-frequency = <3686400>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ };
+
+ wdog: watchdog@50000 {
+ compatible = "snps,dw-apb-wdg";
+ reg = <0x50000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <11>;
+ bus-clock = <&pclk>, "bus";
+ };
+
+ timer2: timer@60000 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <6>;
+ clock-freq = <200000000>;
+ reg = <0x60000 0x14>;
+ };
+
+ timer3: timer@60014 {
+ compatible = "picochip,pc3x2-timer";
+ interrupt-parent = <&vic0>;
+ interrupts = <7>;
+ clock-freq = <200000000>;
+ reg = <0x60014 0x14>;
+ };
+ };
+ };
+
+ rwid-axi {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges;
+
+ ebi@50000000 {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <1>;
+ ranges = <0 0 0x40000000 0x08000000
+ 1 0 0x48000000 0x08000000
+ 2 0 0x50000000 0x08000000
+ 3 0 0x58000000 0x08000000>;
+ };
+
+ axi2pico@c0000000 {
+ compatible = "picochip,axi2pico-pc3x3";
+ reg = <0xc0000000 0x10000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <13 14 15 16 17 18 19 20 21>;
+ };
+
+ otp@ffff8000 {
+ compatible = "picochip,otp-pc3x3";
+ reg = <0xffff8000 0x8000>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/picoxcell-pc7302-pc3x2.dts b/arch/arm/boot/dts/picoxcell-pc7302-pc3x2.dts
new file mode 100644
index 00000000..1297414d
--- /dev/null
+++ b/arch/arm/boot/dts/picoxcell-pc7302-pc3x2.dts
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2011 Picochip, Jamie Iles
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+/include/ "picoxcell-pc3x2.dtsi"
+/ {
+ model = "Picochip PC7302 (PC3X2)";
+ compatible = "picochip,pc7302-pc3x2", "picochip,pc3x2";
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x08000000>;
+ };
+
+ chosen {
+ linux,stdout-path = &uart0;
+ };
+
+ clocks {
+ ref_clk: clock@1 {
+ compatible = "fixed-clock";
+ clock-outputs = "ref";
+ clock-frequency = <20000000>;
+ };
+ };
+
+ rwid-axi {
+ ebi@50000000 {
+ nand: gpio-nand@2,0 {
+ compatible = "gpio-control-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <2 0x0000 0x1000>;
+ bus-clock = <&pclk>, "bus";
+ gpio-control-nand,io-sync-reg =
+ <0x00000000 0x80220000>;
+
+ gpios = <&banka 1 0 /* rdy */
+ &banka 2 0 /* nce */
+ &banka 3 0 /* ale */
+ &banka 4 0 /* cle */
+ 0 /* nwp */>;
+
+ boot@100000 {
+ label = "Boot";
+ reg = <0x100000 0x80000>;
+ };
+
+ redundant-boot@200000 {
+ label = "Redundant Boot";
+ reg = <0x200000 0x80000>;
+ };
+
+ boot-env@300000 {
+ label = "Boot Evironment";
+ reg = <0x300000 0x20000>;
+ };
+
+ redundant-boot-env@320000 {
+ label = "Redundant Boot Environment";
+ reg = <0x300000 0x20000>;
+ };
+
+ kernel@380000 {
+ label = "Kernel";
+ reg = <0x380000 0x800000>;
+ };
+
+ fs@b80000 {
+ label = "File System";
+ reg = <0xb80000 0xf480000>;
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/picoxcell-pc7302-pc3x3.dts b/arch/arm/boot/dts/picoxcell-pc7302-pc3x3.dts
new file mode 100644
index 00000000..9e317a4f
--- /dev/null
+++ b/arch/arm/boot/dts/picoxcell-pc7302-pc3x3.dts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2011 Picochip, Jamie Iles
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+/include/ "picoxcell-pc3x3.dtsi"
+/ {
+ model = "Picochip PC7302 (PC3X3)";
+ compatible = "picochip,pc7302-pc3x3", "picochip,pc3x3";
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x08000000>;
+ };
+
+ chosen {
+ linux,stdout-path = &uart0;
+ };
+
+ clocks {
+ ref_clk: clock@10 {
+ compatible = "fixed-clock";
+ clock-outputs = "ref";
+ clock-frequency = <20000000>;
+ };
+
+ clkgate: clkgate@800a0048 {
+ clock@4 {
+ picochip,clk-no-disable;
+ };
+ };
+ };
+
+ rwid-axi {
+ ebi@50000000 {
+ nand: gpio-nand@2,0 {
+ compatible = "gpio-control-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <2 0x0000 0x1000>;
+ bus-clock = <&ebi_clk>, "bus";
+ gpio-control-nand,io-sync-reg =
+ <0x00000000 0x80220000>;
+
+ gpios = <&banka 1 0 /* rdy */
+ &banka 2 0 /* nce */
+ &banka 3 0 /* ale */
+ &banka 4 0 /* cle */
+ 0 /* nwp */>;
+
+ boot@100000 {
+ label = "Boot";
+ reg = <0x100000 0x80000>;
+ };
+
+ redundant-boot@200000 {
+ label = "Redundant Boot";
+ reg = <0x200000 0x80000>;
+ };
+
+ boot-env@300000 {
+ label = "Boot Evironment";
+ reg = <0x300000 0x20000>;
+ };
+
+ redundant-boot-env@320000 {
+ label = "Redundant Boot Environment";
+ reg = <0x300000 0x20000>;
+ };
+
+ kernel@380000 {
+ label = "Kernel";
+ reg = <0x380000 0x800000>;
+ };
+
+ fs@b80000 {
+ label = "File System";
+ reg = <0xb80000 0xf480000>;
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/prima2-cb.dts b/arch/arm/boot/dts/prima2-cb.dts
new file mode 100644
index 00000000..34ae3a64
--- /dev/null
+++ b/arch/arm/boot/dts/prima2-cb.dts
@@ -0,0 +1,424 @@
+/dts-v1/;
+/ {
+ model = "SiRF Prima2 eVB";
+ compatible = "sirf,prima2-cb", "sirf,prima2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ interrupt-parent = <&intc>;
+
+ memory {
+ reg = <0x00000000 0x20000000>;
+ };
+
+ chosen {
+ bootargs = "mem=512M real_root=/dev/mmcblk0p2 console=ttyS0 panel=1 bootsplash=true bpp=16 androidboot.console=ttyS1";
+ linux,stdout-path = &uart1;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ reg = <0x0>;
+ d-cache-line-size = <32>;
+ i-cache-line-size = <32>;
+ d-cache-size = <32768>;
+ i-cache-size = <32768>;
+ /* from bootloader */
+ timebase-frequency = <0>;
+ bus-frequency = <0>;
+ clock-frequency = <0>;
+ };
+ };
+
+ axi {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x40000000 0x40000000 0x80000000>;
+
+ l2-cache-controller@80040000 {
+ compatible = "arm,pl310-cache", "sirf,prima2-pl310-cache";
+ reg = <0x80040000 0x1000>;
+ interrupts = <59>;
+ arm,tag-latency = <1 1 1>;
+ arm,data-latency = <1 1 1>;
+ arm,filter-ranges = <0 0x40000000>;
+ };
+
+ intc: interrupt-controller@80020000 {
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ compatible = "sirf,prima2-intc";
+ reg = <0x80020000 0x1000>;
+ };
+
+ sys-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x88000000 0x88000000 0x40000>;
+
+ clock-controller@88000000 {
+ compatible = "sirf,prima2-clkc";
+ reg = <0x88000000 0x1000>;
+ interrupts = <3>;
+ };
+
+ reset-controller@88010000 {
+ compatible = "sirf,prima2-rstc";
+ reg = <0x88010000 0x1000>;
+ };
+
+ rsc-controller@88020000 {
+ compatible = "sirf,prima2-rsc";
+ reg = <0x88020000 0x1000>;
+ };
+ };
+
+ mem-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x90000000 0x90000000 0x10000>;
+
+ memory-controller@90000000 {
+ compatible = "sirf,prima2-memc";
+ reg = <0x90000000 0x10000>;
+ interrupts = <27>;
+ };
+ };
+
+ disp-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x90010000 0x90010000 0x30000>;
+
+ display@90010000 {
+ compatible = "sirf,prima2-lcd";
+ reg = <0x90010000 0x20000>;
+ interrupts = <30>;
+ };
+
+ vpp@90020000 {
+ compatible = "sirf,prima2-vpp";
+ reg = <0x90020000 0x10000>;
+ interrupts = <31>;
+ };
+ };
+
+ graphics-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x98000000 0x98000000 0x8000000>;
+
+ graphics@98000000 {
+ compatible = "powervr,sgx531";
+ reg = <0x98000000 0x8000000>;
+ interrupts = <6>;
+ };
+ };
+
+ multimedia-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0xa0000000 0xa0000000 0x8000000>;
+
+ multimedia@a0000000 {
+ compatible = "sirf,prima2-video-codec";
+ reg = <0xa0000000 0x8000000>;
+ interrupts = <5>;
+ };
+ };
+
+ dsp-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0xa8000000 0xa8000000 0x2000000>;
+
+ dspif@a8000000 {
+ compatible = "sirf,prima2-dspif";
+ reg = <0xa8000000 0x10000>;
+ interrupts = <9>;
+ };
+
+ gps@a8010000 {
+ compatible = "sirf,prima2-gps";
+ reg = <0xa8010000 0x10000>;
+ interrupts = <7>;
+ };
+
+ dsp@a9000000 {
+ compatible = "sirf,prima2-dsp";
+ reg = <0xa9000000 0x1000000>;
+ interrupts = <8>;
+ };
+ };
+
+ peri-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0xb0000000 0xb0000000 0x180000>;
+
+ timer@b0020000 {
+ compatible = "sirf,prima2-tick";
+ reg = <0xb0020000 0x1000>;
+ interrupts = <0>;
+ };
+
+ nand@b0030000 {
+ compatible = "sirf,prima2-nand";
+ reg = <0xb0030000 0x10000>;
+ interrupts = <41>;
+ };
+
+ audio@b0040000 {
+ compatible = "sirf,prima2-audio";
+ reg = <0xb0040000 0x10000>;
+ interrupts = <35>;
+ };
+
+ uart0: uart@b0050000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-uart";
+ reg = <0xb0050000 0x10000>;
+ interrupts = <17>;
+ };
+
+ uart1: uart@b0060000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-uart";
+ reg = <0xb0060000 0x10000>;
+ interrupts = <18>;
+ };
+
+ uart2: uart@b0070000 {
+ cell-index = <2>;
+ compatible = "sirf,prima2-uart";
+ reg = <0xb0070000 0x10000>;
+ interrupts = <19>;
+ };
+
+ usp0: usp@b0080000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-usp";
+ reg = <0xb0080000 0x10000>;
+ interrupts = <20>;
+ };
+
+ usp1: usp@b0090000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-usp";
+ reg = <0xb0090000 0x10000>;
+ interrupts = <21>;
+ };
+
+ usp2: usp@b00a0000 {
+ cell-index = <2>;
+ compatible = "sirf,prima2-usp";
+ reg = <0xb00a0000 0x10000>;
+ interrupts = <22>;
+ };
+
+ dmac0: dma-controller@b00b0000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-dmac";
+ reg = <0xb00b0000 0x10000>;
+ interrupts = <12>;
+ };
+
+ dmac1: dma-controller@b0160000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-dmac";
+ reg = <0xb0160000 0x10000>;
+ interrupts = <13>;
+ };
+
+ vip@b00C0000 {
+ compatible = "sirf,prima2-vip";
+ reg = <0xb00C0000 0x10000>;
+ };
+
+ spi0: spi@b00d0000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-spi";
+ reg = <0xb00d0000 0x10000>;
+ interrupts = <15>;
+ };
+
+ spi1: spi@b0170000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-spi";
+ reg = <0xb0170000 0x10000>;
+ interrupts = <16>;
+ };
+
+ i2c0: i2c@b00e0000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-i2c";
+ reg = <0xb00e0000 0x10000>;
+ interrupts = <24>;
+ };
+
+ i2c1: i2c@b00f0000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-i2c";
+ reg = <0xb00f0000 0x10000>;
+ interrupts = <25>;
+ };
+
+ tsc@b0110000 {
+ compatible = "sirf,prima2-tsc";
+ reg = <0xb0110000 0x10000>;
+ interrupts = <33>;
+ };
+
+ gpio: gpio-controller@b0120000 {
+ #gpio-cells = <2>;
+ #interrupt-cells = <2>;
+ compatible = "sirf,prima2-gpio-pinmux";
+ reg = <0xb0120000 0x10000>;
+ gpio-controller;
+ interrupt-controller;
+ };
+
+ pwm@b0130000 {
+ compatible = "sirf,prima2-pwm";
+ reg = <0xb0130000 0x10000>;
+ };
+
+ efusesys@b0140000 {
+ compatible = "sirf,prima2-efuse";
+ reg = <0xb0140000 0x10000>;
+ };
+
+ pulsec@b0150000 {
+ compatible = "sirf,prima2-pulsec";
+ reg = <0xb0150000 0x10000>;
+ interrupts = <48>;
+ };
+
+ pci-iobg {
+ compatible = "sirf,prima2-pciiobg", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x56000000 0x56000000 0x1b00000>;
+
+ sd0: sdhci@56000000 {
+ cell-index = <0>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56000000 0x100000>;
+ interrupts = <38>;
+ };
+
+ sd1: sdhci@56100000 {
+ cell-index = <1>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56100000 0x100000>;
+ interrupts = <38>;
+ };
+
+ sd2: sdhci@56200000 {
+ cell-index = <2>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56200000 0x100000>;
+ interrupts = <23>;
+ };
+
+ sd3: sdhci@56300000 {
+ cell-index = <3>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56300000 0x100000>;
+ interrupts = <23>;
+ };
+
+ sd4: sdhci@56400000 {
+ cell-index = <4>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56400000 0x100000>;
+ interrupts = <39>;
+ };
+
+ sd5: sdhci@56500000 {
+ cell-index = <5>;
+ compatible = "sirf,prima2-sdhc";
+ reg = <0x56500000 0x100000>;
+ interrupts = <39>;
+ };
+
+ pci-copy@57900000 {
+ compatible = "sirf,prima2-pcicp";
+ reg = <0x57900000 0x100000>;
+ interrupts = <40>;
+ };
+
+ rom-interface@57a00000 {
+ compatible = "sirf,prima2-romif";
+ reg = <0x57a00000 0x100000>;
+ };
+ };
+ };
+
+ rtc-iobg {
+ compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x80030000 0x10000>;
+
+ gpsrtc@1000 {
+ compatible = "sirf,prima2-gpsrtc";
+ reg = <0x1000 0x1000>;
+ interrupts = <55 56 57>;
+ };
+
+ sysrtc@2000 {
+ compatible = "sirf,prima2-sysrtc";
+ reg = <0x2000 0x1000>;
+ interrupts = <52 53 54>;
+ };
+
+ pwrc@3000 {
+ compatible = "sirf,prima2-pwrc";
+ reg = <0x3000 0x1000>;
+ interrupts = <32>;
+ };
+ };
+
+ uus-iobg {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0xb8000000 0xb8000000 0x40000>;
+
+ usb0: usb@b00e0000 {
+ compatible = "chipidea,ci13611a-prima2";
+ reg = <0xb8000000 0x10000>;
+ interrupts = <10>;
+ };
+
+ usb1: usb@b00f0000 {
+ compatible = "chipidea,ci13611a-prima2";
+ reg = <0xb8010000 0x10000>;
+ interrupts = <11>;
+ };
+
+ sata@b00f0000 {
+ compatible = "synopsys,dwc-ahsata";
+ reg = <0xb8020000 0x10000>;
+ interrupts = <37>;
+ };
+
+ security@b00f0000 {
+ compatible = "sirf,prima2-security";
+ reg = <0xb8030000 0x10000>;
+ interrupts = <42>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/pxa168-aspenite.dts b/arch/arm/boot/dts/pxa168-aspenite.dts
new file mode 100644
index 00000000..e762facb
--- /dev/null
+++ b/arch/arm/boot/dts/pxa168-aspenite.dts
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2012 Marvell Technology Group Ltd.
+ * Author: Haojian Zhuang
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+/include/ "pxa168.dtsi"
+
+/ {
+ model = "Marvell PXA168 Aspenite Development Board";
+ compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168";
+
+ chosen {
+ bootargs = "console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on";
+ };
+
+ memory {
+ reg = <0x00000000 0x04000000>;
+ };
+
+ soc {
+ apb@d4000000 {
+ uart1: uart@d4017000 {
+ status = "okay";
+ };
+ twsi1: i2c@d4011000 {
+ status = "okay";
+ };
+ rtc: rtc@d4010000 {
+ status = "okay";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/pxa168.dtsi b/arch/arm/boot/dts/pxa168.dtsi
new file mode 100644
index 00000000..d32d5128
--- /dev/null
+++ b/arch/arm/boot/dts/pxa168.dtsi
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2012 Marvell Technology Group Ltd.
+ * Author: Haojian Zhuang
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * publishhed by the Free Software Foundation.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ aliases {
+ serial0 = &uart1;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ i2c0 = &twsi1;
+ i2c1 = &twsi2;
+ };
+
+ intc: intc-interrupt-controller@d4282000 {
+ compatible = "mrvl,mmp-intc", "mrvl,intc";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0xd4282000 0x1000>;
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ interrupt-parent = <&intc>;
+ ranges;
+
+ apb@d4000000 { /* APB */
+ compatible = "mrvl,apb-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xd4000000 0x00200000>;
+ ranges;
+
+ uart1: uart@d4017000 {
+ compatible = "mrvl,mmp-uart", "mrvl,pxa-uart";
+ reg = <0xd4017000 0x1000>;
+ interrupts = <27>;
+ status = "disabled";
+ };
+
+ uart2: uart@d4018000 {
+ compatible = "mrvl,mmp-uart", "mrvl,pxa-uart";
+ reg = <0xd4018000 0x1000>;
+ interrupts = <28>;
+ status = "disabled";
+ };
+
+ uart3: uart@d4026000 {
+ compatible = "mrvl,mmp-uart", "mrvl,pxa-uart";
+ reg = <0xd4026000 0x1000>;
+ interrupts = <29>;
+ status = "disabled";
+ };
+
+ gpio: gpio@d4019000 {
+ compatible = "mrvl,mmp-gpio", "mrvl,pxa-gpio";
+ reg = <0xd4019000 0x1000>;
+ interrupts = <49>;
+ interrupt-names = "gpio_mux";
+ gpio-controller;
+ #gpio-cells = <1>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ twsi1: i2c@d4011000 {
+ compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c";
+ reg = <0xd4011000 0x1000>;
+ interrupts = <7>;
+ mrvl,i2c-fast-mode;
+ status = "disabled";
+ };
+
+ twsi2: i2c@d4025000 {
+ compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c";
+ reg = <0xd4025000 0x1000>;
+ interrupts = <58>;
+ status = "disabled";
+ };
+
+ rtc: rtc@d4010000 {
+ compatible = "mrvl,mmp-rtc";
+ reg = <0xd4010000 0x1000>;
+ interrupts = <5 6>;
+ interrupt-names = "rtc 1Hz", "rtc alarm";
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/skeleton.dtsi b/arch/arm/boot/dts/skeleton.dtsi
new file mode 100644
index 00000000..b41d241d
--- /dev/null
+++ b/arch/arm/boot/dts/skeleton.dtsi
@@ -0,0 +1,13 @@
+/*
+ * Skeleton device tree; the bare minimum needed to boot; just include and
+ * add a compatible value. The bootloader will typically populate the memory
+ * node.
+ */
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ chosen { };
+ aliases { };
+ memory { device_type = "memory"; reg = <0 0>; };
+};
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
new file mode 100644
index 00000000..359c6d67
--- /dev/null
+++ b/arch/arm/boot/dts/snowball.dts
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2011 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "db8500.dtsi"
+
+/ {
+ model = "Calao Systems Snowball platform with device tree";
+ compatible = "calaosystems,snowball-a9500";
+
+ memory {
+ reg = <0x00000000 0x20000000>;
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ button@1 {
+ debounce_interval = <50>;
+ wakeup = <1>;
+ linux,code = <2>;
+ label = "userpb";
+ gpios = <&gpio1 0>;
+ };
+ button@2 {
+ debounce_interval = <50>;
+ wakeup = <1>;
+ linux,code = <3>;
+ label = "userpb";
+ gpios = <&gpio4 23>;
+ };
+ button@3 {
+ debounce_interval = <50>;
+ wakeup = <1>;
+ linux,code = <4>;
+ label = "userpb";
+ gpios = <&gpio4 23>;
+ };
+ button@4 {
+ debounce_interval = <50>;
+ wakeup = <1>;
+ linux,code = <5>;
+ label = "userpb";
+ gpios = <&gpio5 1>;
+ };
+ button@5 {
+ debounce_interval = <50>;
+ wakeup = <1>;
+ linux,code = <6>;
+ label = "userpb";
+ gpios = <&gpio5 2>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ used-led {
+ label = "user_led";
+ gpios = <&gpio4 14>;
+ };
+ };
+
+ soc-u9500 {
+
+ external-bus@50000000 {
+ compatible = "simple-bus";
+ reg = <0x50000000 0x10000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ ethernet@50000000 {
+ compatible = "smsc,9111";
+ reg = <0x50000000 0x10000>;
+ interrupts = <12>;
+ interrupt-parent = <&gpio4>;
+ };
+ };
+
+ sdi@80126000 {
+ status = "enabled";
+ cd-gpios = <&gpio6 26>;
+ };
+
+ sdi@80114000 {
+ status = "enabled";
+ };
+
+ uart@80120000 {
+ status = "okay";
+ };
+
+ uart@80121000 {
+ status = "okay";
+ };
+
+ uart@80007000 {
+ status = "okay";
+ };
+
+ i2c@80004000 {
+ tc3589x@42 {
+ //compatible = "tc3589x";
+ reg = <0x42>;
+ interrupts = <25>;
+ interrupt-parent = <&gpio6>;
+ };
+ tps61052@33 {
+ //compatible = "tps61052";
+ reg = <0x33>;
+ };
+ };
+
+ i2c@80128000 {
+ lp5521@0x33 {
+ // compatible = "lp5521";
+ reg = <0x33>;
+ };
+ lp5521@0x34 {
+ // compatible = "lp5521";
+ reg = <0x34>;
+ };
+ bh1780@0x29 {
+ // compatible = "rohm,bh1780gli";
+ reg = <0x33>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/spear600-evb.dts b/arch/arm/boot/dts/spear600-evb.dts
new file mode 100644
index 00000000..636292e1
--- /dev/null
+++ b/arch/arm/boot/dts/spear600-evb.dts
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Stefan Roese
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "spear600.dtsi"
+
+/ {
+ model = "ST SPEAr600 Evaluation Board";
+ compatible = "st,spear600-evb", "st,spear600";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ memory {
+ device_type = "memory";
+ reg = <0 0x10000000>;
+ };
+
+ ahb {
+ gmac: ethernet@e0800000 {
+ phy-mode = "gmii";
+ status = "okay";
+ };
+
+ apb {
+ serial@d0000000 {
+ status = "okay";
+ };
+
+ serial@d0080000 {
+ status = "okay";
+ };
+
+ i2c@d0200000 {
+ clock-frequency = <400000>;
+ status = "okay";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/spear600.dtsi b/arch/arm/boot/dts/spear600.dtsi
new file mode 100644
index 00000000..ebe0885a
--- /dev/null
+++ b/arch/arm/boot/dts/spear600.dtsi
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2012 Stefan Roese
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "st,spear600";
+
+ cpus {
+ cpu@0 {
+ compatible = "arm,arm926ejs";
+ };
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0 0x40000000>;
+ };
+
+ ahb {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges = <0xd0000000 0xd0000000 0x30000000>;
+
+ vic0: interrupt-controller@f1100000 {
+ compatible = "arm,pl190-vic";
+ interrupt-controller;
+ reg = <0xf1100000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ vic1: interrupt-controller@f1000000 {
+ compatible = "arm,pl190-vic";
+ interrupt-controller;
+ reg = <0xf1000000 0x1000>;
+ #interrupt-cells = <1>;
+ };
+
+ gmac: ethernet@e0800000 {
+ compatible = "st,spear600-gmac";
+ reg = <0xe0800000 0x8000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <24 23>;
+ interrupt-names = "macirq", "eth_wake_irq";
+ status = "disabled";
+ };
+
+ fsmc: flash@d1800000 {
+ compatible = "st,spear600-fsmc-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xd1800000 0x1000 /* FSMC Register */
+ 0xd2000000 0x4000>; /* NAND Base */
+ reg-names = "fsmc_regs", "nand_data";
+ st,ale-off = <0x20000>;
+ st,cle-off = <0x10000>;
+ status = "disabled";
+ };
+
+ smi: flash@fc000000 {
+ compatible = "st,spear600-smi";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xfc000000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <12>;
+ status = "disabled";
+ };
+
+ ehci@e1800000 {
+ compatible = "st,spear600-ehci", "usb-ehci";
+ reg = <0xe1800000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <27>;
+ status = "disabled";
+ };
+
+ ehci@e2000000 {
+ compatible = "st,spear600-ehci", "usb-ehci";
+ reg = <0xe2000000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <29>;
+ status = "disabled";
+ };
+
+ ohci@e1900000 {
+ compatible = "st,spear600-ohci", "usb-ohci";
+ reg = <0xe1900000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <26>;
+ status = "disabled";
+ };
+
+ ohci@e2100000 {
+ compatible = "st,spear600-ohci", "usb-ohci";
+ reg = <0xe2100000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <28>;
+ status = "disabled";
+ };
+
+ apb {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges = <0xd0000000 0xd0000000 0x30000000>;
+
+ serial@d0000000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0xd0000000 0x1000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <24>;
+ status = "disabled";
+ };
+
+ serial@d0080000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0xd0080000 0x1000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <25>;
+ status = "disabled";
+ };
+
+ /* local/cpu GPIO */
+ gpio0: gpio@f0100000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xf0100000 0x1000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <18>;
+ };
+
+ /* basic GPIO */
+ gpio1: gpio@fc980000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xfc980000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <19>;
+ };
+
+ /* appl GPIO */
+ gpio2: gpio@d8100000 {
+ #gpio-cells = <2>;
+ compatible = "arm,pl061", "arm,primecell";
+ gpio-controller;
+ reg = <0xd8100000 0x1000>;
+ interrupt-parent = <&vic1>;
+ interrupts = <4>;
+ };
+
+ i2c@d0200000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "snps,designware-i2c";
+ reg = <0xd0200000 0x1000>;
+ interrupt-parent = <&vic0>;
+ interrupts = <28>;
+ status = "disabled";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-cardhu.dts b/arch/arm/boot/dts/tegra-cardhu.dts
new file mode 100644
index 00000000..631a86cb
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-cardhu.dts
@@ -0,0 +1,70 @@
+/dts-v1/;
+
+/include/ "tegra30.dtsi"
+
+/ {
+ model = "NVIDIA Tegra30 Cardhu evaluation board";
+ compatible = "nvidia,cardhu", "nvidia,tegra30";
+
+ memory {
+ reg = < 0x80000000 0x40000000 >;
+ };
+
+ serial@70006000 {
+ clock-frequency = < 408000000 >;
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ status = "disable";
+ };
+
+ serial@70006300 {
+ status = "disable";
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <100000>;
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <100000>;
+ };
+
+ i2c@7000c500 {
+ clock-frequency = <100000>;
+ };
+
+ i2c@7000c700 {
+ clock-frequency = <100000>;
+ };
+
+ i2c@7000d000 {
+ clock-frequency = <100000>;
+ };
+
+ sdhci@78000000 {
+ cd-gpios = <&gpio 69 0>; /* gpio PI5 */
+ wp-gpios = <&gpio 155 0>; /* gpio PT3 */
+ power-gpios = <&gpio 31 0>; /* gpio PD7 */
+ };
+
+ sdhci@78000200 {
+ status = "disable";
+ };
+
+ sdhci@78000400 {
+ status = "disable";
+ };
+
+ sdhci@78000600 {
+ support-8bit;
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-harmony.dts b/arch/arm/boot/dts/tegra-harmony.dts
new file mode 100644
index 00000000..6e8447dc
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-harmony.dts
@@ -0,0 +1,115 @@
+/dts-v1/;
+
+/include/ "tegra20.dtsi"
+
+/ {
+ model = "NVIDIA Tegra2 Harmony evaluation board";
+ compatible = "nvidia,harmony", "nvidia,tegra20";
+
+ memory@0 {
+ reg = < 0x00000000 0x40000000 >;
+ };
+
+ pmc@7000f400 {
+ nvidia,invert-interrupt;
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <400000>;
+
+ wm8903: wm8903@1a {
+ compatible = "wlf,wm8903";
+ reg = <0x1a>;
+ interrupt-parent = <&gpio>;
+ interrupts = < 187 0x04 >;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ micdet-cfg = <0>;
+ micdet-delay = <100>;
+ gpio-cfg = < 0xffffffff 0xffffffff 0 0xffffffff 0xffffffff >;
+ };
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c500 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000d000 {
+ clock-frequency = <400000>;
+ };
+
+ i2s@70002a00 {
+ status = "disable";
+ };
+
+ sound {
+ compatible = "nvidia,tegra-audio-wm8903-harmony",
+ "nvidia,tegra-audio-wm8903";
+ nvidia,model = "NVIDIA Tegra Harmony";
+
+ nvidia,audio-routing =
+ "Headphone Jack", "HPOUTR",
+ "Headphone Jack", "HPOUTL",
+ "Int Spk", "ROP",
+ "Int Spk", "RON",
+ "Int Spk", "LOP",
+ "Int Spk", "LON",
+ "Mic Jack", "MICBIAS",
+ "IN1L", "Mic Jack";
+
+ nvidia,i2s-controller = <&tegra_i2s1>;
+ nvidia,audio-codec = <&wm8903>;
+
+ nvidia,spkr-en-gpios = <&wm8903 2 0>;
+ nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
+ nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */
+ nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
+ };
+
+ serial@70006000 {
+ status = "disable";
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ status = "disable";
+ };
+
+ serial@70006300 {
+ clock-frequency = < 216000000 >;
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ sdhci@c8000000 {
+ status = "disable";
+ };
+
+ sdhci@c8000200 {
+ cd-gpios = <&gpio 69 0>; /* gpio PI5 */
+ wp-gpios = <&gpio 57 0>; /* gpio PH1 */
+ power-gpios = <&gpio 155 0>; /* gpio PT3 */
+ };
+
+ sdhci@c8000400 {
+ status = "disable";
+ };
+
+ sdhci@c8000600 {
+ cd-gpios = <&gpio 58 0>; /* gpio PH2 */
+ wp-gpios = <&gpio 59 0>; /* gpio PH3 */
+ power-gpios = <&gpio 70 0>; /* gpio PI6 */
+ support-8bit;
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-paz00.dts b/arch/arm/boot/dts/tegra-paz00.dts
new file mode 100644
index 00000000..6c02abb4
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-paz00.dts
@@ -0,0 +1,134 @@
+/dts-v1/;
+
+/include/ "tegra20.dtsi"
+
+/ {
+ model = "Toshiba AC100 / Dynabook AZ";
+ compatible = "compal,paz00", "nvidia,tegra20";
+
+ memory@0 {
+ reg = <0x00000000 0x20000000>;
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <400000>;
+
+ alc5632: alc5632@1e {
+ compatible = "realtek,alc5632";
+ reg = <0x1e>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c500 {
+ status = "disable";
+ };
+
+ nvec@7000c500 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,nvec";
+ reg = <0x7000C500 0x100>;
+ interrupts = <0 92 0x04>;
+ clock-frequency = <80000>;
+ request-gpios = <&gpio 170 0>;
+ slave-addr = <138>;
+ };
+
+ i2c@7000d000 {
+ clock-frequency = <400000>;
+
+ adt7461@4c {
+ compatible = "adi,adt7461";
+ reg = <0x4c>;
+ };
+ };
+
+ i2s@70002a00 {
+ status = "disable";
+ };
+
+ sound {
+ compatible = "nvidia,tegra-audio-alc5632-paz00",
+ "nvidia,tegra-audio-alc5632";
+
+ nvidia,model = "Compal PAZ00";
+
+ nvidia,audio-routing =
+ "Int Spk", "SPKOUT",
+ "Int Spk", "SPKOUTN",
+ "Headset Mic", "MICBIAS1",
+ "MIC1", "Headset Mic",
+ "Headset Stereophone", "HPR",
+ "Headset Stereophone", "HPL",
+ "DMICDAT", "Digital Mic";
+
+ nvidia,audio-codec = <&alc5632>;
+ nvidia,i2s-controller = <&tegra_i2s1>;
+ nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
+ };
+
+ serial@70006000 {
+ clock-frequency = <216000000>;
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ clock-frequency = <216000000>;
+ };
+
+ serial@70006300 {
+ status = "disable";
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ sdhci@c8000000 {
+ cd-gpios = <&gpio 173 0>; /* gpio PV5 */
+ wp-gpios = <&gpio 57 0>; /* gpio PH1 */
+ power-gpios = <&gpio 169 0>; /* gpio PV1 */
+ };
+
+ sdhci@c8000200 {
+ status = "disable";
+ };
+
+ sdhci@c8000400 {
+ status = "disable";
+ };
+
+ sdhci@c8000600 {
+ support-8bit;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power";
+ gpios = <&gpio 79 1>; /* gpio PJ7, active low */
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ wifi {
+ label = "wifi-led";
+ gpios = <&gpio 24 0>;
+ linux,default-trigger = "rfkill0";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-seaboard.dts b/arch/arm/boot/dts/tegra-seaboard.dts
new file mode 100644
index 00000000..dbf1c5a1
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-seaboard.dts
@@ -0,0 +1,175 @@
+/dts-v1/;
+
+/include/ "tegra20.dtsi"
+
+/ {
+ model = "NVIDIA Seaboard";
+ compatible = "nvidia,seaboard", "nvidia,tegra20";
+
+ memory {
+ device_type = "memory";
+ reg = < 0x00000000 0x40000000 >;
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <400000>;
+
+ wm8903: wm8903@1a {
+ compatible = "wlf,wm8903";
+ reg = <0x1a>;
+ interrupt-parent = <&gpio>;
+ interrupts = < 187 0x04 >;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ micdet-cfg = <0>;
+ micdet-delay = <100>;
+ gpio-cfg = < 0xffffffff 0xffffffff 0 0xffffffff 0xffffffff >;
+ };
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c500 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000d000 {
+ clock-frequency = <400000>;
+
+ adt7461@4c {
+ compatible = "adt7461";
+ reg = <0x4c>;
+ };
+ };
+
+ i2s@70002a00 {
+ status = "disable";
+ };
+
+ sound {
+ compatible = "nvidia,tegra-audio-wm8903-seaboard",
+ "nvidia,tegra-audio-wm8903";
+ nvidia,model = "NVIDIA Tegra Seaboard";
+
+ nvidia,audio-routing =
+ "Headphone Jack", "HPOUTR",
+ "Headphone Jack", "HPOUTL",
+ "Int Spk", "ROP",
+ "Int Spk", "RON",
+ "Int Spk", "LOP",
+ "Int Spk", "LON",
+ "Mic Jack", "MICBIAS",
+ "IN1R", "Mic Jack";
+
+ nvidia,i2s-controller = <&tegra_i2s1>;
+ nvidia,audio-codec = <&wm8903>;
+
+ nvidia,spkr-en-gpios = <&wm8903 2 0>;
+ nvidia,hp-det-gpios = <&gpio 185 0>; /* gpio PX1 */
+ };
+
+ serial@70006000 {
+ status = "disable";
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ status = "disable";
+ };
+
+ serial@70006300 {
+ clock-frequency = < 216000000 >;
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ sdhci@c8000000 {
+ status = "disable";
+ };
+
+ sdhci@c8000200 {
+ status = "disable";
+ };
+
+ sdhci@c8000400 {
+ cd-gpios = <&gpio 69 0>; /* gpio PI5 */
+ wp-gpios = <&gpio 57 0>; /* gpio PH1 */
+ power-gpios = <&gpio 70 0>; /* gpio PI6 */
+ };
+
+ sdhci@c8000600 {
+ support-8bit;
+ };
+
+ usb@c5000000 {
+ nvidia,vbus-gpio = <&gpio 24 0>; /* PD0 */
+ dr_mode = "otg";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power";
+ gpios = <&gpio 170 1>; /* gpio PV2, active low */
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+
+ lid {
+ label = "Lid";
+ gpios = <&gpio 23 0>; /* gpio PC7 */
+ linux,input-type = <5>; /* EV_SW */
+ linux,code = <0>; /* SW_LID */
+ debounce-interval = <1>;
+ gpio-key,wakeup;
+ };
+ };
+
+ emc@7000f400 {
+ emc-table@190000 {
+ reg = < 190000 >;
+ compatible = "nvidia,tegra20-emc-table";
+ clock-frequency = < 190000 >;
+ nvidia,emc-registers = < 0x0000000c 0x00000026
+ 0x00000009 0x00000003 0x00000004 0x00000004
+ 0x00000002 0x0000000c 0x00000003 0x00000003
+ 0x00000002 0x00000001 0x00000004 0x00000005
+ 0x00000004 0x00000009 0x0000000d 0x0000059f
+ 0x00000000 0x00000003 0x00000003 0x00000003
+ 0x00000003 0x00000001 0x0000000b 0x000000c8
+ 0x00000003 0x00000007 0x00000004 0x0000000f
+ 0x00000002 0x00000000 0x00000000 0x00000002
+ 0x00000000 0x00000000 0x00000083 0xa06204ae
+ 0x007dc010 0x00000000 0x00000000 0x00000000
+ 0x00000000 0x00000000 0x00000000 0x00000000 >;
+ };
+
+ emc-table@380000 {
+ reg = < 380000 >;
+ compatible = "nvidia,tegra20-emc-table";
+ clock-frequency = < 380000 >;
+ nvidia,emc-registers = < 0x00000017 0x0000004b
+ 0x00000012 0x00000006 0x00000004 0x00000005
+ 0x00000003 0x0000000c 0x00000006 0x00000006
+ 0x00000003 0x00000001 0x00000004 0x00000005
+ 0x00000004 0x00000009 0x0000000d 0x00000b5f
+ 0x00000000 0x00000003 0x00000003 0x00000006
+ 0x00000006 0x00000001 0x00000011 0x000000c8
+ 0x00000003 0x0000000e 0x00000007 0x0000000f
+ 0x00000002 0x00000000 0x00000000 0x00000002
+ 0x00000000 0x00000000 0x00000083 0xe044048b
+ 0x007d8010 0x00000000 0x00000000 0x00000000
+ 0x00000000 0x00000000 0x00000000 0x00000000 >;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-trimslice.dts b/arch/arm/boot/dts/tegra-trimslice.dts
new file mode 100644
index 00000000..25247686
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-trimslice.dts
@@ -0,0 +1,77 @@
+/dts-v1/;
+
+/include/ "tegra20.dtsi"
+
+/ {
+ model = "Compulab TrimSlice board";
+ compatible = "compulab,trimslice", "nvidia,tegra20";
+
+ memory@0 {
+ reg = < 0x00000000 0x40000000 >;
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c500 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000d000 {
+ status = "disable";
+ };
+
+ i2s@70002800 {
+ status = "disable";
+ };
+
+ i2s@70002a00 {
+ status = "disable";
+ };
+
+ das@70000c00 {
+ status = "disable";
+ };
+
+ serial@70006000 {
+ clock-frequency = < 216000000 >;
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ status = "disable";
+ };
+
+ serial@70006300 {
+ status = "disable";
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ sdhci@c8000000 {
+ status = "disable";
+ };
+
+ sdhci@c8000200 {
+ status = "disable";
+ };
+
+ sdhci@c8000400 {
+ status = "disable";
+ };
+
+ sdhci@c8000600 {
+ cd-gpios = <&gpio 121 0>;
+ wp-gpios = <&gpio 122 0>;
+ };
+};
diff --git a/arch/arm/boot/dts/tegra-ventana.dts b/arch/arm/boot/dts/tegra-ventana.dts
new file mode 100644
index 00000000..2dcff872
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-ventana.dts
@@ -0,0 +1,108 @@
+/dts-v1/;
+
+/include/ "tegra20.dtsi"
+
+/ {
+ model = "NVIDIA Tegra2 Ventana evaluation board";
+ compatible = "nvidia,ventana", "nvidia,tegra20";
+
+ memory {
+ reg = < 0x00000000 0x40000000 >;
+ };
+
+ i2c@7000c000 {
+ clock-frequency = <400000>;
+
+ wm8903: wm8903@1a {
+ compatible = "wlf,wm8903";
+ reg = <0x1a>;
+ interrupt-parent = <&gpio>;
+ interrupts = < 187 0x04 >;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ micdet-cfg = <0>;
+ micdet-delay = <100>;
+ gpio-cfg = < 0xffffffff 0xffffffff 0 0xffffffff 0xffffffff >;
+ };
+ };
+
+ i2c@7000c400 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000c500 {
+ clock-frequency = <400000>;
+ };
+
+ i2c@7000d000 {
+ clock-frequency = <400000>;
+ };
+
+ i2s@70002a00 {
+ status = "disable";
+ };
+
+ sound {
+ compatible = "nvidia,tegra-audio-wm8903-ventana",
+ "nvidia,tegra-audio-wm8903";
+ nvidia,model = "NVIDIA Tegra Ventana";
+
+ nvidia,audio-routing =
+ "Headphone Jack", "HPOUTR",
+ "Headphone Jack", "HPOUTL",
+ "Int Spk", "ROP",
+ "Int Spk", "RON",
+ "Int Spk", "LOP",
+ "Int Spk", "LON",
+ "Mic Jack", "MICBIAS",
+ "IN1L", "Mic Jack";
+
+ nvidia,i2s-controller = <&tegra_i2s1>;
+ nvidia,audio-codec = <&wm8903>;
+
+ nvidia,spkr-en-gpios = <&wm8903 2 0>;
+ nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
+ nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */
+ nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
+ };
+
+ serial@70006000 {
+ status = "disable";
+ };
+
+ serial@70006040 {
+ status = "disable";
+ };
+
+ serial@70006200 {
+ status = "disable";
+ };
+
+ serial@70006300 {
+ clock-frequency = < 216000000 >;
+ };
+
+ serial@70006400 {
+ status = "disable";
+ };
+
+ sdhci@c8000000 {
+ status = "disable";
+ };
+
+ sdhci@c8000200 {
+ status = "disable";
+ };
+
+ sdhci@c8000400 {
+ cd-gpios = <&gpio 69 0>; /* gpio PI5 */
+ wp-gpios = <&gpio 57 0>; /* gpio PH1 */
+ power-gpios = <&gpio 70 0>; /* gpio PI6 */
+ };
+
+ sdhci@c8000600 {
+ support-8bit;
+ };
+};
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
new file mode 100644
index 00000000..108e894a
--- /dev/null
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -0,0 +1,210 @@
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "nvidia,tegra20";
+ interrupt-parent = <&intc>;
+
+ pmc@7000f400 {
+ compatible = "nvidia,tegra20-pmc";
+ reg = <0x7000e400 0x400>;
+ };
+
+ intc: interrupt-controller@50041000 {
+ compatible = "arm,cortex-a9-gic";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = < 0x50041000 0x1000 >,
+ < 0x50040100 0x0100 >;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a9-pmu";
+ interrupts = <0 56 0x04
+ 0 57 0x04>;
+ };
+
+ apbdma: dma@6000a000 {
+ compatible = "nvidia,tegra20-apbdma";
+ reg = <0x6000a000 0x1200>;
+ interrupts = < 0 104 0x04
+ 0 105 0x04
+ 0 106 0x04
+ 0 107 0x04
+ 0 108 0x04
+ 0 109 0x04
+ 0 110 0x04
+ 0 111 0x04
+ 0 112 0x04
+ 0 113 0x04
+ 0 114 0x04
+ 0 115 0x04
+ 0 116 0x04
+ 0 117 0x04
+ 0 118 0x04
+ 0 119 0x04 >;
+ };
+
+ i2c@7000c000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra20-i2c";
+ reg = <0x7000C000 0x100>;
+ interrupts = < 0 38 0x04 >;
+ };
+
+ i2c@7000c400 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra20-i2c";
+ reg = <0x7000C400 0x100>;
+ interrupts = < 0 84 0x04 >;
+ };
+
+ i2c@7000c500 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra20-i2c";
+ reg = <0x7000C500 0x100>;
+ interrupts = < 0 92 0x04 >;
+ };
+
+ i2c@7000d000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra20-i2c-dvc";
+ reg = <0x7000D000 0x200>;
+ interrupts = < 0 53 0x04 >;
+ };
+
+ tegra_i2s1: i2s@70002800 {
+ compatible = "nvidia,tegra20-i2s";
+ reg = <0x70002800 0x200>;
+ interrupts = < 0 13 0x04 >;
+ nvidia,dma-request-selector = < &apbdma 2 >;
+ };
+
+ tegra_i2s2: i2s@70002a00 {
+ compatible = "nvidia,tegra20-i2s";
+ reg = <0x70002a00 0x200>;
+ interrupts = < 0 3 0x04 >;
+ nvidia,dma-request-selector = < &apbdma 1 >;
+ };
+
+ das@70000c00 {
+ compatible = "nvidia,tegra20-das";
+ reg = <0x70000c00 0x80>;
+ };
+
+ gpio: gpio@6000d000 {
+ compatible = "nvidia,tegra20-gpio";
+ reg = < 0x6000d000 0x1000 >;
+ interrupts = < 0 32 0x04
+ 0 33 0x04
+ 0 34 0x04
+ 0 35 0x04
+ 0 55 0x04
+ 0 87 0x04
+ 0 89 0x04 >;
+ #gpio-cells = <2>;
+ gpio-controller;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ };
+
+ pinmux: pinmux@70000000 {
+ compatible = "nvidia,tegra20-pinmux";
+ reg = < 0x70000014 0x10 /* Tri-state registers */
+ 0x70000080 0x20 /* Mux registers */
+ 0x700000a0 0x14 /* Pull-up/down registers */
+ 0x70000868 0xa8 >; /* Pad control registers */
+ };
+
+ serial@70006000 {
+ compatible = "nvidia,tegra20-uart";
+ reg = <0x70006000 0x40>;
+ reg-shift = <2>;
+ interrupts = < 0 36 0x04 >;
+ };
+
+ serial@70006040 {
+ compatible = "nvidia,tegra20-uart";
+ reg = <0x70006040 0x40>;
+ reg-shift = <2>;
+ interrupts = < 0 37 0x04 >;
+ };
+
+ serial@70006200 {
+ compatible = "nvidia,tegra20-uart";
+ reg = <0x70006200 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 46 0x04 >;
+ };
+
+ serial@70006300 {
+ compatible = "nvidia,tegra20-uart";
+ reg = <0x70006300 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 90 0x04 >;
+ };
+
+ serial@70006400 {
+ compatible = "nvidia,tegra20-uart";
+ reg = <0x70006400 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 91 0x04 >;
+ };
+
+ emc@7000f400 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra20-emc";
+ reg = <0x7000f400 0x200>;
+ };
+
+ sdhci@c8000000 {
+ compatible = "nvidia,tegra20-sdhci";
+ reg = <0xc8000000 0x200>;
+ interrupts = < 0 14 0x04 >;
+ };
+
+ sdhci@c8000200 {
+ compatible = "nvidia,tegra20-sdhci";
+ reg = <0xc8000200 0x200>;
+ interrupts = < 0 15 0x04 >;
+ };
+
+ sdhci@c8000400 {
+ compatible = "nvidia,tegra20-sdhci";
+ reg = <0xc8000400 0x200>;
+ interrupts = < 0 19 0x04 >;
+ };
+
+ sdhci@c8000600 {
+ compatible = "nvidia,tegra20-sdhci";
+ reg = <0xc8000600 0x200>;
+ interrupts = < 0 31 0x04 >;
+ };
+
+ usb@c5000000 {
+ compatible = "nvidia,tegra20-ehci", "usb-ehci";
+ reg = <0xc5000000 0x4000>;
+ interrupts = < 0 20 0x04 >;
+ phy_type = "utmi";
+ nvidia,has-legacy-mode;
+ };
+
+ usb@c5004000 {
+ compatible = "nvidia,tegra20-ehci", "usb-ehci";
+ reg = <0xc5004000 0x4000>;
+ interrupts = < 0 21 0x04 >;
+ phy_type = "ulpi";
+ };
+
+ usb@c5008000 {
+ compatible = "nvidia,tegra20-ehci", "usb-ehci";
+ reg = <0xc5008000 0x4000>;
+ interrupts = < 0 97 0x04 >;
+ phy_type = "utmi";
+ };
+};
+
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
new file mode 100644
index 00000000..62a7b39f
--- /dev/null
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -0,0 +1,186 @@
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "nvidia,tegra30";
+ interrupt-parent = <&intc>;
+
+ pmc@7000f400 {
+ compatible = "nvidia,tegra20-pmc", "nvidia,tegra30-pmc";
+ reg = <0x7000e400 0x400>;
+ };
+
+ intc: interrupt-controller@50041000 {
+ compatible = "arm,cortex-a9-gic";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ reg = < 0x50041000 0x1000 >,
+ < 0x50040100 0x0100 >;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a9-pmu";
+ interrupts = <0 144 0x04
+ 0 145 0x04
+ 0 146 0x04
+ 0 147 0x04>;
+ };
+
+ apbdma: dma@6000a000 {
+ compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma";
+ reg = <0x6000a000 0x1400>;
+ interrupts = < 0 104 0x04
+ 0 105 0x04
+ 0 106 0x04
+ 0 107 0x04
+ 0 108 0x04
+ 0 109 0x04
+ 0 110 0x04
+ 0 111 0x04
+ 0 112 0x04
+ 0 113 0x04
+ 0 114 0x04
+ 0 115 0x04
+ 0 116 0x04
+ 0 117 0x04
+ 0 118 0x04
+ 0 119 0x04
+ 0 128 0x04
+ 0 129 0x04
+ 0 130 0x04
+ 0 131 0x04
+ 0 132 0x04
+ 0 133 0x04
+ 0 134 0x04
+ 0 135 0x04
+ 0 136 0x04
+ 0 137 0x04
+ 0 138 0x04
+ 0 139 0x04
+ 0 140 0x04
+ 0 141 0x04
+ 0 142 0x04
+ 0 143 0x04 >;
+ };
+
+ i2c@7000c000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
+ reg = <0x7000C000 0x100>;
+ interrupts = < 0 38 0x04 >;
+ };
+
+ i2c@7000c400 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
+ reg = <0x7000C400 0x100>;
+ interrupts = < 0 84 0x04 >;
+ };
+
+ i2c@7000c500 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
+ reg = <0x7000C500 0x100>;
+ interrupts = < 0 92 0x04 >;
+ };
+
+ i2c@7000c700 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
+ reg = <0x7000c700 0x100>;
+ interrupts = < 0 120 0x04 >;
+ };
+
+ i2c@7000d000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
+ reg = <0x7000D000 0x100>;
+ interrupts = < 0 53 0x04 >;
+ };
+
+ gpio: gpio@6000d000 {
+ compatible = "nvidia,tegra30-gpio", "nvidia,tegra20-gpio";
+ reg = < 0x6000d000 0x1000 >;
+ interrupts = < 0 32 0x04
+ 0 33 0x04
+ 0 34 0x04
+ 0 35 0x04
+ 0 55 0x04
+ 0 87 0x04
+ 0 89 0x04
+ 0 125 0x04 >;
+ #gpio-cells = <2>;
+ gpio-controller;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ };
+
+ serial@70006000 {
+ compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
+ reg = <0x70006000 0x40>;
+ reg-shift = <2>;
+ interrupts = < 0 36 0x04 >;
+ };
+
+ serial@70006040 {
+ compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
+ reg = <0x70006040 0x40>;
+ reg-shift = <2>;
+ interrupts = < 0 37 0x04 >;
+ };
+
+ serial@70006200 {
+ compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
+ reg = <0x70006200 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 46 0x04 >;
+ };
+
+ serial@70006300 {
+ compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
+ reg = <0x70006300 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 90 0x04 >;
+ };
+
+ serial@70006400 {
+ compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
+ reg = <0x70006400 0x100>;
+ reg-shift = <2>;
+ interrupts = < 0 91 0x04 >;
+ };
+
+ sdhci@78000000 {
+ compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
+ reg = <0x78000000 0x200>;
+ interrupts = < 0 14 0x04 >;
+ };
+
+ sdhci@78000200 {
+ compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
+ reg = <0x78000200 0x200>;
+ interrupts = < 0 15 0x04 >;
+ };
+
+ sdhci@78000400 {
+ compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
+ reg = <0x78000400 0x200>;
+ interrupts = < 0 19 0x04 >;
+ };
+
+ sdhci@78000600 {
+ compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
+ reg = <0x78000600 0x200>;
+ interrupts = < 0 31 0x04 >;
+ };
+
+ pinmux: pinmux@70000000 {
+ compatible = "nvidia,tegra30-pinmux";
+ reg = < 0x70000868 0xd0 /* Pad control registers */
+ 0x70003000 0x3e0 >; /* Mux registers */
+ };
+};
diff --git a/arch/arm/boot/dts/testcases/tests-phandle.dtsi b/arch/arm/boot/dts/testcases/tests-phandle.dtsi
new file mode 100644
index 00000000..0007d3cd
--- /dev/null
+++ b/arch/arm/boot/dts/testcases/tests-phandle.dtsi
@@ -0,0 +1,39 @@
+
+/ {
+ testcase-data {
+ phandle-tests {
+ provider0: provider0 {
+ #phandle-cells = <0>;
+ };
+
+ provider1: provider1 {
+ #phandle-cells = <1>;
+ };
+
+ provider2: provider2 {
+ #phandle-cells = <2>;
+ };
+
+ provider3: provider3 {
+ #phandle-cells = <3>;
+ };
+
+ consumer-a {
+ phandle-list = <&provider1 1>,
+ <&provider2 2 0>,
+ <0>,
+ <&provider3 4 4 3>,
+ <&provider2 5 100>,
+ <&provider0>,
+ <&provider1 7>;
+ phandle-list-names = "first", "second", "third";
+
+ phandle-list-bad-phandle = <12345678 0 0>;
+ phandle-list-bad-args = <&provider2 1 0>,
+ <&provider3 0>;
+ empty-property;
+ unterminated-string = [40 41 42 43];
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/testcases/tests.dtsi b/arch/arm/boot/dts/testcases/tests.dtsi
new file mode 100644
index 00000000..a7c50676
--- /dev/null
+++ b/arch/arm/boot/dts/testcases/tests.dtsi
@@ -0,0 +1 @@
+/include/ "tests-phandle.dtsi"
diff --git a/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi b/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi
new file mode 100644
index 00000000..ad3eca17
--- /dev/null
+++ b/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi
@@ -0,0 +1,96 @@
+/*
+ * calao-dab-mmx.dtsi - Device Tree Include file for Calao DAB-MMX Daughter Board
+ *
+ * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD
+ *
+ * Licensed under GPLv2.
+ */
+
+/ {
+ ahb {
+ apb {
+ usart1: serial@fffb4000 {
+ status = "okay";
+ };
+
+ usart3: serial@fffd0000 {
+ status = "okay";
+ };
+ };
+ };
+
+ i2c-gpio@0 {
+ status = "okay";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ user_led1 {
+ label = "user_led1";
+ gpios = <&pioB 20 1>;
+ };
+
+/*
+* led already used by mother board but active as high
+* user_led2 {
+* label = "user_led2";
+* gpios = <&pioB 21 1>;
+* };
+*/
+ user_led3 {
+ label = "user_led3";
+ gpios = <&pioB 22 1>;
+ };
+
+ user_led4 {
+ label = "user_led4";
+ gpios = <&pioB 23 1>;
+ };
+
+ red {
+ label = "red";
+ gpios = <&pioB 24 1>;
+ };
+
+ orange {
+ label = "orange";
+ gpios = <&pioB 30 1>;
+ };
+
+ green {
+ label = "green";
+ gpios = <&pioB 31 1>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ user_pb1 {
+ label = "user_pb1";
+ gpios = <&pioB 25 1>;
+ linux,code = <0x100>;
+ };
+
+ user_pb2 {
+ label = "user_pb2";
+ gpios = <&pioB 13 1>;
+ linux,code = <0x101>;
+ };
+
+ user_pb3 {
+ label = "user_pb3";
+ gpios = <&pioA 26 1>;
+ linux,code = <0x102>;
+ };
+
+ user_pb4 {
+ label = "user_pb4";
+ gpios = <&pioC 9 1>;
+ linux,code = <0x103>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/usb_a9g20.dts b/arch/arm/boot/dts/usb_a9g20.dts
new file mode 100644
index 00000000..7c2399c5
--- /dev/null
+++ b/arch/arm/boot/dts/usb_a9g20.dts
@@ -0,0 +1,130 @@
+/*
+ * usb_a9g20.dts - Device Tree file for Caloa USB A9G20 board
+ *
+ * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD
+ *
+ * Licensed under GPLv2 or later.
+ */
+/dts-v1/;
+/include/ "at91sam9g20.dtsi"
+
+/ {
+ model = "Calao USB A9G20";
+ compatible = "calao,usb-a9g20", "atmel,at91sam9g20", "atmel,at91sam9";
+
+ chosen {
+ bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
+ };
+
+ memory {
+ reg = <0x20000000 0x4000000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ main_clock: clock@0 {
+ compatible = "atmel,osc", "fixed-clock";
+ clock-frequency = <12000000>;
+ };
+ };
+
+ ahb {
+ apb {
+ dbgu: serial@fffff200 {
+ status = "okay";
+ };
+
+ macb0: ethernet@fffc4000 {
+ phy-mode = "rmii";
+ status = "okay";
+ };
+
+ usb1: gadget@fffa4000 {
+ atmel,vbus-gpio = <&pioC 5 0>;
+ status = "okay";
+ };
+ };
+
+ nand0: nand@40000000 {
+ nand-bus-width = <8>;
+ nand-ecc-mode = "soft";
+ nand-on-flash-bbt;
+ status = "okay";
+
+ at91bootstrap@0 {
+ label = "at91bootstrap";
+ reg = <0x0 0x20000>;
+ };
+
+ barebox@20000 {
+ label = "barebox";
+ reg = <0x20000 0x40000>;
+ };
+
+ bareboxenv@60000 {
+ label = "bareboxenv";
+ reg = <0x60000 0x20000>;
+ };
+
+ bareboxenv2@80000 {
+ label = "bareboxenv2";
+ reg = <0x80000 0x20000>;
+ };
+
+ kernel@a0000 {
+ label = "kernel";
+ reg = <0xa0000 0x400000>;
+ };
+
+ rootfs@4a0000 {
+ label = "rootfs";
+ reg = <0x4a0000 0x7800000>;
+ };
+
+ data@7ca0000 {
+ label = "data";
+ reg = <0x7ca0000 0x8360000>;
+ };
+ };
+
+ usb0: ohci@00500000 {
+ num-ports = <2>;
+ status = "okay";
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ user_led {
+ label = "user_led";
+ gpios = <&pioB 21 1>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ user_pb {
+ label = "user_pb";
+ gpios = <&pioB 10 1>;
+ linux,code = <28>;
+ gpio-key,wakeup;
+ };
+ };
+
+ i2c@0 {
+ status = "okay";
+
+ rv3029c2@56 {
+ compatible = "rv3029c2";
+ reg = <0x56>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
new file mode 100644
index 00000000..e2fe3195
--- /dev/null
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -0,0 +1,192 @@
+/dts-v1/;
+/include/ "skeleton.dtsi"
+
+/ {
+ model = "ARM Versatile AB";
+ compatible = "arm,versatile-ab";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ interrupt-parent = <&vic>;
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ i2c0 = &i2c0;
+ };
+
+ memory {
+ reg = <0x0 0x08000000>;
+ };
+
+ flash@34000000 {
+ compatible = "arm,versatile-flash";
+ reg = <0x34000000 0x4000000>;
+ bank-width = <4>;
+ };
+
+ i2c0: i2c@10002000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "arm,versatile-i2c";
+ reg = <0x10002000 0x1000>;
+
+ rtc@68 {
+ compatible = "dallas,ds1338";
+ reg = <0x68>;
+ };
+ };
+
+ net@10010000 {
+ compatible = "smsc,lan91c111";
+ reg = <0x10010000 0x10000>;
+ interrupts = <25>;
+ };
+
+ lcd@10008000 {
+ compatible = "arm,versatile-lcd";
+ reg = <0x10008000 0x1000>;
+ };
+
+ amba {
+ compatible = "arm,amba-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ vic: intc@10140000 {
+ compatible = "arm,versatile-vic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x10140000 0x1000>;
+ };
+
+ sic: intc@10003000 {
+ compatible = "arm,versatile-sic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x10003000 0x1000>;
+ interrupt-parent = <&vic>;
+ interrupts = <31>; /* Cascaded to vic */
+ };
+
+ dma@10130000 {
+ compatible = "arm,pl081", "arm,primecell";
+ reg = <0x10130000 0x1000>;
+ interrupts = <17>;
+ };
+
+ uart0: uart@101f1000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x101f1000 0x1000>;
+ interrupts = <12>;
+ };
+
+ uart1: uart@101f2000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x101f2000 0x1000>;
+ interrupts = <13>;
+ };
+
+ uart2: uart@101f3000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x101f3000 0x1000>;
+ interrupts = <14>;
+ };
+
+ smc@10100000 {
+ compatible = "arm,primecell";
+ reg = <0x10100000 0x1000>;
+ };
+
+ mpmc@10110000 {
+ compatible = "arm,primecell";
+ reg = <0x10110000 0x1000>;
+ };
+
+ display@10120000 {
+ compatible = "arm,pl110", "arm,primecell";
+ reg = <0x10120000 0x1000>;
+ interrupts = <16>;
+ };
+
+ sctl@101e0000 {
+ compatible = "arm,primecell";
+ reg = <0x101e0000 0x1000>;
+ };
+
+ watchdog@101e1000 {
+ compatible = "arm,primecell";
+ reg = <0x101e1000 0x1000>;
+ interrupts = <0>;
+ };
+
+ gpio0: gpio@101e4000 {
+ compatible = "arm,pl061", "arm,primecell";
+ reg = <0x101e4000 0x1000>;
+ gpio-controller;
+ interrupts = <6>;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio1: gpio@101e5000 {
+ compatible = "arm,pl061", "arm,primecell";
+ reg = <0x101e5000 0x1000>;
+ interrupts = <7>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ rtc@101e8000 {
+ compatible = "arm,pl030", "arm,primecell";
+ reg = <0x101e8000 0x1000>;
+ interrupts = <10>;
+ };
+
+ sci@101f0000 {
+ compatible = "arm,primecell";
+ reg = <0x101f0000 0x1000>;
+ interrupts = <15>;
+ };
+
+ ssp@101f4000 {
+ compatible = "arm,pl022", "arm,primecell";
+ reg = <0x101f4000 0x1000>;
+ interrupts = <11>;
+ };
+
+ fpga {
+ compatible = "arm,versatile-fpga", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x10000000 0x10000>;
+
+ aaci@4000 {
+ compatible = "arm,primecell";
+ reg = <0x4000 0x1000>;
+ interrupts = <24>;
+ };
+ mmc@5000 {
+ compatible = "arm,primecell";
+ reg = < 0x5000 0x1000>;
+ interrupts = <22 34>;
+ };
+ kmi@6000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x6000 0x1000>;
+ interrupt-parent = <&sic>;
+ interrupts = <3>;
+ };
+ kmi@7000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x7000 0x1000>;
+ interrupt-parent = <&sic>;
+ interrupts = <4>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts
new file mode 100644
index 00000000..7e817526
--- /dev/null
+++ b/arch/arm/boot/dts/versatile-pb.dts
@@ -0,0 +1,50 @@
+/include/ "versatile-ab.dts"
+
+/ {
+ model = "ARM Versatile PB";
+ compatible = "arm,versatile-pb";
+
+ amba {
+ gpio2: gpio@101e6000 {
+ compatible = "arm,pl061", "arm,primecell";
+ reg = <0x101e6000 0x1000>;
+ interrupts = <8>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio3: gpio@101e7000 {
+ compatible = "arm,pl061", "arm,primecell";
+ reg = <0x101e7000 0x1000>;
+ interrupts = <9>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ fpga {
+ uart@9000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x9000 0x1000>;
+ interrupt-parent = <&sic>;
+ interrupts = <6>;
+ };
+ sci@a000 {
+ compatible = "arm,primecell";
+ reg = <0xa000 0x1000>;
+ interrupt-parent = <&sic>;
+ interrupts = <5>;
+ };
+ mmc@b000 {
+ compatible = "arm,primecell";
+ reg = <0xb000 0x1000>;
+ interrupts = <23 34>;
+ };
+ };
+ };
+};
+
+/include/ "testcases/tests.dtsi"
diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
new file mode 100644
index 00000000..16076e2d
--- /dev/null
+++ b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
@@ -0,0 +1,201 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ * Motherboard Express uATX
+ * V2M-P1
+ *
+ * HBI-0190D
+ *
+ * RS1 memory map ("ARM Cortex-A Series memory map" in the board's
+ * Technical Reference Manual)
+ *
+ * WARNING! The hardware described in this file is independent from the
+ * original variant (vexpress-v2m.dtsi), but there is a strong
+ * correspondence between the two configurations.
+ *
+ * TAKE CARE WHEN MAINTAINING THIS FILE TO PROPAGATE ANY RELEVANT
+ * CHANGES TO vexpress-v2m.dtsi!
+ */
+
+/ {
+ aliases {
+ arm,v2m_timer = &v2m_timer01;
+ };
+
+ motherboard {
+ compatible = "simple-bus";
+ arm,v2m-memory-map = "rs1";
+ #address-cells = <2>; /* SMB chipselect number and offset */
+ #size-cells = <1>;
+ #interrupt-cells = <1>;
+
+ flash@0,00000000 {
+ compatible = "arm,vexpress-flash", "cfi-flash";
+ reg = <0 0x00000000 0x04000000>,
+ <4 0x00000000 0x04000000>;
+ bank-width = <4>;
+ };
+
+ psram@1,00000000 {
+ compatible = "arm,vexpress-psram", "mtd-ram";
+ reg = <1 0x00000000 0x02000000>;
+ bank-width = <4>;
+ };
+
+ vram@2,00000000 {
+ compatible = "arm,vexpress-vram";
+ reg = <2 0x00000000 0x00800000>;
+ };
+
+ ethernet@2,02000000 {
+ compatible = "smsc,lan9118", "smsc,lan9115";
+ reg = <2 0x02000000 0x10000>;
+ interrupts = <15>;
+ phy-mode = "mii";
+ reg-io-width = <4>;
+ smsc,irq-active-high;
+ smsc,irq-push-pull;
+ };
+
+ usb@2,03000000 {
+ compatible = "nxp,usb-isp1761";
+ reg = <2 0x03000000 0x20000>;
+ interrupts = <16>;
+ port1-otg;
+ };
+
+ iofpga@3,00000000 {
+ compatible = "arm,amba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 3 0 0x200000>;
+
+ sysreg@010000 {
+ compatible = "arm,vexpress-sysreg";
+ reg = <0x010000 0x1000>;
+ };
+
+ sysctl@020000 {
+ compatible = "arm,sp810", "arm,primecell";
+ reg = <0x020000 0x1000>;
+ };
+
+ /* PCI-E I2C bus */
+ v2m_i2c_pcie: i2c@030000 {
+ compatible = "arm,versatile-i2c";
+ reg = <0x030000 0x1000>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pcie-switch@60 {
+ compatible = "idt,89hpes32h8";
+ reg = <0x60>;
+ };
+ };
+
+ aaci@040000 {
+ compatible = "arm,pl041", "arm,primecell";
+ reg = <0x040000 0x1000>;
+ interrupts = <11>;
+ };
+
+ mmci@050000 {
+ compatible = "arm,pl180", "arm,primecell";
+ reg = <0x050000 0x1000>;
+ interrupts = <9 10>;
+ };
+
+ kmi@060000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x060000 0x1000>;
+ interrupts = <12>;
+ };
+
+ kmi@070000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x070000 0x1000>;
+ interrupts = <13>;
+ };
+
+ v2m_serial0: uart@090000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x090000 0x1000>;
+ interrupts = <5>;
+ };
+
+ v2m_serial1: uart@0a0000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0a0000 0x1000>;
+ interrupts = <6>;
+ };
+
+ v2m_serial2: uart@0b0000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0b0000 0x1000>;
+ interrupts = <7>;
+ };
+
+ v2m_serial3: uart@0c0000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0c0000 0x1000>;
+ interrupts = <8>;
+ };
+
+ wdt@0f0000 {
+ compatible = "arm,sp805", "arm,primecell";
+ reg = <0x0f0000 0x1000>;
+ interrupts = <0>;
+ };
+
+ v2m_timer01: timer@110000 {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0x110000 0x1000>;
+ interrupts = <2>;
+ };
+
+ v2m_timer23: timer@120000 {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0x120000 0x1000>;
+ };
+
+ /* DVI I2C bus */
+ v2m_i2c_dvi: i2c@160000 {
+ compatible = "arm,versatile-i2c";
+ reg = <0x160000 0x1000>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dvi-transmitter@39 {
+ compatible = "sil,sii9022-tpi", "sil,sii9022";
+ reg = <0x39>;
+ };
+
+ dvi-transmitter@60 {
+ compatible = "sil,sii9022-cpi", "sil,sii9022";
+ reg = <0x60>;
+ };
+ };
+
+ rtc@170000 {
+ compatible = "arm,pl031", "arm,primecell";
+ reg = <0x170000 0x1000>;
+ interrupts = <4>;
+ };
+
+ compact-flash@1a0000 {
+ compatible = "arm,vexpress-cf", "ata-generic";
+ reg = <0x1a0000 0x100
+ 0x1a0100 0xf00>;
+ reg-shift = <2>;
+ };
+
+ clcd@1f0000 {
+ compatible = "arm,pl111", "arm,primecell";
+ reg = <0x1f0000 0x1000>;
+ interrupts = <14>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/vexpress-v2m.dtsi b/arch/arm/boot/dts/vexpress-v2m.dtsi
new file mode 100644
index 00000000..a6c9c7c8
--- /dev/null
+++ b/arch/arm/boot/dts/vexpress-v2m.dtsi
@@ -0,0 +1,200 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ * Motherboard Express uATX
+ * V2M-P1
+ *
+ * HBI-0190D
+ *
+ * Original memory map ("Legacy memory map" in the board's
+ * Technical Reference Manual)
+ *
+ * WARNING! The hardware described in this file is independent from the
+ * RS1 variant (vexpress-v2m-rs1.dtsi), but there is a strong
+ * correspondence between the two configurations.
+ *
+ * TAKE CARE WHEN MAINTAINING THIS FILE TO PROPAGATE ANY RELEVANT
+ * CHANGES TO vexpress-v2m-rs1.dtsi!
+ */
+
+/ {
+ aliases {
+ arm,v2m_timer = &v2m_timer01;
+ };
+
+ motherboard {
+ compatible = "simple-bus";
+ #address-cells = <2>; /* SMB chipselect number and offset */
+ #size-cells = <1>;
+ #interrupt-cells = <1>;
+
+ flash@0,00000000 {
+ compatible = "arm,vexpress-flash", "cfi-flash";
+ reg = <0 0x00000000 0x04000000>,
+ <1 0x00000000 0x04000000>;
+ bank-width = <4>;
+ };
+
+ psram@2,00000000 {
+ compatible = "arm,vexpress-psram", "mtd-ram";
+ reg = <2 0x00000000 0x02000000>;
+ bank-width = <4>;
+ };
+
+ vram@3,00000000 {
+ compatible = "arm,vexpress-vram";
+ reg = <3 0x00000000 0x00800000>;
+ };
+
+ ethernet@3,02000000 {
+ compatible = "smsc,lan9118", "smsc,lan9115";
+ reg = <3 0x02000000 0x10000>;
+ interrupts = <15>;
+ phy-mode = "mii";
+ reg-io-width = <4>;
+ smsc,irq-active-high;
+ smsc,irq-push-pull;
+ };
+
+ usb@3,03000000 {
+ compatible = "nxp,usb-isp1761";
+ reg = <3 0x03000000 0x20000>;
+ interrupts = <16>;
+ port1-otg;
+ };
+
+ iofpga@7,00000000 {
+ compatible = "arm,amba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 7 0 0x20000>;
+
+ sysreg@00000 {
+ compatible = "arm,vexpress-sysreg";
+ reg = <0x00000 0x1000>;
+ };
+
+ sysctl@01000 {
+ compatible = "arm,sp810", "arm,primecell";
+ reg = <0x01000 0x1000>;
+ };
+
+ /* PCI-E I2C bus */
+ v2m_i2c_pcie: i2c@02000 {
+ compatible = "arm,versatile-i2c";
+ reg = <0x02000 0x1000>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pcie-switch@60 {
+ compatible = "idt,89hpes32h8";
+ reg = <0x60>;
+ };
+ };
+
+ aaci@04000 {
+ compatible = "arm,pl041", "arm,primecell";
+ reg = <0x04000 0x1000>;
+ interrupts = <11>;
+ };
+
+ mmci@05000 {
+ compatible = "arm,pl180", "arm,primecell";
+ reg = <0x05000 0x1000>;
+ interrupts = <9 10>;
+ };
+
+ kmi@06000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x06000 0x1000>;
+ interrupts = <12>;
+ };
+
+ kmi@07000 {
+ compatible = "arm,pl050", "arm,primecell";
+ reg = <0x07000 0x1000>;
+ interrupts = <13>;
+ };
+
+ v2m_serial0: uart@09000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x09000 0x1000>;
+ interrupts = <5>;
+ };
+
+ v2m_serial1: uart@0a000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0a000 0x1000>;
+ interrupts = <6>;
+ };
+
+ v2m_serial2: uart@0b000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0b000 0x1000>;
+ interrupts = <7>;
+ };
+
+ v2m_serial3: uart@0c000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0c000 0x1000>;
+ interrupts = <8>;
+ };
+
+ wdt@0f000 {
+ compatible = "arm,sp805", "arm,primecell";
+ reg = <0x0f000 0x1000>;
+ interrupts = <0>;
+ };
+
+ v2m_timer01: timer@11000 {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0x11000 0x1000>;
+ interrupts = <2>;
+ };
+
+ v2m_timer23: timer@12000 {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0x12000 0x1000>;
+ };
+
+ /* DVI I2C bus */
+ v2m_i2c_dvi: i2c@16000 {
+ compatible = "arm,versatile-i2c";
+ reg = <0x16000 0x1000>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dvi-transmitter@39 {
+ compatible = "sil,sii9022-tpi", "sil,sii9022";
+ reg = <0x39>;
+ };
+
+ dvi-transmitter@60 {
+ compatible = "sil,sii9022-cpi", "sil,sii9022";
+ reg = <0x60>;
+ };
+ };
+
+ rtc@17000 {
+ compatible = "arm,pl031", "arm,primecell";
+ reg = <0x17000 0x1000>;
+ interrupts = <4>;
+ };
+
+ compact-flash@1a000 {
+ compatible = "arm,vexpress-cf", "ata-generic";
+ reg = <0x1a000 0x100
+ 0x1a100 0xf00>;
+ reg-shift = <2>;
+ };
+
+ clcd@1f000 {
+ compatible = "arm,pl111", "arm,primecell";
+ reg = <0x1f000 0x1000>;
+ interrupts = <14>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
new file mode 100644
index 00000000..941b161a
--- /dev/null
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
@@ -0,0 +1,157 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ * CoreTile Express A15x2 (version with Test Chip 1)
+ * Cortex-A15 MPCore (V2P-CA15)
+ *
+ * HBI-0237A
+ */
+
+/dts-v1/;
+
+/ {
+ model = "V2P-CA15";
+ arm,hbi = <0x237>;
+ compatible = "arm,vexpress,v2p-ca15,tc1", "arm,vexpress,v2p-ca15", "arm,vexpress";
+ interrupt-parent = <&gic>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chosen { };
+
+ aliases {
+ serial0 = &v2m_serial0;
+ serial1 = &v2m_serial1;
+ serial2 = &v2m_serial2;
+ serial3 = &v2m_serial3;
+ i2c0 = &v2m_i2c_dvi;
+ i2c1 = &v2m_i2c_pcie;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <0>;
+ };
+
+ cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <1>;
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x80000000 0x40000000>;
+ };
+
+ hdlcd@2b000000 {
+ compatible = "arm,hdlcd";
+ reg = <0x2b000000 0x1000>;
+ interrupts = <0 85 4>;
+ };
+
+ memory-controller@2b0a0000 {
+ compatible = "arm,pl341", "arm,primecell";
+ reg = <0x2b0a0000 0x1000>;
+ };
+
+ wdt@2b060000 {
+ compatible = "arm,sp805", "arm,primecell";
+ reg = <0x2b060000 0x1000>;
+ interrupts = <98>;
+ };
+
+ gic: interrupt-controller@2c001000 {
+ compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #address-cells = <0>;
+ interrupt-controller;
+ reg = <0x2c001000 0x1000>,
+ <0x2c002000 0x100>;
+ };
+
+ memory-controller@7ffd0000 {
+ compatible = "arm,pl354", "arm,primecell";
+ reg = <0x7ffd0000 0x1000>;
+ interrupts = <0 86 4>,
+ <0 87 4>;
+ };
+
+ dma@7ffb0000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x7ffb0000 0x1000>;
+ interrupts = <0 92 4>,
+ <0 88 4>,
+ <0 89 4>,
+ <0 90 4>,
+ <0 91 4>;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a15-pmu", "arm,cortex-a9-pmu";
+ interrupts = <0 68 4>,
+ <0 69 4>;
+ };
+
+ motherboard {
+ ranges = <0 0 0x08000000 0x04000000>,
+ <1 0 0x14000000 0x04000000>,
+ <2 0 0x18000000 0x04000000>,
+ <3 0 0x1c000000 0x04000000>,
+ <4 0 0x0c000000 0x04000000>,
+ <5 0 0x10000000 0x04000000>;
+
+ interrupt-map-mask = <0 0 63>;
+ interrupt-map = <0 0 0 &gic 0 0 4>,
+ <0 0 1 &gic 0 1 4>,
+ <0 0 2 &gic 0 2 4>,
+ <0 0 3 &gic 0 3 4>,
+ <0 0 4 &gic 0 4 4>,
+ <0 0 5 &gic 0 5 4>,
+ <0 0 6 &gic 0 6 4>,
+ <0 0 7 &gic 0 7 4>,
+ <0 0 8 &gic 0 8 4>,
+ <0 0 9 &gic 0 9 4>,
+ <0 0 10 &gic 0 10 4>,
+ <0 0 11 &gic 0 11 4>,
+ <0 0 12 &gic 0 12 4>,
+ <0 0 13 &gic 0 13 4>,
+ <0 0 14 &gic 0 14 4>,
+ <0 0 15 &gic 0 15 4>,
+ <0 0 16 &gic 0 16 4>,
+ <0 0 17 &gic 0 17 4>,
+ <0 0 18 &gic 0 18 4>,
+ <0 0 19 &gic 0 19 4>,
+ <0 0 20 &gic 0 20 4>,
+ <0 0 21 &gic 0 21 4>,
+ <0 0 22 &gic 0 22 4>,
+ <0 0 23 &gic 0 23 4>,
+ <0 0 24 &gic 0 24 4>,
+ <0 0 25 &gic 0 25 4>,
+ <0 0 26 &gic 0 26 4>,
+ <0 0 27 &gic 0 27 4>,
+ <0 0 28 &gic 0 28 4>,
+ <0 0 29 &gic 0 29 4>,
+ <0 0 30 &gic 0 30 4>,
+ <0 0 31 &gic 0 31 4>,
+ <0 0 32 &gic 0 32 4>,
+ <0 0 33 &gic 0 33 4>,
+ <0 0 34 &gic 0 34 4>,
+ <0 0 35 &gic 0 35 4>,
+ <0 0 36 &gic 0 36 4>,
+ <0 0 37 &gic 0 37 4>,
+ <0 0 38 &gic 0 38 4>,
+ <0 0 39 &gic 0 39 4>,
+ <0 0 40 &gic 0 40 4>,
+ <0 0 41 &gic 0 41 4>,
+ <0 0 42 &gic 0 42 4>;
+ };
+};
+
+/include/ "vexpress-v2m-rs1.dtsi"
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
new file mode 100644
index 00000000..6905e66d
--- /dev/null
+++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
@@ -0,0 +1,162 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ * CoreTile Express A5x2
+ * Cortex-A5 MPCore (V2P-CA5s)
+ *
+ * HBI-0225B
+ */
+
+/dts-v1/;
+
+/ {
+ model = "V2P-CA5s";
+ arm,hbi = <0x225>;
+ compatible = "arm,vexpress,v2p-ca5s", "arm,vexpress";
+ interrupt-parent = <&gic>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chosen { };
+
+ aliases {
+ serial0 = &v2m_serial0;
+ serial1 = &v2m_serial1;
+ serial2 = &v2m_serial2;
+ serial3 = &v2m_serial3;
+ i2c0 = &v2m_i2c_dvi;
+ i2c1 = &v2m_i2c_pcie;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a5";
+ reg = <0>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a5";
+ reg = <1>;
+ next-level-cache = <&L2>;
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x80000000 0x40000000>;
+ };
+
+ hdlcd@2a110000 {
+ compatible = "arm,hdlcd";
+ reg = <0x2a110000 0x1000>;
+ interrupts = <0 85 4>;
+ };
+
+ memory-controller@2a150000 {
+ compatible = "arm,pl341", "arm,primecell";
+ reg = <0x2a150000 0x1000>;
+ };
+
+ memory-controller@2a190000 {
+ compatible = "arm,pl354", "arm,primecell";
+ reg = <0x2a190000 0x1000>;
+ interrupts = <0 86 4>,
+ <0 87 4>;
+ };
+
+ scu@2c000000 {
+ compatible = "arm,cortex-a5-scu";
+ reg = <0x2c000000 0x58>;
+ };
+
+ timer@2c000600 {
+ compatible = "arm,cortex-a5-twd-timer";
+ reg = <0x2c000600 0x38>;
+ interrupts = <1 2 0x304>,
+ <1 3 0x304>;
+ };
+
+ gic: interrupt-controller@2c001000 {
+ compatible = "arm,corex-a5-gic", "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #address-cells = <0>;
+ interrupt-controller;
+ reg = <0x2c001000 0x1000>,
+ <0x2c000100 0x100>;
+ };
+
+ L2: cache-controller@2c0f0000 {
+ compatible = "arm,pl310-cache";
+ reg = <0x2c0f0000 0x1000>;
+ interrupts = <0 84 4>;
+ cache-level = <2>;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a5-pmu", "arm,cortex-a9-pmu";
+ interrupts = <0 68 4>,
+ <0 69 4>;
+ };
+
+ motherboard {
+ ranges = <0 0 0x08000000 0x04000000>,
+ <1 0 0x14000000 0x04000000>,
+ <2 0 0x18000000 0x04000000>,
+ <3 0 0x1c000000 0x04000000>,
+ <4 0 0x0c000000 0x04000000>,
+ <5 0 0x10000000 0x04000000>;
+
+ interrupt-map-mask = <0 0 63>;
+ interrupt-map = <0 0 0 &gic 0 0 4>,
+ <0 0 1 &gic 0 1 4>,
+ <0 0 2 &gic 0 2 4>,
+ <0 0 3 &gic 0 3 4>,
+ <0 0 4 &gic 0 4 4>,
+ <0 0 5 &gic 0 5 4>,
+ <0 0 6 &gic 0 6 4>,
+ <0 0 7 &gic 0 7 4>,
+ <0 0 8 &gic 0 8 4>,
+ <0 0 9 &gic 0 9 4>,
+ <0 0 10 &gic 0 10 4>,
+ <0 0 11 &gic 0 11 4>,
+ <0 0 12 &gic 0 12 4>,
+ <0 0 13 &gic 0 13 4>,
+ <0 0 14 &gic 0 14 4>,
+ <0 0 15 &gic 0 15 4>,
+ <0 0 16 &gic 0 16 4>,
+ <0 0 17 &gic 0 17 4>,
+ <0 0 18 &gic 0 18 4>,
+ <0 0 19 &gic 0 19 4>,
+ <0 0 20 &gic 0 20 4>,
+ <0 0 21 &gic 0 21 4>,
+ <0 0 22 &gic 0 22 4>,
+ <0 0 23 &gic 0 23 4>,
+ <0 0 24 &gic 0 24 4>,
+ <0 0 25 &gic 0 25 4>,
+ <0 0 26 &gic 0 26 4>,
+ <0 0 27 &gic 0 27 4>,
+ <0 0 28 &gic 0 28 4>,
+ <0 0 29 &gic 0 29 4>,
+ <0 0 30 &gic 0 30 4>,
+ <0 0 31 &gic 0 31 4>,
+ <0 0 32 &gic 0 32 4>,
+ <0 0 33 &gic 0 33 4>,
+ <0 0 34 &gic 0 34 4>,
+ <0 0 35 &gic 0 35 4>,
+ <0 0 36 &gic 0 36 4>,
+ <0 0 37 &gic 0 37 4>,
+ <0 0 38 &gic 0 38 4>,
+ <0 0 39 &gic 0 39 4>,
+ <0 0 40 &gic 0 40 4>,
+ <0 0 41 &gic 0 41 4>,
+ <0 0 42 &gic 0 42 4>;
+ };
+};
+
+/include/ "vexpress-v2m-rs1.dtsi"
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
new file mode 100644
index 00000000..da778693
--- /dev/null
+++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
@@ -0,0 +1,192 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ * CoreTile Express A9x4
+ * Cortex-A9 MPCore (V2P-CA9)
+ *
+ * HBI-0191B
+ */
+
+/dts-v1/;
+
+/ {
+ model = "V2P-CA9";
+ arm,hbi = <0x191>;
+ compatible = "arm,vexpress,v2p-ca9", "arm,vexpress";
+ interrupt-parent = <&gic>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chosen { };
+
+ aliases {
+ serial0 = &v2m_serial0;
+ serial1 = &v2m_serial1;
+ serial2 = &v2m_serial2;
+ serial3 = &v2m_serial3;
+ i2c0 = &v2m_i2c_dvi;
+ i2c1 = &v2m_i2c_pcie;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a9";
+ reg = <0>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a9";
+ reg = <1>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a9";
+ reg = <2>;
+ next-level-cache = <&L2>;
+ };
+
+ cpu@3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a9";
+ reg = <3>;
+ next-level-cache = <&L2>;
+ };
+ };
+
+ memory@60000000 {
+ device_type = "memory";
+ reg = <0x60000000 0x40000000>;
+ };
+
+ clcd@10020000 {
+ compatible = "arm,pl111", "arm,primecell";
+ reg = <0x10020000 0x1000>;
+ interrupts = <0 44 4>;
+ };
+
+ memory-controller@100e0000 {
+ compatible = "arm,pl341", "arm,primecell";
+ reg = <0x100e0000 0x1000>;
+ };
+
+ memory-controller@100e1000 {
+ compatible = "arm,pl354", "arm,primecell";
+ reg = <0x100e1000 0x1000>;
+ interrupts = <0 45 4>,
+ <0 46 4>;
+ };
+
+ timer@100e4000 {
+ compatible = "arm,sp804", "arm,primecell";
+ reg = <0x100e4000 0x1000>;
+ interrupts = <0 48 4>,
+ <0 49 4>;
+ };
+
+ watchdog@100e5000 {
+ compatible = "arm,sp805", "arm,primecell";
+ reg = <0x100e5000 0x1000>;
+ interrupts = <0 51 4>;
+ };
+
+ scu@1e000000 {
+ compatible = "arm,cortex-a9-scu";
+ reg = <0x1e000000 0x58>;
+ };
+
+ timer@1e000600 {
+ compatible = "arm,cortex-a9-twd-timer";
+ reg = <0x1e000600 0x20>;
+ interrupts = <1 2 0xf04>,
+ <1 3 0xf04>;
+ };
+
+ gic: interrupt-controller@1e001000 {
+ compatible = "arm,cortex-a9-gic";
+ #interrupt-cells = <3>;
+ #address-cells = <0>;
+ interrupt-controller;
+ reg = <0x1e001000 0x1000>,
+ <0x1e000100 0x100>;
+ };
+
+ L2: cache-controller@1e00a000 {
+ compatible = "arm,pl310-cache";
+ reg = <0x1e00a000 0x1000>;
+ interrupts = <0 43 4>;
+ cache-level = <2>;
+ arm,data-latency = <1 1 1>;
+ arm,tag-latency = <1 1 1>;
+ };
+
+ pmu {
+ compatible = "arm,cortex-a9-pmu";
+ interrupts = <0 60 4>,
+ <0 61 4>,
+ <0 62 4>,
+ <0 63 4>;
+ };
+
+ motherboard {
+ ranges = <0 0 0x40000000 0x04000000>,
+ <1 0 0x44000000 0x04000000>,
+ <2 0 0x48000000 0x04000000>,
+ <3 0 0x4c000000 0x04000000>,
+ <7 0 0x10000000 0x00020000>;
+
+ interrupt-map-mask = <0 0 63>;
+ interrupt-map = <0 0 0 &gic 0 0 4>,
+ <0 0 1 &gic 0 1 4>,
+ <0 0 2 &gic 0 2 4>,
+ <0 0 3 &gic 0 3 4>,
+ <0 0 4 &gic 0 4 4>,
+ <0 0 5 &gic 0 5 4>,
+ <0 0 6 &gic 0 6 4>,
+ <0 0 7 &gic 0 7 4>,
+ <0 0 8 &gic 0 8 4>,
+ <0 0 9 &gic 0 9 4>,
+ <0 0 10 &gic 0 10 4>,
+ <0 0 11 &gic 0 11 4>,
+ <0 0 12 &gic 0 12 4>,
+ <0 0 13 &gic 0 13 4>,
+ <0 0 14 &gic 0 14 4>,
+ <0 0 15 &gic 0 15 4>,
+ <0 0 16 &gic 0 16 4>,
+ <0 0 17 &gic 0 17 4>,
+ <0 0 18 &gic 0 18 4>,
+ <0 0 19 &gic 0 19 4>,
+ <0 0 20 &gic 0 20 4>,
+ <0 0 21 &gic 0 21 4>,
+ <0 0 22 &gic 0 22 4>,
+ <0 0 23 &gic 0 23 4>,
+ <0 0 24 &gic 0 24 4>,
+ <0 0 25 &gic 0 25 4>,
+ <0 0 26 &gic 0 26 4>,
+ <0 0 27 &gic 0 27 4>,
+ <0 0 28 &gic 0 28 4>,
+ <0 0 29 &gic 0 29 4>,
+ <0 0 30 &gic 0 30 4>,
+ <0 0 31 &gic 0 31 4>,
+ <0 0 32 &gic 0 32 4>,
+ <0 0 33 &gic 0 33 4>,
+ <0 0 34 &gic 0 34 4>,
+ <0 0 35 &gic 0 35 4>,
+ <0 0 36 &gic 0 36 4>,
+ <0 0 37 &gic 0 37 4>,
+ <0 0 38 &gic 0 38 4>,
+ <0 0 39 &gic 0 39 4>,
+ <0 0 40 &gic 0 40 4>,
+ <0 0 41 &gic 0 41 4>,
+ <0 0 42 &gic 0 42 4>;
+ };
+};
+
+/include/ "vexpress-v2m.dtsi"
diff --git a/arch/arm/boot/dts/zynq-ep107.dts b/arch/arm/boot/dts/zynq-ep107.dts
new file mode 100644
index 00000000..37ca192f
--- /dev/null
+++ b/arch/arm/boot/dts/zynq-ep107.dts
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 Xilinx
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+/ {
+ model = "Xilinx Zynq EP107";
+ compatible = "xlnx,zynq-ep107";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ interrupt-parent = <&intc>;
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x10000000>;
+ };
+
+ chosen {
+ bootargs = "console=ttyPS0,9600 root=/dev/ram rw initrd=0x800000,8M earlyprintk";
+ linux,stdout-path = &uart0;
+ };
+
+ amba {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ intc: interrupt-controller@f8f01000 {
+ interrupt-controller;
+ compatible = "arm,gic";
+ reg = <0xF8F01000 0x1000>;
+ #interrupt-cells = <2>;
+ };
+
+ uart0: uart@e0000000 {
+ compatible = "xlnx,xuartps";
+ reg = <0xE0000000 0x1000>;
+ interrupts = <59 0>;
+ clock = <50000000>;
+ };
+ };
+};
diff --git a/arch/arm/boot/install.sh b/arch/arm/boot/install.sh
new file mode 100644
index 00000000..06ea7d42
--- /dev/null
+++ b/arch/arm/boot/install.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# arch/arm/boot/install.sh
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License. See the file "COPYING" in the main directory of this archive
+# for more details.
+#
+# Copyright (C) 1995 by Linus Torvalds
+#
+# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
+# Adapted from code in arch/i386/boot/install.sh by Russell King
+#
+# "make install" script for arm architecture
+#
+# Arguments:
+# $1 - kernel version
+# $2 - kernel image file
+# $3 - kernel map file
+# $4 - default install path (blank if root directory)
+#
+
+# User may have a custom install script
+if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
+if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
+
+if [ "$(basename $2)" = "zImage" ]; then
+# Compressed install
+ echo "Installing compressed kernel"
+ base=vmlinuz
+else
+# Normal install
+ echo "Installing normal kernel"
+ base=vmlinux
+fi
+
+if [ -f $4/$base-$1 ]; then
+ mv $4/$base-$1 $4/$base-$1.old
+fi
+cat $2 > $4/$base-$1
+
+# Install system map file
+if [ -f $4/System.map-$1 ]; then
+ mv $4/System.map-$1 $4/System.map-$1.old
+fi
+cp $3 $4/System.map-$1
+
+if [ -x /sbin/loadmap ]; then
+ /sbin/loadmap
+else
+ echo "You have to install it yourself"
+fi
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
new file mode 100644
index 00000000..271dd136
--- /dev/null
+++ b/arch/arm/common/Kconfig
@@ -0,0 +1,92 @@
+config ARM_GIC
+ select IRQ_DOMAIN
+ select MULTI_IRQ_HANDLER
+ bool
+
+config GIC_NON_BANKED
+ bool
+
+config ARM_VIC
+ select IRQ_DOMAIN
+ select MULTI_IRQ_HANDLER
+ bool
+
+config ARM_VIC_NR
+ int
+ default 4 if ARCH_S5PV210
+ default 3 if ARCH_S5PC100
+ default 2
+ depends on ARM_VIC
+ help
+ The maximum number of VICs available in the system, for
+ power management.
+
+config ICST
+ bool
+
+config SA1111
+ bool
+ select DMABOUNCE if !ARCH_PXA
+
+config DMABOUNCE
+ bool
+ select ZONE_DMA
+
+config SHARP_LOCOMO
+ bool
+
+config SHARP_PARAM
+ bool
+
+config SHARP_SCOOP
+ bool
+
+config FIQ_GLUE
+ bool
+ select FIQ
+
+config FIQ_DEBUGGER
+ bool "FIQ Mode Serial Debugger"
+ select FIQ
+ select FIQ_GLUE
+ default n
+ help
+ The FIQ serial debugger can accept commands even when the
+ kernel is unresponsive due to being stuck with interrupts
+ disabled.
+
+
+config FIQ_DEBUGGER_NO_SLEEP
+ bool "Keep serial debugger active"
+ depends on FIQ_DEBUGGER
+ default n
+ help
+ Enables the serial debugger at boot. Passing
+ fiq_debugger.no_sleep on the kernel commandline will
+ override this config option.
+
+config FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON
+ bool "Don't disable wakeup IRQ when debugger is active"
+ depends on FIQ_DEBUGGER
+ default n
+ help
+ Don't disable the wakeup irq when enabling the uart clock. This will
+ cause extra interrupts, but it makes the serial debugger usable with
+ on some MSM radio builds that ignore the uart clock request in power
+ collapse.
+
+config FIQ_DEBUGGER_CONSOLE
+ bool "Console on FIQ Serial Debugger port"
+ depends on FIQ_DEBUGGER
+ default n
+ help
+ Enables a console so that printk messages are displayed on
+ the debugger serial port as the occur.
+
+config FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE
+ bool "Put the FIQ debugger into console mode by default"
+ depends on FIQ_DEBUGGER_CONSOLE
+ default n
+ help
+ If enabled, this puts the fiq debugger into console mode by default.
+ Otherwise, the fiq debugger will start out in debug mode.
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
new file mode 100644
index 00000000..87271e0c
--- /dev/null
+++ b/arch/arm/common/Makefile
@@ -0,0 +1,20 @@
+#
+# Makefile for the linux kernel.
+#
+
+obj-y += platform.o pci_wmt.o pci.o
+obj-$(CONFIG_ARM_GIC) += gic.o
+obj-$(CONFIG_ARM_VIC) += vic.o
+obj-$(CONFIG_ICST) += icst.o
+obj-$(CONFIG_SA1111) += sa1111.o
+obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o
+obj-$(CONFIG_DMABOUNCE) += dmabounce.o
+obj-$(CONFIG_SHARP_LOCOMO) += locomo.o
+obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o
+obj-$(CONFIG_SHARP_SCOOP) += scoop.o
+obj-$(CONFIG_ARCH_IXP2000) += uengine.o
+obj-$(CONFIG_ARCH_IXP23XX) += uengine.o
+obj-$(CONFIG_PCI_HOST_ITE8152) += it8152.o
+obj-$(CONFIG_ARM_TIMER_SP804) += timer-sp.o
+obj-$(CONFIG_FIQ_GLUE) += fiq_glue.o fiq_glue_setup.o
+obj-$(CONFIG_FIQ_DEBUGGER) += fiq_debugger.o
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c
new file mode 100644
index 00000000..595ecd29
--- /dev/null
+++ b/arch/arm/common/dmabounce.c
@@ -0,0 +1,532 @@
+/*
+ * arch/arm/common/dmabounce.c
+ *
+ * Special dma_{map/unmap/dma_sync}_* routines for systems that have
+ * limited DMA windows. These functions utilize bounce buffers to
+ * copy data to/from buffers located outside the DMA region. This
+ * only works for systems in which DMA memory is at the bottom of
+ * RAM, the remainder of memory is at the top and the DMA memory
+ * can be marked as ZONE_DMA. Anything beyond that such as discontiguous
+ * DMA windows will require custom implementations that reserve memory
+ * areas at early bootup.
+ *
+ * Original version by Brad Parker (brad@heeltoe.com)
+ * Re-written by Christopher Hoover
+ * Made generic by Deepak Saxena
+ *
+ * Copyright (C) 2002 Hewlett Packard Company.
+ * Copyright (C) 2004 MontaVista Software, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+#undef STATS
+
+#ifdef STATS
+#define DO_STATS(X) do { X ; } while (0)
+#else
+#define DO_STATS(X) do { } while (0)
+#endif
+
+/* ************************************************** */
+
+struct safe_buffer {
+ struct list_head node;
+
+ /* original request */
+ void *ptr;
+ size_t size;
+ int direction;
+
+ /* safe buffer info */
+ struct dmabounce_pool *pool;
+ void *safe;
+ dma_addr_t safe_dma_addr;
+};
+
+struct dmabounce_pool {
+ unsigned long size;
+ struct dma_pool *pool;
+#ifdef STATS
+ unsigned long allocs;
+#endif
+};
+
+struct dmabounce_device_info {
+ struct device *dev;
+ struct list_head safe_buffers;
+#ifdef STATS
+ unsigned long total_allocs;
+ unsigned long map_op_count;
+ unsigned long bounce_count;
+ int attr_res;
+#endif
+ struct dmabounce_pool small;
+ struct dmabounce_pool large;
+
+ rwlock_t lock;
+
+ int (*needs_bounce)(struct device *, dma_addr_t, size_t);
+};
+
+#ifdef STATS
+static ssize_t dmabounce_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
+ return sprintf(buf, "%lu %lu %lu %lu %lu %lu\n",
+ device_info->small.allocs,
+ device_info->large.allocs,
+ device_info->total_allocs - device_info->small.allocs -
+ device_info->large.allocs,
+ device_info->total_allocs,
+ device_info->map_op_count,
+ device_info->bounce_count);
+}
+
+static DEVICE_ATTR(dmabounce_stats, 0400, dmabounce_show, NULL);
+#endif
+
+
+/* allocate a 'safe' buffer and keep track of it */
+static inline struct safe_buffer *
+alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
+ size_t size, enum dma_data_direction dir)
+{
+ struct safe_buffer *buf;
+ struct dmabounce_pool *pool;
+ struct device *dev = device_info->dev;
+ unsigned long flags;
+
+ dev_dbg(dev, "%s(ptr=%p, size=%d, dir=%d)\n",
+ __func__, ptr, size, dir);
+
+ if (size <= device_info->small.size) {
+ pool = &device_info->small;
+ } else if (size <= device_info->large.size) {
+ pool = &device_info->large;
+ } else {
+ pool = NULL;
+ }
+
+ buf = kmalloc(sizeof(struct safe_buffer), GFP_ATOMIC);
+ if (buf == NULL) {
+ dev_warn(dev, "%s: kmalloc failed\n", __func__);
+ return NULL;
+ }
+
+ buf->ptr = ptr;
+ buf->size = size;
+ buf->direction = dir;
+ buf->pool = pool;
+
+ if (pool) {
+ buf->safe = dma_pool_alloc(pool->pool, GFP_ATOMIC,
+ &buf->safe_dma_addr);
+ } else {
+ buf->safe = dma_alloc_coherent(dev, size, &buf->safe_dma_addr,
+ GFP_ATOMIC);
+ }
+
+ if (buf->safe == NULL) {
+ dev_warn(dev,
+ "%s: could not alloc dma memory (size=%d)\n",
+ __func__, size);
+ kfree(buf);
+ return NULL;
+ }
+
+#ifdef STATS
+ if (pool)
+ pool->allocs++;
+ device_info->total_allocs++;
+#endif
+
+ write_lock_irqsave(&device_info->lock, flags);
+ list_add(&buf->node, &device_info->safe_buffers);
+ write_unlock_irqrestore(&device_info->lock, flags);
+
+ return buf;
+}
+
+/* determine if a buffer is from our "safe" pool */
+static inline struct safe_buffer *
+find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr)
+{
+ struct safe_buffer *b, *rb = NULL;
+ unsigned long flags;
+
+ read_lock_irqsave(&device_info->lock, flags);
+
+ list_for_each_entry(b, &device_info->safe_buffers, node)
+ if (b->safe_dma_addr == safe_dma_addr) {
+ rb = b;
+ break;
+ }
+
+ read_unlock_irqrestore(&device_info->lock, flags);
+ return rb;
+}
+
+static inline void
+free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer *buf)
+{
+ unsigned long flags;
+
+ dev_dbg(device_info->dev, "%s(buf=%p)\n", __func__, buf);
+
+ write_lock_irqsave(&device_info->lock, flags);
+
+ list_del(&buf->node);
+
+ write_unlock_irqrestore(&device_info->lock, flags);
+
+ if (buf->pool)
+ dma_pool_free(buf->pool->pool, buf->safe, buf->safe_dma_addr);
+ else
+ dma_free_coherent(device_info->dev, buf->size, buf->safe,
+ buf->safe_dma_addr);
+
+ kfree(buf);
+}
+
+/* ************************************************** */
+
+static struct safe_buffer *find_safe_buffer_dev(struct device *dev,
+ dma_addr_t dma_addr, const char *where)
+{
+ if (!dev || !dev->archdata.dmabounce)
+ return NULL;
+ if (dma_mapping_error(dev, dma_addr)) {
+ dev_err(dev, "Trying to %s invalid mapping\n", where);
+ return NULL;
+ }
+ return find_safe_buffer(dev->archdata.dmabounce, dma_addr);
+}
+
+static int needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
+{
+ if (!dev || !dev->archdata.dmabounce)
+ return 0;
+
+ if (dev->dma_mask) {
+ unsigned long limit, mask = *dev->dma_mask;
+
+ limit = (mask + 1) & ~mask;
+ if (limit && size > limit) {
+ dev_err(dev, "DMA mapping too big (requested %#x "
+ "mask %#Lx)\n", size, *dev->dma_mask);
+ return -E2BIG;
+ }
+
+ /* Figure out if we need to bounce from the DMA mask. */
+ if ((dma_addr | (dma_addr + size - 1)) & ~mask)
+ return 1;
+ }
+
+ return !!dev->archdata.dmabounce->needs_bounce(dev, dma_addr, size);
+}
+
+static inline dma_addr_t map_single(struct device *dev, void *ptr, size_t size,
+ enum dma_data_direction dir)
+{
+ struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
+ struct safe_buffer *buf;
+
+ if (device_info)
+ DO_STATS ( device_info->map_op_count++ );
+
+ buf = alloc_safe_buffer(device_info, ptr, size, dir);
+ if (buf == NULL) {
+ dev_err(dev, "%s: unable to map unsafe buffer %p!\n",
+ __func__, ptr);
+ return ~0;
+ }
+
+ dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
+ __func__, buf->ptr, virt_to_dma(dev, buf->ptr),
+ buf->safe, buf->safe_dma_addr);
+
+ if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL) {
+ dev_dbg(dev, "%s: copy unsafe %p to safe %p, size %d\n",
+ __func__, ptr, buf->safe, size);
+ memcpy(buf->safe, ptr, size);
+ }
+
+ return buf->safe_dma_addr;
+}
+
+static inline void unmap_single(struct device *dev, struct safe_buffer *buf,
+ size_t size, enum dma_data_direction dir)
+{
+ BUG_ON(buf->size != size);
+ BUG_ON(buf->direction != dir);
+
+ dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
+ __func__, buf->ptr, virt_to_dma(dev, buf->ptr),
+ buf->safe, buf->safe_dma_addr);
+
+ DO_STATS(dev->archdata.dmabounce->bounce_count++);
+
+ if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) {
+ void *ptr = buf->ptr;
+
+ dev_dbg(dev, "%s: copy back safe %p to unsafe %p size %d\n",
+ __func__, buf->safe, ptr, size);
+ memcpy(ptr, buf->safe, size);
+
+ /*
+ * Since we may have written to a page cache page,
+ * we need to ensure that the data will be coherent
+ * with user mappings.
+ */
+ __cpuc_flush_dcache_area(ptr, size);
+ }
+ free_safe_buffer(dev->archdata.dmabounce, buf);
+}
+
+/* ************************************************** */
+
+/*
+ * see if a buffer address is in an 'unsafe' range. if it is
+ * allocate a 'safe' buffer and copy the unsafe buffer into it.
+ * substitute the safe buffer for the unsafe one.
+ * (basically move the buffer from an unsafe area to a safe one)
+ */
+dma_addr_t __dma_map_page(struct device *dev, struct page *page,
+ unsigned long offset, size_t size, enum dma_data_direction dir)
+{
+ dma_addr_t dma_addr;
+ int ret;
+
+ dev_dbg(dev, "%s(page=%p,off=%#lx,size=%zx,dir=%x)\n",
+ __func__, page, offset, size, dir);
+
+ dma_addr = pfn_to_dma(dev, page_to_pfn(page)) + offset;
+
+ ret = needs_bounce(dev, dma_addr, size);
+ if (ret < 0)
+ return ~0;
+
+ if (ret == 0) {
+ __dma_page_cpu_to_dev(page, offset, size, dir);
+ return dma_addr;
+ }
+
+ if (PageHighMem(page)) {
+ dev_err(dev, "DMA buffer bouncing of HIGHMEM pages is not supported\n");
+ return ~0;
+ }
+
+ return map_single(dev, page_address(page) + offset, size, dir);
+}
+EXPORT_SYMBOL(__dma_map_page);
+
+/*
+ * see if a mapped address was really a "safe" buffer and if so, copy
+ * the data from the safe buffer back to the unsafe buffer and free up
+ * the safe buffer. (basically return things back to the way they
+ * should be)
+ */
+void __dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size,
+ enum dma_data_direction dir)
+{
+ struct safe_buffer *buf;
+
+ dev_dbg(dev, "%s(dma=%#x,size=%d,dir=%x)\n",
+ __func__, dma_addr, size, dir);
+
+ buf = find_safe_buffer_dev(dev, dma_addr, __func__);
+ if (!buf) {
+ __dma_page_dev_to_cpu(pfn_to_page(dma_to_pfn(dev, dma_addr)),
+ dma_addr & ~PAGE_MASK, size, dir);
+ return;
+ }
+
+ unmap_single(dev, buf, size, dir);
+}
+EXPORT_SYMBOL(__dma_unmap_page);
+
+int dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr,
+ unsigned long off, size_t sz, enum dma_data_direction dir)
+{
+ struct safe_buffer *buf;
+
+ dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n",
+ __func__, addr, off, sz, dir);
+
+ buf = find_safe_buffer_dev(dev, addr, __func__);
+ if (!buf)
+ return 1;
+
+ BUG_ON(buf->direction != dir);
+
+ dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
+ __func__, buf->ptr, virt_to_dma(dev, buf->ptr),
+ buf->safe, buf->safe_dma_addr);
+
+ DO_STATS(dev->archdata.dmabounce->bounce_count++);
+
+ if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) {
+ dev_dbg(dev, "%s: copy back safe %p to unsafe %p size %d\n",
+ __func__, buf->safe + off, buf->ptr + off, sz);
+ memcpy(buf->ptr + off, buf->safe + off, sz);
+ }
+ return 0;
+}
+EXPORT_SYMBOL(dmabounce_sync_for_cpu);
+
+int dmabounce_sync_for_device(struct device *dev, dma_addr_t addr,
+ unsigned long off, size_t sz, enum dma_data_direction dir)
+{
+ struct safe_buffer *buf;
+
+ dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n",
+ __func__, addr, off, sz, dir);
+
+ buf = find_safe_buffer_dev(dev, addr, __func__);
+ if (!buf)
+ return 1;
+
+ BUG_ON(buf->direction != dir);
+
+ dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
+ __func__, buf->ptr, virt_to_dma(dev, buf->ptr),
+ buf->safe, buf->safe_dma_addr);
+
+ DO_STATS(dev->archdata.dmabounce->bounce_count++);
+
+ if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL) {
+ dev_dbg(dev, "%s: copy out unsafe %p to safe %p, size %d\n",
+ __func__,buf->ptr + off, buf->safe + off, sz);
+ memcpy(buf->safe + off, buf->ptr + off, sz);
+ }
+ return 0;
+}
+EXPORT_SYMBOL(dmabounce_sync_for_device);
+
+static int dmabounce_init_pool(struct dmabounce_pool *pool, struct device *dev,
+ const char *name, unsigned long size)
+{
+ pool->size = size;
+ DO_STATS(pool->allocs = 0);
+ pool->pool = dma_pool_create(name, dev, size,
+ 0 /* byte alignment */,
+ 0 /* no page-crossing issues */);
+
+ return pool->pool ? 0 : -ENOMEM;
+}
+
+int dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
+ unsigned long large_buffer_size,
+ int (*needs_bounce_fn)(struct device *, dma_addr_t, size_t))
+{
+ struct dmabounce_device_info *device_info;
+ int ret;
+
+ device_info = kmalloc(sizeof(struct dmabounce_device_info), GFP_ATOMIC);
+ if (!device_info) {
+ dev_err(dev,
+ "Could not allocated dmabounce_device_info\n");
+ return -ENOMEM;
+ }
+
+ ret = dmabounce_init_pool(&device_info->small, dev,
+ "small_dmabounce_pool", small_buffer_size);
+ if (ret) {
+ dev_err(dev,
+ "dmabounce: could not allocate DMA pool for %ld byte objects\n",
+ small_buffer_size);
+ goto err_free;
+ }
+
+ if (large_buffer_size) {
+ ret = dmabounce_init_pool(&device_info->large, dev,
+ "large_dmabounce_pool",
+ large_buffer_size);
+ if (ret) {
+ dev_err(dev,
+ "dmabounce: could not allocate DMA pool for %ld byte objects\n",
+ large_buffer_size);
+ goto err_destroy;
+ }
+ }
+
+ device_info->dev = dev;
+ INIT_LIST_HEAD(&device_info->safe_buffers);
+ rwlock_init(&device_info->lock);
+ device_info->needs_bounce = needs_bounce_fn;
+
+#ifdef STATS
+ device_info->total_allocs = 0;
+ device_info->map_op_count = 0;
+ device_info->bounce_count = 0;
+ device_info->attr_res = device_create_file(dev, &dev_attr_dmabounce_stats);
+#endif
+
+ dev->archdata.dmabounce = device_info;
+
+ dev_info(dev, "dmabounce: registered device\n");
+
+ return 0;
+
+ err_destroy:
+ dma_pool_destroy(device_info->small.pool);
+ err_free:
+ kfree(device_info);
+ return ret;
+}
+EXPORT_SYMBOL(dmabounce_register_dev);
+
+void dmabounce_unregister_dev(struct device *dev)
+{
+ struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
+
+ dev->archdata.dmabounce = NULL;
+
+ if (!device_info) {
+ dev_warn(dev,
+ "Never registered with dmabounce but attempting"
+ "to unregister!\n");
+ return;
+ }
+
+ if (!list_empty(&device_info->safe_buffers)) {
+ dev_err(dev,
+ "Removing from dmabounce with pending buffers!\n");
+ BUG();
+ }
+
+ if (device_info->small.pool)
+ dma_pool_destroy(device_info->small.pool);
+ if (device_info->large.pool)
+ dma_pool_destroy(device_info->large.pool);
+
+#ifdef STATS
+ if (device_info->attr_res == 0)
+ device_remove_file(dev, &dev_attr_dmabounce_stats);
+#endif
+
+ kfree(device_info);
+
+ dev_info(dev, "dmabounce: device unregistered\n");
+}
+EXPORT_SYMBOL(dmabounce_unregister_dev);
+
+MODULE_AUTHOR("Christopher Hoover , Deepak Saxena ");
+MODULE_DESCRIPTION("Special dma_{map/unmap/dma_sync}_* routines for systems with limited DMA windows");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/common/fiq_debugger.c b/arch/arm/common/fiq_debugger.c
new file mode 100644
index 00000000..d0686388
--- /dev/null
+++ b/arch/arm/common/fiq_debugger.c
@@ -0,0 +1,1388 @@
+/*
+ * arch/arm/common/fiq_debugger.c
+ *
+ * Serial Debugger Interface accessed through an FIQ interrupt.
+ *
+ * Copyright (C) 2008 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include
+
+#include "fiq_debugger_ringbuf.h"
+
+#define DEBUG_MAX 64
+#define MAX_UNHANDLED_FIQ_COUNT 1000000
+
+#define MAX_FIQ_DEBUGGER_PORTS 4
+
+#define THREAD_INFO(sp) ((struct thread_info *) \
+ ((unsigned long)(sp) & ~(THREAD_SIZE - 1)))
+
+struct fiq_debugger_state {
+ struct fiq_glue_handler handler;
+
+ int fiq;
+ int uart_irq;
+ int signal_irq;
+ int wakeup_irq;
+ bool wakeup_irq_no_set_wake;
+ struct clk *clk;
+ struct fiq_debugger_pdata *pdata;
+ struct platform_device *pdev;
+
+ char debug_cmd[DEBUG_MAX];
+ int debug_busy;
+ int debug_abort;
+
+ char debug_buf[DEBUG_MAX];
+ int debug_count;
+
+ bool no_sleep;
+ bool debug_enable;
+ bool ignore_next_wakeup_irq;
+ struct timer_list sleep_timer;
+ spinlock_t sleep_timer_lock;
+ bool uart_enabled;
+ struct wake_lock debugger_wake_lock;
+ bool console_enable;
+ int current_cpu;
+ atomic_t unhandled_fiq_count;
+ bool in_fiq;
+
+ struct work_struct work;
+ spinlock_t work_lock;
+ char work_cmd[DEBUG_MAX];
+
+#ifdef CONFIG_FIQ_DEBUGGER_CONSOLE
+ spinlock_t console_lock;
+ struct console console;
+ struct tty_struct *tty;
+ int tty_open_count;
+ struct fiq_debugger_ringbuf *tty_rbuf;
+ bool syslog_dumping;
+#endif
+
+ unsigned int last_irqs[NR_IRQS];
+ unsigned int last_local_timer_irqs[NR_CPUS];
+};
+
+#ifdef CONFIG_FIQ_DEBUGGER_CONSOLE
+struct tty_driver *fiq_tty_driver;
+#endif
+
+#ifdef CONFIG_FIQ_DEBUGGER_NO_SLEEP
+static bool initial_no_sleep = true;
+#else
+static bool initial_no_sleep;
+#endif
+
+#ifdef CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE
+static bool initial_debug_enable = true;
+static bool initial_console_enable = true;
+#else
+static bool initial_debug_enable;
+static bool initial_console_enable;
+#endif
+
+static bool fiq_kgdb_enable;
+
+module_param_named(no_sleep, initial_no_sleep, bool, 0644);
+module_param_named(debug_enable, initial_debug_enable, bool, 0644);
+module_param_named(console_enable, initial_console_enable, bool, 0644);
+module_param_named(kgdb_enable, fiq_kgdb_enable, bool, 0644);
+
+#ifdef CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON
+static inline void enable_wakeup_irq(struct fiq_debugger_state *state) {}
+static inline void disable_wakeup_irq(struct fiq_debugger_state *state) {}
+#else
+static inline void enable_wakeup_irq(struct fiq_debugger_state *state)
+{
+ if (state->wakeup_irq < 0)
+ return;
+ enable_irq(state->wakeup_irq);
+ if (!state->wakeup_irq_no_set_wake)
+ enable_irq_wake(state->wakeup_irq);
+}
+static inline void disable_wakeup_irq(struct fiq_debugger_state *state)
+{
+ if (state->wakeup_irq < 0)
+ return;
+ disable_irq_nosync(state->wakeup_irq);
+ if (!state->wakeup_irq_no_set_wake)
+ disable_irq_wake(state->wakeup_irq);
+}
+#endif
+
+static bool inline debug_have_fiq(struct fiq_debugger_state *state)
+{
+ return (state->fiq >= 0);
+}
+
+static void debug_force_irq(struct fiq_debugger_state *state)
+{
+ unsigned int irq = state->signal_irq;
+
+ if (WARN_ON(!debug_have_fiq(state)))
+ return;
+ if (state->pdata->force_irq) {
+ state->pdata->force_irq(state->pdev, irq);
+ } else {
+ struct irq_chip *chip = irq_get_chip(irq);
+ if (chip && chip->irq_retrigger)
+ chip->irq_retrigger(irq_get_irq_data(irq));
+ }
+}
+
+static void debug_uart_enable(struct fiq_debugger_state *state)
+{
+ if (state->clk)
+ clk_enable(state->clk);
+ if (state->pdata->uart_enable)
+ state->pdata->uart_enable(state->pdev);
+}
+
+static void debug_uart_disable(struct fiq_debugger_state *state)
+{
+ if (state->pdata->uart_disable)
+ state->pdata->uart_disable(state->pdev);
+ if (state->clk)
+ clk_disable(state->clk);
+}
+
+static void debug_uart_flush(struct fiq_debugger_state *state)
+{
+ if (state->pdata->uart_flush)
+ state->pdata->uart_flush(state->pdev);
+}
+
+static void debug_putc(struct fiq_debugger_state *state, char c)
+{
+ state->pdata->uart_putc(state->pdev, c);
+}
+
+static void debug_puts(struct fiq_debugger_state *state, char *s)
+{
+ unsigned c;
+ while ((c = *s++)) {
+ if (c == '\n')
+ debug_putc(state, '\r');
+ debug_putc(state, c);
+ }
+}
+
+static void debug_prompt(struct fiq_debugger_state *state)
+{
+ debug_puts(state, "debug> ");
+}
+
+int log_buf_copy(char *dest, int idx, int len);
+static void dump_kernel_log(struct fiq_debugger_state *state)
+{
+ char buf[1024];
+ int idx = 0;
+ int ret;
+ int saved_oip;
+
+ /* setting oops_in_progress prevents log_buf_copy()
+ * from trying to take a spinlock which will make it
+ * very unhappy in some cases...
+ */
+ saved_oip = oops_in_progress;
+ oops_in_progress = 1;
+ for (;;) {
+ ret = log_buf_copy(buf, idx, 1023);
+ if (ret <= 0)
+ break;
+ buf[ret] = 0;
+ debug_puts(state, buf);
+ idx += ret;
+ }
+ oops_in_progress = saved_oip;
+}
+
+static char *mode_name(unsigned cpsr)
+{
+ switch (cpsr & MODE_MASK) {
+ case USR_MODE: return "USR";
+ case FIQ_MODE: return "FIQ";
+ case IRQ_MODE: return "IRQ";
+ case SVC_MODE: return "SVC";
+ case ABT_MODE: return "ABT";
+ case UND_MODE: return "UND";
+ case SYSTEM_MODE: return "SYS";
+ default: return "???";
+ }
+}
+
+static int debug_printf(void *cookie, const char *fmt, ...)
+{
+ struct fiq_debugger_state *state = cookie;
+ char buf[256];
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ va_end(ap);
+
+ debug_puts(state, buf);
+ return state->debug_abort;
+}
+
+/* Safe outside fiq context */
+static int debug_printf_nfiq(void *cookie, const char *fmt, ...)
+{
+ struct fiq_debugger_state *state = cookie;
+ char buf[256];
+ va_list ap;
+ unsigned long irq_flags;
+
+ va_start(ap, fmt);
+ vsnprintf(buf, 128, fmt, ap);
+ va_end(ap);
+
+ local_irq_save(irq_flags);
+ debug_puts(state, buf);
+ debug_uart_flush(state);
+ local_irq_restore(irq_flags);
+ return state->debug_abort;
+}
+
+static void dump_regs(struct fiq_debugger_state *state, unsigned *regs)
+{
+ debug_printf(state, " r0 %08x r1 %08x r2 %08x r3 %08x\n",
+ regs[0], regs[1], regs[2], regs[3]);
+ debug_printf(state, " r4 %08x r5 %08x r6 %08x r7 %08x\n",
+ regs[4], regs[5], regs[6], regs[7]);
+ debug_printf(state, " r8 %08x r9 %08x r10 %08x r11 %08x mode %s\n",
+ regs[8], regs[9], regs[10], regs[11],
+ mode_name(regs[16]));
+ if ((regs[16] & MODE_MASK) == USR_MODE)
+ debug_printf(state, " ip %08x sp %08x lr %08x pc %08x "
+ "cpsr %08x\n", regs[12], regs[13], regs[14],
+ regs[15], regs[16]);
+ else
+ debug_printf(state, " ip %08x sp %08x lr %08x pc %08x "
+ "cpsr %08x spsr %08x\n", regs[12], regs[13],
+ regs[14], regs[15], regs[16], regs[17]);
+}
+
+struct mode_regs {
+ unsigned long sp_svc;
+ unsigned long lr_svc;
+ unsigned long spsr_svc;
+
+ unsigned long sp_abt;
+ unsigned long lr_abt;
+ unsigned long spsr_abt;
+
+ unsigned long sp_und;
+ unsigned long lr_und;
+ unsigned long spsr_und;
+
+ unsigned long sp_irq;
+ unsigned long lr_irq;
+ unsigned long spsr_irq;
+
+ unsigned long r8_fiq;
+ unsigned long r9_fiq;
+ unsigned long r10_fiq;
+ unsigned long r11_fiq;
+ unsigned long r12_fiq;
+ unsigned long sp_fiq;
+ unsigned long lr_fiq;
+ unsigned long spsr_fiq;
+};
+
+void __naked get_mode_regs(struct mode_regs *regs)
+{
+ asm volatile (
+ "mrs r1, cpsr\n"
+ "msr cpsr_c, #0xd3 @(SVC_MODE | PSR_I_BIT | PSR_F_BIT)\n"
+ "stmia r0!, {r13 - r14}\n"
+ "mrs r2, spsr\n"
+ "msr cpsr_c, #0xd7 @(ABT_MODE | PSR_I_BIT | PSR_F_BIT)\n"
+ "stmia r0!, {r2, r13 - r14}\n"
+ "mrs r2, spsr\n"
+ "msr cpsr_c, #0xdb @(UND_MODE | PSR_I_BIT | PSR_F_BIT)\n"
+ "stmia r0!, {r2, r13 - r14}\n"
+ "mrs r2, spsr\n"
+ "msr cpsr_c, #0xd2 @(IRQ_MODE | PSR_I_BIT | PSR_F_BIT)\n"
+ "stmia r0!, {r2, r13 - r14}\n"
+ "mrs r2, spsr\n"
+ "msr cpsr_c, #0xd1 @(FIQ_MODE | PSR_I_BIT | PSR_F_BIT)\n"
+ "stmia r0!, {r2, r8 - r14}\n"
+ "mrs r2, spsr\n"
+ "stmia r0!, {r2}\n"
+ "msr cpsr_c, r1\n"
+ "bx lr\n");
+}
+
+
+static void dump_allregs(struct fiq_debugger_state *state, unsigned *regs)
+{
+ struct mode_regs mode_regs;
+ dump_regs(state, regs);
+ get_mode_regs(&mode_regs);
+ debug_printf(state, " svc: sp %08x lr %08x spsr %08x\n",
+ mode_regs.sp_svc, mode_regs.lr_svc, mode_regs.spsr_svc);
+ debug_printf(state, " abt: sp %08x lr %08x spsr %08x\n",
+ mode_regs.sp_abt, mode_regs.lr_abt, mode_regs.spsr_abt);
+ debug_printf(state, " und: sp %08x lr %08x spsr %08x\n",
+ mode_regs.sp_und, mode_regs.lr_und, mode_regs.spsr_und);
+ debug_printf(state, " irq: sp %08x lr %08x spsr %08x\n",
+ mode_regs.sp_irq, mode_regs.lr_irq, mode_regs.spsr_irq);
+ debug_printf(state, " fiq: r8 %08x r9 %08x r10 %08x r11 %08x "
+ "r12 %08x\n",
+ mode_regs.r8_fiq, mode_regs.r9_fiq, mode_regs.r10_fiq,
+ mode_regs.r11_fiq, mode_regs.r12_fiq);
+ debug_printf(state, " fiq: sp %08x lr %08x spsr %08x\n",
+ mode_regs.sp_fiq, mode_regs.lr_fiq, mode_regs.spsr_fiq);
+}
+
+static void dump_irqs(struct fiq_debugger_state *state)
+{
+ int n;
+
+ debug_printf(state, "irqnr total since-last status name\n");
+ for (n = 0; n < NR_IRQS; n++) {
+ struct irqaction *act = irq_desc[n].action;
+ if (!act && !kstat_irqs(n))
+ continue;
+ debug_printf(state, "%5d: %10u %11u %8x %s\n", n,
+ kstat_irqs(n),
+ kstat_irqs(n) - state->last_irqs[n],
+ irq_desc[n].status_use_accessors,
+ (act && act->name) ? act->name : "???");
+ state->last_irqs[n] = kstat_irqs(n);
+ }
+}
+
+struct stacktrace_state {
+ struct fiq_debugger_state *state;
+ unsigned int depth;
+};
+
+static int report_trace(struct stackframe *frame, void *d)
+{
+ struct stacktrace_state *sts = d;
+
+ if (sts->depth) {
+ debug_printf(sts->state,
+ " pc: %p (%pF), lr %p (%pF), sp %p, fp %p\n",
+ frame->pc, frame->pc, frame->lr, frame->lr,
+ frame->sp, frame->fp);
+ sts->depth--;
+ return 0;
+ }
+ debug_printf(sts->state, " ...\n");
+
+ return sts->depth == 0;
+}
+
+struct frame_tail {
+ struct frame_tail *fp;
+ unsigned long sp;
+ unsigned long lr;
+} __attribute__((packed));
+
+static struct frame_tail *user_backtrace(struct fiq_debugger_state *state,
+ struct frame_tail *tail)
+{
+ struct frame_tail buftail[2];
+
+ /* Also check accessibility of one struct frame_tail beyond */
+ if (!access_ok(VERIFY_READ, tail, sizeof(buftail))) {
+ debug_printf(state, " invalid frame pointer %p\n", tail);
+ return NULL;
+ }
+ if (__copy_from_user_inatomic(buftail, tail, sizeof(buftail))) {
+ debug_printf(state,
+ " failed to copy frame pointer %p\n", tail);
+ return NULL;
+ }
+
+ debug_printf(state, " %p\n", buftail[0].lr);
+
+ /* frame pointers should strictly progress back up the stack
+ * (towards higher addresses) */
+ if (tail >= buftail[0].fp)
+ return NULL;
+
+ return buftail[0].fp-1;
+}
+
+void dump_stacktrace(struct fiq_debugger_state *state,
+ struct pt_regs * const regs, unsigned int depth, void *ssp)
+{
+ struct frame_tail *tail;
+ struct thread_info *real_thread_info = THREAD_INFO(ssp);
+ struct stacktrace_state sts;
+
+ sts.depth = depth;
+ sts.state = state;
+ *current_thread_info() = *real_thread_info;
+
+ if (!current)
+ debug_printf(state, "current NULL\n");
+ else
+ debug_printf(state, "pid: %d comm: %s\n",
+ current->pid, current->comm);
+ dump_regs(state, (unsigned *)regs);
+
+ if (!user_mode(regs)) {
+ struct stackframe frame;
+ frame.fp = regs->ARM_fp;
+ frame.sp = regs->ARM_sp;
+ frame.lr = regs->ARM_lr;
+ frame.pc = regs->ARM_pc;
+ debug_printf(state,
+ " pc: %p (%pF), lr %p (%pF), sp %p, fp %p\n",
+ regs->ARM_pc, regs->ARM_pc, regs->ARM_lr, regs->ARM_lr,
+ regs->ARM_sp, regs->ARM_fp);
+ walk_stackframe(&frame, report_trace, &sts);
+ return;
+ }
+
+ tail = ((struct frame_tail *) regs->ARM_fp) - 1;
+ while (depth-- && tail && !((unsigned long) tail & 3))
+ tail = user_backtrace(state, tail);
+}
+
+static void do_ps(struct fiq_debugger_state *state)
+{
+ struct task_struct *g;
+ struct task_struct *p;
+ unsigned task_state;
+ static const char stat_nam[] = "RSDTtZX";
+
+ debug_printf(state, "pid ppid prio task pc\n");
+ read_lock(&tasklist_lock);
+ do_each_thread(g, p) {
+ task_state = p->state ? __ffs(p->state) + 1 : 0;
+ debug_printf(state,
+ "%5d %5d %4d ", p->pid, p->parent->pid, p->prio);
+ debug_printf(state, "%-13.13s %c", p->comm,
+ task_state >= sizeof(stat_nam) ? '?' : stat_nam[task_state]);
+ if (task_state == TASK_RUNNING)
+ debug_printf(state, " running\n");
+ else
+ debug_printf(state, " %08lx\n", thread_saved_pc(p));
+ } while_each_thread(g, p);
+ read_unlock(&tasklist_lock);
+}
+
+#ifdef CONFIG_FIQ_DEBUGGER_CONSOLE
+static void begin_syslog_dump(struct fiq_debugger_state *state)
+{
+ state->syslog_dumping = true;
+}
+
+static void end_syslog_dump(struct fiq_debugger_state *state)
+{
+ state->syslog_dumping = false;
+}
+#else
+extern int do_syslog(int type, char __user *bug, int count);
+static void begin_syslog_dump(struct fiq_debugger_state *state)
+{
+ do_syslog(5 /* clear */, NULL, 0);
+}
+
+static void end_syslog_dump(struct fiq_debugger_state *state)
+{
+ char buf[128];
+ int ret;
+ int idx = 0;
+
+ while (1) {
+ ret = log_buf_copy(buf, idx, sizeof(buf) - 1);
+ if (ret <= 0)
+ break;
+ buf[ret] = 0;
+ debug_printf(state, "%s", buf);
+ idx += ret;
+ }
+}
+#endif
+
+static void do_sysrq(struct fiq_debugger_state *state, char rq)
+{
+ if ((rq == 'g' || rq == 'G') && !fiq_kgdb_enable) {
+ debug_printf(state, "sysrq-g blocked\n");
+ return;
+ }
+ begin_syslog_dump(state);
+ handle_sysrq(rq);
+ end_syslog_dump(state);
+}
+
+#ifdef CONFIG_KGDB
+static void do_kgdb(struct fiq_debugger_state *state)
+{
+ if (!fiq_kgdb_enable) {
+ debug_printf(state, "kgdb through fiq debugger not enabled\n");
+ return;
+ }
+
+ debug_printf(state, "enabling console and triggering kgdb\n");
+ state->console_enable = true;
+ handle_sysrq('g');
+}
+#endif
+
+static void debug_schedule_work(struct fiq_debugger_state *state, char *cmd)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&state->work_lock, flags);
+ if (state->work_cmd[0] != '\0') {
+ debug_printf(state, "work command processor busy\n");
+ spin_unlock_irqrestore(&state->work_lock, flags);
+ return;
+ }
+
+ strlcpy(state->work_cmd, cmd, sizeof(state->work_cmd));
+ spin_unlock_irqrestore(&state->work_lock, flags);
+
+ schedule_work(&state->work);
+}
+
+static void debug_work(struct work_struct *work)
+{
+ struct fiq_debugger_state *state;
+ char work_cmd[DEBUG_MAX];
+ char *cmd;
+ unsigned long flags;
+
+ state = container_of(work, struct fiq_debugger_state, work);
+
+ spin_lock_irqsave(&state->work_lock, flags);
+
+ strlcpy(work_cmd, state->work_cmd, sizeof(work_cmd));
+ state->work_cmd[0] = '\0';
+
+ spin_unlock_irqrestore(&state->work_lock, flags);
+
+ cmd = work_cmd;
+ if (!strncmp(cmd, "reboot", 6)) {
+ cmd += 6;
+ while (*cmd == ' ')
+ cmd++;
+ if (cmd != '\0')
+ kernel_restart(cmd);
+ else
+ kernel_restart(NULL);
+ } else {
+ debug_printf(state, "unknown work command '%s'\n", work_cmd);
+ }
+}
+
+/* This function CANNOT be called in FIQ context */
+static void debug_irq_exec(struct fiq_debugger_state *state, char *cmd)
+{
+ if (!strcmp(cmd, "ps"))
+ do_ps(state);
+ if (!strcmp(cmd, "sysrq"))
+ do_sysrq(state, 'h');
+ if (!strncmp(cmd, "sysrq ", 6))
+ do_sysrq(state, cmd[6]);
+#ifdef CONFIG_KGDB
+ if (!strcmp(cmd, "kgdb"))
+ do_kgdb(state);
+#endif
+ if (!strncmp(cmd, "reboot", 6))
+ debug_schedule_work(state, cmd);
+}
+
+static void debug_help(struct fiq_debugger_state *state)
+{
+ debug_printf(state, "FIQ Debugger commands:\n"
+ " pc PC status\n"
+ " regs Register dump\n"
+ " allregs Extended Register dump\n"
+ " bt Stack trace\n"
+ " reboot [] Reboot with command \n"
+ " reset [] Hard reset with command \n"
+ " irqs Interupt status\n"
+ " kmsg Kernel log\n"
+ " version Kernel version\n");
+ debug_printf(state, " sleep Allow sleep while in FIQ\n"
+ " nosleep Disable sleep while in FIQ\n"
+ " console Switch terminal to console\n"
+ " cpu Current CPU\n"
+ " cpu Switch to CPU\n");
+ debug_printf(state, " ps Process list\n"
+ " sysrq sysrq options\n"
+ " sysrq Execute sysrq with \n");
+#ifdef CONFIG_KGDB
+ debug_printf(state, " kgdb Enter kernel debugger\n");
+#endif
+}
+
+static void take_affinity(void *info)
+{
+ struct fiq_debugger_state *state = info;
+ struct cpumask cpumask;
+
+ cpumask_clear(&cpumask);
+ cpumask_set_cpu(get_cpu(), &cpumask);
+
+ irq_set_affinity(state->uart_irq, &cpumask);
+}
+
+static void switch_cpu(struct fiq_debugger_state *state, int cpu)
+{
+ if (!debug_have_fiq(state))
+ smp_call_function_single(cpu, take_affinity, state, false);
+ state->current_cpu = cpu;
+}
+
+static bool debug_fiq_exec(struct fiq_debugger_state *state,
+ const char *cmd, unsigned *regs, void *svc_sp)
+{
+ bool signal_helper = false;
+
+ if (!strcmp(cmd, "help") || !strcmp(cmd, "?")) {
+ debug_help(state);
+ } else if (!strcmp(cmd, "pc")) {
+ debug_printf(state, " pc %08x cpsr %08x mode %s\n",
+ regs[15], regs[16], mode_name(regs[16]));
+ } else if (!strcmp(cmd, "regs")) {
+ dump_regs(state, regs);
+ } else if (!strcmp(cmd, "allregs")) {
+ dump_allregs(state, regs);
+ } else if (!strcmp(cmd, "bt")) {
+ dump_stacktrace(state, (struct pt_regs *)regs, 100, svc_sp);
+ } else if (!strncmp(cmd, "reset", 5)) {
+ cmd += 5;
+ while (*cmd == ' ')
+ cmd++;
+ if (*cmd) {
+ char tmp_cmd[32];
+ strlcpy(tmp_cmd, cmd, sizeof(tmp_cmd));
+ machine_restart(tmp_cmd);
+ } else {
+ machine_restart(NULL);
+ }
+ } else if (!strcmp(cmd, "irqs")) {
+ dump_irqs(state);
+ } else if (!strcmp(cmd, "kmsg")) {
+ dump_kernel_log(state);
+ } else if (!strcmp(cmd, "version")) {
+ debug_printf(state, "%s\n", linux_banner);
+ } else if (!strcmp(cmd, "sleep")) {
+ state->no_sleep = false;
+ debug_printf(state, "enabling sleep\n");
+ } else if (!strcmp(cmd, "nosleep")) {
+ state->no_sleep = true;
+ debug_printf(state, "disabling sleep\n");
+ } else if (!strcmp(cmd, "console")) {
+ debug_printf(state, "console mode\n");
+ debug_uart_flush(state);
+ state->console_enable = true;
+ } else if (!strcmp(cmd, "cpu")) {
+ debug_printf(state, "cpu %d\n", state->current_cpu);
+ } else if (!strncmp(cmd, "cpu ", 4)) {
+ unsigned long cpu = 0;
+ if (strict_strtoul(cmd + 4, 10, &cpu) == 0)
+ switch_cpu(state, cpu);
+ else
+ debug_printf(state, "invalid cpu\n");
+ debug_printf(state, "cpu %d\n", state->current_cpu);
+ } else {
+ if (state->debug_busy) {
+ debug_printf(state,
+ "command processor busy. trying to abort.\n");
+ state->debug_abort = -1;
+ } else {
+ strcpy(state->debug_cmd, cmd);
+ state->debug_busy = 1;
+ }
+
+ return true;
+ }
+ if (!state->console_enable)
+ debug_prompt(state);
+
+ return signal_helper;
+}
+
+static void sleep_timer_expired(unsigned long data)
+{
+ struct fiq_debugger_state *state = (struct fiq_debugger_state *)data;
+ unsigned long flags;
+
+ spin_lock_irqsave(&state->sleep_timer_lock, flags);
+ if (state->uart_enabled && !state->no_sleep) {
+ if (state->debug_enable && !state->console_enable) {
+ state->debug_enable = false;
+ debug_printf_nfiq(state, "suspending fiq debugger\n");
+ }
+ state->ignore_next_wakeup_irq = true;
+ debug_uart_disable(state);
+ state->uart_enabled = false;
+ enable_wakeup_irq(state);
+ }
+ wake_unlock(&state->debugger_wake_lock);
+ spin_unlock_irqrestore(&state->sleep_timer_lock, flags);
+}
+
+static void handle_wakeup(struct fiq_debugger_state *state)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&state->sleep_timer_lock, flags);
+ if (state->wakeup_irq >= 0 && state->ignore_next_wakeup_irq) {
+ state->ignore_next_wakeup_irq = false;
+ } else if (!state->uart_enabled) {
+ wake_lock(&state->debugger_wake_lock);
+ debug_uart_enable(state);
+ state->uart_enabled = true;
+ disable_wakeup_irq(state);
+ mod_timer(&state->sleep_timer, jiffies + HZ / 2);
+ }
+ spin_unlock_irqrestore(&state->sleep_timer_lock, flags);
+}
+
+static irqreturn_t wakeup_irq_handler(int irq, void *dev)
+{
+ struct fiq_debugger_state *state = dev;
+
+ if (!state->no_sleep)
+ debug_puts(state, "WAKEUP\n");
+ handle_wakeup(state);
+
+ return IRQ_HANDLED;
+}
+
+
+static void debug_handle_irq_context(struct fiq_debugger_state *state)
+{
+ if (!state->no_sleep) {
+ unsigned long flags;
+
+ spin_lock_irqsave(&state->sleep_timer_lock, flags);
+ wake_lock(&state->debugger_wake_lock);
+ mod_timer(&state->sleep_timer, jiffies + HZ * 5);
+ spin_unlock_irqrestore(&state->sleep_timer_lock, flags);
+ }
+#if defined(CONFIG_FIQ_DEBUGGER_CONSOLE)
+ if (state->tty) {
+ int i;
+ int count = fiq_debugger_ringbuf_level(state->tty_rbuf);
+ for (i = 0; i < count; i++) {
+ int c = fiq_debugger_ringbuf_peek(state->tty_rbuf, 0);
+ tty_insert_flip_char(state->tty, c, TTY_NORMAL);
+ if (!fiq_debugger_ringbuf_consume(state->tty_rbuf, 1))
+ pr_warn("fiq tty failed to consume byte\n");
+ }
+ tty_flip_buffer_push(state->tty);
+ }
+#endif
+ if (state->debug_busy) {
+ debug_irq_exec(state, state->debug_cmd);
+ if (!state->console_enable)
+ debug_prompt(state);
+ state->debug_busy = 0;
+ }
+}
+
+static int debug_getc(struct fiq_debugger_state *state)
+{
+ return state->pdata->uart_getc(state->pdev);
+}
+
+static bool debug_handle_uart_interrupt(struct fiq_debugger_state *state,
+ int this_cpu, void *regs, void *svc_sp)
+{
+ int c;
+ static int last_c;
+ int count = 0;
+ bool signal_helper = false;
+
+ if (this_cpu != state->current_cpu) {
+ if (state->in_fiq)
+ return false;
+
+ if (atomic_inc_return(&state->unhandled_fiq_count) !=
+ MAX_UNHANDLED_FIQ_COUNT)
+ return false;
+
+ debug_printf(state, "fiq_debugger: cpu %d not responding, "
+ "reverting to cpu %d\n", state->current_cpu,
+ this_cpu);
+
+ atomic_set(&state->unhandled_fiq_count, 0);
+ switch_cpu(state, this_cpu);
+ return false;
+ }
+
+ state->in_fiq = true;
+
+ while ((c = debug_getc(state)) != FIQ_DEBUGGER_NO_CHAR) {
+ count++;
+ if (!state->debug_enable) {
+ if ((c == 13) || (c == 10)) {
+ state->debug_enable = true;
+ state->debug_count = 0;
+ debug_prompt(state);
+ }
+ } else if (c == FIQ_DEBUGGER_BREAK) {
+ state->console_enable = false;
+ debug_puts(state, "fiq debugger mode\n");
+ state->debug_count = 0;
+ debug_prompt(state);
+#ifdef CONFIG_FIQ_DEBUGGER_CONSOLE
+ } else if (state->console_enable && state->tty_rbuf) {
+ fiq_debugger_ringbuf_push(state->tty_rbuf, c);
+ signal_helper = true;
+#endif
+ } else if ((c >= ' ') && (c < 127)) {
+ if (state->debug_count < (DEBUG_MAX - 1)) {
+ state->debug_buf[state->debug_count++] = c;
+ debug_putc(state, c);
+ }
+ } else if ((c == 8) || (c == 127)) {
+ if (state->debug_count > 0) {
+ state->debug_count--;
+ debug_putc(state, 8);
+ debug_putc(state, ' ');
+ debug_putc(state, 8);
+ }
+ } else if ((c == 13) || (c == 10)) {
+ if (c == '\r' || (c == '\n' && last_c != '\r')) {
+ debug_putc(state, '\r');
+ debug_putc(state, '\n');
+ }
+ if (state->debug_count) {
+ state->debug_buf[state->debug_count] = 0;
+ state->debug_count = 0;
+ signal_helper |=
+ debug_fiq_exec(state, state->debug_buf,
+ regs, svc_sp);
+ } else {
+ debug_prompt(state);
+ }
+ }
+ last_c = c;
+ }
+ if (!state->console_enable)
+ debug_uart_flush(state);
+ if (state->pdata->fiq_ack)
+ state->pdata->fiq_ack(state->pdev, state->fiq);
+
+ /* poke sleep timer if necessary */
+ if (state->debug_enable && !state->no_sleep)
+ signal_helper = true;
+
+ atomic_set(&state->unhandled_fiq_count, 0);
+ state->in_fiq = false;
+
+ return signal_helper;
+}
+
+static void debug_fiq(struct fiq_glue_handler *h, void *regs, void *svc_sp)
+{
+ struct fiq_debugger_state *state =
+ container_of(h, struct fiq_debugger_state, handler);
+ unsigned int this_cpu = THREAD_INFO(svc_sp)->cpu;
+ bool need_irq;
+
+ need_irq = debug_handle_uart_interrupt(state, this_cpu, regs, svc_sp);
+ if (need_irq)
+ debug_force_irq(state);
+}
+
+/*
+ * When not using FIQs, we only use this single interrupt as an entry point.
+ * This just effectively takes over the UART interrupt and does all the work
+ * in this context.
+ */
+static irqreturn_t debug_uart_irq(int irq, void *dev)
+{
+ struct fiq_debugger_state *state = dev;
+ bool not_done;
+
+ handle_wakeup(state);
+
+ /* handle the debugger irq in regular context */
+ not_done = debug_handle_uart_interrupt(state, smp_processor_id(),
+ get_irq_regs(),
+ current_thread_info());
+ if (not_done)
+ debug_handle_irq_context(state);
+
+ return IRQ_HANDLED;
+}
+
+/*
+ * If FIQs are used, not everything can happen in fiq context.
+ * FIQ handler does what it can and then signals this interrupt to finish the
+ * job in irq context.
+ */
+static irqreturn_t debug_signal_irq(int irq, void *dev)
+{
+ struct fiq_debugger_state *state = dev;
+
+ if (state->pdata->force_irq_ack)
+ state->pdata->force_irq_ack(state->pdev, state->signal_irq);
+
+ debug_handle_irq_context(state);
+
+ return IRQ_HANDLED;
+}
+
+static void debug_resume(struct fiq_glue_handler *h)
+{
+ struct fiq_debugger_state *state =
+ container_of(h, struct fiq_debugger_state, handler);
+ if (state->pdata->uart_resume)
+ state->pdata->uart_resume(state->pdev);
+}
+
+#if defined(CONFIG_FIQ_DEBUGGER_CONSOLE)
+struct tty_driver *debug_console_device(struct console *co, int *index)
+{
+ *index = co->index;
+ return fiq_tty_driver;
+}
+
+static void debug_console_write(struct console *co,
+ const char *s, unsigned int count)
+{
+ struct fiq_debugger_state *state;
+ unsigned long flags;
+
+ state = container_of(co, struct fiq_debugger_state, console);
+
+ if (!state->console_enable && !state->syslog_dumping)
+ return;
+
+ debug_uart_enable(state);
+ spin_lock_irqsave(&state->console_lock, flags);
+ while (count--) {
+ if (*s == '\n')
+ debug_putc(state, '\r');
+ debug_putc(state, *s++);
+ }
+ debug_uart_flush(state);
+ spin_unlock_irqrestore(&state->console_lock, flags);
+ debug_uart_disable(state);
+}
+
+static struct console fiq_debugger_console = {
+ .name = "ttyFIQ",
+ .device = debug_console_device,
+ .write = debug_console_write,
+ .flags = CON_PRINTBUFFER | CON_ANYTIME | CON_ENABLED,
+};
+
+int fiq_tty_open(struct tty_struct *tty, struct file *filp)
+{
+ int line = tty->index;
+ struct fiq_debugger_state **states = tty->driver->driver_state;
+ struct fiq_debugger_state *state = states[line];
+ if (state->tty_open_count++)
+ return 0;
+
+ tty->driver_data = state;
+ state->tty = tty;
+ return 0;
+}
+
+void fiq_tty_close(struct tty_struct *tty, struct file *filp)
+{
+ struct fiq_debugger_state *state = tty->driver_data;
+ if (--state->tty_open_count)
+ return;
+ state->tty = NULL;
+}
+
+int fiq_tty_write(struct tty_struct *tty, const unsigned char *buf, int count)
+{
+ int i;
+ struct fiq_debugger_state *state = tty->driver_data;
+
+ if (!state->console_enable)
+ return count;
+
+ debug_uart_enable(state);
+ spin_lock_irq(&state->console_lock);
+ for (i = 0; i < count; i++)
+ debug_putc(state, *buf++);
+ spin_unlock_irq(&state->console_lock);
+ debug_uart_disable(state);
+
+ return count;
+}
+
+int fiq_tty_write_room(struct tty_struct *tty)
+{
+ return 16;
+}
+
+#ifdef CONFIG_CONSOLE_POLL
+static int fiq_tty_poll_init(struct tty_driver *driver, int line, char *options)
+{
+ return 0;
+}
+
+static int fiq_tty_poll_get_char(struct tty_driver *driver, int line)
+{
+ struct fiq_debugger_state *state = driver->ttys[line]->driver_data;
+ int c = NO_POLL_CHAR;
+
+ debug_uart_enable(state);
+ if (debug_have_fiq(state)) {
+ int count = fiq_debugger_ringbuf_level(state->tty_rbuf);
+ if (count > 0) {
+ c = fiq_debugger_ringbuf_peek(state->tty_rbuf, 0);
+ fiq_debugger_ringbuf_consume(state->tty_rbuf, 1);
+ }
+ } else {
+ c = debug_getc(state);
+ if (c == FIQ_DEBUGGER_NO_CHAR)
+ c = NO_POLL_CHAR;
+ }
+ debug_uart_disable(state);
+
+ return c;
+}
+
+static void fiq_tty_poll_put_char(struct tty_driver *driver, int line, char ch)
+{
+ struct fiq_debugger_state *state = driver->ttys[line]->driver_data;
+ debug_uart_enable(state);
+ debug_putc(state, ch);
+ debug_uart_disable(state);
+}
+#endif
+
+static const struct tty_operations fiq_tty_driver_ops = {
+ .write = fiq_tty_write,
+ .write_room = fiq_tty_write_room,
+ .open = fiq_tty_open,
+ .close = fiq_tty_close,
+#ifdef CONFIG_CONSOLE_POLL
+ .poll_init = fiq_tty_poll_init,
+ .poll_get_char = fiq_tty_poll_get_char,
+ .poll_put_char = fiq_tty_poll_put_char,
+#endif
+};
+
+static int fiq_debugger_tty_init(void)
+{
+ int ret;
+ struct fiq_debugger_state **states = NULL;
+
+ states = kzalloc(sizeof(*states) * MAX_FIQ_DEBUGGER_PORTS, GFP_KERNEL);
+ if (!states) {
+ pr_err("Failed to allocate fiq debugger state structres\n");
+ return -ENOMEM;
+ }
+
+ fiq_tty_driver = alloc_tty_driver(MAX_FIQ_DEBUGGER_PORTS);
+ if (!fiq_tty_driver) {
+ pr_err("Failed to allocate fiq debugger tty\n");
+ ret = -ENOMEM;
+ goto err_free_state;
+ }
+
+ fiq_tty_driver->owner = THIS_MODULE;
+ fiq_tty_driver->driver_name = "fiq-debugger";
+ fiq_tty_driver->name = "ttyFIQ";
+ fiq_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
+ fiq_tty_driver->subtype = SERIAL_TYPE_NORMAL;
+ fiq_tty_driver->init_termios = tty_std_termios;
+ fiq_tty_driver->flags = TTY_DRIVER_REAL_RAW |
+ TTY_DRIVER_DYNAMIC_DEV;
+ fiq_tty_driver->driver_state = states;
+
+ fiq_tty_driver->init_termios.c_cflag =
+ B115200 | CS8 | CREAD | HUPCL | CLOCAL;
+ fiq_tty_driver->init_termios.c_ispeed = 115200;
+ fiq_tty_driver->init_termios.c_ospeed = 115200;
+
+ tty_set_operations(fiq_tty_driver, &fiq_tty_driver_ops);
+
+ ret = tty_register_driver(fiq_tty_driver);
+ if (ret) {
+ pr_err("Failed to register fiq tty: %d\n", ret);
+ goto err_free_tty;
+ }
+
+ pr_info("Registered FIQ tty driver\n");
+ return 0;
+
+err_free_tty:
+ put_tty_driver(fiq_tty_driver);
+ fiq_tty_driver = NULL;
+err_free_state:
+ kfree(states);
+ return ret;
+}
+
+static int fiq_debugger_tty_init_one(struct fiq_debugger_state *state)
+{
+ int ret;
+ struct device *tty_dev;
+ struct fiq_debugger_state **states = fiq_tty_driver->driver_state;
+
+ states[state->pdev->id] = state;
+
+ state->tty_rbuf = fiq_debugger_ringbuf_alloc(1024);
+ if (!state->tty_rbuf) {
+ pr_err("Failed to allocate fiq debugger ringbuf\n");
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ tty_dev = tty_register_device(fiq_tty_driver, state->pdev->id,
+ &state->pdev->dev);
+ if (IS_ERR(tty_dev)) {
+ pr_err("Failed to register fiq debugger tty device\n");
+ ret = PTR_ERR(tty_dev);
+ goto err;
+ }
+
+ device_set_wakeup_capable(tty_dev, 1);
+
+ pr_info("Registered fiq debugger ttyFIQ%d\n", state->pdev->id);
+
+ return 0;
+
+err:
+ fiq_debugger_ringbuf_free(state->tty_rbuf);
+ state->tty_rbuf = NULL;
+ return ret;
+}
+#endif
+
+static int fiq_debugger_dev_suspend(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct fiq_debugger_state *state = platform_get_drvdata(pdev);
+
+ if (state->pdata->uart_dev_suspend)
+ return state->pdata->uart_dev_suspend(pdev);
+ return 0;
+}
+
+static int fiq_debugger_dev_resume(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct fiq_debugger_state *state = platform_get_drvdata(pdev);
+
+ if (state->pdata->uart_dev_resume)
+ return state->pdata->uart_dev_resume(pdev);
+ return 0;
+}
+
+static int fiq_debugger_probe(struct platform_device *pdev)
+{
+ int ret;
+ struct fiq_debugger_pdata *pdata = dev_get_platdata(&pdev->dev);
+ struct fiq_debugger_state *state;
+ int fiq;
+ int uart_irq;
+
+ if (pdev->id >= MAX_FIQ_DEBUGGER_PORTS)
+ return -EINVAL;
+
+ if (!pdata->uart_getc || !pdata->uart_putc)
+ return -EINVAL;
+ if ((pdata->uart_enable && !pdata->uart_disable) ||
+ (!pdata->uart_enable && pdata->uart_disable))
+ return -EINVAL;
+
+ fiq = platform_get_irq_byname(pdev, "fiq");
+ uart_irq = platform_get_irq_byname(pdev, "uart_irq");
+
+ /* uart_irq mode and fiq mode are mutually exclusive, but one of them
+ * is required */
+ if ((uart_irq < 0 && fiq < 0) || (uart_irq >= 0 && fiq >= 0))
+ return -EINVAL;
+ if (fiq >= 0 && !pdata->fiq_enable)
+ return -EINVAL;
+
+ state = kzalloc(sizeof(*state), GFP_KERNEL);
+ setup_timer(&state->sleep_timer, sleep_timer_expired,
+ (unsigned long)state);
+ state->pdata = pdata;
+ state->pdev = pdev;
+ state->no_sleep = initial_no_sleep;
+ state->debug_enable = initial_debug_enable;
+ state->console_enable = initial_console_enable;
+
+ state->fiq = fiq;
+ state->uart_irq = uart_irq;
+ state->signal_irq = platform_get_irq_byname(pdev, "signal");
+ state->wakeup_irq = platform_get_irq_byname(pdev, "wakeup");
+
+ INIT_WORK(&state->work, debug_work);
+ spin_lock_init(&state->work_lock);
+
+ platform_set_drvdata(pdev, state);
+
+ spin_lock_init(&state->sleep_timer_lock);
+
+ if (state->wakeup_irq < 0 && debug_have_fiq(state))
+ state->no_sleep = true;
+ state->ignore_next_wakeup_irq = !state->no_sleep;
+
+ wake_lock_init(&state->debugger_wake_lock,
+ WAKE_LOCK_SUSPEND, "serial-debug");
+
+ state->clk = clk_get(&pdev->dev, NULL);
+ if (IS_ERR(state->clk))
+ state->clk = NULL;
+
+ /* do not call pdata->uart_enable here since uart_init may still
+ * need to do some initialization before uart_enable can work.
+ * So, only try to manage the clock during init.
+ */
+ if (state->clk)
+ clk_enable(state->clk);
+
+ if (pdata->uart_init) {
+ ret = pdata->uart_init(pdev);
+ if (ret)
+ goto err_uart_init;
+ }
+
+ debug_printf_nfiq(state, "\n",
+ state->no_sleep ? "" : "twice ");
+
+ if (debug_have_fiq(state)) {
+ state->handler.fiq = debug_fiq;
+ state->handler.resume = debug_resume;
+ ret = fiq_glue_register_handler(&state->handler);
+ if (ret) {
+ pr_err("%s: could not install fiq handler\n", __func__);
+ goto err_register_fiq;
+ }
+
+ pdata->fiq_enable(pdev, state->fiq, 1);
+ } else {
+ ret = request_irq(state->uart_irq, debug_uart_irq,
+ IRQF_NO_SUSPEND, "debug", state);
+ if (ret) {
+ pr_err("%s: could not install irq handler\n", __func__);
+ goto err_register_irq;
+ }
+
+ /* for irq-only mode, we want this irq to wake us up, if it
+ * can.
+ */
+ enable_irq_wake(state->uart_irq);
+ }
+
+ if (state->clk)
+ clk_disable(state->clk);
+
+ if (state->signal_irq >= 0) {
+ ret = request_irq(state->signal_irq, debug_signal_irq,
+ IRQF_TRIGGER_RISING, "debug-signal", state);
+ if (ret)
+ pr_err("serial_debugger: could not install signal_irq");
+ }
+
+ if (state->wakeup_irq >= 0) {
+ ret = request_irq(state->wakeup_irq, wakeup_irq_handler,
+ IRQF_TRIGGER_FALLING | IRQF_DISABLED,
+ "debug-wakeup", state);
+ if (ret) {
+ pr_err("serial_debugger: "
+ "could not install wakeup irq\n");
+ state->wakeup_irq = -1;
+ } else {
+ ret = enable_irq_wake(state->wakeup_irq);
+ if (ret) {
+ pr_err("serial_debugger: "
+ "could not enable wakeup\n");
+ state->wakeup_irq_no_set_wake = true;
+ }
+ }
+ }
+ if (state->no_sleep)
+ handle_wakeup(state);
+
+#if defined(CONFIG_FIQ_DEBUGGER_CONSOLE)
+ spin_lock_init(&state->console_lock);
+ state->console = fiq_debugger_console;
+ state->console.index = pdev->id;
+ if (!console_set_on_cmdline)
+ add_preferred_console(state->console.name,
+ state->console.index, NULL);
+ register_console(&state->console);
+ fiq_debugger_tty_init_one(state);
+#endif
+ return 0;
+
+err_register_irq:
+err_register_fiq:
+ if (pdata->uart_free)
+ pdata->uart_free(pdev);
+err_uart_init:
+ if (state->clk)
+ clk_disable(state->clk);
+ if (state->clk)
+ clk_put(state->clk);
+ wake_lock_destroy(&state->debugger_wake_lock);
+ platform_set_drvdata(pdev, NULL);
+ kfree(state);
+ return ret;
+}
+
+static const struct dev_pm_ops fiq_debugger_dev_pm_ops = {
+ .suspend = fiq_debugger_dev_suspend,
+ .resume = fiq_debugger_dev_resume,
+};
+
+static struct platform_driver fiq_debugger_driver = {
+ .probe = fiq_debugger_probe,
+ .driver = {
+ .name = "fiq_debugger",
+ .pm = &fiq_debugger_dev_pm_ops,
+ },
+};
+
+static int __init fiq_debugger_init(void)
+{
+ fiq_debugger_tty_init();
+ return platform_driver_register(&fiq_debugger_driver);
+}
+
+postcore_initcall(fiq_debugger_init);
diff --git a/arch/arm/common/fiq_debugger_ringbuf.h b/arch/arm/common/fiq_debugger_ringbuf.h
new file mode 100644
index 00000000..2649b558
--- /dev/null
+++ b/arch/arm/common/fiq_debugger_ringbuf.h
@@ -0,0 +1,94 @@
+/*
+ * arch/arm/common/fiq_debugger_ringbuf.c
+ *
+ * simple lockless ringbuffer
+ *
+ * Copyright (C) 2010 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include
+#include
+
+struct fiq_debugger_ringbuf {
+ int len;
+ int head;
+ int tail;
+ u8 buf[];
+};
+
+
+static inline struct fiq_debugger_ringbuf *fiq_debugger_ringbuf_alloc(int len)
+{
+ struct fiq_debugger_ringbuf *rbuf;
+
+ rbuf = kzalloc(sizeof(*rbuf) + len, GFP_KERNEL);
+ if (rbuf == NULL)
+ return NULL;
+
+ rbuf->len = len;
+ rbuf->head = 0;
+ rbuf->tail = 0;
+ smp_mb();
+
+ return rbuf;
+}
+
+static inline void fiq_debugger_ringbuf_free(struct fiq_debugger_ringbuf *rbuf)
+{
+ kfree(rbuf);
+}
+
+static inline int fiq_debugger_ringbuf_level(struct fiq_debugger_ringbuf *rbuf)
+{
+ int level = rbuf->head - rbuf->tail;
+
+ if (level < 0)
+ level = rbuf->len + level;
+
+ return level;
+}
+
+static inline int fiq_debugger_ringbuf_room(struct fiq_debugger_ringbuf *rbuf)
+{
+ return rbuf->len - fiq_debugger_ringbuf_level(rbuf) - 1;
+}
+
+static inline u8
+fiq_debugger_ringbuf_peek(struct fiq_debugger_ringbuf *rbuf, int i)
+{
+ return rbuf->buf[(rbuf->tail + i) % rbuf->len];
+}
+
+static inline int
+fiq_debugger_ringbuf_consume(struct fiq_debugger_ringbuf *rbuf, int count)
+{
+ count = min(count, fiq_debugger_ringbuf_level(rbuf));
+
+ rbuf->tail = (rbuf->tail + count) % rbuf->len;
+ smp_mb();
+
+ return count;
+}
+
+static inline int
+fiq_debugger_ringbuf_push(struct fiq_debugger_ringbuf *rbuf, u8 datum)
+{
+ if (fiq_debugger_ringbuf_room(rbuf) == 0)
+ return 0;
+
+ rbuf->buf[rbuf->head] = datum;
+ smp_mb();
+ rbuf->head = (rbuf->head + 1) % rbuf->len;
+ smp_mb();
+
+ return 1;
+}
diff --git a/arch/arm/common/fiq_glue.S b/arch/arm/common/fiq_glue.S
new file mode 100644
index 00000000..9e3455a0
--- /dev/null
+++ b/arch/arm/common/fiq_glue.S
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include
+#include
+
+ .text
+
+ .global fiq_glue_end
+
+ /* fiq stack: r0-r15,cpsr,spsr of interrupted mode */
+
+ENTRY(fiq_glue)
+ /* store pc, cpsr from previous mode */
+ mrs r12, spsr
+ sub r11, lr, #4
+ subs r10, #1
+ bne nested_fiq
+
+ stmfd sp!, {r11-r12, lr}
+
+ /* store r8-r14 from previous mode */
+ sub sp, sp, #(7 * 4)
+ stmia sp, {r8-r14}^
+ nop
+
+ /* store r0-r7 from previous mode */
+ stmfd sp!, {r0-r7}
+
+ /* setup func(data,regs) arguments */
+ mov r0, r9
+ mov r1, sp
+ mov r3, r8
+
+ mov r7, sp
+
+ /* Get sp and lr from non-user modes */
+ and r4, r12, #MODE_MASK
+ cmp r4, #USR_MODE
+ beq fiq_from_usr_mode
+
+ mov r7, sp
+ orr r4, r4, #(PSR_I_BIT | PSR_F_BIT)
+ msr cpsr_c, r4
+ str sp, [r7, #(4 * 13)]
+ str lr, [r7, #(4 * 14)]
+ mrs r5, spsr
+ str r5, [r7, #(4 * 17)]
+
+ cmp r4, #(SVC_MODE | PSR_I_BIT | PSR_F_BIT)
+ /* use fiq stack if we reenter this mode */
+ subne sp, r7, #(4 * 3)
+
+fiq_from_usr_mode:
+ msr cpsr_c, #(SVC_MODE | PSR_I_BIT | PSR_F_BIT)
+ mov r2, sp
+ sub sp, r7, #12
+ stmfd sp!, {r2, ip, lr}
+ /* call func(data,regs) */
+ blx r3
+ ldmfd sp, {r2, ip, lr}
+ mov sp, r2
+
+ /* restore/discard saved state */
+ cmp r4, #USR_MODE
+ beq fiq_from_usr_mode_exit
+
+ msr cpsr_c, r4
+ ldr sp, [r7, #(4 * 13)]
+ ldr lr, [r7, #(4 * 14)]
+ msr spsr_cxsf, r5
+
+fiq_from_usr_mode_exit:
+ msr cpsr_c, #(FIQ_MODE | PSR_I_BIT | PSR_F_BIT)
+
+ ldmfd sp!, {r0-r7}
+ add sp, sp, #(7 * 4)
+ ldmfd sp!, {r11-r12, lr}
+exit_fiq:
+ msr spsr_cxsf, r12
+ add r10, #1
+ movs pc, r11
+
+nested_fiq:
+ orr r12, r12, #(PSR_F_BIT)
+ b exit_fiq
+
+fiq_glue_end:
+
+ENTRY(fiq_glue_setup) /* func, data, sp */
+ mrs r3, cpsr
+ msr cpsr_c, #(FIQ_MODE | PSR_I_BIT | PSR_F_BIT)
+ movs r8, r0
+ mov r9, r1
+ mov sp, r2
+ moveq r10, #0
+ movne r10, #1
+ msr cpsr_c, r3
+ bx lr
+
diff --git a/arch/arm/common/fiq_glue_setup.c b/arch/arm/common/fiq_glue_setup.c
new file mode 100644
index 00000000..4044c7db
--- /dev/null
+++ b/arch/arm/common/fiq_glue_setup.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2010 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+extern unsigned char fiq_glue, fiq_glue_end;
+extern void fiq_glue_setup(void *func, void *data, void *sp);
+
+static struct fiq_handler fiq_debbuger_fiq_handler = {
+ .name = "fiq_glue",
+};
+DEFINE_PER_CPU(void *, fiq_stack);
+static struct fiq_glue_handler *current_handler;
+static DEFINE_MUTEX(fiq_glue_lock);
+
+static void fiq_glue_setup_helper(void *info)
+{
+ struct fiq_glue_handler *handler = info;
+ fiq_glue_setup(handler->fiq, handler,
+ __get_cpu_var(fiq_stack) + THREAD_START_SP);
+}
+
+int fiq_glue_register_handler(struct fiq_glue_handler *handler)
+{
+ int ret;
+ int cpu;
+
+ if (!handler || !handler->fiq)
+ return -EINVAL;
+
+ mutex_lock(&fiq_glue_lock);
+ if (fiq_stack) {
+ ret = -EBUSY;
+ goto err_busy;
+ }
+
+ for_each_possible_cpu(cpu) {
+ void *stack;
+ stack = (void *)__get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER);
+ if (WARN_ON(!stack)) {
+ ret = -ENOMEM;
+ goto err_alloc_fiq_stack;
+ }
+ per_cpu(fiq_stack, cpu) = stack;
+ }
+
+ ret = claim_fiq(&fiq_debbuger_fiq_handler);
+ if (WARN_ON(ret))
+ goto err_claim_fiq;
+
+ current_handler = handler;
+ on_each_cpu(fiq_glue_setup_helper, handler, true);
+ set_fiq_handler(&fiq_glue, &fiq_glue_end - &fiq_glue);
+
+ mutex_unlock(&fiq_glue_lock);
+ return 0;
+
+err_claim_fiq:
+err_alloc_fiq_stack:
+ for_each_possible_cpu(cpu) {
+ __free_pages(per_cpu(fiq_stack, cpu), THREAD_SIZE_ORDER);
+ per_cpu(fiq_stack, cpu) = NULL;
+ }
+err_busy:
+ mutex_unlock(&fiq_glue_lock);
+ return ret;
+}
+
+/**
+ * fiq_glue_resume - Restore fiqs after suspend or low power idle states
+ *
+ * This must be called before calling local_fiq_enable after returning from a
+ * power state where the fiq mode registers were lost. If a driver provided
+ * a resume hook when it registered the handler it will be called.
+ */
+
+void fiq_glue_resume(void)
+{
+ if (!current_handler)
+ return;
+ fiq_glue_setup(current_handler->fiq, current_handler,
+ __get_cpu_var(fiq_stack) + THREAD_START_SP);
+ if (current_handler->resume)
+ current_handler->resume(current_handler);
+}
+
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
new file mode 100644
index 00000000..dfd8daf6
--- /dev/null
+++ b/arch/arm/common/gic.c
@@ -0,0 +1,812 @@
+/*
+ * linux/arch/arm/common/gic.c
+ *
+ * Copyright (C) 2002 ARM Limited, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Interrupt architecture for the GIC:
+ *
+ * o There is one Interrupt Distributor, which receives interrupts
+ * from system devices and sends them to the Interrupt Controllers.
+ *
+ * o There is one CPU Interface per CPU, which sends interrupts sent
+ * by the Distributor, and interrupts generated locally, to the
+ * associated CPU. The base address of the CPU interface is usually
+ * aliased so that the same address points to different chips depending
+ * on the CPU it is accessed from.
+ *
+ * Note that IRQs 0-31 are special - they are local to each CPU.
+ * As such, the enable set/clear, pending set/clear and active bit
+ * registers are banked per-cpu for these sources.
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+union gic_base {
+ void __iomem *common_base;
+ void __percpu __iomem **percpu_base;
+};
+
+struct gic_chip_data {
+ union gic_base dist_base;
+ union gic_base cpu_base;
+#ifdef CONFIG_CPU_PM
+ u32 saved_spi_enable[DIV_ROUND_UP(1020, 32)];
+ u32 saved_spi_conf[DIV_ROUND_UP(1020, 16)];
+ u32 saved_spi_target[DIV_ROUND_UP(1020, 4)];
+ u32 __percpu *saved_ppi_enable;
+ u32 __percpu *saved_ppi_conf;
+#endif
+ struct irq_domain *domain;
+ unsigned int gic_irqs;
+#ifdef CONFIG_GIC_NON_BANKED
+ void __iomem *(*get_base)(union gic_base *);
+#endif
+};
+
+static DEFINE_RAW_SPINLOCK(irq_controller_lock);
+
+/*
+ * Supported arch specific GIC irq extension.
+ * Default make them NULL.
+ */
+struct irq_chip gic_arch_extn = {
+ .irq_eoi = NULL,
+ .irq_mask = NULL,
+ .irq_unmask = NULL,
+ .irq_retrigger = NULL,
+ .irq_set_type = NULL,
+ .irq_set_wake = NULL,
+};
+
+#ifndef MAX_GIC_NR
+#define MAX_GIC_NR 1
+#endif
+
+extern int wmt_getsyspara(char *varname, unsigned char *varval, int *varlen);
+
+static struct gic_chip_data gic_data[MAX_GIC_NR] __read_mostly;
+
+#ifdef CONFIG_GIC_NON_BANKED
+static void __iomem *gic_get_percpu_base(union gic_base *base)
+{
+ return *__this_cpu_ptr(base->percpu_base);
+}
+
+static void __iomem *gic_get_common_base(union gic_base *base)
+{
+ return base->common_base;
+}
+
+static inline void __iomem *gic_data_dist_base(struct gic_chip_data *data)
+{
+ return data->get_base(&data->dist_base);
+}
+
+static inline void __iomem *gic_data_cpu_base(struct gic_chip_data *data)
+{
+ return data->get_base(&data->cpu_base);
+}
+
+static inline void gic_set_base_accessor(struct gic_chip_data *data,
+ void __iomem *(*f)(union gic_base *))
+{
+ data->get_base = f;
+}
+#else
+#define gic_data_dist_base(d) ((d)->dist_base.common_base)
+#define gic_data_cpu_base(d) ((d)->cpu_base.common_base)
+#define gic_set_base_accessor(d,f)
+#endif
+
+static inline void __iomem *gic_dist_base(struct irq_data *d)
+{
+ struct gic_chip_data *gic_data = irq_data_get_irq_chip_data(d);
+ return gic_data_dist_base(gic_data);
+}
+
+static inline void __iomem *gic_cpu_base(struct irq_data *d)
+{
+ struct gic_chip_data *gic_data = irq_data_get_irq_chip_data(d);
+ return gic_data_cpu_base(gic_data);
+}
+
+static inline unsigned int gic_irq(struct irq_data *d)
+{
+ return d->hwirq;
+}
+
+/*
+ * Routines to acknowledge, disable and enable interrupts
+ */
+static void gic_mask_irq(struct irq_data *d)
+{
+ u32 mask = 1 << (gic_irq(d) % 32);
+
+ raw_spin_lock(&irq_controller_lock);
+ writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_CLEAR + (gic_irq(d) / 32) * 4);
+ if (gic_arch_extn.irq_mask)
+ gic_arch_extn.irq_mask(d);
+ raw_spin_unlock(&irq_controller_lock);
+}
+
+static void gic_unmask_irq(struct irq_data *d)
+{
+ u32 mask = 1 << (gic_irq(d) % 32);
+
+ raw_spin_lock(&irq_controller_lock);
+ if (gic_arch_extn.irq_unmask)
+ gic_arch_extn.irq_unmask(d);
+ writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_SET + (gic_irq(d) / 32) * 4);
+ raw_spin_unlock(&irq_controller_lock);
+}
+
+static void gic_eoi_irq(struct irq_data *d)
+{
+ if (gic_arch_extn.irq_eoi) {
+ raw_spin_lock(&irq_controller_lock);
+ gic_arch_extn.irq_eoi(d);
+ raw_spin_unlock(&irq_controller_lock);
+ }
+
+ writel_relaxed(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI);
+}
+
+static int gic_set_type(struct irq_data *d, unsigned int type)
+{
+ void __iomem *base = gic_dist_base(d);
+ unsigned int gicirq = gic_irq(d);
+ u32 enablemask = 1 << (gicirq % 32);
+ u32 enableoff = (gicirq / 32) * 4;
+ u32 confmask = 0x2 << ((gicirq % 16) * 2);
+ u32 confoff = (gicirq / 16) * 4;
+ bool enabled = false;
+ u32 val;
+
+ /* Interrupt configuration for SGIs can't be changed */
+ if (gicirq < 16)
+ return -EINVAL;
+
+ if (type != IRQ_TYPE_LEVEL_HIGH && type != IRQ_TYPE_EDGE_RISING)
+ return -EINVAL;
+
+ raw_spin_lock(&irq_controller_lock);
+
+ if (gic_arch_extn.irq_set_type)
+ gic_arch_extn.irq_set_type(d, type);
+
+ val = readl_relaxed(base + GIC_DIST_CONFIG + confoff);
+ if (type == IRQ_TYPE_LEVEL_HIGH)
+ val &= ~confmask;
+ else if (type == IRQ_TYPE_EDGE_RISING)
+ val |= confmask;
+
+ /*
+ * As recommended by the spec, disable the interrupt before changing
+ * the configuration
+ */
+ if (readl_relaxed(base + GIC_DIST_ENABLE_SET + enableoff) & enablemask) {
+ writel_relaxed(enablemask, base + GIC_DIST_ENABLE_CLEAR + enableoff);
+ enabled = true;
+ }
+
+ writel_relaxed(val, base + GIC_DIST_CONFIG + confoff);
+
+ if (enabled)
+ writel_relaxed(enablemask, base + GIC_DIST_ENABLE_SET + enableoff);
+
+ raw_spin_unlock(&irq_controller_lock);
+
+ return 0;
+}
+
+static int gic_retrigger(struct irq_data *d)
+{
+ if (gic_arch_extn.irq_retrigger)
+ return gic_arch_extn.irq_retrigger(d);
+
+ return -ENXIO;
+}
+
+#ifdef CONFIG_SMP
+static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
+ bool force)
+{
+ void __iomem *reg = gic_dist_base(d) + GIC_DIST_TARGET + (gic_irq(d) & ~3);
+ unsigned int shift = (gic_irq(d) % 4) * 8;
+ unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask);
+ u32 val, mask, bit;
+
+ if (cpu >= 8 || cpu >= nr_cpu_ids)
+ return -EINVAL;
+
+ mask = 0xff << shift;
+ bit = 1 << (cpu_logical_map(cpu) + shift);
+
+ raw_spin_lock(&irq_controller_lock);
+ val = readl_relaxed(reg) & ~mask;
+ writel_relaxed(val | bit, reg);
+ raw_spin_unlock(&irq_controller_lock);
+
+ return IRQ_SET_MASK_OK;
+}
+#endif
+
+#ifdef CONFIG_PM
+static int gic_set_wake(struct irq_data *d, unsigned int on)
+{
+ int ret = -ENXIO;
+
+ if (gic_arch_extn.irq_set_wake)
+ ret = gic_arch_extn.irq_set_wake(d, on);
+
+ return ret;
+}
+
+#else
+#define gic_set_wake NULL
+#endif
+
+asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
+{
+ u32 irqstat, irqnr;
+ struct gic_chip_data *gic = &gic_data[0];
+ void __iomem *cpu_base = gic_data_cpu_base(gic);
+
+ do {
+ irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
+ irqnr = irqstat & ~0x1c00;
+
+ if (likely(irqnr > 15 && irqnr < 1021)) {
+ irqnr = irq_find_mapping(gic->domain, irqnr);
+ handle_IRQ(irqnr, regs);
+ continue;
+ }
+ if (irqnr < 16) {
+ writel_relaxed(irqstat, cpu_base + GIC_CPU_EOI);
+#ifdef CONFIG_SMP
+ handle_IPI(irqnr, regs);
+#endif
+ continue;
+ }
+ break;
+ } while (1);
+}
+
+static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+{
+ struct gic_chip_data *chip_data = irq_get_handler_data(irq);
+ struct irq_chip *chip = irq_get_chip(irq);
+ unsigned int cascade_irq, gic_irq;
+ unsigned long status;
+
+ chained_irq_enter(chip, desc);
+
+ raw_spin_lock(&irq_controller_lock);
+ status = readl_relaxed(gic_data_cpu_base(chip_data) + GIC_CPU_INTACK);
+ raw_spin_unlock(&irq_controller_lock);
+
+ gic_irq = (status & 0x3ff);
+ if (gic_irq == 1023)
+ goto out;
+
+ cascade_irq = irq_find_mapping(chip_data->domain, gic_irq);
+ if (unlikely(gic_irq < 32 || gic_irq > 1020))
+ do_bad_IRQ(cascade_irq, desc);
+ else
+ generic_handle_irq(cascade_irq);
+
+ out:
+ chained_irq_exit(chip, desc);
+}
+
+static struct irq_chip gic_chip = {
+ .name = "GIC",
+ .irq_mask = gic_mask_irq,
+ .irq_unmask = gic_unmask_irq,
+ .irq_eoi = gic_eoi_irq,
+ .irq_set_type = gic_set_type,
+ .irq_retrigger = gic_retrigger,
+#ifdef CONFIG_SMP
+ .irq_set_affinity = gic_set_affinity,
+#endif
+ .irq_set_wake = gic_set_wake,
+ .irq_disable = gic_mask_irq,
+};
+
+void __init gic_cascade_irq(unsigned int gic_nr, unsigned int irq)
+{
+ if (gic_nr >= MAX_GIC_NR)
+ BUG();
+ if (irq_set_handler_data(irq, &gic_data[gic_nr]) != 0)
+ BUG();
+ irq_set_chained_handler(irq, gic_handle_cascade_irq);
+}
+
+static void __init gic_dist_init(struct gic_chip_data *gic)
+{
+ unsigned int i;
+ u32 cpumask;
+ unsigned int gic_irqs = gic->gic_irqs;
+ void __iomem *base = gic_data_dist_base(gic);
+ u32 cpu = cpu_logical_map(smp_processor_id());
+
+ cpumask = 1 << cpu;
+ cpumask |= cpumask << 8;
+ cpumask |= cpumask << 16;
+
+ writel_relaxed(0, base + GIC_DIST_CTRL);
+
+ /*
+ * Set all global interrupts to be level triggered, active low.
+ */
+ for (i = 32; i < gic_irqs; i += 16)
+ writel_relaxed(0, base + GIC_DIST_CONFIG + i * 4 / 16);
+
+/* This code won't effect the Secure OS interrupt*/
+/*#ifndef CONFIG_OTZONE_AMP_SUPPORT */
+ /*
+ * Set all global interrupts to this CPU only.
+ */
+ for (i = 32; i < gic_irqs; i += 4)
+ writel_relaxed(cpumask, base + GIC_DIST_TARGET + i * 4 / 4);
+/*#endif */
+ /*
+ * Set priority on all global interrupts.
+ */
+ for (i = 32; i < gic_irqs; i += 4)
+ writel_relaxed(0xa0a0a0a0, base + GIC_DIST_PRI + i * 4 / 4);
+
+ /*
+ * Disable all interrupts. Leave the PPI and SGIs alone
+ * as these enables are banked registers.
+ */
+ for (i = 32; i < gic_irqs; i += 32)
+ writel_relaxed(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32);
+
+ writel_relaxed(1, base + GIC_DIST_CTRL);
+}
+
+static void __cpuinit gic_cpu_init(struct gic_chip_data *gic)
+{
+ void __iomem *dist_base = gic_data_dist_base(gic);
+ void __iomem *base = gic_data_cpu_base(gic);
+ int i;
+ unsigned int wmt_trustzone_enable = 0;
+ unsigned char buf[10];
+ int varlen=10;
+
+ if (wmt_getsyspara("wmt.secure.param",buf,&varlen) == 0)
+ sscanf(buf,"%d",&wmt_trustzone_enable);
+ if(wmt_trustzone_enable != 1)
+ wmt_trustzone_enable = 0;
+ /*
+ * Deal with the banked PPI and SGI interrupts - disable all
+ * PPI interrupts, ensure all SGI interrupts are enabled.
+ */
+ writel_relaxed(0xffff0000, dist_base + GIC_DIST_ENABLE_CLEAR);
+ writel_relaxed(0x0000ffff, dist_base + GIC_DIST_ENABLE_SET);
+
+ /*
+ * Set priority on PPI and SGI interrupts
+ */
+ for (i = 0; i < 32; i += 4)
+ writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4 / 4);
+
+ if (wmt_trustzone_enable != 1) {
+ writel_relaxed(0xf0, base + GIC_CPU_PRIMASK);
+ }
+
+ writel_relaxed(1, base + GIC_CPU_CTRL);
+}
+
+#ifdef CONFIG_CPU_PM
+/*
+ * Saves the GIC distributor registers during suspend or idle. Must be called
+ * with interrupts disabled but before powering down the GIC. After calling
+ * this function, no interrupts will be delivered by the GIC, and another
+ * platform-specific wakeup source must be enabled.
+ */
+static void gic_dist_save(unsigned int gic_nr)
+{
+ unsigned int gic_irqs;
+ void __iomem *dist_base;
+ int i;
+
+ if (gic_nr >= MAX_GIC_NR)
+ BUG();
+
+ gic_irqs = gic_data[gic_nr].gic_irqs;
+ dist_base = gic_data_dist_base(&gic_data[gic_nr]);
+
+ if (!dist_base)
+ return;
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 16); i++)
+ gic_data[gic_nr].saved_spi_conf[i] =
+ readl_relaxed(dist_base + GIC_DIST_CONFIG + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 4); i++)
+ gic_data[gic_nr].saved_spi_target[i] =
+ readl_relaxed(dist_base + GIC_DIST_TARGET + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 32); i++)
+ gic_data[gic_nr].saved_spi_enable[i] =
+ readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4);
+}
+
+/*
+ * Restores the GIC distributor registers during resume or when coming out of
+ * idle. Must be called before enabling interrupts. If a level interrupt
+ * that occured while the GIC was suspended is still present, it will be
+ * handled normally, but any edge interrupts that occured will not be seen by
+ * the GIC and need to be handled by the platform-specific wakeup source.
+ */
+static void gic_dist_restore(unsigned int gic_nr)
+{
+ unsigned int gic_irqs;
+ unsigned int i;
+ void __iomem *dist_base;
+
+ if (gic_nr >= MAX_GIC_NR)
+ BUG();
+
+ gic_irqs = gic_data[gic_nr].gic_irqs;
+ dist_base = gic_data_dist_base(&gic_data[gic_nr]);
+
+ if (!dist_base)
+ return;
+
+ writel_relaxed(0, dist_base + GIC_DIST_CTRL);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 16); i++)
+ writel_relaxed(gic_data[gic_nr].saved_spi_conf[i],
+ dist_base + GIC_DIST_CONFIG + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 4); i++)
+ writel_relaxed(0xa0a0a0a0,
+ dist_base + GIC_DIST_PRI + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 4); i++)
+ writel_relaxed(gic_data[gic_nr].saved_spi_target[i],
+ dist_base + GIC_DIST_TARGET + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(gic_irqs, 32); i++)
+ writel_relaxed(gic_data[gic_nr].saved_spi_enable[i],
+ dist_base + GIC_DIST_ENABLE_SET + i * 4);
+
+ writel_relaxed(1, dist_base + GIC_DIST_CTRL);
+}
+
+static void gic_cpu_save(unsigned int gic_nr)
+{
+ int i;
+ u32 *ptr;
+ void __iomem *dist_base;
+ void __iomem *cpu_base;
+
+ if (gic_nr >= MAX_GIC_NR)
+ BUG();
+
+ dist_base = gic_data_dist_base(&gic_data[gic_nr]);
+ cpu_base = gic_data_cpu_base(&gic_data[gic_nr]);
+
+ if (!dist_base || !cpu_base)
+ return;
+
+ ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
+ for (i = 0; i < DIV_ROUND_UP(32, 32); i++)
+ ptr[i] = readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4);
+
+ ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
+ for (i = 0; i < DIV_ROUND_UP(32, 16); i++)
+ ptr[i] = readl_relaxed(dist_base + GIC_DIST_CONFIG + i * 4);
+
+}
+
+static void gic_cpu_restore(unsigned int gic_nr)
+{
+ int i;
+ u32 *ptr;
+ void __iomem *dist_base;
+ void __iomem *cpu_base;
+
+ unsigned int wmt_trustzone_enable = 0;
+ unsigned char buf[10];
+ int varlen=10;
+
+ if (wmt_getsyspara("wmt.secure.param",buf,&varlen) == 0)
+ sscanf(buf,"%d",&wmt_trustzone_enable);
+ if(wmt_trustzone_enable != 1)
+ wmt_trustzone_enable = 0;
+
+
+ if (gic_nr >= MAX_GIC_NR)
+ BUG();
+
+ dist_base = gic_data_dist_base(&gic_data[gic_nr]);
+ cpu_base = gic_data_cpu_base(&gic_data[gic_nr]);
+
+ if (!dist_base || !cpu_base)
+ return;
+
+ ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
+ for (i = 0; i < DIV_ROUND_UP(32, 32); i++)
+ writel_relaxed(ptr[i], dist_base + GIC_DIST_ENABLE_SET + i * 4);
+
+ ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
+ for (i = 0; i < DIV_ROUND_UP(32, 16); i++)
+ writel_relaxed(ptr[i], dist_base + GIC_DIST_CONFIG + i * 4);
+
+ for (i = 0; i < DIV_ROUND_UP(32, 4); i++)
+ writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4);
+
+ if (wmt_trustzone_enable != 1) {
+ writel_relaxed(0xf0, cpu_base + GIC_CPU_PRIMASK);
+ }
+
+ writel_relaxed(1, cpu_base + GIC_CPU_CTRL);
+}
+
+static int gic_notifier(struct notifier_block *self, unsigned long cmd, void *v)
+{
+ int i;
+
+ for (i = 0; i < MAX_GIC_NR; i++) {
+#ifdef CONFIG_GIC_NON_BANKED
+ /* Skip over unused GICs */
+ if (!gic_data[i].get_base)
+ continue;
+#endif
+ switch (cmd) {
+ case CPU_PM_ENTER:
+ gic_cpu_save(i);
+ break;
+ case CPU_PM_ENTER_FAILED:
+ case CPU_PM_EXIT:
+ gic_cpu_restore(i);
+ break;
+ case CPU_CLUSTER_PM_ENTER:
+ gic_dist_save(i);
+ break;
+ case CPU_CLUSTER_PM_ENTER_FAILED:
+ case CPU_CLUSTER_PM_EXIT:
+ gic_dist_restore(i);
+ break;
+ }
+ }
+
+ return NOTIFY_OK;
+}
+
+static struct notifier_block gic_notifier_block = {
+ .notifier_call = gic_notifier,
+};
+
+static void __init gic_pm_init(struct gic_chip_data *gic)
+{
+ gic->saved_ppi_enable = __alloc_percpu(DIV_ROUND_UP(32, 32) * 4,
+ sizeof(u32));
+ BUG_ON(!gic->saved_ppi_enable);
+
+ gic->saved_ppi_conf = __alloc_percpu(DIV_ROUND_UP(32, 16) * 4,
+ sizeof(u32));
+ BUG_ON(!gic->saved_ppi_conf);
+
+ if (gic == &gic_data[0])
+ cpu_pm_register_notifier(&gic_notifier_block);
+}
+#else
+static void __init gic_pm_init(struct gic_chip_data *gic)
+{
+}
+#endif
+
+static int gic_irq_domain_map(struct irq_domain *d, unsigned int irq,
+ irq_hw_number_t hw)
+{
+ if (hw < 32) {
+ irq_set_percpu_devid(irq);
+ irq_set_chip_and_handler(irq, &gic_chip,
+ handle_percpu_devid_irq);
+ set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN);
+ } else {
+ irq_set_chip_and_handler(irq, &gic_chip,
+ handle_fasteoi_irq);
+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+ }
+ irq_set_chip_data(irq, d->host_data);
+ return 0;
+}
+
+static int gic_irq_domain_xlate(struct irq_domain *d,
+ struct device_node *controller,
+ const u32 *intspec, unsigned int intsize,
+ unsigned long *out_hwirq, unsigned int *out_type)
+{
+ if (d->of_node != controller)
+ return -EINVAL;
+ if (intsize < 3)
+ return -EINVAL;
+
+ /* Get the interrupt number and add 16 to skip over SGIs */
+ *out_hwirq = intspec[1] + 16;
+
+ /* For SPIs, we need to add 16 more to get the GIC irq ID number */
+ if (!intspec[0])
+ *out_hwirq += 16;
+
+ *out_type = intspec[2] & IRQ_TYPE_SENSE_MASK;
+ return 0;
+}
+
+const struct irq_domain_ops gic_irq_domain_ops = {
+ .map = gic_irq_domain_map,
+ .xlate = gic_irq_domain_xlate,
+};
+
+void __init gic_init_bases(unsigned int gic_nr, int irq_start,
+ void __iomem *dist_base, void __iomem *cpu_base,
+ u32 percpu_offset, struct device_node *node)
+{
+ irq_hw_number_t hwirq_base;
+ struct gic_chip_data *gic;
+ int gic_irqs, irq_base;
+
+ BUG_ON(gic_nr >= MAX_GIC_NR);
+
+ gic = &gic_data[gic_nr];
+#ifdef CONFIG_GIC_NON_BANKED
+ if (percpu_offset) { /* Frankein-GIC without banked registers... */
+ unsigned int cpu;
+
+ gic->dist_base.percpu_base = alloc_percpu(void __iomem *);
+ gic->cpu_base.percpu_base = alloc_percpu(void __iomem *);
+ if (WARN_ON(!gic->dist_base.percpu_base ||
+ !gic->cpu_base.percpu_base)) {
+ free_percpu(gic->dist_base.percpu_base);
+ free_percpu(gic->cpu_base.percpu_base);
+ return;
+ }
+
+ for_each_possible_cpu(cpu) {
+ unsigned long offset = percpu_offset * cpu_logical_map(cpu);
+ *per_cpu_ptr(gic->dist_base.percpu_base, cpu) = dist_base + offset;
+ *per_cpu_ptr(gic->cpu_base.percpu_base, cpu) = cpu_base + offset;
+ }
+
+ gic_set_base_accessor(gic, gic_get_percpu_base);
+ } else
+#endif
+ { /* Normal, sane GIC... */
+ WARN(percpu_offset,
+ "GIC_NON_BANKED not enabled, ignoring %08x offset!",
+ percpu_offset);
+ gic->dist_base.common_base = dist_base;
+ gic->cpu_base.common_base = cpu_base;
+ gic_set_base_accessor(gic, gic_get_common_base);
+ }
+
+ /*
+ * For primary GICs, skip over SGIs.
+ * For secondary GICs, skip over PPIs, too.
+ */
+ if (gic_nr == 0 && (irq_start & 31) > 0) {
+ hwirq_base = 16;
+ if (irq_start != -1)
+ irq_start = (irq_start & ~31) + 16;
+ } else {
+ hwirq_base = 32;
+ }
+
+ /*
+ * Find out how many interrupts are supported.
+ * The GIC only supports up to 1020 interrupt sources.
+ */
+ gic_irqs = readl_relaxed(gic_data_dist_base(gic) + GIC_DIST_CTR) & 0x1f;
+ gic_irqs = (gic_irqs + 1) * 32;
+ if (gic_irqs > 1020)
+ gic_irqs = 1020;
+ gic->gic_irqs = gic_irqs;
+
+ gic_irqs -= hwirq_base; /* calculate # of irqs to allocate */
+ irq_base = irq_alloc_descs(irq_start, 16, gic_irqs, numa_node_id());
+ if (IS_ERR_VALUE(irq_base)) {
+ WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
+ irq_start);
+ irq_base = irq_start;
+ }
+ gic->domain = irq_domain_add_legacy(node, gic_irqs, irq_base,
+ hwirq_base, &gic_irq_domain_ops, gic);
+ if (WARN_ON(!gic->domain))
+ return;
+
+ gic_chip.flags |= gic_arch_extn.flags;
+ gic_dist_init(gic);
+ gic_cpu_init(gic);
+ gic_pm_init(gic);
+}
+
+void __cpuinit gic_secondary_init(unsigned int gic_nr)
+{
+ BUG_ON(gic_nr >= MAX_GIC_NR);
+
+ gic_cpu_init(&gic_data[gic_nr]);
+}
+
+#ifdef CONFIG_SMP
+void gic_raise_softirq(const struct cpumask *mask, unsigned int irq)
+{
+ int cpu;
+ unsigned long map = 0;
+
+ /* Convert our logical CPU mask into a physical one. */
+ for_each_cpu(cpu, mask)
+ map |= 1 << cpu_logical_map(cpu);
+
+ /*
+ * Ensure that stores to Normal memory are visible to the
+ * other CPUs before issuing the IPI.
+ */
+ dsb();
+
+ /* this always happens on GIC0 */
+ writel_relaxed(map << 16 | irq, gic_data_dist_base(&gic_data[0]) + GIC_DIST_SOFTINT);
+}
+#endif
+
+#ifdef CONFIG_OF
+static int gic_cnt __initdata = 0;
+
+int __init gic_of_init(struct device_node *node, struct device_node *parent)
+{
+ void __iomem *cpu_base;
+ void __iomem *dist_base;
+ u32 percpu_offset;
+ int irq;
+
+ if (WARN_ON(!node))
+ return -ENODEV;
+
+ dist_base = of_iomap(node, 0);
+ WARN(!dist_base, "unable to map gic dist registers\n");
+
+ cpu_base = of_iomap(node, 1);
+ WARN(!cpu_base, "unable to map gic cpu registers\n");
+
+ if (of_property_read_u32(node, "cpu-offset", &percpu_offset))
+ percpu_offset = 0;
+
+ gic_init_bases(gic_cnt, -1, dist_base, cpu_base, percpu_offset, node);
+
+ if (parent) {
+ irq = irq_of_parse_and_map(node, 0);
+ gic_cascade_irq(gic_cnt, irq);
+ }
+ gic_cnt++;
+ return 0;
+}
+#endif
diff --git a/arch/arm/common/icst.c b/arch/arm/common/icst.c
new file mode 100644
index 00000000..2dc6da70
--- /dev/null
+++ b/arch/arm/common/icst.c
@@ -0,0 +1,100 @@
+/*
+ * linux/arch/arm/common/icst307.c
+ *
+ * Copyright (C) 2003 Deep Blue Solutions, Ltd, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Support functions for calculating clocks/divisors for the ICST307
+ * clock generators. See http://www.idt.com/ for more information
+ * on these devices.
+ *
+ * This is an almost identical implementation to the ICST525 clock generator.
+ * The s2div and idx2s files are different
+ */
+#include
+#include
+
+#include
+
+/*
+ * Divisors for each OD setting.
+ */
+const unsigned char icst307_s2div[8] = { 10, 2, 8, 4, 5, 7, 3, 6 };
+const unsigned char icst525_s2div[8] = { 10, 2, 8, 4, 5, 7, 9, 6 };
+EXPORT_SYMBOL(icst307_s2div);
+EXPORT_SYMBOL(icst525_s2div);
+
+unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco)
+{
+ return p->ref * 2 * (vco.v + 8) / ((vco.r + 2) * p->s2div[vco.s]);
+}
+
+EXPORT_SYMBOL(icst_hz);
+
+/*
+ * Ascending divisor S values.
+ */
+const unsigned char icst307_idx2s[8] = { 1, 6, 3, 4, 7, 5, 2, 0 };
+const unsigned char icst525_idx2s[8] = { 1, 3, 4, 7, 5, 2, 6, 0 };
+EXPORT_SYMBOL(icst307_idx2s);
+EXPORT_SYMBOL(icst525_idx2s);
+
+struct icst_vco
+icst_hz_to_vco(const struct icst_params *p, unsigned long freq)
+{
+ struct icst_vco vco = { .s = 1, .v = p->vd_max, .r = p->rd_max };
+ unsigned long f;
+ unsigned int i = 0, rd, best = (unsigned int)-1;
+
+ /*
+ * First, find the PLL output divisor such
+ * that the PLL output is within spec.
+ */
+ do {
+ f = freq * p->s2div[p->idx2s[i]];
+
+ if (f > p->vco_min && f <= p->vco_max)
+ break;
+ } while (i < 8);
+
+ if (i >= 8)
+ return vco;
+
+ vco.s = p->idx2s[i];
+
+ /*
+ * Now find the closest divisor combination
+ * which gives a PLL output of 'f'.
+ */
+ for (rd = p->rd_min; rd <= p->rd_max; rd++) {
+ unsigned long fref_div, f_pll;
+ unsigned int vd;
+ int f_diff;
+
+ fref_div = (2 * p->ref) / rd;
+
+ vd = (f + fref_div / 2) / fref_div;
+ if (vd < p->vd_min || vd > p->vd_max)
+ continue;
+
+ f_pll = fref_div * vd;
+ f_diff = f_pll - f;
+ if (f_diff < 0)
+ f_diff = -f_diff;
+
+ if ((unsigned)f_diff < best) {
+ vco.v = vd - 8;
+ vco.r = rd - 2;
+ if (f_diff == 0)
+ break;
+ best = f_diff;
+ }
+ }
+
+ return vco;
+}
+
+EXPORT_SYMBOL(icst_hz_to_vco);
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
new file mode 100644
index 00000000..dcb13494
--- /dev/null
+++ b/arch/arm/common/it8152.c
@@ -0,0 +1,354 @@
+/*
+ * linux/arch/arm/common/it8152.c
+ *
+ * Copyright Compulab Ltd, 2002-2007
+ * Mike Rapoport
+ *
+ * The DMA bouncing part is taken from arch/arm/mach-ixp4xx/common-pci.c
+ * (see this file for respective copyrights)
+ *
+ * Thanks to Guennadi Liakhovetski for IRQ enumberation
+ * and demux code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#define MAX_SLOTS 21
+
+static void it8152_mask_irq(struct irq_data *d)
+{
+ unsigned int irq = d->irq;
+
+ if (irq >= IT8152_LD_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_LDCNIMR) |
+ (1 << (irq - IT8152_LD_IRQ(0)))),
+ IT8152_INTC_LDCNIMR);
+ } else if (irq >= IT8152_LP_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_LPCNIMR) |
+ (1 << (irq - IT8152_LP_IRQ(0)))),
+ IT8152_INTC_LPCNIMR);
+ } else if (irq >= IT8152_PD_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_PDCNIMR) |
+ (1 << (irq - IT8152_PD_IRQ(0)))),
+ IT8152_INTC_PDCNIMR);
+ }
+}
+
+static void it8152_unmask_irq(struct irq_data *d)
+{
+ unsigned int irq = d->irq;
+
+ if (irq >= IT8152_LD_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_LDCNIMR) &
+ ~(1 << (irq - IT8152_LD_IRQ(0)))),
+ IT8152_INTC_LDCNIMR);
+ } else if (irq >= IT8152_LP_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_LPCNIMR) &
+ ~(1 << (irq - IT8152_LP_IRQ(0)))),
+ IT8152_INTC_LPCNIMR);
+ } else if (irq >= IT8152_PD_IRQ(0)) {
+ __raw_writel((__raw_readl(IT8152_INTC_PDCNIMR) &
+ ~(1 << (irq - IT8152_PD_IRQ(0)))),
+ IT8152_INTC_PDCNIMR);
+ }
+}
+
+static struct irq_chip it8152_irq_chip = {
+ .name = "it8152",
+ .irq_ack = it8152_mask_irq,
+ .irq_mask = it8152_mask_irq,
+ .irq_unmask = it8152_unmask_irq,
+};
+
+void it8152_init_irq(void)
+{
+ int irq;
+
+ __raw_writel((0xffff), IT8152_INTC_PDCNIMR);
+ __raw_writel((0), IT8152_INTC_PDCNIRR);
+ __raw_writel((0xffff), IT8152_INTC_LPCNIMR);
+ __raw_writel((0), IT8152_INTC_LPCNIRR);
+ __raw_writel((0xffff), IT8152_INTC_LDCNIMR);
+ __raw_writel((0), IT8152_INTC_LDCNIRR);
+
+ for (irq = IT8152_IRQ(0); irq <= IT8152_LAST_IRQ; irq++) {
+ irq_set_chip_and_handler(irq, &it8152_irq_chip,
+ handle_level_irq);
+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+ }
+}
+
+void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+{
+ int bits_pd, bits_lp, bits_ld;
+ int i;
+
+ while (1) {
+ /* Read all */
+ bits_pd = __raw_readl(IT8152_INTC_PDCNIRR);
+ bits_lp = __raw_readl(IT8152_INTC_LPCNIRR);
+ bits_ld = __raw_readl(IT8152_INTC_LDCNIRR);
+
+ /* Ack */
+ __raw_writel((~bits_pd), IT8152_INTC_PDCNIRR);
+ __raw_writel((~bits_lp), IT8152_INTC_LPCNIRR);
+ __raw_writel((~bits_ld), IT8152_INTC_LDCNIRR);
+
+ if (!(bits_ld | bits_lp | bits_pd)) {
+ /* Re-read to guarantee, that there was a moment of
+ time, when they all three were 0. */
+ bits_pd = __raw_readl(IT8152_INTC_PDCNIRR);
+ bits_lp = __raw_readl(IT8152_INTC_LPCNIRR);
+ bits_ld = __raw_readl(IT8152_INTC_LDCNIRR);
+ if (!(bits_ld | bits_lp | bits_pd))
+ return;
+ }
+
+ bits_pd &= ((1 << IT8152_PD_IRQ_COUNT) - 1);
+ while (bits_pd) {
+ i = __ffs(bits_pd);
+ generic_handle_irq(IT8152_PD_IRQ(i));
+ bits_pd &= ~(1 << i);
+ }
+
+ bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1);
+ while (bits_lp) {
+ i = __ffs(bits_lp);
+ generic_handle_irq(IT8152_LP_IRQ(i));
+ bits_lp &= ~(1 << i);
+ }
+
+ bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1);
+ while (bits_ld) {
+ i = __ffs(bits_ld);
+ generic_handle_irq(IT8152_LD_IRQ(i));
+ bits_ld &= ~(1 << i);
+ }
+ }
+}
+
+/* mapping for on-chip devices */
+int __init it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+ if ((dev->vendor == PCI_VENDOR_ID_ITE) &&
+ (dev->device == PCI_DEVICE_ID_ITE_8152)) {
+ if ((dev->class >> 8) == PCI_CLASS_MULTIMEDIA_AUDIO)
+ return IT8152_AUDIO_INT;
+ if ((dev->class >> 8) == PCI_CLASS_SERIAL_USB)
+ return IT8152_USB_INT;
+ if ((dev->class >> 8) == PCI_CLASS_SYSTEM_DMA)
+ return IT8152_CDMA_INT;
+ }
+
+ return 0;
+}
+
+static unsigned long it8152_pci_dev_base_address(struct pci_bus *bus,
+ unsigned int devfn)
+{
+ unsigned long addr = 0;
+
+ if (bus->number == 0) {
+ if (devfn < PCI_DEVFN(MAX_SLOTS, 0))
+ addr = (devfn << 8);
+ } else
+ addr = (bus->number << 16) | (devfn << 8);
+
+ return addr;
+}
+
+static int it8152_pci_read_config(struct pci_bus *bus,
+ unsigned int devfn, int where,
+ int size, u32 *value)
+{
+ unsigned long addr = it8152_pci_dev_base_address(bus, devfn);
+ u32 v;
+ int shift;
+
+ shift = (where & 3);
+
+ __raw_writel((addr + where), IT8152_PCI_CFG_ADDR);
+ v = (__raw_readl(IT8152_PCI_CFG_DATA) >> (8 * (shift)));
+
+ *value = v;
+
+ return PCIBIOS_SUCCESSFUL;
+}
+
+static int it8152_pci_write_config(struct pci_bus *bus,
+ unsigned int devfn, int where,
+ int size, u32 value)
+{
+ unsigned long addr = it8152_pci_dev_base_address(bus, devfn);
+ u32 v, vtemp, mask = 0;
+ int shift;
+
+ if (size == 1)
+ mask = 0xff;
+ if (size == 2)
+ mask = 0xffff;
+
+ shift = (where & 3);
+
+ __raw_writel((addr + where), IT8152_PCI_CFG_ADDR);
+ vtemp = __raw_readl(IT8152_PCI_CFG_DATA);
+
+ if (mask)
+ vtemp &= ~(mask << (8 * shift));
+ else
+ vtemp = 0;
+
+ v = (value << (8 * shift));
+ __raw_writel((addr + where), IT8152_PCI_CFG_ADDR);
+ __raw_writel((v | vtemp), IT8152_PCI_CFG_DATA);
+
+ return PCIBIOS_SUCCESSFUL;
+}
+
+static struct pci_ops it8152_ops = {
+ .read = it8152_pci_read_config,
+ .write = it8152_pci_write_config,
+};
+
+static struct resource it8152_io = {
+ .name = "IT8152 PCI I/O region",
+ .flags = IORESOURCE_IO,
+};
+
+static struct resource it8152_mem = {
+ .name = "IT8152 PCI memory region",
+ .start = 0x10000000,
+ .end = 0x13e00000,
+ .flags = IORESOURCE_MEM,
+};
+
+/*
+ * The following functions are needed for DMA bouncing.
+ * ITE8152 chip can address up to 64MByte, so all the devices
+ * connected to ITE8152 (PCI and USB) should have limited DMA window
+ */
+static int it8152_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
+{
+ dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
+ __func__, dma_addr, size);
+ return (dma_addr + size - PHYS_OFFSET) >= SZ_64M;
+}
+
+/*
+ * Setup DMA mask to 64MB on devices connected to ITE8152. Ignore all
+ * other devices.
+ */
+static int it8152_pci_platform_notify(struct device *dev)
+{
+ if (dev->bus == &pci_bus_type) {
+ if (dev->dma_mask)
+ *dev->dma_mask = (SZ_64M - 1) | PHYS_OFFSET;
+ dev->coherent_dma_mask = (SZ_64M - 1) | PHYS_OFFSET;
+ dmabounce_register_dev(dev, 2048, 4096, it8152_needs_bounce);
+ }
+ return 0;
+}
+
+static int it8152_pci_platform_notify_remove(struct device *dev)
+{
+ if (dev->bus == &pci_bus_type)
+ dmabounce_unregister_dev(dev);
+
+ return 0;
+}
+
+int dma_set_coherent_mask(struct device *dev, u64 mask)
+{
+ if (mask >= PHYS_OFFSET + SZ_64M - 1)
+ return 0;
+
+ return -EIO;
+}
+
+int __init it8152_pci_setup(int nr, struct pci_sys_data *sys)
+{
+ it8152_io.start = IT8152_IO_BASE + 0x12000;
+ it8152_io.end = IT8152_IO_BASE + 0x12000 + 0x100000;
+
+ sys->mem_offset = 0x10000000;
+ sys->io_offset = IT8152_IO_BASE;
+
+ if (request_resource(&ioport_resource, &it8152_io)) {
+ printk(KERN_ERR "PCI: unable to allocate IO region\n");
+ goto err0;
+ }
+ if (request_resource(&iomem_resource, &it8152_mem)) {
+ printk(KERN_ERR "PCI: unable to allocate memory region\n");
+ goto err1;
+ }
+
+ pci_add_resource_offset(&sys->resources, &it8152_io, sys->io_offset);
+ pci_add_resource_offset(&sys->resources, &it8152_mem, sys->mem_offset);
+
+ if (platform_notify || platform_notify_remove) {
+ printk(KERN_ERR "PCI: Can't use platform_notify\n");
+ goto err2;
+ }
+
+ platform_notify = it8152_pci_platform_notify;
+ platform_notify_remove = it8152_pci_platform_notify_remove;
+
+ return 1;
+
+err2:
+ release_resource(&it8152_io);
+err1:
+ release_resource(&it8152_mem);
+err0:
+ return -EBUSY;
+}
+
+/* ITE bridge requires setting latency timer to avoid early bus access
+ termination by PCI bus master devices
+*/
+void pcibios_set_master(struct pci_dev *dev)
+{
+ u8 lat;
+
+ /* no need to update on-chip OHCI controller */
+ if ((dev->vendor == PCI_VENDOR_ID_ITE) &&
+ (dev->device == PCI_DEVICE_ID_ITE_8152) &&
+ ((dev->class >> 8) == PCI_CLASS_SERIAL_USB))
+ return;
+
+ pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
+ if (lat < 16)
+ lat = (64 <= pcibios_max_latency) ? 64 : pcibios_max_latency;
+ else if (lat > pcibios_max_latency)
+ lat = pcibios_max_latency;
+ else
+ return;
+ printk(KERN_DEBUG "PCI: Setting latency timer of device %s to %d\n",
+ pci_name(dev), lat);
+ pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
+}
+
+
+struct pci_bus * __init it8152_pci_scan_bus(int nr, struct pci_sys_data *sys)
+{
+ return pci_scan_root_bus(NULL, nr, &it8152_ops, sys, &sys->resources);
+}
+
+EXPORT_SYMBOL(dma_set_coherent_mask);
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
new file mode 100644
index 00000000..b55c3625
--- /dev/null
+++ b/arch/arm/common/locomo.c
@@ -0,0 +1,914 @@
+/*
+ * linux/arch/arm/common/locomo.c
+ *
+ * Sharp LoCoMo support
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This file contains all generic LoCoMo support.
+ *
+ * All initialization functions provided here are intended to be called
+ * from machine specific code with proper arguments when required.
+ *
+ * Based on sa1111.c
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include
+
+/* LoCoMo Interrupts */
+#define IRQ_LOCOMO_KEY (0)
+#define IRQ_LOCOMO_GPIO (1)
+#define IRQ_LOCOMO_LT (2)
+#define IRQ_LOCOMO_SPI (3)
+
+/* M62332 output channel selection */
+#define M62332_EVR_CH 1 /* M62332 volume channel number */
+ /* 0 : CH.1 , 1 : CH. 2 */
+/* DAC send data */
+#define M62332_SLAVE_ADDR 0x4e /* Slave address */
+#define M62332_W_BIT 0x00 /* W bit (0 only) */
+#define M62332_SUB_ADDR 0x00 /* Sub address */
+#define M62332_A_BIT 0x00 /* A bit (0 only) */
+
+/* DAC setup and hold times (expressed in us) */
+#define DAC_BUS_FREE_TIME 5 /* 4.7 us */
+#define DAC_START_SETUP_TIME 5 /* 4.7 us */
+#define DAC_STOP_SETUP_TIME 4 /* 4.0 us */
+#define DAC_START_HOLD_TIME 5 /* 4.7 us */
+#define DAC_SCL_LOW_HOLD_TIME 5 /* 4.7 us */
+#define DAC_SCL_HIGH_HOLD_TIME 4 /* 4.0 us */
+#define DAC_DATA_SETUP_TIME 1 /* 250 ns */
+#define DAC_DATA_HOLD_TIME 1 /* 300 ns */
+#define DAC_LOW_SETUP_TIME 1 /* 300 ns */
+#define DAC_HIGH_SETUP_TIME 1 /* 1000 ns */
+
+/* the following is the overall data for the locomo chip */
+struct locomo {
+ struct device *dev;
+ unsigned long phys;
+ unsigned int irq;
+ int irq_base;
+ spinlock_t lock;
+ void __iomem *base;
+#ifdef CONFIG_PM
+ void *saved_state;
+#endif
+};
+
+struct locomo_dev_info {
+ unsigned long offset;
+ unsigned long length;
+ unsigned int devid;
+ unsigned int irq[1];
+ const char * name;
+};
+
+/* All the locomo devices. If offset is non-zero, the mapbase for the
+ * locomo_dev will be set to the chip base plus offset. If offset is
+ * zero, then the mapbase for the locomo_dev will be set to zero. An
+ * offset of zero means the device only uses GPIOs or other helper
+ * functions inside this file */
+static struct locomo_dev_info locomo_devices[] = {
+ {
+ .devid = LOCOMO_DEVID_KEYBOARD,
+ .irq = { IRQ_LOCOMO_KEY },
+ .name = "locomo-keyboard",
+ .offset = LOCOMO_KEYBOARD,
+ .length = 16,
+ },
+ {
+ .devid = LOCOMO_DEVID_FRONTLIGHT,
+ .irq = {},
+ .name = "locomo-frontlight",
+ .offset = LOCOMO_FRONTLIGHT,
+ .length = 8,
+
+ },
+ {
+ .devid = LOCOMO_DEVID_BACKLIGHT,
+ .irq = {},
+ .name = "locomo-backlight",
+ .offset = LOCOMO_BACKLIGHT,
+ .length = 8,
+ },
+ {
+ .devid = LOCOMO_DEVID_AUDIO,
+ .irq = {},
+ .name = "locomo-audio",
+ .offset = LOCOMO_AUDIO,
+ .length = 4,
+ },
+ {
+ .devid = LOCOMO_DEVID_LED,
+ .irq = {},
+ .name = "locomo-led",
+ .offset = LOCOMO_LED,
+ .length = 8,
+ },
+ {
+ .devid = LOCOMO_DEVID_UART,
+ .irq = {},
+ .name = "locomo-uart",
+ .offset = 0,
+ .length = 0,
+ },
+ {
+ .devid = LOCOMO_DEVID_SPI,
+ .irq = {},
+ .name = "locomo-spi",
+ .offset = LOCOMO_SPI,
+ .length = 0x30,
+ },
+};
+
+static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+{
+ struct locomo *lchip = irq_get_chip_data(irq);
+ int req, i;
+
+ /* Acknowledge the parent IRQ */
+ desc->irq_data.chip->irq_ack(&desc->irq_data);
+
+ /* check why this interrupt was generated */
+ req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00;
+
+ if (req) {
+ /* generate the next interrupt(s) */
+ irq = lchip->irq_base;
+ for (i = 0; i <= 3; i++, irq++) {
+ if (req & (0x0100 << i)) {
+ generic_handle_irq(irq);
+ }
+
+ }
+ }
+}
+
+static void locomo_ack_irq(struct irq_data *d)
+{
+}
+
+static void locomo_mask_irq(struct irq_data *d)
+{
+ struct locomo *lchip = irq_data_get_irq_chip_data(d);
+ unsigned int r;
+ r = locomo_readl(lchip->base + LOCOMO_ICR);
+ r &= ~(0x0010 << (d->irq - lchip->irq_base));
+ locomo_writel(r, lchip->base + LOCOMO_ICR);
+}
+
+static void locomo_unmask_irq(struct irq_data *d)
+{
+ struct locomo *lchip = irq_data_get_irq_chip_data(d);
+ unsigned int r;
+ r = locomo_readl(lchip->base + LOCOMO_ICR);
+ r |= (0x0010 << (d->irq - lchip->irq_base));
+ locomo_writel(r, lchip->base + LOCOMO_ICR);
+}
+
+static struct irq_chip locomo_chip = {
+ .name = "LOCOMO",
+ .irq_ack = locomo_ack_irq,
+ .irq_mask = locomo_mask_irq,
+ .irq_unmask = locomo_unmask_irq,
+};
+
+static void locomo_setup_irq(struct locomo *lchip)
+{
+ int irq = lchip->irq_base;
+
+ /*
+ * Install handler for IRQ_LOCOMO_HW.
+ */
+ irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
+ irq_set_chip_data(lchip->irq, lchip);
+ irq_set_chained_handler(lchip->irq, locomo_handler);
+
+ /* Install handlers for IRQ_LOCOMO_* */
+ for ( ; irq <= lchip->irq_base + 3; irq++) {
+ irq_set_chip_and_handler(irq, &locomo_chip, handle_level_irq);
+ irq_set_chip_data(irq, lchip);
+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+ }
+}
+
+
+static void locomo_dev_release(struct device *_dev)
+{
+ struct locomo_dev *dev = LOCOMO_DEV(_dev);
+
+ kfree(dev);
+}
+
+static int
+locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info)
+{
+ struct locomo_dev *dev;
+ int ret;
+
+ dev = kzalloc(sizeof(struct locomo_dev), GFP_KERNEL);
+ if (!dev) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ /*
+ * If the parent device has a DMA mask associated with it,
+ * propagate it down to the children.
+ */
+ if (lchip->dev->dma_mask) {
+ dev->dma_mask = *lchip->dev->dma_mask;
+ dev->dev.dma_mask = &dev->dma_mask;
+ }
+
+ dev_set_name(&dev->dev, "%s", info->name);
+ dev->devid = info->devid;
+ dev->dev.parent = lchip->dev;
+ dev->dev.bus = &locomo_bus_type;
+ dev->dev.release = locomo_dev_release;
+ dev->dev.coherent_dma_mask = lchip->dev->coherent_dma_mask;
+
+ if (info->offset)
+ dev->mapbase = lchip->base + info->offset;
+ else
+ dev->mapbase = 0;
+ dev->length = info->length;
+
+ dev->irq[0] = (lchip->irq_base == NO_IRQ) ?
+ NO_IRQ : lchip->irq_base + info->irq[0];
+
+ ret = device_register(&dev->dev);
+ if (ret) {
+ out:
+ kfree(dev);
+ }
+ return ret;
+}
+
+#ifdef CONFIG_PM
+
+struct locomo_save_data {
+ u16 LCM_GPO;
+ u16 LCM_SPICT;
+ u16 LCM_GPE;
+ u16 LCM_ASD;
+ u16 LCM_SPIMD;
+};
+
+static int locomo_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct locomo *lchip = platform_get_drvdata(dev);
+ struct locomo_save_data *save;
+ unsigned long flags;
+
+ save = kmalloc(sizeof(struct locomo_save_data), GFP_KERNEL);
+ if (!save)
+ return -ENOMEM;
+
+ lchip->saved_state = save;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+
+ save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */
+ locomo_writel(0x00, lchip->base + LOCOMO_GPO);
+ save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */
+ locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
+ save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */
+ locomo_writel(0x00, lchip->base + LOCOMO_GPE);
+ save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */
+ locomo_writel(0x00, lchip->base + LOCOMO_ASD);
+ save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); /* SPI */
+ locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
+
+ locomo_writel(0x00, lchip->base + LOCOMO_PAIF);
+ locomo_writel(0x00, lchip->base + LOCOMO_DAC);
+ locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC);
+
+ if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88))
+ locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */
+ else
+ /* 18MHz already enabled, so no wait */
+ locomo_writel(0xc1, lchip->base + LOCOMO_C32K); /* CLK32 on */
+
+ locomo_writel(0x00, lchip->base + LOCOMO_TADC); /* 18MHz clock off*/
+ locomo_writel(0x00, lchip->base + LOCOMO_AUDIO + LOCOMO_ACC); /* 22MHz/24MHz clock off */
+ locomo_writel(0x00, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); /* FL */
+
+ spin_unlock_irqrestore(&lchip->lock, flags);
+
+ return 0;
+}
+
+static int locomo_resume(struct platform_device *dev)
+{
+ struct locomo *lchip = platform_get_drvdata(dev);
+ struct locomo_save_data *save;
+ unsigned long r;
+ unsigned long flags;
+
+ save = lchip->saved_state;
+ if (!save)
+ return 0;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+
+ locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO);
+ locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
+ locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE);
+ locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD);
+ locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
+
+ locomo_writel(0x00, lchip->base + LOCOMO_C32K);
+ locomo_writel(0x90, lchip->base + LOCOMO_TADC);
+
+ locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KSC);
+ r = locomo_readl(lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
+ r &= 0xFEFF;
+ locomo_writel(r, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
+ locomo_writel(0x1, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KCMD);
+
+ spin_unlock_irqrestore(&lchip->lock, flags);
+
+ lchip->saved_state = NULL;
+ kfree(save);
+
+ return 0;
+}
+#endif
+
+
+/**
+ * locomo_probe - probe for a single LoCoMo chip.
+ * @phys_addr: physical address of device.
+ *
+ * Probe for a LoCoMo chip. This must be called
+ * before any other locomo-specific code.
+ *
+ * Returns:
+ * %-ENODEV device not found.
+ * %-EBUSY physical address already marked in-use.
+ * %0 successful.
+ */
+static int
+__locomo_probe(struct device *me, struct resource *mem, int irq)
+{
+ struct locomo_platform_data *pdata = me->platform_data;
+ struct locomo *lchip;
+ unsigned long r;
+ int i, ret = -ENODEV;
+
+ lchip = kzalloc(sizeof(struct locomo), GFP_KERNEL);
+ if (!lchip)
+ return -ENOMEM;
+
+ spin_lock_init(&lchip->lock);
+
+ lchip->dev = me;
+ dev_set_drvdata(lchip->dev, lchip);
+
+ lchip->phys = mem->start;
+ lchip->irq = irq;
+ lchip->irq_base = (pdata) ? pdata->irq_base : NO_IRQ;
+
+ /*
+ * Map the whole region. This also maps the
+ * registers for our children.
+ */
+ lchip->base = ioremap(mem->start, PAGE_SIZE);
+ if (!lchip->base) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ /* locomo initialize */
+ locomo_writel(0, lchip->base + LOCOMO_ICR);
+ /* KEYBOARD */
+ locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
+
+ /* GPIO */
+ locomo_writel(0, lchip->base + LOCOMO_GPO);
+ locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
+ , lchip->base + LOCOMO_GPE);
+ locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
+ , lchip->base + LOCOMO_GPD);
+ locomo_writel(0, lchip->base + LOCOMO_GIE);
+
+ /* Frontlight */
+ locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
+ locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
+
+ /* Longtime timer */
+ locomo_writel(0, lchip->base + LOCOMO_LTINT);
+ /* SPI */
+ locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE);
+
+ locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
+ r = locomo_readl(lchip->base + LOCOMO_ASD);
+ r |= 0x8000;
+ locomo_writel(r, lchip->base + LOCOMO_ASD);
+
+ locomo_writel(6 + 8 + 320 + 30 - 10 - 128 + 4, lchip->base + LOCOMO_HSD);
+ r = locomo_readl(lchip->base + LOCOMO_HSD);
+ r |= 0x8000;
+ locomo_writel(r, lchip->base + LOCOMO_HSD);
+
+ locomo_writel(128 / 8, lchip->base + LOCOMO_HSC);
+
+ /* XON */
+ locomo_writel(0x80, lchip->base + LOCOMO_TADC);
+ udelay(1000);
+ /* CLK9MEN */
+ r = locomo_readl(lchip->base + LOCOMO_TADC);
+ r |= 0x10;
+ locomo_writel(r, lchip->base + LOCOMO_TADC);
+ udelay(100);
+
+ /* init DAC */
+ r = locomo_readl(lchip->base + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
+ locomo_writel(r, lchip->base + LOCOMO_DAC);
+
+ r = locomo_readl(lchip->base + LOCOMO_VER);
+ printk(KERN_INFO "LoCoMo Chip: %lu%lu\n", (r >> 8), (r & 0xff));
+
+ /*
+ * The interrupt controller must be initialised before any
+ * other device to ensure that the interrupts are available.
+ */
+ if (lchip->irq != NO_IRQ && lchip->irq_base != NO_IRQ)
+ locomo_setup_irq(lchip);
+
+ for (i = 0; i < ARRAY_SIZE(locomo_devices); i++)
+ locomo_init_one_child(lchip, &locomo_devices[i]);
+ return 0;
+
+ out:
+ kfree(lchip);
+ return ret;
+}
+
+static int locomo_remove_child(struct device *dev, void *data)
+{
+ device_unregister(dev);
+ return 0;
+}
+
+static void __locomo_remove(struct locomo *lchip)
+{
+ device_for_each_child(lchip->dev, NULL, locomo_remove_child);
+
+ if (lchip->irq != NO_IRQ) {
+ irq_set_chained_handler(lchip->irq, NULL);
+ irq_set_handler_data(lchip->irq, NULL);
+ }
+
+ iounmap(lchip->base);
+ kfree(lchip);
+}
+
+static int locomo_probe(struct platform_device *dev)
+{
+ struct resource *mem;
+ int irq;
+
+ mem = platform_get_resource(dev, IORESOURCE_MEM, 0);
+ if (!mem)
+ return -EINVAL;
+ irq = platform_get_irq(dev, 0);
+ if (irq < 0)
+ return -ENXIO;
+
+ return __locomo_probe(&dev->dev, mem, irq);
+}
+
+static int locomo_remove(struct platform_device *dev)
+{
+ struct locomo *lchip = platform_get_drvdata(dev);
+
+ if (lchip) {
+ __locomo_remove(lchip);
+ platform_set_drvdata(dev, NULL);
+ }
+
+ return 0;
+}
+
+/*
+ * Not sure if this should be on the system bus or not yet.
+ * We really want some way to register a system device at
+ * the per-machine level, and then have this driver pick
+ * up the registered devices.
+ */
+static struct platform_driver locomo_device_driver = {
+ .probe = locomo_probe,
+ .remove = locomo_remove,
+#ifdef CONFIG_PM
+ .suspend = locomo_suspend,
+ .resume = locomo_resume,
+#endif
+ .driver = {
+ .name = "locomo",
+ },
+};
+
+/*
+ * Get the parent device driver (us) structure
+ * from a child function device
+ */
+static inline struct locomo *locomo_chip_driver(struct locomo_dev *ldev)
+{
+ return (struct locomo *)dev_get_drvdata(ldev->dev.parent);
+}
+
+void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir)
+{
+ struct locomo *lchip = dev_get_drvdata(dev);
+ unsigned long flags;
+ unsigned int r;
+
+ if (!lchip)
+ return;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+
+ r = locomo_readl(lchip->base + LOCOMO_GPD);
+ if (dir)
+ r |= bits;
+ else
+ r &= ~bits;
+ locomo_writel(r, lchip->base + LOCOMO_GPD);
+
+ r = locomo_readl(lchip->base + LOCOMO_GPE);
+ if (dir)
+ r |= bits;
+ else
+ r &= ~bits;
+ locomo_writel(r, lchip->base + LOCOMO_GPE);
+
+ spin_unlock_irqrestore(&lchip->lock, flags);
+}
+EXPORT_SYMBOL(locomo_gpio_set_dir);
+
+int locomo_gpio_read_level(struct device *dev, unsigned int bits)
+{
+ struct locomo *lchip = dev_get_drvdata(dev);
+ unsigned long flags;
+ unsigned int ret;
+
+ if (!lchip)
+ return -ENODEV;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+ ret = locomo_readl(lchip->base + LOCOMO_GPL);
+ spin_unlock_irqrestore(&lchip->lock, flags);
+
+ ret &= bits;
+ return ret;
+}
+EXPORT_SYMBOL(locomo_gpio_read_level);
+
+int locomo_gpio_read_output(struct device *dev, unsigned int bits)
+{
+ struct locomo *lchip = dev_get_drvdata(dev);
+ unsigned long flags;
+ unsigned int ret;
+
+ if (!lchip)
+ return -ENODEV;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+ ret = locomo_readl(lchip->base + LOCOMO_GPO);
+ spin_unlock_irqrestore(&lchip->lock, flags);
+
+ ret &= bits;
+ return ret;
+}
+EXPORT_SYMBOL(locomo_gpio_read_output);
+
+void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set)
+{
+ struct locomo *lchip = dev_get_drvdata(dev);
+ unsigned long flags;
+ unsigned int r;
+
+ if (!lchip)
+ return;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+
+ r = locomo_readl(lchip->base + LOCOMO_GPO);
+ if (set)
+ r |= bits;
+ else
+ r &= ~bits;
+ locomo_writel(r, lchip->base + LOCOMO_GPO);
+
+ spin_unlock_irqrestore(&lchip->lock, flags);
+}
+EXPORT_SYMBOL(locomo_gpio_write);
+
+static void locomo_m62332_sendbit(void *mapbase, int bit)
+{
+ unsigned int r;
+
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_DATA_HOLD_TIME); /* 300 nsec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+
+ if (bit & 1) {
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SDAOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ } else {
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SDAOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ }
+
+ udelay(DAC_DATA_SETUP_TIME); /* 250 nsec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.0 usec */
+}
+
+void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel)
+{
+ struct locomo *lchip = locomo_chip_driver(ldev);
+ int i;
+ unsigned char data;
+ unsigned int r;
+ void *mapbase = lchip->base;
+ unsigned long flags;
+
+ spin_lock_irqsave(&lchip->lock, flags);
+
+ /* Start */
+ udelay(DAC_BUS_FREE_TIME); /* 5.0 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.0 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SDAOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_START_HOLD_TIME); /* 5.0 usec */
+ udelay(DAC_DATA_HOLD_TIME); /* 300 nsec */
+
+ /* Send slave address and W bit (LSB is W bit) */
+ data = (M62332_SLAVE_ADDR << 1) | M62332_W_BIT;
+ for (i = 1; i <= 8; i++) {
+ locomo_m62332_sendbit(mapbase, data >> (8 - i));
+ }
+
+ /* Check A bit */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SDAOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
+ if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
+ printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
+ goto out;
+ }
+
+ /* Send Sub address (LSB is channel select) */
+ /* channel = 0 : ch1 select */
+ /* = 1 : ch2 select */
+ data = M62332_SUB_ADDR + channel;
+ for (i = 1; i <= 8; i++) {
+ locomo_m62332_sendbit(mapbase, data >> (8 - i));
+ }
+
+ /* Check A bit */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SDAOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
+ if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
+ printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
+ goto out;
+ }
+
+ /* Send DAC data */
+ for (i = 1; i <= 8; i++) {
+ locomo_m62332_sendbit(mapbase, dac_data >> (8 - i));
+ }
+
+ /* Check A bit */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SDAOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
+ if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
+ printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
+ }
+
+out:
+ /* stop */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r &= ~(LOCOMO_DAC_SCLOEB);
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 300 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4 usec */
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SDAOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_HIGH_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4 usec */
+
+ r = locomo_readl(mapbase + LOCOMO_DAC);
+ r |= LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
+ locomo_writel(r, mapbase + LOCOMO_DAC);
+ udelay(DAC_LOW_SETUP_TIME); /* 1000 nsec */
+ udelay(DAC_SCL_LOW_HOLD_TIME); /* 4.7 usec */
+
+ spin_unlock_irqrestore(&lchip->lock, flags);
+}
+EXPORT_SYMBOL(locomo_m62332_senddata);
+
+/*
+ * Frontlight control
+ */
+
+void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
+{
+ unsigned long flags;
+ struct locomo *lchip = locomo_chip_driver(dev);
+
+ if (vr)
+ locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
+ else
+ locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 0);
+
+ spin_lock_irqsave(&lchip->lock, flags);
+ locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
+ udelay(100);
+ locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
+ locomo_writel(bpwf | LOCOMO_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
+ spin_unlock_irqrestore(&lchip->lock, flags);
+}
+EXPORT_SYMBOL(locomo_frontlight_set);
+
+/*
+ * LoCoMo "Register Access Bus."
+ *
+ * We model this as a regular bus type, and hang devices directly
+ * off this.
+ */
+static int locomo_match(struct device *_dev, struct device_driver *_drv)
+{
+ struct locomo_dev *dev = LOCOMO_DEV(_dev);
+ struct locomo_driver *drv = LOCOMO_DRV(_drv);
+
+ return dev->devid == drv->devid;
+}
+
+static int locomo_bus_suspend(struct device *dev, pm_message_t state)
+{
+ struct locomo_dev *ldev = LOCOMO_DEV(dev);
+ struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv && drv->suspend)
+ ret = drv->suspend(ldev, state);
+ return ret;
+}
+
+static int locomo_bus_resume(struct device *dev)
+{
+ struct locomo_dev *ldev = LOCOMO_DEV(dev);
+ struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv && drv->resume)
+ ret = drv->resume(ldev);
+ return ret;
+}
+
+static int locomo_bus_probe(struct device *dev)
+{
+ struct locomo_dev *ldev = LOCOMO_DEV(dev);
+ struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
+ int ret = -ENODEV;
+
+ if (drv->probe)
+ ret = drv->probe(ldev);
+ return ret;
+}
+
+static int locomo_bus_remove(struct device *dev)
+{
+ struct locomo_dev *ldev = LOCOMO_DEV(dev);
+ struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv->remove)
+ ret = drv->remove(ldev);
+ return ret;
+}
+
+struct bus_type locomo_bus_type = {
+ .name = "locomo-bus",
+ .match = locomo_match,
+ .probe = locomo_bus_probe,
+ .remove = locomo_bus_remove,
+ .suspend = locomo_bus_suspend,
+ .resume = locomo_bus_resume,
+};
+
+int locomo_driver_register(struct locomo_driver *driver)
+{
+ driver->drv.bus = &locomo_bus_type;
+ return driver_register(&driver->drv);
+}
+EXPORT_SYMBOL(locomo_driver_register);
+
+void locomo_driver_unregister(struct locomo_driver *driver)
+{
+ driver_unregister(&driver->drv);
+}
+EXPORT_SYMBOL(locomo_driver_unregister);
+
+static int __init locomo_init(void)
+{
+ int ret = bus_register(&locomo_bus_type);
+ if (ret == 0)
+ platform_driver_register(&locomo_device_driver);
+ return ret;
+}
+
+static void __exit locomo_exit(void)
+{
+ platform_driver_unregister(&locomo_device_driver);
+ bus_unregister(&locomo_bus_type);
+}
+
+module_init(locomo_init);
+module_exit(locomo_exit);
+
+MODULE_DESCRIPTION("Sharp LoCoMo core driver");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("John Lenz ");
diff --git a/arch/arm/common/pci.c b/arch/arm/common/pci.c
new file mode 100755
index 00000000..44325adb
--- /dev/null
+++ b/arch/arm/common/pci.c
@@ -0,0 +1,62 @@
+/*
+ * linux/arch/arm/common/pci.c
+ *
+ * Some descriptions of such software. Copyright (c) 2008 WonderMedia Technologies, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software Foundation,
+ * either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * WonderMedia Technologies, Inc.
+ * 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
+ *
+ * PCI bios-type initialisation for PCI machines
+ *
+ * Bits taken from various places.
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+extern int __init wmt_pci_setup(int nr, struct pci_sys_data *sys);
+extern struct pci_bus * __init wmt_pci_scan_bus(int nr, struct pci_sys_data *sysdata);
+
+static int __init wmt_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
+{
+ u8 int_line;
+
+ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &int_line);
+ return int_line;
+}
+
+extern void __init wmt_pci_preinit(void *sysdata);
+
+static struct hw_pci wmt_pci __initdata = {
+ .setup = wmt_pci_setup,
+ .swizzle = pci_std_swizzle,
+ .map_irq = wmt_map_irq,
+ .nr_controllers = 1,
+ .scan = wmt_pci_scan_bus,
+ .preinit = wmt_pci_preinit
+};
+
+static int __init wmt_pci_init(void)
+{
+ /* {JHT} */
+ printk("wmt_pci_init\n");
+ pci_common_init(&wmt_pci);
+ return 0;
+}
+
+subsys_initcall(wmt_pci_init);
diff --git a/arch/arm/common/pci_wmt.c b/arch/arm/common/pci_wmt.c
new file mode 100755
index 00000000..dfef964f
--- /dev/null
+++ b/arch/arm/common/pci_wmt.c
@@ -0,0 +1,1432 @@
+/**
+ * linux/arch/arm/common/pci_wmt.c
+ *
+ * Copyright (c) 2008 WonderMedia Technologies, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software Foundation,
+ * either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * WonderMedia Technologies, Inc.
+ * 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
+ */
+
+//#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+
+#include
+
+#define PATA
+/*#define SATA*/
+#define USB_HOST
+#define MAC
+/*#define EXT_PCI*/
+
+#ifdef USB_HOST
+char enable_ehci_wake = 0;
+char enable_uhci0_wake = 0;
+char enable_uhci1_wake = 0;
+#endif
+
+/* #define CONFIG_PCI_DEBUG */
+ulong
+PCI_GetConfigRegisterDWORD(
+ int bus,
+ int device,
+ int fctn,
+ int target
+ );
+void
+PCI_SetConfigRegisterDWORD(
+ int bus,
+ int device,
+ int fctn,
+ int target,
+ ulong data
+ );
+#ifdef PATA
+void init_int_pata(void);
+#endif
+#ifdef SATA
+void init_int_sata(void);
+#endif
+#ifdef USB_HOST
+void init_int_usb(void);
+#endif
+#ifdef MAC
+void init_int_mac(void);
+#endif
+#ifdef EXT_PCI
+void init_ext_pci(void);
+#endif
+
+#define CONFIG_CMD(bus, devfn, where) (0x80000000 | ((devfn) << 8) | ((where) & ~3))
+
+static u32 pci_config_ba;
+static u32 pci_config_addr;
+static u32 pci_config_data;
+
+#define MAX_PCI_DEV 0xC
+#define INT_SATA 0
+#define INT_PATA 1
+#define INT_MAC0 2
+#define INT_MAC1 3
+#define INT_USB_EHCI 4
+#define INT_USB_UHCI 5
+#define INT_USB_UHCI2 6
+#define EXT_PCI7 7
+#define EXT_PCI8 8
+#define EXT_PCI9 9
+#define EXT_PCIA 0xA
+#define EXT_PCIB 0xB
+
+u32 pci_config_mask[MAX_PCI_DEV][8][0x10];
+u32 pci_config_shadow[MAX_PCI_DEV][8][0x10];
+u32 pci_config_ro[MAX_PCI_DEV][8][0x10];
+
+#ifdef SATA
+#define SATA_PCI_CONFIG (BA_SATA+0x100) //0xFE00d100
+#endif
+
+static int
+wmt_read_config(
+ struct pci_bus *bus,
+ unsigned int devfn,
+ int where,
+ int size,
+ u32 *value
+ )
+{
+ u32 bar, mask, devno, func;
+
+ devno = devfn >> 3;
+ func = devfn & 7;
+ *value = 0xFFFFFFFF;
+
+#ifndef EXT_PCI
+ if (devno > 6)
+ return 0;
+#endif
+
+ switch (devno) { /* Check the dev number */
+ /* external PCI devices */
+ case EXT_PCI7:
+ case EXT_PCI8:
+ case EXT_PCI9:
+ case EXT_PCIA:
+ case EXT_PCIB:
+ {
+ if ((where >= 0x10) && (where < 0x28)) {
+ switch (size) {
+ case 1:
+ bar = (where & ~3)/4;
+ mask = 0xFF << 8*(where & 3);
+ *value = pci_config_shadow[devno][func][bar] & mask;
+ *value = (*value) >> 8*(where & 3);
+ break;
+
+ case 2:
+ bar = (where & ~3)/4;
+ mask = 0xFFFF << 8*(where & 2);
+ *value = pci_config_shadow[devno][func][bar] & mask;
+ *value = (*value) >> 8*(where & 2);
+ break;
+
+ case 4:
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ *value = pci_config_shadow[devno][func][bar] & mask;
+ }
+ } else {
+ writel(CONFIG_CMD(bus, devfn, where), pci_config_addr);
+ switch (size) {
+ case 1:
+ *value = readb(pci_config_data + (where&3));
+ break;
+
+ case 2:
+ *value = readw(pci_config_data + (where&2));
+ break;
+
+ case 4:
+ *value = readl(pci_config_data);
+ break;
+ }
+ }
+ }
+ break;
+
+ /* internal PCI devices */
+#ifdef SATA
+ case INT_SATA:
+ if ((where >= 0xA0) && (where <= 0xAF)) {
+ switch (size) {
+ case 1:
+ *value = inb((SATA_PCI_CONFIG + where));
+ break;
+ case 2:
+ *value = inw((SATA_PCI_CONFIG + (where & ~1)));
+ break;
+ case 4:
+ *value = inl((SATA_PCI_CONFIG + (where & ~3)));
+ break;
+ }
+ break;
+ }
+#endif
+ case INT_PATA:
+ case INT_MAC0:
+ case INT_MAC1:
+ if (devfn & 7)
+ break;
+
+ switch (size) {
+ case 1:
+ if ((where < 0x40)) {
+ bar = (where & ~3)/4;
+ mask = 0xFF << 8*(where & 3);
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ *value = (*value) >> 8*(where & 3);
+ } else
+ *value = 0;
+ break;
+
+ case 2:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFF << 8*(where & 2);
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ *value = (*value) >> 8*(where & 2);
+ } else
+ *value = 0;
+ break;
+
+ case 4:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ } else
+ *value = 0;
+ }
+
+ break;
+ case INT_USB_UHCI:
+ case INT_USB_UHCI2:
+ case INT_USB_EHCI:
+ if (devfn & 7)
+ break;
+ switch (size) {
+ case 1:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFF << 8*(where & 3);
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ *value = (*value) >> 8*(where & 3);
+ } else {
+// *value = 0;
+#if 1
+ if (enable_ehci_wake) {
+ if (devno == INT_USB_EHCI)
+ *value = * (volatile unsigned char *)(0xfe007800 + where);
+ else if (devno == INT_USB_UHCI)
+ *value = * (volatile unsigned char *)(0xfe007a00 + where);
+ else if (devno == INT_USB_UHCI2)
+ *value = * (volatile unsigned char *)(0xfe008c00 + where);
+ else
+ *value = 0;
+ }
+ else
+ *value = 0;
+#endif
+ }
+ break;
+
+ case 2:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFF << 8*(where & 2);
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ *value = (*value) >> 8*(where & 2);
+ } else if (where == 0x84) {
+ if ((devno == INT_USB_UHCI)||(devno == INT_USB_UHCI2)) {
+ bar = pci_config_shadow[devno][0][8];
+ bar &= ~0x1;
+ } else
+ bar = pci_config_shadow[devno][0][4];
+
+ bar = bar - 0x100;
+ /*CharlesTu,2011.02.16,modify ehci pci base address to vertual address 0xfe007800*/
+ if (devno == INT_USB_EHCI)
+ bar = bar + WMT_MMAP_OFFSET;
+
+ *value = * (volatile unsigned short *)(bar + where);
+
+ }else {
+// *value = 0;
+#if 1
+ if (enable_ehci_wake) {
+ if (devno == INT_USB_EHCI)
+ *value = * (volatile unsigned short *)(0xfe007800 + where);
+ else if (devno == INT_USB_UHCI)
+ *value = * (volatile unsigned short *)(0xfe007a00 + where);
+ else if (devno == INT_USB_UHCI2)
+ *value = * (volatile unsigned short *)(0xfe008c00 + where);
+ else
+ *value = 0;
+ }
+ else
+ *value = 0;
+#endif
+ }
+ break;
+
+ case 4:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ *value = pci_config_shadow[devno][0][bar] & mask;
+ } else {
+// *value = 0;
+#if 1
+ if (enable_ehci_wake) {
+ if (devno == INT_USB_EHCI)
+ *value = * (volatile unsigned int *)(0xfe007800 + where);
+ else if (devno == INT_USB_UHCI)
+ *value = * (volatile unsigned int *)(0xfe007a00 + where);
+ else if (devno == INT_USB_UHCI2)
+ *value = * (volatile unsigned int *)(0xfe008c00 + where);
+ else
+ *value = 0;
+ }
+ else
+ *value = 0;
+#endif
+ }
+ }
+
+ default:
+ break;
+ }
+
+#ifdef CONFIG_PCI_DEBUG
+ if (size == 1)
+ printk("pci config read(B):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ *value
+ );
+ else if (size == 2)
+ printk("pci config read(W):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ *value
+ );
+ else
+ printk("pci config read(L):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ *value
+ );
+#endif /* CONFIG_PCI_DEBUG */
+
+ return PCIBIOS_SUCCESSFUL;
+}
+
+static int
+wmt_write_config(struct pci_bus *bus, unsigned int devfn, int where,
+ int size, u32 value)
+{
+ u32 bar, mask, devno, func;
+
+ devno = devfn >> 3;
+ func = devfn & 7;
+ switch (devno) { /* Check the dev number */
+ /* external PCI devices */
+ case EXT_PCI7:
+ case EXT_PCI8:
+ case EXT_PCI9:
+ case EXT_PCIA:
+ case EXT_PCIB:
+ {
+ if ((where >= 0x10) && (where < 0x28)) {
+ switch (size) {
+ case 1:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 3);
+ mask = 0xFF << 8*(where & 3);
+ /* clear the written byte content */
+ pci_config_shadow[devno][func][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][func][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][func][bar] &= pci_config_mask[devno][func][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][func][bar] |= pci_config_ro[devno][func][bar];
+ }
+ break;
+ case 2:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 2);
+ mask = 0xFFFF << 8*(where & 2);
+ /* clear the written byte content */
+ pci_config_shadow[devno][func][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][func][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][func][bar] &= pci_config_mask[devno][func][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][func][bar] |= pci_config_ro[devno][func][bar];
+ }
+ break;
+ case 4:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ /* clear the written byte content */
+ pci_config_shadow[devno][func][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][func][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][func][bar] &= pci_config_mask[devno][func][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][func][bar] |= pci_config_ro[devno][func][bar];
+ }
+ break;
+ }
+ } else {
+ writel(CONFIG_CMD(bus, devfn, where), pci_config_addr);
+ switch (size) {
+ case 1:
+ outb(value, pci_config_data + (where&3));
+ break;
+ case 2:
+ outw(value, pci_config_data + (where&2));
+ break;
+ case 4:
+ outl(value, pci_config_data);
+ break;
+ }
+ }
+ break;
+ }
+ break;
+
+ /* internal PCI devices */
+#ifdef SATA
+ case INT_SATA:
+ if ((where >= 0xA0) && (where <= 0xAF)) {
+ switch (size) {
+ case 1:
+ outb(value, SATA_PCI_CONFIG + where);
+ break;
+ case 2:
+ outw(value, SATA_PCI_CONFIG + (where & ~1));
+ break;
+ case 4:
+ outl(value, SATA_PCI_CONFIG + (where & ~3));
+ break;
+ }
+ break;
+ }
+#endif
+ case INT_PATA:
+ case INT_MAC0:
+ case INT_MAC1:
+ if (devfn & 7)
+ break;
+
+ switch (size) {
+ case 1:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 3);
+ mask = 0xFF << 8*(where & 3);
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ }
+ break;
+ case 2:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 2);
+ mask = 0xFFFF << 8*(where & 2);
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ }
+ break;
+ case 4:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ }
+ break;
+ }
+ break;
+ case INT_USB_UHCI:
+ case INT_USB_UHCI2:
+ case INT_USB_EHCI:
+ if (devfn & 7)
+ break;
+
+ switch (size) {
+ case 1:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 3);
+ mask = 0xFF << 8*(where & 3);
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ }
+ break;
+ case 2:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ value = value << 8*(where & 2);
+ mask = 0xFFFF << 8*(where & 2);
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ } else if (where == 0x84) {
+ if ((devno == INT_USB_UHCI)||(devno == INT_USB_UHCI2)) {
+ bar = pci_config_shadow[devno][0][8];
+ bar &= ~0x1;
+ } else
+ bar = pci_config_shadow[devno][0][4];
+
+ bar = bar - 0x100;
+ /*CharlesTu,2011.02.16,modify ehci pci base address to vertual address 0xfe007800*/
+ if (devno == INT_USB_EHCI)
+ bar = bar + WMT_MMAP_OFFSET;
+
+ * (volatile unsigned short *)(bar + where) = value;
+
+ }
+ else if (where < 0xC0) {
+ if (devno == INT_USB_UHCI){
+ * (volatile unsigned short *)(0xfe007a00 + where) = value;
+ printk("****gri INT_USB_UHCI1 pci w =%x %x %x\n",size,where,value);
+ }
+ else if (devno == INT_USB_UHCI2){
+ * (volatile unsigned short *)(0xfe008c00 + where) = value;
+ printk("****gri INT_USB_UHCI2 pci w =%x %x %x\n",size,where,value);
+ }
+ else{
+ * (volatile unsigned short *)(0xfe007800 + where) = value;
+ printk("****gri INT_USB_EHCI pci w =%x %x %x\n",size,where,value);
+ }
+ }
+ break;
+ case 4:
+ if (where < 0x40) {
+ bar = (where & ~3)/4;
+ mask = 0xFFFFFFFF;
+ /* clear the written byte content */
+ pci_config_shadow[devno][0][bar] &= ~mask;
+ /* set the written byte content */
+ pci_config_shadow[devno][0][bar] |= (value & mask);
+ /* only writing the bits which are writable and which is checked
+ by the pci_config_mask[][] */
+ pci_config_shadow[devno][0][bar] &= pci_config_mask[devno][0][bar];
+ /* set the read only bits which may be clear when written. */
+ pci_config_shadow[devno][0][bar] |= pci_config_ro[devno][0][bar];
+ }
+ else if (where < 0xC0) {
+ if (devno == INT_USB_UHCI){
+ * (volatile unsigned int *)(0xfe007a00 + where) = value;
+ printk("****gri INT_USB_UHCI1 pci w =%x %x %x\n",size,where,value);
+ }
+ else if (devno == INT_USB_UHCI2){
+ * (volatile unsigned int *)(0xfe008c00 + where) = value;
+ printk("****gri INT_USB_UHCI2 pci w =%x %x %x\n",size,where,value);
+ }
+ else{
+ * (volatile unsigned int *)(0xfe007800 + where) = value;
+ printk("****gri INT_USB_EHCI pci w =%x %x %x\n",size,where,value);
+ }
+ }
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+#ifdef CONFIG_PCI_DEBUG
+ if (size == 1)
+ printk("pci config write(B):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ value
+ );
+ else if (size == 2)
+ printk("pci config write(W):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ value
+ );
+ else
+ printk("pci config write(L):dev:0x%02X fn:0x%02X where:0x%02X-> 0x%08X\n",
+ devfn>>3,
+ devfn&7,
+ where,
+ value
+ );
+#endif /* CONFIG_PCI_DEBUG */
+
+ return PCIBIOS_SUCCESSFUL;
+}
+
+static struct pci_ops wmt_pci_ops = {
+ .read = wmt_read_config,
+ .write = wmt_write_config,
+};
+
+#ifdef PATA
+void init_int_pata(void)
+{
+ if (0) {
+ /* if (ARCH_VT8430) */
+ pci_config_shadow[INT_PATA][0][0] = 0x13571106;
+ pci_config_shadow[INT_PATA][0][1] = 0x02100005;
+ /* {JHTseng 2007/03/02 Change the Byte1 from 8A into 8F,
+ Otherwise, the resource will be clear by the kernel */
+ pci_config_shadow[INT_PATA][0][2] = 0x01018F00;
+ pci_config_shadow[INT_PATA][0][3] = 0x00002000;
+ /* Mark 2007/03/12 Modify PCI BAR address, PATA's SG register
+ base address from Secondary to Primary */
+ //pci_config_shadow[INT_PATA][0][4] = 0xD8008271;
+ pci_config_shadow[INT_PATA][0][4] = 0xFE008271;
+ //pci_config_shadow[INT_PATA][0][5] = 0xD8008375;
+ pci_config_shadow[INT_PATA][0][5] = 0xFE008375;
+ pci_config_shadow[INT_PATA][0][6] = 0x0;
+ pci_config_shadow[INT_PATA][0][7] = 0x0;
+ //pci_config_shadow[INT_PATA][0][8] = 0xD8008509;
+ pci_config_shadow[INT_PATA][0][8] = 0xFE008509;
+ pci_config_shadow[INT_PATA][0][9] = 0x0;
+
+ pci_config_shadow[INT_PATA][0][0xA] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xB] = 0x05811106;
+ pci_config_shadow[INT_PATA][0][0xC] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xD] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xE] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xF] = 0x0103;
+
+ pci_config_mask[INT_PATA][0][0] = 0x0;
+ pci_config_mask[INT_PATA][0][1] = 0x0;
+ pci_config_mask[INT_PATA][0][2] = 0x0;
+ pci_config_mask[INT_PATA][0][3] = 0x0;
+
+ pci_config_mask[INT_PATA][0][4] = 0xFFFFFFF8;
+ pci_config_mask[INT_PATA][0][5] = 0xFFFFFFFC;
+ pci_config_mask[INT_PATA][0][6] = 0x0;
+ pci_config_mask[INT_PATA][0][7] = 0x0;
+ pci_config_mask[INT_PATA][0][8] = 0xFFFFFFF0;
+ pci_config_mask[INT_PATA][0][9] = 0x0;
+
+ pci_config_mask[INT_PATA][0][0xA] = 0x0;
+ pci_config_mask[INT_PATA][0][0xB] = 0x0;
+ pci_config_mask[INT_PATA][0][0xC] = 0x0;
+ pci_config_mask[INT_PATA][0][0xD] = 0x0;
+ pci_config_mask[INT_PATA][0][0xE] = 0x0;
+ pci_config_mask[INT_PATA][0][0xF] = 0x0;
+
+ pci_config_ro[INT_PATA][0][0] = 0x13591106;
+ pci_config_ro[INT_PATA][0][1] = 0x02100005;
+ pci_config_ro[INT_PATA][0][2] = 0x01018A00;
+ pci_config_ro[INT_PATA][0][3] = 0x00002000;
+
+ pci_config_ro[INT_PATA][0][4] = 0x1;
+ pci_config_ro[INT_PATA][0][5] = 0x1;
+ pci_config_ro[INT_PATA][0][6] = 0x0;
+ pci_config_ro[INT_PATA][0][7] = 0x0;
+ pci_config_ro[INT_PATA][0][8] = 0x1;
+ pci_config_ro[INT_PATA][0][9] = 0x0;
+
+ pci_config_ro[INT_PATA][0][0xA] = 0x0;
+ pci_config_ro[INT_PATA][0][0xB] = 0x05811106;
+ pci_config_ro[INT_PATA][0][0xC] = 0x0;
+ pci_config_ro[INT_PATA][0][0xD] = 0x0;
+ pci_config_ro[INT_PATA][0][0xE] = 0x0;
+ pci_config_ro[INT_PATA][0][0xF] = 0x0103;
+ } else {
+ pci_config_shadow[INT_PATA][0][0] = 0x13591106;
+ pci_config_shadow[INT_PATA][0][1] = 0x02000005;
+ /* {JHTseng 2007/03/02 Change the Byte1 from 8A into 8F,
+ Otherwise, the resource will be clear by the kernel */
+ pci_config_shadow[INT_PATA][0][2] = 0x01018F00;
+ pci_config_shadow[INT_PATA][0][3] = 0x00000000;/* 0x00002000; */
+ /* Mark 2007/03/12 Modify PCI BAR address, PATA's SG register
+ base address from Secondary to Primary */
+ //pci_config_shadow[INT_PATA][0][4] = 0xD8008101;/* 0xD8008271; */
+ pci_config_shadow[INT_PATA][0][4] = 0xFE008101;/* 0xD8008271; */
+ //pci_config_shadow[INT_PATA][0][5] = 0xD8008145;/* 0xD8008375; */
+ pci_config_shadow[INT_PATA][0][5] = 0xFE008145;/* 0xD8008375; */
+ pci_config_shadow[INT_PATA][0][6] = 0x0;
+ pci_config_shadow[INT_PATA][0][7] = 0x0;
+ //pci_config_shadow[INT_PATA][0][8] = 0xD8008181;
+ pci_config_shadow[INT_PATA][0][8] = 0xFE008181;
+ pci_config_shadow[INT_PATA][0][9] = 0x0;
+
+ pci_config_shadow[INT_PATA][0][0xA] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xB] = 0x13581106;/* 0x05811106; */
+ pci_config_shadow[INT_PATA][0][0xC] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xD] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xE] = 0x0;
+ pci_config_shadow[INT_PATA][0][0xF] = 0x0103;
+
+ pci_config_mask[INT_PATA][0][0] = 0x0;
+ pci_config_mask[INT_PATA][0][1] = 0x0;
+ pci_config_mask[INT_PATA][0][2] = 0x0;
+ pci_config_mask[INT_PATA][0][3] = 0x0;
+
+ pci_config_mask[INT_PATA][0][4] = 0xFFFFFFF8;
+ pci_config_mask[INT_PATA][0][5] = 0xFFFFFFFC;
+ pci_config_mask[INT_PATA][0][6] = 0x0;
+ pci_config_mask[INT_PATA][0][7] = 0x0;
+ pci_config_mask[INT_PATA][0][8] = 0xFFFFFFF0;
+ pci_config_mask[INT_PATA][0][9] = 0x0;
+
+ pci_config_mask[INT_PATA][0][0xA] = 0x0;
+ pci_config_mask[INT_PATA][0][0xB] = 0x0;
+ pci_config_mask[INT_PATA][0][0xC] = 0x0;
+ pci_config_mask[INT_PATA][0][0xD] = 0x0;
+ pci_config_mask[INT_PATA][0][0xE] = 0x0;
+ pci_config_mask[INT_PATA][0][0xF] = 0x0;
+
+ pci_config_ro[INT_PATA][0][0] = 0x13591106;
+ pci_config_ro[INT_PATA][0][1] = 0x02000005;
+ pci_config_ro[INT_PATA][0][2] = 0x01018A00;
+ pci_config_ro[INT_PATA][0][3] = 0x00002000;
+
+ pci_config_ro[INT_PATA][0][4] = 0x1;
+ pci_config_ro[INT_PATA][0][5] = 0x1;
+ pci_config_ro[INT_PATA][0][6] = 0x0;
+ pci_config_ro[INT_PATA][0][7] = 0x0;
+ pci_config_ro[INT_PATA][0][8] = 0x1;
+ pci_config_ro[INT_PATA][0][9] = 0x0;
+
+ pci_config_ro[INT_PATA][0][0xA] = 0x0;
+ pci_config_ro[INT_PATA][0][0xB] = 0x13581106;/* 0x05811106; */
+ pci_config_ro[INT_PATA][0][0xC] = 0x0;
+ pci_config_ro[INT_PATA][0][0xD] = 0x0;
+ pci_config_ro[INT_PATA][0][0xE] = 0x0;
+ pci_config_ro[INT_PATA][0][0xF] = 0x0103;
+ }
+}
+#endif
+
+#ifdef SATA
+void init_int_sata(void)
+{
+ pci_config_shadow[INT_SATA][0][0] = 0x23591106;
+ pci_config_shadow[INT_SATA][0][1] = 0x02900007;
+ pci_config_shadow[INT_SATA][0][2] = 0x01018f00;
+ pci_config_shadow[INT_SATA][0][3] = 0x00001000;
+
+ //pci_config_shadow[INT_SATA][0][4] = 0xd800d2f1;
+ pci_config_shadow[INT_SATA][0][4] = 0xFE00d2f1;
+ //pci_config_shadow[INT_SATA][0][5] = 0xd800d3f5;
+ pci_config_shadow[INT_SATA][0][5] = 0xFE00d3f5;
+ pci_config_shadow[INT_SATA][0][6] = 0x0;
+ pci_config_shadow[INT_SATA][0][7] = 0x0;
+ //pci_config_shadow[INT_SATA][0][8] = 0xd800d401;
+ pci_config_shadow[INT_SATA][0][8] = 0xFE00d401;
+ pci_config_shadow[INT_SATA][0][9] = 0x0;
+
+ pci_config_shadow[INT_SATA][0][0xA] = 0x0;
+ pci_config_shadow[INT_SATA][0][0xB] = 0x23591106;
+ pci_config_shadow[INT_SATA][0][0xC] = 0x0;
+ pci_config_shadow[INT_SATA][0][0xD] = 0x0;
+ pci_config_shadow[INT_SATA][0][0xE] = 0x0;
+ pci_config_shadow[INT_SATA][0][0xF] = 0x0104;
+
+ pci_config_mask[INT_SATA][0][0] = 0x0;
+ pci_config_mask[INT_SATA][0][1] = 0x00000477;
+ pci_config_mask[INT_SATA][0][2] = 0x500;
+ pci_config_mask[INT_SATA][0][3] = 0x0000F000;
+
+ pci_config_mask[INT_SATA][0][4] = 0xFFFFFFF8;
+ pci_config_mask[INT_SATA][0][5] = 0xFFFFFFFC;
+ pci_config_mask[INT_SATA][0][6] = 0x0;
+ pci_config_mask[INT_SATA][0][7] = 0x0;
+ pci_config_mask[INT_SATA][0][8] = 0xFFFFFFF0;
+ pci_config_mask[INT_SATA][0][9] = 0x0;
+
+ pci_config_mask[INT_SATA][0][0xA] = 0x0;
+ pci_config_mask[INT_SATA][0][0xB] = 0x0;
+ pci_config_mask[INT_SATA][0][0xC] = 0x0;
+ pci_config_mask[INT_SATA][0][0xD] = 0x0;
+ pci_config_mask[INT_SATA][0][0xE] = 0x0;
+ pci_config_mask[INT_SATA][0][0xF] = 0x0;
+
+ pci_config_ro[INT_SATA][0][0] = 0x23591106;
+ pci_config_ro[INT_SATA][0][1] = 0x02900000;
+ pci_config_ro[INT_SATA][0][2] = 0x01018A00;
+ pci_config_ro[INT_SATA][0][3] = 0x0;
+
+ pci_config_ro[INT_SATA][0][4] = 0x1;
+ pci_config_ro[INT_SATA][0][5] = 0x1;
+ pci_config_ro[INT_SATA][0][6] = 0x0;
+ pci_config_ro[INT_SATA][0][7] = 0x0;
+ pci_config_ro[INT_SATA][0][8] = 0x1;
+ pci_config_ro[INT_SATA][0][9] = 0x0;
+
+ pci_config_ro[INT_SATA][0][0xA] = 0x0;
+ pci_config_ro[INT_SATA][0][0xB] = 0x23591106;
+ pci_config_ro[INT_SATA][0][0xC] = 0x0;
+ pci_config_ro[INT_SATA][0][0xD] = 0x0;
+ pci_config_ro[INT_SATA][0][0xE] = 0x0;
+ pci_config_ro[INT_SATA][0][0xF] = 0x0104;
+}
+#endif
+
+#ifdef USB_HOST
+void init_int_usb(void)
+{
+ /* EHCI */
+ pci_config_shadow[INT_USB_EHCI][0][0] = 0x31041106;
+ pci_config_shadow[INT_USB_EHCI][0][1] = 0x02100000;
+ pci_config_shadow[INT_USB_EHCI][0][2] = 0x0C032090;
+ pci_config_shadow[INT_USB_EHCI][0][3] = 0x00801600;
+
+ pci_config_shadow[INT_USB_EHCI][0][4] = 0xD8007900; /* phy 0xD8007900; */
+ pci_config_shadow[INT_USB_EHCI][0][5] = 0x00000000;
+ pci_config_shadow[INT_USB_EHCI][0][6] = 0x0;
+ pci_config_shadow[INT_USB_EHCI][0][7] = 0x0;
+ pci_config_shadow[INT_USB_EHCI][0][8] = 0x00000000;
+ pci_config_shadow[INT_USB_EHCI][0][9] = 0x0;
+
+ pci_config_shadow[INT_USB_EHCI][0][0xA] = 0x0;
+ pci_config_shadow[INT_USB_EHCI][0][0xB] = 0x31041106;
+ pci_config_shadow[INT_USB_EHCI][0][0xC] = 0x0;
+ pci_config_shadow[INT_USB_EHCI][0][0xD] = 0x0;
+ pci_config_shadow[INT_USB_EHCI][0][0xE] = 0x0;
+// pci_config_shadow[INT_USB_EHCI][0][0xF] = 0x041A; /* 0x041A; for WM3445 */
+ pci_config_shadow[INT_USB_EHCI][0][0xF] = 0x043A; /* 0x041A; for WM3445 */
+
+ pci_config_mask[INT_USB_EHCI][0][0] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][1] = 0x00000477;
+ pci_config_mask[INT_USB_EHCI][0][2] = 0x00000000;
+ pci_config_mask[INT_USB_EHCI][0][3] = 0x0000FFFF;
+
+ pci_config_mask[INT_USB_EHCI][0][4] = 0xFFFFFF00;
+ pci_config_mask[INT_USB_EHCI][0][5] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][6] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][7] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][8] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][9] = 0x0;
+
+ pci_config_mask[INT_USB_EHCI][0][0xA] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][0xB] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][0xC] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][0xD] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][0xE] = 0x0;
+ pci_config_mask[INT_USB_EHCI][0][0xF] = 0xFF;
+
+ pci_config_ro[INT_USB_EHCI][0][0] = 0x31041106;
+ pci_config_ro[INT_USB_EHCI][0][1] = 0x02100000;
+ pci_config_ro[INT_USB_EHCI][0][2] = 0x0C032090;
+ pci_config_ro[INT_USB_EHCI][0][3] = 0x00800000;
+
+ pci_config_ro[INT_USB_EHCI][0][4] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][5] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][6] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][7] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][8] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][9] = 0x0;
+
+ pci_config_ro[INT_USB_EHCI][0][0xA] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][0xB] = 0x31041106;
+ pci_config_ro[INT_USB_EHCI][0][0xC] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][0xD] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][0xE] = 0x0;
+ pci_config_ro[INT_USB_EHCI][0][0xF] = 0x100;
+
+ /* UHCI */
+ pci_config_shadow[INT_USB_UHCI][0][0] = 0x30381106;
+ pci_config_shadow[INT_USB_UHCI][0][1] = 0x02100000;
+ pci_config_shadow[INT_USB_UHCI][0][2] = 0x0C030090;
+ pci_config_shadow[INT_USB_UHCI][0][3] = 0x00801600;
+
+ pci_config_shadow[INT_USB_UHCI][0][4] = 0x00000000;
+ pci_config_shadow[INT_USB_UHCI][0][5] = 0x00000000;
+ pci_config_shadow[INT_USB_UHCI][0][6] = 0x0;
+ pci_config_shadow[INT_USB_UHCI][0][7] = 0x0;
+ //pci_config_shadow[INT_USB_UHCI][0][8] = 0xD8007B01; /* 0xD8007B01; */
+ pci_config_shadow[INT_USB_UHCI][0][8] = 0xFE007B01; /* 0xFE007B01; */
+ pci_config_shadow[INT_USB_UHCI][0][9] = 0x0;
+
+ pci_config_shadow[INT_USB_UHCI][0][0xA] = 0x0;
+ pci_config_shadow[INT_USB_UHCI][0][0xB] = 0x30381106;
+ pci_config_shadow[INT_USB_UHCI][0][0xC] = 0x0;
+ pci_config_shadow[INT_USB_UHCI][0][0xD] = 0x0;
+ pci_config_shadow[INT_USB_UHCI][0][0xE] = 0x0;
+// pci_config_shadow[INT_USB_UHCI][0][0xF] = 0x011A; /* 0x01A; for WM3445 uhci */
+ pci_config_shadow[INT_USB_UHCI][0][0xF] = 0x013A; /* 0x01A; for WM3445 uhci */
+
+ pci_config_mask[INT_USB_UHCI][0][0] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][1] = 0x00000417;
+ pci_config_mask[INT_USB_UHCI][0][2] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI][0][3] = 0x0000FFFF;
+
+ pci_config_mask[INT_USB_UHCI][0][4] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI][0][5] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI][0][6] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][7] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][8] = 0xFFFFFFE0;
+ pci_config_mask[INT_USB_UHCI][0][9] = 0x0;
+
+ pci_config_mask[INT_USB_UHCI][0][0xA] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][0xB] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][0xC] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][0xD] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][0xE] = 0x0;
+ pci_config_mask[INT_USB_UHCI][0][0xF] = 0x000000FF;
+
+ pci_config_ro[INT_USB_UHCI][0][0] = 0x30381106;
+ pci_config_ro[INT_USB_UHCI][0][1] = 0x02100000;
+ pci_config_ro[INT_USB_UHCI][0][2] = 0x0C030090;
+ pci_config_ro[INT_USB_UHCI][0][3] = 0x00800000;
+
+ pci_config_ro[INT_USB_UHCI][0][4] = 0x00000000;
+ pci_config_ro[INT_USB_UHCI][0][5] = 0x00000000;
+ pci_config_ro[INT_USB_UHCI][0][6] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][7] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][8] = 0x1;
+ pci_config_ro[INT_USB_UHCI][0][9] = 0x0;
+
+ pci_config_ro[INT_USB_UHCI][0][0xA] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][0xB] = 0x30381106;
+ pci_config_ro[INT_USB_UHCI][0][0xC] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][0xD] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][0xE] = 0x0;
+ pci_config_ro[INT_USB_UHCI][0][0xF] = 0x0100;
+
+ /* UHCI2 */
+ pci_config_shadow[INT_USB_UHCI2][0][0] = 0x30381106;
+ pci_config_shadow[INT_USB_UHCI2][0][1] = 0x02100000;
+ pci_config_shadow[INT_USB_UHCI2][0][2] = 0x0C030090;
+ pci_config_shadow[INT_USB_UHCI2][0][3] = 0x00801600;
+
+ pci_config_shadow[INT_USB_UHCI2][0][4] = 0x00000000;
+ pci_config_shadow[INT_USB_UHCI2][0][5] = 0x00000000;
+ pci_config_shadow[INT_USB_UHCI2][0][6] = 0x0;
+ pci_config_shadow[INT_USB_UHCI2][0][7] = 0x0;
+ //pci_config_shadow[INT_USB_UHCI2][0][8] = 0xD8008D01; /* phy 0xD8008D01; */
+ pci_config_shadow[INT_USB_UHCI2][0][8] = 0xFE008D01; /* vertual 0xFE008D01; */
+ pci_config_shadow[INT_USB_UHCI2][0][9] = 0x0;
+
+ pci_config_shadow[INT_USB_UHCI2][0][0xA] = 0x0;
+ pci_config_shadow[INT_USB_UHCI2][0][0xB] = 0x30381106;
+ pci_config_shadow[INT_USB_UHCI2][0][0xC] = 0x0;
+ pci_config_shadow[INT_USB_UHCI2][0][0xD] = 0x0;
+ pci_config_shadow[INT_USB_UHCI2][0][0xE] = 0x0;
+// pci_config_shadow[INT_USB_UHCI2][0][0xF] = 0x011A; /* 0x011A; for WM3445 uhci */
+ pci_config_shadow[INT_USB_UHCI2][0][0xF] = 0x013A; /* 0x011A; for WM3445 uhci */
+
+ pci_config_mask[INT_USB_UHCI2][0][0] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][1] = 0x00000417;
+ pci_config_mask[INT_USB_UHCI2][0][2] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI2][0][3] = 0x0000FFFF;
+
+ pci_config_mask[INT_USB_UHCI2][0][4] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI2][0][5] = 0x00000000;
+ pci_config_mask[INT_USB_UHCI2][0][6] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][7] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][8] = 0xFFFFFFE0;
+ pci_config_mask[INT_USB_UHCI2][0][9] = 0x0;
+
+ pci_config_mask[INT_USB_UHCI2][0][0xA] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][0xB] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][0xC] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][0xD] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][0xE] = 0x0;
+ pci_config_mask[INT_USB_UHCI2][0][0xF] = 0x000000FF;
+
+ pci_config_ro[INT_USB_UHCI2][0][0] = 0x30381106;
+ pci_config_ro[INT_USB_UHCI2][0][1] = 0x02100000;
+ pci_config_ro[INT_USB_UHCI2][0][2] = 0x0C030090;
+ pci_config_ro[INT_USB_UHCI2][0][3] = 0x00800000;
+
+ pci_config_ro[INT_USB_UHCI2][0][4] = 0x00000000;
+ pci_config_ro[INT_USB_UHCI2][0][5] = 0x00000000;
+ pci_config_ro[INT_USB_UHCI2][0][6] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][7] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][8] = 0x1;
+ pci_config_ro[INT_USB_UHCI2][0][9] = 0x0;
+
+ pci_config_ro[INT_USB_UHCI2][0][0xA] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][0xB] = 0x30381106;
+ pci_config_ro[INT_USB_UHCI2][0][0xC] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][0xD] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][0xE] = 0x0;
+ pci_config_ro[INT_USB_UHCI2][0][0xF] = 0x0100;
+
+}
+#endif
+
+#ifdef MAC
+void init_int_mac(void)
+{
+ pci_config_shadow[INT_MAC0][0][0] = 0x31061106;
+ pci_config_shadow[INT_MAC0][0][1] = 0x02100017;
+ pci_config_shadow[INT_MAC0][0][2] = 0x02000084;
+ pci_config_shadow[INT_MAC0][0][3] = 0x00004004;
+
+ //pci_config_shadow[INT_MAC0][0][4] = 0xD8004001;
+ pci_config_shadow[INT_MAC0][0][4] = 0xFE004001;
+ pci_config_shadow[INT_MAC0][0][5] = 0xD8004000;
+ pci_config_shadow[INT_MAC0][0][6] = 0x0;
+ pci_config_shadow[INT_MAC0][0][7] = 0x0;
+ pci_config_shadow[INT_MAC0][0][8] = 0x0;
+ pci_config_shadow[INT_MAC0][0][9] = 0x0;
+
+ pci_config_shadow[INT_MAC0][0][0xA] = 0x0;
+ pci_config_shadow[INT_MAC0][0][0xB] = 0x01061106;
+ pci_config_shadow[INT_MAC0][0][0xC] = 0x0;
+ pci_config_shadow[INT_MAC0][0][0xD] = 0x0;
+ pci_config_shadow[INT_MAC0][0][0xE] = 0x0;
+ pci_config_shadow[INT_MAC0][0][0xF] = 0x010A;
+
+ pci_config_mask[INT_MAC0][0][0] = 0x0;
+ pci_config_mask[INT_MAC0][0][1] = 0x000003D7;
+ pci_config_mask[INT_MAC0][0][2] = 0x0;
+ pci_config_mask[INT_MAC0][0][3] = 0x0000F8FF;
+
+ pci_config_mask[INT_MAC0][0][4] = 0xFFFFFF00;
+ pci_config_mask[INT_MAC0][0][5] = 0xFFFFFF00;
+ pci_config_mask[INT_MAC0][0][6] = 0x0;
+ pci_config_mask[INT_MAC0][0][7] = 0x0;
+ pci_config_mask[INT_MAC0][0][8] = 0x0;
+ pci_config_mask[INT_MAC0][0][9] = 0x0;
+
+ pci_config_mask[INT_MAC0][0][0xA] = 0x0;
+ pci_config_mask[INT_MAC0][0][0xB] = 0x0;
+ pci_config_mask[INT_MAC0][0][0xC] = 0x0;
+ pci_config_mask[INT_MAC0][0][0xD] = 0x0;
+ pci_config_mask[INT_MAC0][0][0xE] = 0x0;
+ pci_config_mask[INT_MAC0][0][0xF] = 0xFF;
+
+ pci_config_ro[INT_MAC0][0][0] = 0x31061106;
+ pci_config_ro[INT_MAC0][0][1] = 0x02100000;
+ pci_config_ro[INT_MAC0][0][2] = 0x0;
+ pci_config_ro[INT_MAC0][0][3] = 0x0;
+
+ pci_config_ro[INT_MAC0][0][4] = 0x1;
+ pci_config_ro[INT_MAC0][0][5] = 0x0;
+ pci_config_ro[INT_MAC0][0][6] = 0x0;
+ pci_config_ro[INT_MAC0][0][7] = 0x0;
+ pci_config_ro[INT_MAC0][0][8] = 0x0;
+ pci_config_ro[INT_MAC0][0][9] = 0x0;
+
+ pci_config_ro[INT_MAC0][0][0xA] = 0x0;
+ pci_config_ro[INT_MAC0][0][0xB] = 0x01061106;
+ pci_config_ro[INT_MAC0][0][0xC] = 0x0;
+ pci_config_ro[INT_MAC0][0][0xD] = 0x0;
+ pci_config_ro[INT_MAC0][0][0xE] = 0x0;
+ pci_config_ro[INT_MAC0][0][0xF] = 0x10;
+
+ if (0) {/* !ARCH_VT8430) */
+ /* MAC1 */
+ pci_config_shadow[INT_MAC1][0][0] = 0x31061106;
+ pci_config_shadow[INT_MAC1][0][1] = 0x02100017;
+ pci_config_shadow[INT_MAC1][0][2] = 0x02000084;
+ pci_config_shadow[INT_MAC1][0][3] = 0x00004004;
+
+ //pci_config_shadow[INT_MAC1][0][4] = 0xD8005001;
+ pci_config_shadow[INT_MAC1][0][4] = 0xFE005001;
+ pci_config_shadow[INT_MAC1][0][5] = 0xD8005000;
+ pci_config_shadow[INT_MAC1][0][6] = 0x0;
+ pci_config_shadow[INT_MAC1][0][7] = 0x0;
+ pci_config_shadow[INT_MAC1][0][8] = 0x0;
+ pci_config_shadow[INT_MAC1][0][9] = 0x0;
+
+ pci_config_shadow[INT_MAC1][0][0xA] = 0x0;
+ pci_config_shadow[INT_MAC1][0][0xB] = 0x01061106;
+ pci_config_shadow[INT_MAC1][0][0xC] = 0x0;
+ pci_config_shadow[INT_MAC1][0][0xD] = 0x0;
+ pci_config_shadow[INT_MAC1][0][0xE] = 0x0;
+ pci_config_shadow[INT_MAC1][0][0xF] = 0x01011;
+
+ pci_config_mask[INT_MAC1][0][0] = 0x0;
+ pci_config_mask[INT_MAC1][0][1] = 0x000003D7;
+ pci_config_mask[INT_MAC1][0][2] = 0x0;
+ pci_config_mask[INT_MAC1][0][3] = 0x0000F8FF;
+
+ pci_config_mask[INT_MAC1][0][4] = 0xFFFFFF00;
+ pci_config_mask[INT_MAC1][0][5] = 0xFFFFFF00;
+ pci_config_mask[INT_MAC1][0][6] = 0x0;
+ pci_config_mask[INT_MAC1][0][7] = 0x0;
+ pci_config_mask[INT_MAC1][0][8] = 0x0;
+ pci_config_mask[INT_MAC1][0][9] = 0x0;
+
+ pci_config_mask[INT_MAC1][0][0xA] = 0x0;
+ pci_config_mask[INT_MAC1][0][0xB] = 0x0;
+ pci_config_mask[INT_MAC1][0][0xC] = 0x0;
+ pci_config_mask[INT_MAC1][0][0xD] = 0x0;
+ pci_config_mask[INT_MAC1][0][0xE] = 0x0;
+ pci_config_mask[INT_MAC1][0][0xF] = 0xFF;
+
+ pci_config_ro[INT_MAC1][0][0] = 0x31061106;
+ pci_config_ro[INT_MAC1][0][1] = 0x02100000;
+ pci_config_ro[INT_MAC1][0][2] = 0x0;
+ pci_config_ro[INT_MAC1][0][3] = 0x0;
+
+ pci_config_ro[INT_MAC1][0][4] = 0x1;
+ pci_config_ro[INT_MAC1][0][5] = 0x0;
+ pci_config_ro[INT_MAC1][0][6] = 0x0;
+ pci_config_ro[INT_MAC1][0][7] = 0x0;
+ pci_config_ro[INT_MAC1][0][8] = 0x0;
+ pci_config_ro[INT_MAC1][0][9] = 0x0;
+
+ pci_config_ro[INT_MAC1][0][0xA] = 0x0;
+ pci_config_ro[INT_MAC1][0][0xB] = 0x01061106;
+ pci_config_ro[INT_MAC1][0][0xC] = 0x0;
+ pci_config_ro[INT_MAC1][0][0xD] = 0x0;
+ pci_config_ro[INT_MAC1][0][0xE] = 0x0;
+ pci_config_ro[INT_MAC1][0][0xF] = 0x10;
+ }
+}
+#endif
+
+#ifdef EXT_PCI
+void init_ext_pci(void)
+{
+ int i, func, bar, size;
+ u32 val, ori_val, new_val;
+ /* windows size is 64KB */
+ u32 io_base = 0x10000;
+ /* windows size is 16MB, but according to the architecture spec,
+ the windows is 64MB. */
+ u32 mem_base = 0xC2000000;
+
+ /* assign resource for I/O, Memory and IRQ */
+ for (i = EXT_PCI7; i <= EXT_PCIB; i++) {
+ for (func = 0; func < 8; func++) {
+ val = PCI_GetConfigRegisterDWORD(0, i, func, 0);
+ if ((val != 0xFFFFFFFF) && (val != 0x0)) {
+ /* PCI_INTA connect to IRQ44 */
+ /* PCI_INTB connect to IRQ45 */
+ /* PCI_INTC connect to IRQ46 */
+ /* PCI_INTD connect to IRQ47 */
+ u8 pci_int[4] = {44, 45, 46, 47};
+ /* Dev8 PCI_INTA->PCI_INTA,
+ PCI_INTB->PCI_INTB,
+ PCI_INTC->PCI_INTC,
+ PCI_INTD->PCI_INTD */
+ /* Dev9 PCI_INTA->PCI_INTB, ... */
+ /* DevA PCI_INTA->PCI_INTC, ... */
+ /* DevB PCI_INTA->PCI_INTD, ... */
+ u8 pci_int_rout_table[4][4] =
+ { {0, 1, 2, 3}, {1, 2, 3, 0}, {2, 3, 0, 1}, {3, 0, 1, 2} };
+ /* IRQ routing */
+ /* Dev8 Dev9 DevA DevB */
+ /* A B C D */
+ /* B C D A */
+ /* C D A B */
+ /* D A B C */
+ u8 irq_pin, irq_line;
+
+ printk("pci vid&pid = 0x%08X\n", val);
+ val = PCI_GetConfigRegisterDWORD(0, i, func, 0x3C);
+ irq_pin = (val & 0xFF00)>>8;
+ if (irq_pin) {
+ /* irq_pin = 1->PCI_INTA according to the PCI spec */
+ irq_pin--;
+ #ifdef CONFIG_PCI_DEBUG
+ printk("irq_pin:0x%02X\n", irq_pin);
+ #endif /* CONFIG_PCI_DEBUG */
+ irq_line = pci_int[pci_int_rout_table[(i-8)&3][irq_pin]];
+ #ifdef CONFIG_PCI_DEBUG
+ printk("irq_line:0x%02X\n", irq_line);
+ #endif /* CONFIG_PCI_DEBUG */
+ val = (val & 0xFFFFFF00) | irq_line;
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x3C, val);
+ val = PCI_GetConfigRegisterDWORD(0, i, func, 0x3C);
+ #ifdef CONFIG_PCI_DEBUG
+ printk("[0x3C = 0x%08X]\n", val);
+ #endif /* CONFIG_PCI_DEBUG */
+ }
+
+ for (bar = 0; bar < 6; bar++) {
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x10+bar*4, 0xFFFFFFFF);
+ new_val = PCI_GetConfigRegisterDWORD(0, i, func, 0x10+bar*4);
+ #ifdef CONFIG_PCI_DEBUG
+ printk("[bar:%d] new val:0x%08X\n", bar, new_val);
+ #endif /* CONFIG_PCI_DEBUG */
+ if (new_val == 0)
+ continue;
+
+ if (new_val & 1) { /* IO Space */
+ size = new_val & ~0x1;
+ size = ~size + 1;
+ io_base -= size;
+ io_base = io_base & ~(size-1);
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x10+bar*4, io_base);
+ #ifdef CONFIG_PCI_DEBUG
+ printk("io_base:0x%08X\n", io_base);
+ #endif /* CONFIG_PCI_DEBUG */
+ continue;
+ } else { /* Memory Space */
+ size = new_val & ~0xF;
+ size = ~size + 1;
+ mem_base -= size;
+ mem_base = mem_base & ~(size-1);
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x10+bar*4, mem_base);
+ #ifdef CONFIG_PCI_DEBUG
+ printk("mem_base:0x%08X\n", mem_base);
+ #endif /* CONFIG_PCI_DEBUG */
+ continue;
+ }
+ }
+ }
+ }
+ }
+
+ for (i = EXT_PCI7; i <= EXT_PCIB; i++) {
+ for (func = 0; func < 8; func++) {
+ val = PCI_GetConfigRegisterDWORD(0, i, func, 0);
+ if (val != 0xFFFFFFFF) {
+ for (bar = 0; bar < 6; bar++) {
+ ori_val = PCI_GetConfigRegisterDWORD(0, i, func, 0x10+bar*4);
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x10+bar*4, 0xFFFFFFFF);
+ new_val = PCI_GetConfigRegisterDWORD(0, i, func, 0x10+bar*4);
+ if (new_val == 0)
+ continue;
+ pci_config_mask[i][func][bar+4] = new_val;
+ if (new_val & 1) { /* IO Space */
+ pci_config_shadow[i][func][bar+4] =
+ (0xC0000000 + ori_val) & ~1;
+ size = new_val & ~1;
+ size = ~size + 1;
+ #ifdef CONFIG_PCI_DEBUG
+ printk("(P)pci_config_shadow[i][func][bar]:0x%08X\n",
+ pci_config_shadow[i][func][bar+4]);
+ #endif /* CONFIG_PCI_DEBUG */
+ pci_config_shadow[i][func][bar+4] = (ulong)ioremap_nocache(
+ pci_config_shadow[i][func][bar+4], size);
+ /* #ifdef CONFIG_PCI_DEBUG */
+ /* PCI_SetConfigRegisterDWORD(0, i, 0, 4, 0x17); */
+ /* printk("io:addr:0x%08X=0x%08X\n",
+ pci_config_shadow[i][bar+4],
+ *((ulong *)(pci_config_shadow[i][bar+4]))); */
+ /* #endif //CONFIG_PCI_DEBUG */
+ pci_config_ro[i][func][bar+4] = 1;
+ pci_config_shadow[i][func][bar+4] |=
+ pci_config_ro[i][func][bar+4];
+ } else { /* Memory Space */
+ pci_config_shadow[i][func][bar+4] = ori_val & ~0xF;
+ size = new_val & ~0xF;
+ size = ~size + 1;
+ /* #ifdef CONFIG_PCI_DEBUG */
+ /* printk("(p)pci_config_shadow[i][bar]:0x%08X\n",
+ pci_config_shadow[i][bar+4]); */
+ /* printk("(v)pci_config_shadow[i][bar]:0x%08X\n",
+ ioremap_nocache(pci_config_shadow[i][bar+4], size)); */
+ /* PCI_SetConfigRegisterDWORD(0, i, 0, 4, 0x17); */
+ /* #endif //CONFIG_PCI_DEBUG */
+ /* pci_config_shadow[i][bar+4] = (ulong)ioremap_nocache(
+ pci_config_shadow[i][bar+4], size); */
+ pci_config_ro[i][func][bar+4] = new_val & 0xF;
+ pci_config_shadow[i][func][bar+4] |=
+ pci_config_ro[i][func][bar+4];
+ }
+ PCI_SetConfigRegisterDWORD(0, i, func, 0x10+bar*4, ori_val);
+ #ifdef CONFIG_PCI_DEBUG
+ printk("JHT [Dev:0x%0X] [Func:0x%0X] [Bar:0x%02X]:", i, func,bar);
+ printk("(ori}0x%08X (new)0x%08X (shadow)0x%08X size 0x%04X\n"
+ , ori_val, new_val, pci_config_shadow[i][bar+4], size);
+ #endif /* CONFIG_PCI_DEBUG */
+ }
+ }
+ }
+ }
+ /*
+ * PCI Bridge Memory Map is between 0xC0000:0000 - 0xC3FF:FFFF(64MB)
+ * The first 64KB is allocated for the PCI I/O Space, except for the
+ * 0xCF8 - 0xCFF(8Bytes) for the PCI Configuration
+ * Others are reserved for the MemorySpace.
+ */
+ if (!request_region(0xC0000CF8, 8, "pci config")) {
+ printk("WonderMidia Technology PCI: Unable to request region 0xCF8\n");
+ return;
+ }
+}
+#endif
+
+/* void __init wmt_pci_preinit(void *sysdata) */
+void __init wmt_pci_preinit(void)
+{
+ int i, j, bar;
+
+ printk("PCI: WonderMidia Technology PCI Bridge\n");
+
+ if (!pci_config_ba) {
+ pci_config_ba = (ulong)ioremap_nocache(0xC0000CF8, 8);
+ pci_config_addr = pci_config_ba;
+ pci_config_data = pci_config_ba+4;
+ }
+
+ for (i = 0; i < MAX_PCI_DEV; i++) {
+ for (j = 0; j < 8; j++) {
+ for (bar = 0; bar < 0x10; bar++) {
+ pci_config_shadow[i][j][bar] = 0xFFFFFFFF;
+ pci_config_mask[i][j][bar] = 0;
+ pci_config_ro[i][j][bar] = 0;
+ }
+ }
+ }
+
+#ifdef PATA
+ init_int_pata();
+#endif
+
+#ifdef SATA
+ init_int_sata();
+#endif
+
+#ifdef USB_HOST
+ init_int_usb();
+#endif
+
+#ifdef MAC
+ init_int_mac();
+#endif
+
+#ifdef EXT_PCI
+ init_ext_pci();
+#endif
+
+}
+
+int __init wmt_pci_setup(int nr, struct pci_sys_data *sys)
+{
+ return (nr == 0);
+}
+
+struct pci_bus * __init wmt_pci_scan_bus(int nr, struct pci_sys_data *sysdata)
+{
+ if (nr == 0)
+ return pci_scan_bus(0, &wmt_pci_ops, sysdata);
+
+ return NULL;
+}
+
+/*
+ * [Description]
+ * Get the PCI Config Register for the specific PCI bus number,
+ * device number and function number in DWORD.
+ *
+ * [Arguments]
+ * bus : The target device's bus number.
+ * device : The target device's device number.
+ * funcn : The target device's function number.
+ * target : The target device's PCI config register Offset.
+ *
+ * [Return]
+ * The target device pci config register value will be returned.
+ */
+ulong
+PCI_GetConfigRegisterDWORD(
+ int bus,
+ int device,
+ int fctn,
+ int target
+ )
+{
+ outl(CONFIG_CMD(0, (device << 3) | fctn, target), pci_config_addr);
+ return inl(pci_config_data);
+}
+
+/*
+ * [Description]
+ * Set the PCI Config Register for the specific PCI bus number,
+ * device number and function number in DWORD.
+ *
+ * [Arguments]
+ * bus : The target device's bus number.
+ * device : The target device's device number.
+ * funcn : The target device's function number.
+ * target : The target device's PCI config register Offset.
+ * data : The written data to the target PCI device.
+ *
+ * [Return]
+ * Return value: 1 if found, 0 not found
+ */
+void
+PCI_SetConfigRegisterDWORD(
+ int bus,
+ int device,
+ int fctn,
+ int target,
+ ulong data
+ )
+{
+ outl(CONFIG_CMD(0, (device << 3) | fctn, target), pci_config_addr);
+ outl(data, pci_config_data);
+}
diff --git a/arch/arm/common/platform.c b/arch/arm/common/platform.c
new file mode 100755
index 00000000..7813429b
--- /dev/null
+++ b/arch/arm/common/platform.c
@@ -0,0 +1,44 @@
+/*
+ * linux/arch/arm/common/platform.c
+ *
+ * Copyright (c) 2008 WonderMedia Technologies, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software Foundation,
+ * either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * WonderMedia Technologies, Inc.
+ * 10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
+ */
+
+#include
+#include
+#include
+
+int __init platform_add_device(struct platform_device *dev)
+{
+ int i;
+
+ for (i = 0; i < dev->num_resources; i++) {
+ struct resource *r = &dev->resource[i];
+
+ // r->name = dev->dev.bus_id;
+
+ if (r->flags & IORESOURCE_MEM &&
+ request_resource(&iomem_resource, r)) {
+ printk(KERN_ERR
+ "%s%d: failed to claim resource %d\n",
+ dev->name, dev->id, i);
+ break;
+ }
+ }
+ if (i == dev->num_resources)
+ platform_device_register(dev);
+ return 0;
+}
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
new file mode 100644
index 00000000..9173d112
--- /dev/null
+++ b/arch/arm/common/sa1111.c
@@ -0,0 +1,1459 @@
+/*
+ * linux/arch/arm/common/sa1111.c
+ *
+ * SA1111 support
+ *
+ * Original code by John Dorsey
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This file contains all generic SA1111 support.
+ *
+ * All initialization functions provided here are intended to be called
+ * from machine specific code with proper arguments when required.
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+
+/* SA1111 IRQs */
+#define IRQ_GPAIN0 (0)
+#define IRQ_GPAIN1 (1)
+#define IRQ_GPAIN2 (2)
+#define IRQ_GPAIN3 (3)
+#define IRQ_GPBIN0 (4)
+#define IRQ_GPBIN1 (5)
+#define IRQ_GPBIN2 (6)
+#define IRQ_GPBIN3 (7)
+#define IRQ_GPBIN4 (8)
+#define IRQ_GPBIN5 (9)
+#define IRQ_GPCIN0 (10)
+#define IRQ_GPCIN1 (11)
+#define IRQ_GPCIN2 (12)
+#define IRQ_GPCIN3 (13)
+#define IRQ_GPCIN4 (14)
+#define IRQ_GPCIN5 (15)
+#define IRQ_GPCIN6 (16)
+#define IRQ_GPCIN7 (17)
+#define IRQ_MSTXINT (18)
+#define IRQ_MSRXINT (19)
+#define IRQ_MSSTOPERRINT (20)
+#define IRQ_TPTXINT (21)
+#define IRQ_TPRXINT (22)
+#define IRQ_TPSTOPERRINT (23)
+#define SSPXMTINT (24)
+#define SSPRCVINT (25)
+#define SSPROR (26)
+#define AUDXMTDMADONEA (32)
+#define AUDRCVDMADONEA (33)
+#define AUDXMTDMADONEB (34)
+#define AUDRCVDMADONEB (35)
+#define AUDTFSR (36)
+#define AUDRFSR (37)
+#define AUDTUR (38)
+#define AUDROR (39)
+#define AUDDTS (40)
+#define AUDRDD (41)
+#define AUDSTO (42)
+#define IRQ_USBPWR (43)
+#define IRQ_HCIM (44)
+#define IRQ_HCIBUFFACC (45)
+#define IRQ_HCIRMTWKP (46)
+#define IRQ_NHCIMFCIR (47)
+#define IRQ_USB_PORT_RESUME (48)
+#define IRQ_S0_READY_NINT (49)
+#define IRQ_S1_READY_NINT (50)
+#define IRQ_S0_CD_VALID (51)
+#define IRQ_S1_CD_VALID (52)
+#define IRQ_S0_BVD1_STSCHG (53)
+#define IRQ_S1_BVD1_STSCHG (54)
+#define SA1111_IRQ_NR (55)
+
+extern void sa1110_mb_enable(void);
+extern void sa1110_mb_disable(void);
+
+/*
+ * We keep the following data for the overall SA1111. Note that the
+ * struct device and struct resource are "fake"; they should be supplied
+ * by the bus above us. However, in the interests of getting all SA1111
+ * drivers converted over to the device model, we provide this as an
+ * anchor point for all the other drivers.
+ */
+struct sa1111 {
+ struct device *dev;
+ struct clk *clk;
+ unsigned long phys;
+ int irq;
+ int irq_base; /* base for cascaded on-chip IRQs */
+ spinlock_t lock;
+ void __iomem *base;
+ struct sa1111_platform_data *pdata;
+#ifdef CONFIG_PM
+ void *saved_state;
+#endif
+};
+
+/*
+ * We _really_ need to eliminate this. Its only users
+ * are the PWM and DMA checking code.
+ */
+static struct sa1111 *g_sa1111;
+
+struct sa1111_dev_info {
+ unsigned long offset;
+ unsigned long skpcr_mask;
+ bool dma;
+ unsigned int devid;
+ unsigned int irq[6];
+};
+
+static struct sa1111_dev_info sa1111_devices[] = {
+ {
+ .offset = SA1111_USB,
+ .skpcr_mask = SKPCR_UCLKEN,
+ .dma = true,
+ .devid = SA1111_DEVID_USB,
+ .irq = {
+ IRQ_USBPWR,
+ IRQ_HCIM,
+ IRQ_HCIBUFFACC,
+ IRQ_HCIRMTWKP,
+ IRQ_NHCIMFCIR,
+ IRQ_USB_PORT_RESUME
+ },
+ },
+ {
+ .offset = 0x0600,
+ .skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN,
+ .dma = true,
+ .devid = SA1111_DEVID_SAC,
+ .irq = {
+ AUDXMTDMADONEA,
+ AUDXMTDMADONEB,
+ AUDRCVDMADONEA,
+ AUDRCVDMADONEB
+ },
+ },
+ {
+ .offset = 0x0800,
+ .skpcr_mask = SKPCR_SCLKEN,
+ .devid = SA1111_DEVID_SSP,
+ },
+ {
+ .offset = SA1111_KBD,
+ .skpcr_mask = SKPCR_PTCLKEN,
+ .devid = SA1111_DEVID_PS2_KBD,
+ .irq = {
+ IRQ_TPRXINT,
+ IRQ_TPTXINT
+ },
+ },
+ {
+ .offset = SA1111_MSE,
+ .skpcr_mask = SKPCR_PMCLKEN,
+ .devid = SA1111_DEVID_PS2_MSE,
+ .irq = {
+ IRQ_MSRXINT,
+ IRQ_MSTXINT
+ },
+ },
+ {
+ .offset = 0x1800,
+ .skpcr_mask = 0,
+ .devid = SA1111_DEVID_PCMCIA,
+ .irq = {
+ IRQ_S0_READY_NINT,
+ IRQ_S0_CD_VALID,
+ IRQ_S0_BVD1_STSCHG,
+ IRQ_S1_READY_NINT,
+ IRQ_S1_CD_VALID,
+ IRQ_S1_BVD1_STSCHG,
+ },
+ },
+};
+
+/*
+ * SA1111 interrupt support. Since clearing an IRQ while there are
+ * active IRQs causes the interrupt output to pulse, the upper levels
+ * will call us again if there are more interrupts to process.
+ */
+static void
+sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+{
+ unsigned int stat0, stat1, i;
+ struct sa1111 *sachip = irq_get_handler_data(irq);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+
+ stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);
+ stat1 = sa1111_readl(mapbase + SA1111_INTSTATCLR1);
+
+ sa1111_writel(stat0, mapbase + SA1111_INTSTATCLR0);
+
+ desc->irq_data.chip->irq_ack(&desc->irq_data);
+
+ sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
+
+ if (stat0 == 0 && stat1 == 0) {
+ do_bad_IRQ(irq, desc);
+ return;
+ }
+
+ for (i = 0; stat0; i++, stat0 >>= 1)
+ if (stat0 & 1)
+ generic_handle_irq(i + sachip->irq_base);
+
+ for (i = 32; stat1; i++, stat1 >>= 1)
+ if (stat1 & 1)
+ generic_handle_irq(i + sachip->irq_base);
+
+ /* For level-based interrupts */
+ desc->irq_data.chip->irq_unmask(&desc->irq_data);
+}
+
+#define SA1111_IRQMASK_LO(x) (1 << (x - sachip->irq_base))
+#define SA1111_IRQMASK_HI(x) (1 << (x - sachip->irq_base - 32))
+
+static void sa1111_ack_irq(struct irq_data *d)
+{
+}
+
+static void sa1111_mask_lowirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned long ie0;
+
+ ie0 = sa1111_readl(mapbase + SA1111_INTEN0);
+ ie0 &= ~SA1111_IRQMASK_LO(d->irq);
+ writel(ie0, mapbase + SA1111_INTEN0);
+}
+
+static void sa1111_unmask_lowirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned long ie0;
+
+ ie0 = sa1111_readl(mapbase + SA1111_INTEN0);
+ ie0 |= SA1111_IRQMASK_LO(d->irq);
+ sa1111_writel(ie0, mapbase + SA1111_INTEN0);
+}
+
+/*
+ * Attempt to re-trigger the interrupt. The SA1111 contains a register
+ * (INTSET) which claims to do this. However, in practice no amount of
+ * manipulation of INTEN and INTSET guarantees that the interrupt will
+ * be triggered. In fact, its very difficult, if not impossible to get
+ * INTSET to re-trigger the interrupt.
+ */
+static int sa1111_retrigger_lowirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_LO(d->irq);
+ unsigned long ip0;
+ int i;
+
+ ip0 = sa1111_readl(mapbase + SA1111_INTPOL0);
+ for (i = 0; i < 8; i++) {
+ sa1111_writel(ip0 ^ mask, mapbase + SA1111_INTPOL0);
+ sa1111_writel(ip0, mapbase + SA1111_INTPOL0);
+ if (sa1111_readl(mapbase + SA1111_INTSTATCLR0) & mask)
+ break;
+ }
+
+ if (i == 8)
+ printk(KERN_ERR "Danger Will Robinson: failed to "
+ "re-trigger IRQ%d\n", d->irq);
+ return i == 8 ? -1 : 0;
+}
+
+static int sa1111_type_lowirq(struct irq_data *d, unsigned int flags)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_LO(d->irq);
+ unsigned long ip0;
+
+ if (flags == IRQ_TYPE_PROBE)
+ return 0;
+
+ if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
+ return -EINVAL;
+
+ ip0 = sa1111_readl(mapbase + SA1111_INTPOL0);
+ if (flags & IRQ_TYPE_EDGE_RISING)
+ ip0 &= ~mask;
+ else
+ ip0 |= mask;
+ sa1111_writel(ip0, mapbase + SA1111_INTPOL0);
+ sa1111_writel(ip0, mapbase + SA1111_WAKEPOL0);
+
+ return 0;
+}
+
+static int sa1111_wake_lowirq(struct irq_data *d, unsigned int on)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_LO(d->irq);
+ unsigned long we0;
+
+ we0 = sa1111_readl(mapbase + SA1111_WAKEEN0);
+ if (on)
+ we0 |= mask;
+ else
+ we0 &= ~mask;
+ sa1111_writel(we0, mapbase + SA1111_WAKEEN0);
+
+ return 0;
+}
+
+static struct irq_chip sa1111_low_chip = {
+ .name = "SA1111-l",
+ .irq_ack = sa1111_ack_irq,
+ .irq_mask = sa1111_mask_lowirq,
+ .irq_unmask = sa1111_unmask_lowirq,
+ .irq_retrigger = sa1111_retrigger_lowirq,
+ .irq_set_type = sa1111_type_lowirq,
+ .irq_set_wake = sa1111_wake_lowirq,
+};
+
+static void sa1111_mask_highirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned long ie1;
+
+ ie1 = sa1111_readl(mapbase + SA1111_INTEN1);
+ ie1 &= ~SA1111_IRQMASK_HI(d->irq);
+ sa1111_writel(ie1, mapbase + SA1111_INTEN1);
+}
+
+static void sa1111_unmask_highirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned long ie1;
+
+ ie1 = sa1111_readl(mapbase + SA1111_INTEN1);
+ ie1 |= SA1111_IRQMASK_HI(d->irq);
+ sa1111_writel(ie1, mapbase + SA1111_INTEN1);
+}
+
+/*
+ * Attempt to re-trigger the interrupt. The SA1111 contains a register
+ * (INTSET) which claims to do this. However, in practice no amount of
+ * manipulation of INTEN and INTSET guarantees that the interrupt will
+ * be triggered. In fact, its very difficult, if not impossible to get
+ * INTSET to re-trigger the interrupt.
+ */
+static int sa1111_retrigger_highirq(struct irq_data *d)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_HI(d->irq);
+ unsigned long ip1;
+ int i;
+
+ ip1 = sa1111_readl(mapbase + SA1111_INTPOL1);
+ for (i = 0; i < 8; i++) {
+ sa1111_writel(ip1 ^ mask, mapbase + SA1111_INTPOL1);
+ sa1111_writel(ip1, mapbase + SA1111_INTPOL1);
+ if (sa1111_readl(mapbase + SA1111_INTSTATCLR1) & mask)
+ break;
+ }
+
+ if (i == 8)
+ printk(KERN_ERR "Danger Will Robinson: failed to "
+ "re-trigger IRQ%d\n", d->irq);
+ return i == 8 ? -1 : 0;
+}
+
+static int sa1111_type_highirq(struct irq_data *d, unsigned int flags)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_HI(d->irq);
+ unsigned long ip1;
+
+ if (flags == IRQ_TYPE_PROBE)
+ return 0;
+
+ if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
+ return -EINVAL;
+
+ ip1 = sa1111_readl(mapbase + SA1111_INTPOL1);
+ if (flags & IRQ_TYPE_EDGE_RISING)
+ ip1 &= ~mask;
+ else
+ ip1 |= mask;
+ sa1111_writel(ip1, mapbase + SA1111_INTPOL1);
+ sa1111_writel(ip1, mapbase + SA1111_WAKEPOL1);
+
+ return 0;
+}
+
+static int sa1111_wake_highirq(struct irq_data *d, unsigned int on)
+{
+ struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
+ void __iomem *mapbase = sachip->base + SA1111_INTC;
+ unsigned int mask = SA1111_IRQMASK_HI(d->irq);
+ unsigned long we1;
+
+ we1 = sa1111_readl(mapbase + SA1111_WAKEEN1);
+ if (on)
+ we1 |= mask;
+ else
+ we1 &= ~mask;
+ sa1111_writel(we1, mapbase + SA1111_WAKEEN1);
+
+ return 0;
+}
+
+static struct irq_chip sa1111_high_chip = {
+ .name = "SA1111-h",
+ .irq_ack = sa1111_ack_irq,
+ .irq_mask = sa1111_mask_highirq,
+ .irq_unmask = sa1111_unmask_highirq,
+ .irq_retrigger = sa1111_retrigger_highirq,
+ .irq_set_type = sa1111_type_highirq,
+ .irq_set_wake = sa1111_wake_highirq,
+};
+
+static int sa1111_setup_irq(struct sa1111 *sachip, unsigned irq_base)
+{
+ void __iomem *irqbase = sachip->base + SA1111_INTC;
+ unsigned i, irq;
+ int ret;
+
+ /*
+ * We're guaranteed that this region hasn't been taken.
+ */
+ request_mem_region(sachip->phys + SA1111_INTC, 512, "irq");
+
+ ret = irq_alloc_descs(-1, irq_base, SA1111_IRQ_NR, -1);
+ if (ret <= 0) {
+ dev_err(sachip->dev, "unable to allocate %u irqs: %d\n",
+ SA1111_IRQ_NR, ret);
+ if (ret == 0)
+ ret = -EINVAL;
+ return ret;
+ }
+
+ sachip->irq_base = ret;
+
+ /* disable all IRQs */
+ sa1111_writel(0, irqbase + SA1111_INTEN0);
+ sa1111_writel(0, irqbase + SA1111_INTEN1);
+ sa1111_writel(0, irqbase + SA1111_WAKEEN0);
+ sa1111_writel(0, irqbase + SA1111_WAKEEN1);
+
+ /*
+ * detect on rising edge. Note: Feb 2001 Errata for SA1111
+ * specifies that S0ReadyInt and S1ReadyInt should be '1'.
+ */
+ sa1111_writel(0, irqbase + SA1111_INTPOL0);
+ sa1111_writel(SA1111_IRQMASK_HI(IRQ_S0_READY_NINT) |
+ SA1111_IRQMASK_HI(IRQ_S1_READY_NINT),
+ irqbase + SA1111_INTPOL1);
+
+ /* clear all IRQs */
+ sa1111_writel(~0, irqbase + SA1111_INTSTATCLR0);
+ sa1111_writel(~0, irqbase + SA1111_INTSTATCLR1);
+
+ for (i = IRQ_GPAIN0; i <= SSPROR; i++) {
+ irq = sachip->irq_base + i;
+ irq_set_chip_and_handler(irq, &sa1111_low_chip,
+ handle_edge_irq);
+ irq_set_chip_data(irq, sachip);
+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+ }
+
+ for (i = AUDXMTDMADONEA; i <= IRQ_S1_BVD1_STSCHG; i++) {
+ irq = sachip->irq_base + i;
+ irq_set_chip_and_handler(irq, &sa1111_high_chip,
+ handle_edge_irq);
+ irq_set_chip_data(irq, sachip);
+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+ }
+
+ /*
+ * Register SA1111 interrupt
+ */
+ irq_set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING);
+ irq_set_handler_data(sachip->irq, sachip);
+ irq_set_chained_handler(sachip->irq, sa1111_irq_handler);
+
+ dev_info(sachip->dev, "Providing IRQ%u-%u\n",
+ sachip->irq_base, sachip->irq_base + SA1111_IRQ_NR - 1);
+
+ return 0;
+}
+
+/*
+ * Bring the SA1111 out of reset. This requires a set procedure:
+ * 1. nRESET asserted (by hardware)
+ * 2. CLK turned on from SA1110
+ * 3. nRESET deasserted
+ * 4. VCO turned on, PLL_BYPASS turned off
+ * 5. Wait lock time, then assert RCLKEn
+ * 7. PCR set to allow clocking of individual functions
+ *
+ * Until we've done this, the only registers we can access are:
+ * SBI_SKCR
+ * SBI_SMCR
+ * SBI_SKID
+ */
+static void sa1111_wake(struct sa1111 *sachip)
+{
+ unsigned long flags, r;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+
+ clk_enable(sachip->clk);
+
+ /*
+ * Turn VCO on, and disable PLL Bypass.
+ */
+ r = sa1111_readl(sachip->base + SA1111_SKCR);
+ r &= ~SKCR_VCO_OFF;
+ sa1111_writel(r, sachip->base + SA1111_SKCR);
+ r |= SKCR_PLL_BYPASS | SKCR_OE_EN;
+ sa1111_writel(r, sachip->base + SA1111_SKCR);
+
+ /*
+ * Wait lock time. SA1111 manual _doesn't_
+ * specify a figure for this! We choose 100us.
+ */
+ udelay(100);
+
+ /*
+ * Enable RCLK. We also ensure that RDYEN is set.
+ */
+ r |= SKCR_RCLKEN | SKCR_RDYEN;
+ sa1111_writel(r, sachip->base + SA1111_SKCR);
+
+ /*
+ * Wait 14 RCLK cycles for the chip to finish coming out
+ * of reset. (RCLK=24MHz). This is 590ns.
+ */
+ udelay(1);
+
+ /*
+ * Ensure all clocks are initially off.
+ */
+ sa1111_writel(0, sachip->base + SA1111_SKPCR);
+
+ spin_unlock_irqrestore(&sachip->lock, flags);
+}
+
+#ifdef CONFIG_ARCH_SA1100
+
+static u32 sa1111_dma_mask[] = {
+ ~0,
+ ~(1 << 20),
+ ~(1 << 23),
+ ~(1 << 24),
+ ~(1 << 25),
+ ~(1 << 20),
+ ~(1 << 20),
+ 0,
+};
+
+/*
+ * Configure the SA1111 shared memory controller.
+ */
+void
+sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
+ unsigned int cas_latency)
+{
+ unsigned int smcr = SMCR_DTIM | SMCR_MBGE | FInsrt(drac, SMCR_DRAC);
+
+ if (cas_latency == 3)
+ smcr |= SMCR_CLAT;
+
+ sa1111_writel(smcr, sachip->base + SA1111_SMCR);
+
+ /*
+ * Now clear the bits in the DMA mask to work around the SA1111
+ * DMA erratum (Intel StrongARM SA-1111 Microprocessor Companion
+ * Chip Specification Update, June 2000, Erratum #7).
+ */
+ if (sachip->dev->dma_mask)
+ *sachip->dev->dma_mask &= sa1111_dma_mask[drac >> 2];
+
+ sachip->dev->coherent_dma_mask &= sa1111_dma_mask[drac >> 2];
+}
+#endif
+
+static void sa1111_dev_release(struct device *_dev)
+{
+ struct sa1111_dev *dev = SA1111_DEV(_dev);
+
+ kfree(dev);
+}
+
+static int
+sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
+ struct sa1111_dev_info *info)
+{
+ struct sa1111_dev *dev;
+ unsigned i;
+ int ret;
+
+ dev = kzalloc(sizeof(struct sa1111_dev), GFP_KERNEL);
+ if (!dev) {
+ ret = -ENOMEM;
+ goto err_alloc;
+ }
+
+ device_initialize(&dev->dev);
+ dev_set_name(&dev->dev, "%4.4lx", info->offset);
+ dev->devid = info->devid;
+ dev->dev.parent = sachip->dev;
+ dev->dev.bus = &sa1111_bus_type;
+ dev->dev.release = sa1111_dev_release;
+ dev->res.start = sachip->phys + info->offset;
+ dev->res.end = dev->res.start + 511;
+ dev->res.name = dev_name(&dev->dev);
+ dev->res.flags = IORESOURCE_MEM;
+ dev->mapbase = sachip->base + info->offset;
+ dev->skpcr_mask = info->skpcr_mask;
+
+ for (i = 0; i < ARRAY_SIZE(info->irq); i++)
+ dev->irq[i] = sachip->irq_base + info->irq[i];
+
+ /*
+ * If the parent device has a DMA mask associated with it, and
+ * this child supports DMA, propagate it down to the children.
+ */
+ if (info->dma && sachip->dev->dma_mask) {
+ dev->dma_mask = *sachip->dev->dma_mask;
+ dev->dev.dma_mask = &dev->dma_mask;
+ dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask;
+ }
+
+ ret = request_resource(parent, &dev->res);
+ if (ret) {
+ dev_err(sachip->dev, "failed to allocate resource for %s\n",
+ dev->res.name);
+ goto err_resource;
+ }
+
+ ret = device_add(&dev->dev);
+ if (ret)
+ goto err_add;
+ return 0;
+
+ err_add:
+ release_resource(&dev->res);
+ err_resource:
+ put_device(&dev->dev);
+ err_alloc:
+ return ret;
+}
+
+/**
+ * sa1111_probe - probe for a single SA1111 chip.
+ * @phys_addr: physical address of device.
+ *
+ * Probe for a SA1111 chip. This must be called
+ * before any other SA1111-specific code.
+ *
+ * Returns:
+ * %-ENODEV device not found.
+ * %-EBUSY physical address already marked in-use.
+ * %-EINVAL no platform data passed
+ * %0 successful.
+ */
+static int __devinit
+__sa1111_probe(struct device *me, struct resource *mem, int irq)
+{
+ struct sa1111_platform_data *pd = me->platform_data;
+ struct sa1111 *sachip;
+ unsigned long id;
+ unsigned int has_devs;
+ int i, ret = -ENODEV;
+
+ if (!pd)
+ return -EINVAL;
+
+ sachip = kzalloc(sizeof(struct sa1111), GFP_KERNEL);
+ if (!sachip)
+ return -ENOMEM;
+
+ sachip->clk = clk_get(me, "SA1111_CLK");
+ if (IS_ERR(sachip->clk)) {
+ ret = PTR_ERR(sachip->clk);
+ goto err_free;
+ }
+
+ ret = clk_prepare(sachip->clk);
+ if (ret)
+ goto err_clkput;
+
+ spin_lock_init(&sachip->lock);
+
+ sachip->dev = me;
+ dev_set_drvdata(sachip->dev, sachip);
+
+ sachip->pdata = pd;
+ sachip->phys = mem->start;
+ sachip->irq = irq;
+
+ /*
+ * Map the whole region. This also maps the
+ * registers for our children.
+ */
+ sachip->base = ioremap(mem->start, PAGE_SIZE * 2);
+ if (!sachip->base) {
+ ret = -ENOMEM;
+ goto err_clk_unprep;
+ }
+
+ /*
+ * Probe for the chip. Only touch the SBI registers.
+ */
+ id = sa1111_readl(sachip->base + SA1111_SKID);
+ if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
+ printk(KERN_DEBUG "SA1111 not detected: ID = %08lx\n", id);
+ ret = -ENODEV;
+ goto err_unmap;
+ }
+
+ printk(KERN_INFO "SA1111 Microprocessor Companion Chip: "
+ "silicon revision %lx, metal revision %lx\n",
+ (id & SKID_SIREV_MASK)>>4, (id & SKID_MTREV_MASK));
+
+ /*
+ * We found it. Wake the chip up, and initialise.
+ */
+ sa1111_wake(sachip);
+
+ /*
+ * The interrupt controller must be initialised before any
+ * other device to ensure that the interrupts are available.
+ */
+ if (sachip->irq != NO_IRQ) {
+ ret = sa1111_setup_irq(sachip, pd->irq_base);
+ if (ret)
+ goto err_unmap;
+ }
+
+#ifdef CONFIG_ARCH_SA1100
+ {
+ unsigned int val;
+
+ /*
+ * The SDRAM configuration of the SA1110 and the SA1111 must
+ * match. This is very important to ensure that SA1111 accesses
+ * don't corrupt the SDRAM. Note that this ungates the SA1111's
+ * MBGNT signal, so we must have called sa1110_mb_disable()
+ * beforehand.
+ */
+ sa1111_configure_smc(sachip, 1,
+ FExtr(MDCNFG, MDCNFG_SA1110_DRAC0),
+ FExtr(MDCNFG, MDCNFG_SA1110_TDL0));
+
+ /*
+ * We only need to turn on DCLK whenever we want to use the
+ * DMA. It can otherwise be held firmly in the off position.
+ * (currently, we always enable it.)
+ */
+ val = sa1111_readl(sachip->base + SA1111_SKPCR);
+ sa1111_writel(val | SKPCR_DCLKEN, sachip->base + SA1111_SKPCR);
+
+ /*
+ * Enable the SA1110 memory bus request and grant signals.
+ */
+ sa1110_mb_enable();
+ }
+#endif
+
+ g_sa1111 = sachip;
+
+ has_devs = ~0;
+ if (pd)
+ has_devs &= ~pd->disable_devs;
+
+ for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++)
+ if (sa1111_devices[i].devid & has_devs)
+ sa1111_init_one_child(sachip, mem, &sa1111_devices[i]);
+
+ return 0;
+
+ err_unmap:
+ iounmap(sachip->base);
+ err_clk_unprep:
+ clk_unprepare(sachip->clk);
+ err_clkput:
+ clk_put(sachip->clk);
+ err_free:
+ kfree(sachip);
+ return ret;
+}
+
+static int sa1111_remove_one(struct device *dev, void *data)
+{
+ struct sa1111_dev *sadev = SA1111_DEV(dev);
+ device_del(&sadev->dev);
+ release_resource(&sadev->res);
+ put_device(&sadev->dev);
+ return 0;
+}
+
+static void __sa1111_remove(struct sa1111 *sachip)
+{
+ void __iomem *irqbase = sachip->base + SA1111_INTC;
+
+ device_for_each_child(sachip->dev, NULL, sa1111_remove_one);
+
+ /* disable all IRQs */
+ sa1111_writel(0, irqbase + SA1111_INTEN0);
+ sa1111_writel(0, irqbase + SA1111_INTEN1);
+ sa1111_writel(0, irqbase + SA1111_WAKEEN0);
+ sa1111_writel(0, irqbase + SA1111_WAKEEN1);
+
+ clk_disable(sachip->clk);
+ clk_unprepare(sachip->clk);
+
+ if (sachip->irq != NO_IRQ) {
+ irq_set_chained_handler(sachip->irq, NULL);
+ irq_set_handler_data(sachip->irq, NULL);
+ irq_free_descs(sachip->irq_base, SA1111_IRQ_NR);
+
+ release_mem_region(sachip->phys + SA1111_INTC, 512);
+ }
+
+ iounmap(sachip->base);
+ clk_put(sachip->clk);
+ kfree(sachip);
+}
+
+struct sa1111_save_data {
+ unsigned int skcr;
+ unsigned int skpcr;
+ unsigned int skcdr;
+ unsigned char skaud;
+ unsigned char skpwm0;
+ unsigned char skpwm1;
+
+ /*
+ * Interrupt controller
+ */
+ unsigned int intpol0;
+ unsigned int intpol1;
+ unsigned int inten0;
+ unsigned int inten1;
+ unsigned int wakepol0;
+ unsigned int wakepol1;
+ unsigned int wakeen0;
+ unsigned int wakeen1;
+};
+
+#ifdef CONFIG_PM
+
+static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct sa1111 *sachip = platform_get_drvdata(dev);
+ struct sa1111_save_data *save;
+ unsigned long flags;
+ unsigned int val;
+ void __iomem *base;
+
+ save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
+ if (!save)
+ return -ENOMEM;
+ sachip->saved_state = save;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+
+ /*
+ * Save state.
+ */
+ base = sachip->base;
+ save->skcr = sa1111_readl(base + SA1111_SKCR);
+ save->skpcr = sa1111_readl(base + SA1111_SKPCR);
+ save->skcdr = sa1111_readl(base + SA1111_SKCDR);
+ save->skaud = sa1111_readl(base + SA1111_SKAUD);
+ save->skpwm0 = sa1111_readl(base + SA1111_SKPWM0);
+ save->skpwm1 = sa1111_readl(base + SA1111_SKPWM1);
+
+ sa1111_writel(0, sachip->base + SA1111_SKPWM0);
+ sa1111_writel(0, sachip->base + SA1111_SKPWM1);
+
+ base = sachip->base + SA1111_INTC;
+ save->intpol0 = sa1111_readl(base + SA1111_INTPOL0);
+ save->intpol1 = sa1111_readl(base + SA1111_INTPOL1);
+ save->inten0 = sa1111_readl(base + SA1111_INTEN0);
+ save->inten1 = sa1111_readl(base + SA1111_INTEN1);
+ save->wakepol0 = sa1111_readl(base + SA1111_WAKEPOL0);
+ save->wakepol1 = sa1111_readl(base + SA1111_WAKEPOL1);
+ save->wakeen0 = sa1111_readl(base + SA1111_WAKEEN0);
+ save->wakeen1 = sa1111_readl(base + SA1111_WAKEEN1);
+
+ /*
+ * Disable.
+ */
+ val = sa1111_readl(sachip->base + SA1111_SKCR);
+ sa1111_writel(val | SKCR_SLEEP, sachip->base + SA1111_SKCR);
+
+ clk_disable(sachip->clk);
+
+ spin_unlock_irqrestore(&sachip->lock, flags);
+
+#ifdef CONFIG_ARCH_SA1100
+ sa1110_mb_disable();
+#endif
+
+ return 0;
+}
+
+/*
+ * sa1111_resume - Restore the SA1111 device state.
+ * @dev: device to restore
+ *
+ * Restore the general state of the SA1111; clock control and
+ * interrupt controller. Other parts of the SA1111 must be
+ * restored by their respective drivers, and must be called
+ * via LDM after this function.
+ */
+static int sa1111_resume(struct platform_device *dev)
+{
+ struct sa1111 *sachip = platform_get_drvdata(dev);
+ struct sa1111_save_data *save;
+ unsigned long flags, id;
+ void __iomem *base;
+
+ save = sachip->saved_state;
+ if (!save)
+ return 0;
+
+ /*
+ * Ensure that the SA1111 is still here.
+ * FIXME: shouldn't do this here.
+ */
+ id = sa1111_readl(sachip->base + SA1111_SKID);
+ if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
+ __sa1111_remove(sachip);
+ platform_set_drvdata(dev, NULL);
+ kfree(save);
+ return 0;
+ }
+
+ /*
+ * First of all, wake up the chip.
+ */
+ sa1111_wake(sachip);
+
+#ifdef CONFIG_ARCH_SA1100
+ /* Enable the memory bus request/grant signals */
+ sa1110_mb_enable();
+#endif
+
+ /*
+ * Only lock for write ops. Also, sa1111_wake must be called with
+ * released spinlock!
+ */
+ spin_lock_irqsave(&sachip->lock, flags);
+
+ sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN0);
+ sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN1);
+
+ base = sachip->base;
+ sa1111_writel(save->skcr, base + SA1111_SKCR);
+ sa1111_writel(save->skpcr, base + SA1111_SKPCR);
+ sa1111_writel(save->skcdr, base + SA1111_SKCDR);
+ sa1111_writel(save->skaud, base + SA1111_SKAUD);
+ sa1111_writel(save->skpwm0, base + SA1111_SKPWM0);
+ sa1111_writel(save->skpwm1, base + SA1111_SKPWM1);
+
+ base = sachip->base + SA1111_INTC;
+ sa1111_writel(save->intpol0, base + SA1111_INTPOL0);
+ sa1111_writel(save->intpol1, base + SA1111_INTPOL1);
+ sa1111_writel(save->inten0, base + SA1111_INTEN0);
+ sa1111_writel(save->inten1, base + SA1111_INTEN1);
+ sa1111_writel(save->wakepol0, base + SA1111_WAKEPOL0);
+ sa1111_writel(save->wakepol1, base + SA1111_WAKEPOL1);
+ sa1111_writel(save->wakeen0, base + SA1111_WAKEEN0);
+ sa1111_writel(save->wakeen1, base + SA1111_WAKEEN1);
+
+ spin_unlock_irqrestore(&sachip->lock, flags);
+
+ sachip->saved_state = NULL;
+ kfree(save);
+
+ return 0;
+}
+
+#else
+#define sa1111_suspend NULL
+#define sa1111_resume NULL
+#endif
+
+static int __devinit sa1111_probe(struct platform_device *pdev)
+{
+ struct resource *mem;
+ int irq;
+
+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!mem)
+ return -EINVAL;
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0)
+ return -ENXIO;
+
+ return __sa1111_probe(&pdev->dev, mem, irq);
+}
+
+static int sa1111_remove(struct platform_device *pdev)
+{
+ struct sa1111 *sachip = platform_get_drvdata(pdev);
+
+ if (sachip) {
+#ifdef CONFIG_PM
+ kfree(sachip->saved_state);
+ sachip->saved_state = NULL;
+#endif
+ __sa1111_remove(sachip);
+ platform_set_drvdata(pdev, NULL);
+ }
+
+ return 0;
+}
+
+/*
+ * Not sure if this should be on the system bus or not yet.
+ * We really want some way to register a system device at
+ * the per-machine level, and then have this driver pick
+ * up the registered devices.
+ *
+ * We also need to handle the SDRAM configuration for
+ * PXA250/SA1110 machine classes.
+ */
+static struct platform_driver sa1111_device_driver = {
+ .probe = sa1111_probe,
+ .remove = sa1111_remove,
+ .suspend = sa1111_suspend,
+ .resume = sa1111_resume,
+ .driver = {
+ .name = "sa1111",
+ .owner = THIS_MODULE,
+ },
+};
+
+/*
+ * Get the parent device driver (us) structure
+ * from a child function device
+ */
+static inline struct sa1111 *sa1111_chip_driver(struct sa1111_dev *sadev)
+{
+ return (struct sa1111 *)dev_get_drvdata(sadev->dev.parent);
+}
+
+/*
+ * The bits in the opdiv field are non-linear.
+ */
+static unsigned char opdiv_table[] = { 1, 4, 2, 8 };
+
+static unsigned int __sa1111_pll_clock(struct sa1111 *sachip)
+{
+ unsigned int skcdr, fbdiv, ipdiv, opdiv;
+
+ skcdr = sa1111_readl(sachip->base + SA1111_SKCDR);
+
+ fbdiv = (skcdr & 0x007f) + 2;
+ ipdiv = ((skcdr & 0x0f80) >> 7) + 2;
+ opdiv = opdiv_table[(skcdr & 0x3000) >> 12];
+
+ return 3686400 * fbdiv / (ipdiv * opdiv);
+}
+
+/**
+ * sa1111_pll_clock - return the current PLL clock frequency.
+ * @sadev: SA1111 function block
+ *
+ * BUG: we should look at SKCR. We also blindly believe that
+ * the chip is being fed with the 3.6864MHz clock.
+ *
+ * Returns the PLL clock in Hz.
+ */
+unsigned int sa1111_pll_clock(struct sa1111_dev *sadev)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+
+ return __sa1111_pll_clock(sachip);
+}
+EXPORT_SYMBOL(sa1111_pll_clock);
+
+/**
+ * sa1111_select_audio_mode - select I2S or AC link mode
+ * @sadev: SA1111 function block
+ * @mode: One of %SA1111_AUDIO_ACLINK or %SA1111_AUDIO_I2S
+ *
+ * Frob the SKCR to select AC Link mode or I2S mode for
+ * the audio block.
+ */
+void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+
+ val = sa1111_readl(sachip->base + SA1111_SKCR);
+ if (mode == SA1111_AUDIO_I2S) {
+ val &= ~SKCR_SELAC;
+ } else {
+ val |= SKCR_SELAC;
+ }
+ sa1111_writel(val, sachip->base + SA1111_SKCR);
+
+ spin_unlock_irqrestore(&sachip->lock, flags);
+}
+EXPORT_SYMBOL(sa1111_select_audio_mode);
+
+/**
+ * sa1111_set_audio_rate - set the audio sample rate
+ * @sadev: SA1111 SAC function block
+ * @rate: sample rate to select
+ */
+int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned int div;
+
+ if (sadev->devid != SA1111_DEVID_SAC)
+ return -EINVAL;
+
+ div = (__sa1111_pll_clock(sachip) / 256 + rate / 2) / rate;
+ if (div == 0)
+ div = 1;
+ if (div > 128)
+ div = 128;
+
+ sa1111_writel(div - 1, sachip->base + SA1111_SKAUD);
+
+ return 0;
+}
+EXPORT_SYMBOL(sa1111_set_audio_rate);
+
+/**
+ * sa1111_get_audio_rate - get the audio sample rate
+ * @sadev: SA1111 SAC function block device
+ */
+int sa1111_get_audio_rate(struct sa1111_dev *sadev)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long div;
+
+ if (sadev->devid != SA1111_DEVID_SAC)
+ return -EINVAL;
+
+ div = sa1111_readl(sachip->base + SA1111_SKAUD) + 1;
+
+ return __sa1111_pll_clock(sachip) / (256 * div);
+}
+EXPORT_SYMBOL(sa1111_get_audio_rate);
+
+void sa1111_set_io_dir(struct sa1111_dev *sadev,
+ unsigned int bits, unsigned int dir,
+ unsigned int sleep_dir)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+ void __iomem *gpio = sachip->base + SA1111_GPIO;
+
+#define MODIFY_BITS(port, mask, dir) \
+ if (mask) { \
+ val = sa1111_readl(port); \
+ val &= ~(mask); \
+ val |= (dir) & (mask); \
+ sa1111_writel(val, port); \
+ }
+
+ spin_lock_irqsave(&sachip->lock, flags);
+ MODIFY_BITS(gpio + SA1111_GPIO_PADDR, bits & 15, dir);
+ MODIFY_BITS(gpio + SA1111_GPIO_PBDDR, (bits >> 8) & 255, dir >> 8);
+ MODIFY_BITS(gpio + SA1111_GPIO_PCDDR, (bits >> 16) & 255, dir >> 16);
+
+ MODIFY_BITS(gpio + SA1111_GPIO_PASDR, bits & 15, sleep_dir);
+ MODIFY_BITS(gpio + SA1111_GPIO_PBSDR, (bits >> 8) & 255, sleep_dir >> 8);
+ MODIFY_BITS(gpio + SA1111_GPIO_PCSDR, (bits >> 16) & 255, sleep_dir >> 16);
+ spin_unlock_irqrestore(&sachip->lock, flags);
+}
+EXPORT_SYMBOL(sa1111_set_io_dir);
+
+void sa1111_set_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+ void __iomem *gpio = sachip->base + SA1111_GPIO;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+ MODIFY_BITS(gpio + SA1111_GPIO_PADWR, bits & 15, v);
+ MODIFY_BITS(gpio + SA1111_GPIO_PBDWR, (bits >> 8) & 255, v >> 8);
+ MODIFY_BITS(gpio + SA1111_GPIO_PCDWR, (bits >> 16) & 255, v >> 16);
+ spin_unlock_irqrestore(&sachip->lock, flags);
+}
+EXPORT_SYMBOL(sa1111_set_io);
+
+void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+ void __iomem *gpio = sachip->base + SA1111_GPIO;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+ MODIFY_BITS(gpio + SA1111_GPIO_PASSR, bits & 15, v);
+ MODIFY_BITS(gpio + SA1111_GPIO_PBSSR, (bits >> 8) & 255, v >> 8);
+ MODIFY_BITS(gpio + SA1111_GPIO_PCSSR, (bits >> 16) & 255, v >> 16);
+ spin_unlock_irqrestore(&sachip->lock, flags);
+}
+EXPORT_SYMBOL(sa1111_set_sleep_io);
+
+/*
+ * Individual device operations.
+ */
+
+/**
+ * sa1111_enable_device - enable an on-chip SA1111 function block
+ * @sadev: SA1111 function block device to enable
+ */
+int sa1111_enable_device(struct sa1111_dev *sadev)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+ int ret = 0;
+
+ if (sachip->pdata && sachip->pdata->enable)
+ ret = sachip->pdata->enable(sachip->pdata->data, sadev->devid);
+
+ if (ret == 0) {
+ spin_lock_irqsave(&sachip->lock, flags);
+ val = sa1111_readl(sachip->base + SA1111_SKPCR);
+ sa1111_writel(val | sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
+ spin_unlock_irqrestore(&sachip->lock, flags);
+ }
+ return ret;
+}
+EXPORT_SYMBOL(sa1111_enable_device);
+
+/**
+ * sa1111_disable_device - disable an on-chip SA1111 function block
+ * @sadev: SA1111 function block device to disable
+ */
+void sa1111_disable_device(struct sa1111_dev *sadev)
+{
+ struct sa1111 *sachip = sa1111_chip_driver(sadev);
+ unsigned long flags;
+ unsigned int val;
+
+ spin_lock_irqsave(&sachip->lock, flags);
+ val = sa1111_readl(sachip->base + SA1111_SKPCR);
+ sa1111_writel(val & ~sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
+ spin_unlock_irqrestore(&sachip->lock, flags);
+
+ if (sachip->pdata && sachip->pdata->disable)
+ sachip->pdata->disable(sachip->pdata->data, sadev->devid);
+}
+EXPORT_SYMBOL(sa1111_disable_device);
+
+/*
+ * SA1111 "Register Access Bus."
+ *
+ * We model this as a regular bus type, and hang devices directly
+ * off this.
+ */
+static int sa1111_match(struct device *_dev, struct device_driver *_drv)
+{
+ struct sa1111_dev *dev = SA1111_DEV(_dev);
+ struct sa1111_driver *drv = SA1111_DRV(_drv);
+
+ return dev->devid & drv->devid;
+}
+
+static int sa1111_bus_suspend(struct device *dev, pm_message_t state)
+{
+ struct sa1111_dev *sadev = SA1111_DEV(dev);
+ struct sa1111_driver *drv = SA1111_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv && drv->suspend)
+ ret = drv->suspend(sadev, state);
+ return ret;
+}
+
+static int sa1111_bus_resume(struct device *dev)
+{
+ struct sa1111_dev *sadev = SA1111_DEV(dev);
+ struct sa1111_driver *drv = SA1111_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv && drv->resume)
+ ret = drv->resume(sadev);
+ return ret;
+}
+
+static void sa1111_bus_shutdown(struct device *dev)
+{
+ struct sa1111_driver *drv = SA1111_DRV(dev->driver);
+
+ if (drv && drv->shutdown)
+ drv->shutdown(SA1111_DEV(dev));
+}
+
+static int sa1111_bus_probe(struct device *dev)
+{
+ struct sa1111_dev *sadev = SA1111_DEV(dev);
+ struct sa1111_driver *drv = SA1111_DRV(dev->driver);
+ int ret = -ENODEV;
+
+ if (drv->probe)
+ ret = drv->probe(sadev);
+ return ret;
+}
+
+static int sa1111_bus_remove(struct device *dev)
+{
+ struct sa1111_dev *sadev = SA1111_DEV(dev);
+ struct sa1111_driver *drv = SA1111_DRV(dev->driver);
+ int ret = 0;
+
+ if (drv->remove)
+ ret = drv->remove(sadev);
+ return ret;
+}
+
+struct bus_type sa1111_bus_type = {
+ .name = "sa1111-rab",
+ .match = sa1111_match,
+ .probe = sa1111_bus_probe,
+ .remove = sa1111_bus_remove,
+ .suspend = sa1111_bus_suspend,
+ .resume = sa1111_bus_resume,
+ .shutdown = sa1111_bus_shutdown,
+};
+EXPORT_SYMBOL(sa1111_bus_type);
+
+int sa1111_driver_register(struct sa1111_driver *driver)
+{
+ driver->drv.bus = &sa1111_bus_type;
+ return driver_register(&driver->drv);
+}
+EXPORT_SYMBOL(sa1111_driver_register);
+
+void sa1111_driver_unregister(struct sa1111_driver *driver)
+{
+ driver_unregister(&driver->drv);
+}
+EXPORT_SYMBOL(sa1111_driver_unregister);
+
+#ifdef CONFIG_DMABOUNCE
+/*
+ * According to the "Intel StrongARM SA-1111 Microprocessor Companion
+ * Chip Specification Update" (June 2000), erratum #7, there is a
+ * significant bug in the SA1111 SDRAM shared memory controller. If
+ * an access to a region of memory above 1MB relative to the bank base,
+ * it is important that address bit 10 _NOT_ be asserted. Depending
+ * on the configuration of the RAM, bit 10 may correspond to one
+ * of several different (processor-relative) address bits.
+ *
+ * This routine only identifies whether or not a given DMA address
+ * is susceptible to the bug.
+ *
+ * This should only get called for sa1111_device types due to the
+ * way we configure our device dma_masks.
+ */
+static int sa1111_needs_bounce(struct device *dev, dma_addr_t addr, size_t size)
+{
+ /*
+ * Section 4.6 of the "Intel StrongARM SA-1111 Development Module
+ * User's Guide" mentions that jumpers R51 and R52 control the
+ * target of SA-1111 DMA (either SDRAM bank 0 on Assabet, or
+ * SDRAM bank 1 on Neponset). The default configuration selects
+ * Assabet, so any address in bank 1 is necessarily invalid.
+ */
+ return (machine_is_assabet() || machine_is_pfs168()) &&
+ (addr >= 0xc8000000 || (addr + size) >= 0xc8000000);
+}
+
+static int sa1111_notifier_call(struct notifier_block *n, unsigned long action,
+ void *data)
+{
+ struct sa1111_dev *dev = SA1111_DEV(data);
+
+ switch (action) {
+ case BUS_NOTIFY_ADD_DEVICE:
+ if (dev->dev.dma_mask && dev->dma_mask < 0xffffffffUL) {
+ int ret = dmabounce_register_dev(&dev->dev, 1024, 4096,
+ sa1111_needs_bounce);
+ if (ret)
+ dev_err(&dev->dev, "failed to register with dmabounce: %d\n", ret);
+ }
+ break;
+
+ case BUS_NOTIFY_DEL_DEVICE:
+ if (dev->dev.dma_mask && dev->dma_mask < 0xffffffffUL)
+ dmabounce_unregister_dev(&dev->dev);
+ break;
+ }
+ return NOTIFY_OK;
+}
+
+static struct notifier_block sa1111_bus_notifier = {
+ .notifier_call = sa1111_notifier_call,
+};
+#endif
+
+static int __init sa1111_init(void)
+{
+ int ret = bus_register(&sa1111_bus_type);
+#ifdef CONFIG_DMABOUNCE
+ if (ret == 0)
+ bus_register_notifier(&sa1111_bus_type, &sa1111_bus_notifier);
+#endif
+ if (ret == 0)
+ platform_driver_register(&sa1111_device_driver);
+ return ret;
+}
+
+static void __exit sa1111_exit(void)
+{
+ platform_driver_unregister(&sa1111_device_driver);
+#ifdef CONFIG_DMABOUNCE
+ bus_unregister_notifier(&sa1111_bus_type, &sa1111_bus_notifier);
+#endif
+ bus_unregister(&sa1111_bus_type);
+}
+
+subsys_initcall(sa1111_init);
+module_exit(sa1111_exit);
+
+MODULE_DESCRIPTION("Intel Corporation SA1111 core driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
new file mode 100644
index 00000000..0c616d5f
--- /dev/null
+++ b/arch/arm/common/scoop.c
@@ -0,0 +1,284 @@
+/*
+ * Support code for the SCOOP interface found on various Sharp PDAs
+ *
+ * Copyright (c) 2004 Richard Purdie
+ *
+ * Based on code written by Sharp/Lineo for 2.4 kernels
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+/* PCMCIA to Scoop linkage
+
+ There is no easy way to link multiple scoop devices into one
+ single entity for the pxa2xx_pcmcia device so this structure
+ is used which is setup by the platform code.
+
+ This file is never modular so this symbol is always
+ accessile to the board support files.
+*/
+struct scoop_pcmcia_config *platform_scoop_config;
+EXPORT_SYMBOL(platform_scoop_config);
+
+struct scoop_dev {
+ void __iomem *base;
+ struct gpio_chip gpio;
+ spinlock_t scoop_lock;
+ unsigned short suspend_clr;
+ unsigned short suspend_set;
+ u32 scoop_gpwr;
+};
+
+void reset_scoop(struct device *dev)
+{
+ struct scoop_dev *sdev = dev_get_drvdata(dev);
+
+ iowrite16(0x0100, sdev->base + SCOOP_MCR); /* 00 */
+ iowrite16(0x0000, sdev->base + SCOOP_CDR); /* 04 */
+ iowrite16(0x0000, sdev->base + SCOOP_CCR); /* 10 */
+ iowrite16(0x0000, sdev->base + SCOOP_IMR); /* 18 */
+ iowrite16(0x00FF, sdev->base + SCOOP_IRM); /* 14 */
+ iowrite16(0x0000, sdev->base + SCOOP_ISR); /* 1C */
+ iowrite16(0x0000, sdev->base + SCOOP_IRM);
+}
+
+static void __scoop_gpio_set(struct scoop_dev *sdev,
+ unsigned offset, int value)
+{
+ unsigned short gpwr;
+
+ gpwr = ioread16(sdev->base + SCOOP_GPWR);
+ if (value)
+ gpwr |= 1 << (offset + 1);
+ else
+ gpwr &= ~(1 << (offset + 1));
+ iowrite16(gpwr, sdev->base + SCOOP_GPWR);
+}
+
+static void scoop_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+{
+ struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+ unsigned long flags;
+
+ spin_lock_irqsave(&sdev->scoop_lock, flags);
+
+ __scoop_gpio_set(sdev, offset, value);
+
+ spin_unlock_irqrestore(&sdev->scoop_lock, flags);
+}
+
+static int scoop_gpio_get(struct gpio_chip *chip, unsigned offset)
+{
+ struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+
+ /* XXX: I'm unsure, but it seems so */
+ return ioread16(sdev->base + SCOOP_GPRR) & (1 << (offset + 1));
+}
+
+static int scoop_gpio_direction_input(struct gpio_chip *chip,
+ unsigned offset)
+{
+ struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+ unsigned long flags;
+ unsigned short gpcr;
+
+ spin_lock_irqsave(&sdev->scoop_lock, flags);
+
+ gpcr = ioread16(sdev->base + SCOOP_GPCR);
+ gpcr &= ~(1 << (offset + 1));
+ iowrite16(gpcr, sdev->base + SCOOP_GPCR);
+
+ spin_unlock_irqrestore(&sdev->scoop_lock, flags);
+
+ return 0;
+}
+
+static int scoop_gpio_direction_output(struct gpio_chip *chip,
+ unsigned offset, int value)
+{
+ struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+ unsigned long flags;
+ unsigned short gpcr;
+
+ spin_lock_irqsave(&sdev->scoop_lock, flags);
+
+ __scoop_gpio_set(sdev, offset, value);
+
+ gpcr = ioread16(sdev->base + SCOOP_GPCR);
+ gpcr |= 1 << (offset + 1);
+ iowrite16(gpcr, sdev->base + SCOOP_GPCR);
+
+ spin_unlock_irqrestore(&sdev->scoop_lock, flags);
+
+ return 0;
+}
+
+unsigned short read_scoop_reg(struct device *dev, unsigned short reg)
+{
+ struct scoop_dev *sdev = dev_get_drvdata(dev);
+ return ioread16(sdev->base + reg);
+}
+
+void write_scoop_reg(struct device *dev, unsigned short reg, unsigned short data)
+{
+ struct scoop_dev *sdev = dev_get_drvdata(dev);
+ iowrite16(data, sdev->base + reg);
+}
+
+EXPORT_SYMBOL(reset_scoop);
+EXPORT_SYMBOL(read_scoop_reg);
+EXPORT_SYMBOL(write_scoop_reg);
+
+#ifdef CONFIG_PM
+static void check_scoop_reg(struct scoop_dev *sdev)
+{
+ unsigned short mcr;
+
+ mcr = ioread16(sdev->base + SCOOP_MCR);
+ if ((mcr & 0x100) == 0)
+ iowrite16(0x0101, sdev->base + SCOOP_MCR);
+}
+
+static int scoop_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct scoop_dev *sdev = platform_get_drvdata(dev);
+
+ check_scoop_reg(sdev);
+ sdev->scoop_gpwr = ioread16(sdev->base + SCOOP_GPWR);
+ iowrite16((sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set, sdev->base + SCOOP_GPWR);
+
+ return 0;
+}
+
+static int scoop_resume(struct platform_device *dev)
+{
+ struct scoop_dev *sdev = platform_get_drvdata(dev);
+
+ check_scoop_reg(sdev);
+ iowrite16(sdev->scoop_gpwr, sdev->base + SCOOP_GPWR);
+
+ return 0;
+}
+#else
+#define scoop_suspend NULL
+#define scoop_resume NULL
+#endif
+
+static int __devinit scoop_probe(struct platform_device *pdev)
+{
+ struct scoop_dev *devptr;
+ struct scoop_config *inf;
+ struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ int ret;
+ int temp;
+
+ if (!mem)
+ return -EINVAL;
+
+ devptr = kzalloc(sizeof(struct scoop_dev), GFP_KERNEL);
+ if (!devptr)
+ return -ENOMEM;
+
+ spin_lock_init(&devptr->scoop_lock);
+
+ inf = pdev->dev.platform_data;
+ devptr->base = ioremap(mem->start, resource_size(mem));
+
+ if (!devptr->base) {
+ ret = -ENOMEM;
+ goto err_ioremap;
+ }
+
+ platform_set_drvdata(pdev, devptr);
+
+ printk("Sharp Scoop Device found at 0x%08x -> 0x%8p\n",(unsigned int)mem->start, devptr->base);
+
+ iowrite16(0x0140, devptr->base + SCOOP_MCR);
+ reset_scoop(&pdev->dev);
+ iowrite16(0x0000, devptr->base + SCOOP_CPR);
+ iowrite16(inf->io_dir & 0xffff, devptr->base + SCOOP_GPCR);
+ iowrite16(inf->io_out & 0xffff, devptr->base + SCOOP_GPWR);
+
+ devptr->suspend_clr = inf->suspend_clr;
+ devptr->suspend_set = inf->suspend_set;
+
+ devptr->gpio.base = -1;
+
+ if (inf->gpio_base != 0) {
+ devptr->gpio.label = dev_name(&pdev->dev);
+ devptr->gpio.base = inf->gpio_base;
+ devptr->gpio.ngpio = 12; /* PA11 = 0, PA12 = 1, etc. up to PA22 = 11 */
+ devptr->gpio.set = scoop_gpio_set;
+ devptr->gpio.get = scoop_gpio_get;
+ devptr->gpio.direction_input = scoop_gpio_direction_input;
+ devptr->gpio.direction_output = scoop_gpio_direction_output;
+
+ ret = gpiochip_add(&devptr->gpio);
+ if (ret)
+ goto err_gpio;
+ }
+
+ return 0;
+
+ if (devptr->gpio.base != -1)
+ temp = gpiochip_remove(&devptr->gpio);
+err_gpio:
+ platform_set_drvdata(pdev, NULL);
+err_ioremap:
+ iounmap(devptr->base);
+ kfree(devptr);
+
+ return ret;
+}
+
+static int __devexit scoop_remove(struct platform_device *pdev)
+{
+ struct scoop_dev *sdev = platform_get_drvdata(pdev);
+ int ret;
+
+ if (!sdev)
+ return -EINVAL;
+
+ if (sdev->gpio.base != -1) {
+ ret = gpiochip_remove(&sdev->gpio);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't remove gpio chip: %d\n", ret);
+ return ret;
+ }
+ }
+
+ platform_set_drvdata(pdev, NULL);
+ iounmap(sdev->base);
+ kfree(sdev);
+
+ return 0;
+}
+
+static struct platform_driver scoop_driver = {
+ .probe = scoop_probe,
+ .remove = __devexit_p(scoop_remove),
+ .suspend = scoop_suspend,
+ .resume = scoop_resume,
+ .driver = {
+ .name = "sharp-scoop",
+ },
+};
+
+static int __init scoop_init(void)
+{
+ return platform_driver_register(&scoop_driver);
+}
+
+subsys_initcall(scoop_init);
diff --git a/arch/arm/common/sharpsl_param.c b/arch/arm/common/sharpsl_param.c
new file mode 100644
index 00000000..d56c9325
--- /dev/null
+++ b/arch/arm/common/sharpsl_param.c
@@ -0,0 +1,62 @@
+/*
+ * Hardware parameter area specific to Sharp SL series devices
+ *
+ * Copyright (c) 2005 Richard Purdie
+ *
+ * Based on Sharp's 2.4 kernel patches
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include
+#include
+#include
+#include
+
+/*
+ * Certain hardware parameters determined at the time of device manufacture,
+ * typically including LCD parameters are loaded by the bootloader at the
+ * address PARAM_BASE. As the kernel will overwrite them, we need to store
+ * them early in the boot process, then pass them to the appropriate drivers.
+ * Not all devices use all parameters but the format is common to all.
+ */
+#ifdef CONFIG_ARCH_SA1100
+#define PARAM_BASE 0xe8ffc000
+#else
+#define PARAM_BASE 0xa0000a00
+#endif
+#define MAGIC_CHG(a,b,c,d) ( ( d << 24 ) | ( c << 16 ) | ( b << 8 ) | a )
+
+#define COMADJ_MAGIC MAGIC_CHG('C','M','A','D')
+#define UUID_MAGIC MAGIC_CHG('U','U','I','D')
+#define TOUCH_MAGIC MAGIC_CHG('T','U','C','H')
+#define AD_MAGIC MAGIC_CHG('B','V','A','D')
+#define PHAD_MAGIC MAGIC_CHG('P','H','A','D')
+
+struct sharpsl_param_info sharpsl_param;
+EXPORT_SYMBOL(sharpsl_param);
+
+void sharpsl_save_param(void)
+{
+ memcpy(&sharpsl_param, (void *)PARAM_BASE, sizeof(struct sharpsl_param_info));
+
+ if (sharpsl_param.comadj_keyword != COMADJ_MAGIC)
+ sharpsl_param.comadj=-1;
+
+ if (sharpsl_param.phad_keyword != PHAD_MAGIC)
+ sharpsl_param.phadadj=-1;
+
+ if (sharpsl_param.uuid_keyword != UUID_MAGIC)
+ sharpsl_param.uuid[0]=-1;
+
+ if (sharpsl_param.touch_keyword != TOUCH_MAGIC)
+ sharpsl_param.touch_xp=-1;
+
+ if (sharpsl_param.adadj_keyword != AD_MAGIC)
+ sharpsl_param.adadj=-1;
+}
+
+
diff --git a/arch/arm/common/timer-sp.c b/arch/arm/common/timer-sp.c
new file mode 100644
index 00000000..df13a3ff
--- /dev/null
+++ b/arch/arm/common/timer-sp.c
@@ -0,0 +1,191 @@
+/*
+ * linux/arch/arm/common/timer-sp.c
+ *
+ * Copyright (C) 1999 - 2003 ARM Limited
+ * Copyright (C) 2000 Deep Blue Solutions Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+static long __init sp804_get_clock_rate(const char *name)
+{
+ struct clk *clk;
+ long rate;
+ int err;
+
+ clk = clk_get_sys("sp804", name);
+ if (IS_ERR(clk)) {
+ pr_err("sp804: %s clock not found: %d\n", name,
+ (int)PTR_ERR(clk));
+ return PTR_ERR(clk);
+ }
+
+ err = clk_prepare(clk);
+ if (err) {
+ pr_err("sp804: %s clock failed to prepare: %d\n", name, err);
+ clk_put(clk);
+ return err;
+ }
+
+ err = clk_enable(clk);
+ if (err) {
+ pr_err("sp804: %s clock failed to enable: %d\n", name, err);
+ clk_unprepare(clk);
+ clk_put(clk);
+ return err;
+ }
+
+ rate = clk_get_rate(clk);
+ if (rate < 0) {
+ pr_err("sp804: %s clock failed to get rate: %ld\n", name, rate);
+ clk_disable(clk);
+ clk_unprepare(clk);
+ clk_put(clk);
+ }
+
+ return rate;
+}
+
+static void __iomem *sched_clock_base;
+
+static u32 sp804_read(void)
+{
+ return ~readl_relaxed(sched_clock_base + TIMER_VALUE);
+}
+
+void __init __sp804_clocksource_and_sched_clock_init(void __iomem *base,
+ const char *name,
+ int use_sched_clock)
+{
+ long rate = sp804_get_clock_rate(name);
+
+ if (rate < 0)
+ return;
+
+ /* setup timer 0 as free-running clocksource */
+ writel(0, base + TIMER_CTRL);
+ writel(0xffffffff, base + TIMER_LOAD);
+ writel(0xffffffff, base + TIMER_VALUE);
+ writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC,
+ base + TIMER_CTRL);
+
+ clocksource_mmio_init(base + TIMER_VALUE, name,
+ rate, 200, 32, clocksource_mmio_readl_down);
+
+ if (use_sched_clock) {
+ sched_clock_base = base;
+ setup_sched_clock(sp804_read, 32, rate);
+ }
+}
+
+
+static void __iomem *clkevt_base;
+static unsigned long clkevt_reload;
+
+/*
+ * IRQ handler for the timer
+ */
+static irqreturn_t sp804_timer_interrupt(int irq, void *dev_id)
+{
+ struct clock_event_device *evt = dev_id;
+
+ /* clear the interrupt */
+ writel(1, clkevt_base + TIMER_INTCLR);
+
+ evt->event_handler(evt);
+
+ return IRQ_HANDLED;
+}
+
+static void sp804_set_mode(enum clock_event_mode mode,
+ struct clock_event_device *evt)
+{
+ unsigned long ctrl = TIMER_CTRL_32BIT | TIMER_CTRL_IE;
+
+ writel(ctrl, clkevt_base + TIMER_CTRL);
+
+ switch (mode) {
+ case CLOCK_EVT_MODE_PERIODIC:
+ writel(clkevt_reload, clkevt_base + TIMER_LOAD);
+ ctrl |= TIMER_CTRL_PERIODIC | TIMER_CTRL_ENABLE;
+ break;
+
+ case CLOCK_EVT_MODE_ONESHOT:
+ /* period set, and timer enabled in 'next_event' hook */
+ ctrl |= TIMER_CTRL_ONESHOT;
+ break;
+
+ case CLOCK_EVT_MODE_UNUSED:
+ case CLOCK_EVT_MODE_SHUTDOWN:
+ default:
+ break;
+ }
+
+ writel(ctrl, clkevt_base + TIMER_CTRL);
+}
+
+static int sp804_set_next_event(unsigned long next,
+ struct clock_event_device *evt)
+{
+ unsigned long ctrl = readl(clkevt_base + TIMER_CTRL);
+
+ writel(next, clkevt_base + TIMER_LOAD);
+ writel(ctrl | TIMER_CTRL_ENABLE, clkevt_base + TIMER_CTRL);
+
+ return 0;
+}
+
+static struct clock_event_device sp804_clockevent = {
+ .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+ .set_mode = sp804_set_mode,
+ .set_next_event = sp804_set_next_event,
+ .rating = 300,
+ .cpumask = cpu_all_mask,
+};
+
+static struct irqaction sp804_timer_irq = {
+ .name = "timer",
+ .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
+ .handler = sp804_timer_interrupt,
+ .dev_id = &sp804_clockevent,
+};
+
+void __init sp804_clockevents_init(void __iomem *base, unsigned int irq,
+ const char *name)
+{
+ struct clock_event_device *evt = &sp804_clockevent;
+ long rate = sp804_get_clock_rate(name);
+
+ if (rate < 0)
+ return;
+
+ clkevt_base = base;
+ clkevt_reload = DIV_ROUND_CLOSEST(rate, HZ);
+ evt->name = name;
+ evt->irq = irq;
+
+ setup_irq(irq, &sp804_timer_irq);
+ clockevents_config_and_register(evt, rate, 0xf, 0xffffffff);
+}
diff --git a/arch/arm/common/uengine.c b/arch/arm/common/uengine.c
new file mode 100644
index 00000000..bef408f3
--- /dev/null
+++ b/arch/arm/common/uengine.c
@@ -0,0 +1,507 @@
+/*
+ * Generic library functions for the microengines found on the Intel
+ * IXP2000 series of network processors.
+ *
+ * Copyright (C) 2004, 2005 Lennert Buytenhek
+ * Dedicated to Marija Kulikova.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include