From 9df537b140869b10b035d989e82bce911a5fb703 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 29 Mar 2012 11:24:43 -0700 Subject: [PATCH] --- yaml --- r: 297371 b: refs/heads/master c: 0a03726ca982129b1e054f0e8c34ca7eea348acd h: refs/heads/master i: 297369: 416cae90cfc2f8a8ba720d1f9c5a6f994b974f47 297367: f07ff946395892579818904e9c1b67a1337f9c77 v: v3 --- [refs] | 2 +- .../Documentation/ABI/testing/sysfs-block-dm | 25 + .../Documentation/ABI/testing/sysfs-bus-rpmsg | 75 + .../ABI/testing/sysfs-driver-samsung-laptop | 18 + trunk/Documentation/Makefile | 2 +- trunk/Documentation/clk.txt | 233 ++ .../device-mapper/thin-provisioning.txt | 65 +- trunk/Documentation/device-mapper/verity.txt | 194 ++ .../devicetree/bindings/arm/atmel-aic.txt | 38 + .../devicetree/bindings/arm/atmel-at91.txt | 92 + .../devicetree/bindings/arm/atmel-pmc.txt | 11 + .../devicetree/bindings/arm/fsl.txt | 22 + .../devicetree/bindings/arm/mrvl.txt | 6 + .../devicetree/bindings/arm/omap/intc.txt | 27 + .../devicetree/bindings/arm/spear.txt | 8 + .../devicetree/bindings/arm/tegra/emc.txt | 100 + .../bindings/arm/tegra/nvidia,tegra20-pmc.txt | 19 + .../devicetree/bindings/arm/twd.txt | 48 + .../devicetree/bindings/arm/vexpress.txt | 146 + .../bindings/dma/tegra20-apbdma.txt | 30 + .../devicetree/bindings/gpio/gpio-omap.txt | 36 + .../devicetree/bindings/gpio/gpio-twl4030.txt | 23 + .../devicetree/bindings/gpio/gpio_atmel.txt | 20 + .../devicetree/bindings/gpio/gpio_i2c.txt | 32 + .../devicetree/bindings/gpio/gpio_nvidia.txt | 36 +- .../devicetree/bindings/gpio/mrvl-gpio.txt | 23 + .../devicetree/bindings/gpio/sodaville.txt | 48 + .../devicetree/bindings/i2c/mrvl-i2c.txt | 37 + .../devicetree/bindings/mmc/ti-omap-hsmmc.txt | 33 + .../devicetree/bindings/mtd/atmel-nand.txt | 41 + .../devicetree/bindings/mtd/nand.txt | 7 + .../devicetree/bindings/rtc/sa1100-rtc.txt | 17 + .../bindings/serial/mrvl-serial.txt | 4 + .../devicetree/bindings/usb/atmel-usb.txt | 49 + .../devicetree/bindings/usb/tegra-usb.txt | 13 + trunk/Documentation/dma-buf-sharing.txt | 120 +- .../feature-removal-schedule.txt | 14 - trunk/Documentation/filesystems/ext4.txt | 8 - trunk/Documentation/gpio.txt | 40 +- trunk/Documentation/i2c/busses/i2c-i801 | 1 + trunk/Documentation/kernel-parameters.txt | 2 + trunk/Documentation/laptops/asus-laptop.txt | 2 +- trunk/Documentation/laptops/sony-laptop.txt | 5 + trunk/Documentation/remoteproc.txt | 322 ++ trunk/Documentation/rpmsg.txt | 293 ++ trunk/Documentation/virtual/kvm/api.txt | 259 +- trunk/Documentation/virtual/kvm/ppc-pv.txt | 24 +- trunk/Documentation/vm/Makefile | 8 - trunk/Documentation/watchdog/00-INDEX | 19 - .../convert_drivers_to_kernel_api.txt | 4 + .../watchdog/watchdog-kernel-api.txt | 11 +- trunk/MAINTAINERS | 34 +- trunk/arch/alpha/boot/bootp.c | 1 - trunk/arch/alpha/boot/bootpz.c | 1 - trunk/arch/alpha/boot/head.S | 1 - trunk/arch/alpha/boot/main.c | 1 - trunk/arch/alpha/include/asm/atomic.h | 68 +- trunk/arch/alpha/include/asm/auxvec.h | 2 + trunk/arch/alpha/include/asm/core_lca.h | 2 +- trunk/arch/alpha/include/asm/core_mcpcia.h | 1 + trunk/arch/alpha/include/asm/core_t2.h | 1 - trunk/arch/alpha/include/asm/elf.h | 1 + trunk/arch/alpha/include/asm/exec.h | 6 + trunk/arch/alpha/include/asm/fpu.h | 2 + trunk/arch/alpha/include/asm/io.h | 1 - trunk/arch/alpha/include/asm/irqflags.h | 2 +- trunk/arch/alpha/include/asm/mce.h | 83 + trunk/arch/alpha/include/asm/mmu_context.h | 1 - trunk/arch/alpha/include/asm/pal.h | 112 + trunk/arch/alpha/include/asm/pgtable.h | 1 + trunk/arch/alpha/include/asm/setup.h | 36 + trunk/arch/alpha/include/asm/special_insns.h | 41 + trunk/arch/alpha/include/asm/spinlock.h | 1 - trunk/arch/alpha/include/asm/switch_to.h | 14 + trunk/arch/alpha/include/asm/system.h | 354 -- trunk/arch/alpha/include/asm/xchg.h | 2 +- trunk/arch/alpha/kernel/core_apecs.c | 1 + trunk/arch/alpha/kernel/core_cia.c | 1 + trunk/arch/alpha/kernel/core_t2.c | 1 + trunk/arch/alpha/kernel/err_impl.h | 2 + trunk/arch/alpha/kernel/head.S | 6 +- trunk/arch/alpha/kernel/irq.c | 1 - trunk/arch/alpha/kernel/irq_alpha.c | 1 + trunk/arch/alpha/kernel/osf_sys.c | 1 - trunk/arch/alpha/kernel/process.c | 1 - trunk/arch/alpha/kernel/ptrace.c | 1 - trunk/arch/alpha/kernel/setup.c | 1 - trunk/arch/alpha/kernel/sys_alcor.c | 1 - trunk/arch/alpha/kernel/sys_cabriolet.c | 1 - trunk/arch/alpha/kernel/sys_dp264.c | 1 - trunk/arch/alpha/kernel/sys_eb64p.c | 1 - trunk/arch/alpha/kernel/sys_eiger.c | 1 - trunk/arch/alpha/kernel/sys_jensen.c | 1 - trunk/arch/alpha/kernel/sys_marvel.c | 1 - trunk/arch/alpha/kernel/sys_miata.c | 1 - trunk/arch/alpha/kernel/sys_mikasa.c | 2 +- trunk/arch/alpha/kernel/sys_nautilus.c | 1 - trunk/arch/alpha/kernel/sys_noritake.c | 2 +- trunk/arch/alpha/kernel/sys_rawhide.c | 1 - trunk/arch/alpha/kernel/sys_ruffian.c | 1 - trunk/arch/alpha/kernel/sys_rx164.c | 1 - trunk/arch/alpha/kernel/sys_sable.c | 1 - trunk/arch/alpha/kernel/sys_sio.c | 1 - trunk/arch/alpha/kernel/sys_sx164.c | 2 +- trunk/arch/alpha/kernel/sys_takara.c | 1 - trunk/arch/alpha/kernel/sys_titan.c | 1 - trunk/arch/alpha/kernel/sys_wildfire.c | 1 - trunk/arch/alpha/kernel/traps.c | 1 + trunk/arch/alpha/kernel/vmlinux.lds.S | 2 + trunk/arch/alpha/lib/stacktrace.c | 1 - trunk/arch/alpha/mm/fault.c | 1 - trunk/arch/alpha/mm/init.c | 2 +- trunk/arch/alpha/oprofile/common.c | 1 - trunk/arch/alpha/oprofile/op_model_ev4.c | 1 - trunk/arch/alpha/oprofile/op_model_ev5.c | 1 - trunk/arch/alpha/oprofile/op_model_ev6.c | 1 - trunk/arch/alpha/oprofile/op_model_ev67.c | 1 - trunk/arch/arm/Kconfig | 39 +- trunk/arch/arm/Kconfig.debug | 8 +- trunk/arch/arm/Makefile | 3 +- trunk/arch/arm/boot/compressed/head.S | 2 +- trunk/arch/arm/boot/dts/am3517_mt_ventoux.dts | 27 + trunk/arch/arm/boot/dts/at91sam9g20.dtsi | 131 +- trunk/arch/arm/boot/dts/at91sam9g25ek.dts | 49 + trunk/arch/arm/boot/dts/at91sam9g45.dtsi | 151 +- trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts | 118 +- trunk/arch/arm/boot/dts/at91sam9x5.dtsi | 264 ++ trunk/arch/arm/boot/dts/at91sam9x5cm.dtsi | 74 + trunk/arch/arm/boot/dts/db8500.dtsi | 275 ++ .../arch/arm/boot/dts/exynos5250-smdk5250.dts | 26 + trunk/arch/arm/boot/dts/exynos5250.dtsi | 413 +++ trunk/arch/arm/boot/dts/highbank.dts | 8 +- .../arm/boot/dts/imx27-phytec-phycore.dts | 76 + trunk/arch/arm/boot/dts/imx27.dtsi | 217 ++ trunk/arch/arm/boot/dts/imx51-babbage.dts | 91 +- trunk/arch/arm/boot/dts/imx6q-arm2.dts | 14 + trunk/arch/arm/boot/dts/imx6q-sabrelite.dts | 34 + trunk/arch/arm/boot/dts/imx6q.dtsi | 6 +- .../arch/arm/boot/dts/kirkwood-dreamplug.dts | 24 + trunk/arch/arm/boot/dts/kirkwood.dtsi | 36 + trunk/arch/arm/boot/dts/omap3-beagle.dts | 9 - trunk/arch/arm/boot/dts/omap3-evm.dts | 20 + trunk/arch/arm/boot/dts/omap3.dtsi | 35 +- trunk/arch/arm/boot/dts/omap4-panda.dts | 9 - trunk/arch/arm/boot/dts/omap4-sdp.dts | 9 - trunk/arch/arm/boot/dts/omap4.dtsi | 38 +- trunk/arch/arm/boot/dts/pxa168-aspenite.dts | 38 + trunk/arch/arm/boot/dts/pxa168.dtsi | 98 + trunk/arch/arm/boot/dts/snowball.dts | 139 + trunk/arch/arm/boot/dts/spear600-evb.dts | 47 + trunk/arch/arm/boot/dts/spear600.dtsi | 174 + trunk/arch/arm/boot/dts/tegra-cardhu.dts | 34 + trunk/arch/arm/boot/dts/tegra-harmony.dts | 45 +- trunk/arch/arm/boot/dts/tegra-paz00.dts | 57 + trunk/arch/arm/boot/dts/tegra-seaboard.dts | 79 + trunk/arch/arm/boot/dts/tegra-trimslice.dts | 12 + trunk/arch/arm/boot/dts/tegra-ventana.dts | 42 + trunk/arch/arm/boot/dts/tegra20.dtsi | 50 +- trunk/arch/arm/boot/dts/tegra30.dtsi | 61 +- .../arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi | 96 + trunk/arch/arm/boot/dts/usb_a9g20.dts | 97 +- trunk/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 201 ++ trunk/arch/arm/boot/dts/vexpress-v2m.dtsi | 200 ++ .../arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 157 + trunk/arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 162 + trunk/arch/arm/boot/dts/vexpress-v2p-ca9.dts | 192 + trunk/arch/arm/common/Kconfig | 3 - trunk/arch/arm/common/Makefile | 1 - trunk/arch/arm/common/sa1111.c | 281 +- trunk/arch/arm/common/timer-sp.c | 17 +- trunk/arch/arm/common/via82c505.c | 1 - trunk/arch/arm/configs/at91cap9_defconfig | 108 - trunk/arch/arm/configs/at91sam9g20_defconfig | 3 + trunk/arch/arm/configs/imx_v4_v5_defconfig | 19 + trunk/arch/arm/configs/imx_v6_v7_defconfig | 39 +- trunk/arch/arm/configs/lpc32xx_defconfig | 145 + trunk/arch/arm/configs/magician_defconfig | 2 +- trunk/arch/arm/configs/mini2440_defconfig | 2 +- trunk/arch/arm/configs/mxs_defconfig | 20 +- trunk/arch/arm/configs/s3c2410_defconfig | 57 +- trunk/arch/arm/configs/tct_hammer_defconfig | 2 +- trunk/arch/arm/configs/tegra_defconfig | 33 +- trunk/arch/arm/configs/u8500_defconfig | 1 + trunk/arch/arm/include/asm/atomic.h | 4 +- trunk/arch/arm/include/asm/barrier.h | 69 + trunk/arch/arm/include/asm/bitops.h | 2 +- trunk/arch/arm/include/asm/bug.h | 30 + trunk/arch/arm/include/asm/cmpxchg.h | 295 ++ trunk/arch/arm/include/asm/compiler.h | 15 + trunk/arch/arm/include/asm/cp15.h | 87 + trunk/arch/arm/include/asm/div64.h | 2 +- trunk/arch/arm/include/asm/dma.h | 1 - trunk/arch/arm/include/asm/domain.h | 4 + trunk/arch/arm/include/asm/exec.h | 6 + .../arch/arm/include/asm/hardware/arm_timer.h | 5 + trunk/arch/arm/include/asm/hardware/iop3xx.h | 3 + trunk/arch/arm/include/asm/hardware/sa1111.h | 156 +- .../arch/arm/include/asm/hardware/timer-sp.h | 15 +- trunk/arch/arm/include/asm/io.h | 2 +- trunk/arch/arm/include/asm/localtimer.h | 37 +- trunk/arch/arm/include/asm/mmu.h | 7 + trunk/arch/arm/include/asm/processor.h | 3 +- trunk/arch/arm/include/asm/smp_twd.h | 25 +- trunk/arch/arm/include/asm/switch_to.h | 18 + trunk/arch/arm/include/asm/system.h | 552 +-- trunk/arch/arm/include/asm/system_info.h | 27 + trunk/arch/arm/include/asm/system_misc.h | 29 + trunk/arch/arm/include/asm/uaccess.h | 2 +- trunk/arch/arm/kernel/Makefile | 4 - trunk/arch/arm/kernel/armksyms.c | 1 - trunk/arch/arm/kernel/elf.c | 1 + trunk/arch/arm/kernel/entry-armv.S | 2 +- trunk/arch/arm/kernel/fiq.c | 2 +- trunk/arch/arm/kernel/head-nommu.S | 2 +- trunk/arch/arm/kernel/head.S | 2 +- trunk/arch/arm/kernel/hw_breakpoint.c | 1 - trunk/arch/arm/kernel/irq.c | 1 - trunk/arch/arm/kernel/kprobes-common.c | 1 + trunk/arch/arm/kernel/machine_kexec.c | 2 +- trunk/arch/arm/kernel/process.c | 1 - trunk/arch/arm/kernel/ptrace.c | 1 - trunk/arch/arm/kernel/setup.c | 4 +- trunk/arch/arm/kernel/sleep.S | 1 - trunk/arch/arm/kernel/smp.c | 22 +- trunk/arch/arm/kernel/smp_tlb.c | 20 +- trunk/arch/arm/kernel/smp_twd.c | 123 +- trunk/arch/arm/kernel/tcm.c | 1 + trunk/arch/arm/kernel/thumbee.c | 1 + trunk/arch/arm/kernel/traps.c | 2 +- trunk/arch/arm/mach-at91/Kconfig | 33 +- trunk/arch/arm/mach-at91/Makefile | 5 +- trunk/arch/arm/mach-at91/Makefile.boot | 14 +- trunk/arch/arm/mach-at91/at91cap9.c | 404 --- trunk/arch/arm/mach-at91/at91cap9_devices.c | 1273 ------- trunk/arch/arm/mach-at91/at91rm9200.c | 9 +- trunk/arch/arm/mach-at91/at91rm9200_devices.c | 14 +- trunk/arch/arm/mach-at91/at91rm9200_time.c | 37 +- trunk/arch/arm/mach-at91/at91sam9260.c | 32 +- .../arch/arm/mach-at91/at91sam9260_devices.c | 59 +- trunk/arch/arm/mach-at91/at91sam9261.c | 11 +- .../arch/arm/mach-at91/at91sam9261_devices.c | 31 +- trunk/arch/arm/mach-at91/at91sam9263.c | 12 +- .../arch/arm/mach-at91/at91sam9263_devices.c | 72 +- trunk/arch/arm/mach-at91/at91sam926x_time.c | 68 +- trunk/arch/arm/mach-at91/at91sam9_alt_reset.S | 12 +- trunk/arch/arm/mach-at91/at91sam9g45.c | 17 +- .../arch/arm/mach-at91/at91sam9g45_devices.c | 146 +- trunk/arch/arm/mach-at91/at91sam9g45_reset.S | 12 +- trunk/arch/arm/mach-at91/at91sam9rl.c | 11 +- trunk/arch/arm/mach-at91/at91sam9rl_devices.c | 31 +- trunk/arch/arm/mach-at91/at91sam9x5.c | 359 ++ trunk/arch/arm/mach-at91/at91x40.c | 2 +- trunk/arch/arm/mach-at91/at91x40_time.c | 28 +- trunk/arch/arm/mach-at91/board-afeb-9260v1.c | 1 + trunk/arch/arm/mach-at91/board-cam60.c | 1 + trunk/arch/arm/mach-at91/board-cap9adk.c | 396 --- trunk/arch/arm/mach-at91/board-cpu9krea.c | 6 +- trunk/arch/arm/mach-at91/board-cpuat91.c | 1 + trunk/arch/arm/mach-at91/board-dt.c | 76 +- trunk/arch/arm/mach-at91/board-eco920.c | 5 +- trunk/arch/arm/mach-at91/board-flexibity.c | 12 +- trunk/arch/arm/mach-at91/board-kb9202.c | 2 + trunk/arch/arm/mach-at91/board-neocore926.c | 1 + trunk/arch/arm/mach-at91/board-picotux200.c | 1 + trunk/arch/arm/mach-at91/board-qil-a9260.c | 2 + trunk/arch/arm/mach-at91/board-rm9200dk.c | 3 + trunk/arch/arm/mach-at91/board-rm9200ek.c | 1 + trunk/arch/arm/mach-at91/board-sam9-l9260.c | 1 + trunk/arch/arm/mach-at91/board-sam9260ek.c | 2 + trunk/arch/arm/mach-at91/board-sam9261ek.c | 2 + trunk/arch/arm/mach-at91/board-sam9263ek.c | 2 + trunk/arch/arm/mach-at91/board-sam9g20ek.c | 2 + trunk/arch/arm/mach-at91/board-sam9m10g45ek.c | 82 +- trunk/arch/arm/mach-at91/board-sam9rlek.c | 2 + trunk/arch/arm/mach-at91/board-snapper9260.c | 11 +- trunk/arch/arm/mach-at91/board-stamp9g20.c | 1 + trunk/arch/arm/mach-at91/board-usb-a926x.c | 2 + trunk/arch/arm/mach-at91/board-yl-9200.c | 4 +- trunk/arch/arm/mach-at91/clock.c | 224 +- trunk/arch/arm/mach-at91/cpuidle.c | 11 +- trunk/arch/arm/mach-at91/generic.h | 19 +- trunk/arch/arm/mach-at91/gpio.c | 625 +++- .../arm/mach-at91/include/mach/at91_matrix.h | 23 + .../arm/mach-at91/include/mach/at91_pio.h | 25 + .../arm/mach-at91/include/mach/at91_pmc.h | 118 +- .../arm/mach-at91/include/mach/at91_ramc.h | 32 + .../arm/mach-at91/include/mach/at91_shdwc.h | 4 +- .../arch/arm/mach-at91/include/mach/at91_st.h | 32 +- .../arm/mach-at91/include/mach/at91cap9.h | 122 - .../mach-at91/include/mach/at91cap9_matrix.h | 137 - .../arm/mach-at91/include/mach/at91rm9200.h | 10 +- .../mach-at91/include/mach/at91rm9200_mc.h | 58 +- .../include/mach/at91rm9200_sdramc.h | 63 + .../arm/mach-at91/include/mach/at91sam9260.h | 14 +- .../include/mach/at91sam9260_matrix.h | 36 +- .../arm/mach-at91/include/mach/at91sam9261.h | 10 +- .../include/mach/at91sam9261_matrix.h | 18 +- .../arm/mach-at91/include/mach/at91sam9263.h | 12 +- .../include/mach/at91sam9263_matrix.h | 74 +- .../mach-at91/include/mach/at91sam9_ddrsdr.h | 16 - .../mach-at91/include/mach/at91sam9_sdramc.h | 6 - .../arm/mach-at91/include/mach/at91sam9g45.h | 12 +- .../include/mach/at91sam9g45_matrix.h | 84 +- .../arm/mach-at91/include/mach/at91sam9rl.h | 7 +- .../include/mach/at91sam9rl_matrix.h | 42 +- .../arm/mach-at91/include/mach/at91sam9x5.h | 74 + .../include/mach/at91sam9x5_matrix.h | 53 + .../arch/arm/mach-at91/include/mach/at91x40.h | 18 +- trunk/arch/arm/mach-at91/include/mach/board.h | 17 +- trunk/arch/arm/mach-at91/include/mach/cpu.h | 21 - trunk/arch/arm/mach-at91/include/mach/gpio.h | 17 +- .../arm/mach-at91/include/mach/hardware.h | 9 +- trunk/arch/arm/mach-at91/include/mach/io.h | 18 - .../arm/mach-at91/include/mach/system_rev.h | 2 + trunk/arch/arm/mach-at91/irq.c | 132 +- trunk/arch/arm/mach-at91/pm.c | 41 +- trunk/arch/arm/mach-at91/pm.h | 96 +- trunk/arch/arm/mach-at91/pm_slowclock.S | 275 +- trunk/arch/arm/mach-at91/setup.c | 184 +- trunk/arch/arm/mach-at91/soc.h | 5 - trunk/arch/arm/mach-clps711x/common.c | 1 + trunk/arch/arm/mach-clps711x/p720t-leds.c | 1 - trunk/arch/arm/mach-davinci/board-da850-evm.c | 1 + trunk/arch/arm/mach-davinci/board-dm355-evm.c | 3 +- .../arm/mach-davinci/board-dm355-leopard.c | 3 +- trunk/arch/arm/mach-davinci/board-dm365-evm.c | 3 +- .../arch/arm/mach-davinci/board-dm644x-evm.c | 135 +- .../arch/arm/mach-davinci/board-dm646x-evm.c | 32 +- .../arch/arm/mach-davinci/board-neuros-osd2.c | 3 +- trunk/arch/arm/mach-davinci/board-sffsdr.c | 3 +- trunk/arch/arm/mach-davinci/cpufreq.c | 2 +- trunk/arch/arm/mach-davinci/da850.c | 2 +- trunk/arch/arm/mach-davinci/davinci.h | 102 + trunk/arch/arm/mach-davinci/devices.c | 32 +- trunk/arch/arm/mach-davinci/dm355.c | 3 +- trunk/arch/arm/mach-davinci/dm365.c | 19 +- trunk/arch/arm/mach-davinci/dm644x.c | 193 +- trunk/arch/arm/mach-davinci/dm646x.c | 21 +- trunk/arch/arm/mach-davinci/dma.c | 6 +- .../arm/mach-davinci/include/mach/dm355.h | 32 - .../arm/mach-davinci/include/mach/dm365.h | 53 +- .../arm/mach-davinci/include/mach/dm644x.h | 47 - .../arm/mach-davinci/include/mach/dm646x.h | 42 +- .../arch/arm/mach-davinci/include/mach/edma.h | 5 + .../arm/mach-davinci/include/mach/hardware.h | 2 - trunk/arch/arm/mach-ebsa110/core.c | 15 +- trunk/arch/arm/mach-ebsa110/core.h | 41 + .../arm/mach-ebsa110/include/mach/hardware.h | 39 - trunk/arch/arm/mach-ebsa110/io.c | 20 + trunk/arch/arm/mach-ebsa110/leds.c | 3 +- trunk/arch/arm/mach-ep93xx/Makefile | 3 + trunk/arch/arm/mach-ep93xx/adssphere.c | 1 + trunk/arch/arm/mach-ep93xx/clock.c | 1 + trunk/arch/arm/mach-ep93xx/core.c | 35 +- .../arm/{kernel => mach-ep93xx}/crunch-bits.S | 0 .../arch/arm/{kernel => mach-ep93xx}/crunch.c | 4 +- trunk/arch/arm/mach-ep93xx/dma.c | 2 + trunk/arch/arm/mach-ep93xx/edb93xx.c | 1 + trunk/arch/arm/mach-ep93xx/gesbc9312.c | 1 + .../mach-ep93xx/include/mach/ep93xx-regs.h | 191 +- .../mach-ep93xx/include/mach/gpio-ep93xx.h | 10 + .../arm/mach-ep93xx/include/mach/hardware.h | 1 - .../arm/mach-ep93xx/include/mach/platform.h | 14 - trunk/arch/arm/mach-ep93xx/micro9.c | 1 + trunk/arch/arm/mach-ep93xx/simone.c | 2 + trunk/arch/arm/mach-ep93xx/snappercl15.c | 2 + trunk/arch/arm/mach-ep93xx/soc.h | 213 ++ trunk/arch/arm/mach-ep93xx/ts72xx.c | 1 + trunk/arch/arm/mach-ep93xx/vision_ep9307.c | 2 + trunk/arch/arm/mach-exynos/Kconfig | 42 +- trunk/arch/arm/mach-exynos/Makefile | 8 +- trunk/arch/arm/mach-exynos/clock-exynos4.c | 1581 +++++++++ trunk/arch/arm/mach-exynos/clock-exynos4.h | 30 + trunk/arch/arm/mach-exynos/clock-exynos4210.c | 48 +- trunk/arch/arm/mach-exynos/clock-exynos4212.c | 32 +- trunk/arch/arm/mach-exynos/clock-exynos5.c | 1247 +++++++ trunk/arch/arm/mach-exynos/clock.c | 1564 --------- trunk/arch/arm/mach-exynos/common.c | 524 ++- trunk/arch/arm/mach-exynos/common.h | 40 +- trunk/arch/arm/mach-exynos/cpuidle.c | 151 +- trunk/arch/arm/mach-exynos/dev-ahci.c | 4 +- trunk/arch/arm/mach-exynos/dev-audio.c | 4 +- trunk/arch/arm/mach-exynos/dev-uart.c | 78 + trunk/arch/arm/mach-exynos/dma.c | 125 +- trunk/arch/arm/mach-exynos/hotplug.c | 1 + .../mach-exynos/include/mach/debug-macro.S | 9 +- .../mach-exynos/include/mach/exynos4-clock.h | 43 - .../arch/arm/mach-exynos/include/mach/gpio.h | 239 +- .../arch/arm/mach-exynos/include/mach/irqs.h | 595 +++- trunk/arch/arm/mach-exynos/include/mach/map.h | 55 +- trunk/arch/arm/mach-exynos/include/mach/pmu.h | 2 + .../arm/mach-exynos/include/mach/regs-clock.h | 478 ++- .../arm/mach-exynos/include/mach/regs-gpio.h | 20 +- .../arm/mach-exynos/include/mach/regs-pmu.h | 1 + .../arm/mach-exynos/include/mach/uncompress.h | 17 +- trunk/arch/arm/mach-exynos/mach-exynos4-dt.c | 8 +- trunk/arch/arm/mach-exynos/mach-exynos5-dt.c | 78 + trunk/arch/arm/mach-exynos/mach-nuri.c | 89 +- trunk/arch/arm/mach-exynos/mach-origen.c | 39 +- trunk/arch/arm/mach-exynos/mach-smdkv310.c | 3 + .../arm/mach-exynos/mach-universal_c210.c | 93 +- trunk/arch/arm/mach-exynos/mct.c | 62 +- trunk/arch/arm/mach-exynos/platsmp.c | 9 +- trunk/arch/arm/mach-exynos/pm.c | 55 +- trunk/arch/arm/mach-exynos/pm_domains.c | 6 + trunk/arch/arm/mach-exynos/setup-i2c0.c | 9 +- trunk/arch/arm/mach-footbridge/common.c | 1 + .../arch/arm/mach-footbridge/dc21285-timer.c | 1 + trunk/arch/arm/mach-footbridge/dc21285.c | 1 - trunk/arch/arm/mach-footbridge/ebsa285-leds.c | 1 - trunk/arch/arm/mach-footbridge/netwinder-hw.c | 1 + .../arch/arm/mach-footbridge/netwinder-leds.c | 1 - trunk/arch/arm/mach-highbank/Makefile | 1 - trunk/arch/arm/mach-highbank/highbank.c | 5 +- .../arm/mach-highbank/include/mach/memory.h | 1 - trunk/arch/arm/mach-highbank/localtimer.c | 40 - trunk/arch/arm/mach-imx/Kconfig | 14 +- trunk/arch/arm/mach-imx/Makefile | 6 +- trunk/arch/arm/mach-imx/Makefile.boot | 3 + trunk/arch/arm/mach-imx/clock-imx27.c | 18 + trunk/arch/arm/mach-imx/clock-imx31.c | 2 +- trunk/arch/arm/mach-imx/clock-imx35.c | 166 +- trunk/arch/arm/mach-imx/clock-imx6q.c | 74 +- trunk/arch/arm/mach-imx/cpu-imx5.c | 36 - .../{crmregs-imx31.h => crmregs-imx3.h} | 16 +- trunk/arch/arm/mach-imx/dma-v1.c | 1 - trunk/arch/arm/mach-imx/imx27-dt.c | 89 + trunk/arch/arm/mach-imx/imx51-dt.c | 1 + trunk/arch/arm/mach-imx/imx53-dt.c | 1 + trunk/arch/arm/mach-imx/lluart.c | 2 +- trunk/arch/arm/mach-imx/localtimer.c | 35 - trunk/arch/arm/mach-imx/mach-armadillo5x0.c | 2 +- .../arm/mach-imx/mach-imx27_visstrim_m10.c | 139 +- trunk/arch/arm/mach-imx/mach-imx6q.c | 4 + trunk/arch/arm/mach-imx/mach-mx21ads.c | 16 +- trunk/arch/arm/mach-imx/mach-mx27_3ds.c | 108 + trunk/arch/arm/mach-imx/mach-mx31ads.c | 35 +- trunk/arch/arm/mach-imx/mach-mx31moboard.c | 6 +- trunk/arch/arm/mach-imx/mach-mx35_3ds.c | 216 ++ trunk/arch/arm/mach-imx/mach-mx51_efikamx.c | 1 + trunk/arch/arm/mach-imx/mach-mx51_efikasb.c | 1 + trunk/arch/arm/mach-imx/mach-pcm038.c | 2 +- trunk/arch/arm/mach-imx/mm-imx3.c | 13 +- trunk/arch/arm/mach-imx/mm-imx5.c | 10 + trunk/arch/arm/mach-imx/pm-imx3.c | 37 + trunk/arch/arm/mach-imx/pm-imx5.c | 4 +- trunk/arch/arm/mach-integrator/core.c | 1 - trunk/arch/arm/mach-integrator/leds.c | 1 - trunk/arch/arm/mach-integrator/pci.c | 1 - trunk/arch/arm/mach-integrator/pci_v3.c | 1 - trunk/arch/arm/mach-iop33x/uart.c | 1 - trunk/arch/arm/mach-ixp2000/core.c | 1 - trunk/arch/arm/mach-ixp2000/enp2611.c | 1 - trunk/arch/arm/mach-ixp2000/ixdp2400.c | 1 - trunk/arch/arm/mach-ixp2000/ixdp2800.c | 1 - trunk/arch/arm/mach-ixp2000/ixdp2x00.c | 1 - trunk/arch/arm/mach-ixp2000/ixdp2x01.c | 1 - trunk/arch/arm/mach-ixp2000/pci.c | 1 - trunk/arch/arm/mach-ixp23xx/core.c | 1 - trunk/arch/arm/mach-ixp23xx/espresso.c | 1 - trunk/arch/arm/mach-ixp23xx/ixdp2351.c | 1 - trunk/arch/arm/mach-ixp23xx/pci.c | 1 - trunk/arch/arm/mach-ixp23xx/roadrunner.c | 1 - trunk/arch/arm/mach-ixp4xx/common-pci.c | 1 - trunk/arch/arm/mach-ixp4xx/goramo_mlr.c | 1 - trunk/arch/arm/mach-kirkwood/Kconfig | 14 + trunk/arch/arm/mach-kirkwood/Makefile | 2 + trunk/arch/arm/mach-kirkwood/Makefile.boot | 2 + .../arch/arm/mach-kirkwood/board-dreamplug.c | 152 + trunk/arch/arm/mach-kirkwood/board-dt.c | 75 + trunk/arch/arm/mach-kirkwood/common.c | 11 +- trunk/arch/arm/mach-kirkwood/common.h | 15 + trunk/arch/arm/mach-ks8695/time.c | 1 + trunk/arch/arm/mach-lpc32xx/Kconfig | 25 + trunk/arch/arm/mach-lpc32xx/clock.c | 183 +- trunk/arch/arm/mach-lpc32xx/common.c | 69 + trunk/arch/arm/mach-lpc32xx/common.h | 6 +- .../arm/mach-lpc32xx/include/mach/board.h | 24 + .../arm/mach-lpc32xx/include/mach/platform.h | 51 +- trunk/arch/arm/mach-lpc32xx/irq.c | 4 + trunk/arch/arm/mach-lpc32xx/phy3250.c | 6 + trunk/arch/arm/mach-lpc32xx/pm.c | 2 +- trunk/arch/arm/mach-lpc32xx/timer.c | 48 +- trunk/arch/arm/mach-mmp/Kconfig | 10 + trunk/arch/arm/mach-mmp/Makefile | 1 + trunk/arch/arm/mach-mmp/common.c | 1 + trunk/arch/arm/mach-mmp/include/mach/pxa910.h | 1 + .../arm/mach-mmp/include/mach/regs-apbc.h | 1 + .../arch/arm/mach-mmp/include/mach/regs-rtc.h | 23 + trunk/arch/arm/mach-mmp/mmp-dt.c | 75 + trunk/arch/arm/mach-mmp/mmp2.c | 1 + trunk/arch/arm/mach-mmp/pxa168.c | 4 + trunk/arch/arm/mach-mmp/pxa910.c | 28 + trunk/arch/arm/mach-mmp/ttc_dkb.c | 1 + trunk/arch/arm/mach-msm/board-sapphire.c | 1 - trunk/arch/arm/mach-msm/timer.c | 79 +- trunk/arch/arm/mach-mxs/Kconfig | 16 + trunk/arch/arm/mach-mxs/Makefile | 1 + trunk/arch/arm/mach-mxs/clock-mx23.c | 35 +- trunk/arch/arm/mach-mxs/clock-mx28.c | 58 +- trunk/arch/arm/mach-mxs/devices-mx23.h | 4 + trunk/arch/arm/mach-mxs/devices-mx28.h | 4 + trunk/arch/arm/mach-mxs/devices/Kconfig | 3 + trunk/arch/arm/mach-mxs/devices/Makefile | 1 + .../arm/mach-mxs/devices/platform-gpmi-nand.c | 81 + .../arm/mach-mxs/devices/platform-mxs-mmc.c | 2 + trunk/arch/arm/mach-mxs/include/mach/common.h | 2 + .../mach-mxs/include/mach/devices-common.h | 10 + trunk/arch/arm/mach-mxs/include/mach/digctl.h | 1 + trunk/arch/arm/mach-mxs/include/mach/mxs.h | 29 +- .../arm/mach-mxs/include/mach/uncompress.h | 13 +- trunk/arch/arm/mach-mxs/mach-apx4devkit.c | 260 ++ trunk/arch/arm/mach-mxs/mach-m28evk.c | 7 +- trunk/arch/arm/mach-mxs/mach-mx28evk.c | 80 +- trunk/arch/arm/mach-mxs/system.c | 18 +- trunk/arch/arm/mach-nomadik/board-nhk8815.c | 7 +- .../arm/mach-nomadik/include/mach/setup.h | 19 - trunk/arch/arm/mach-omap1/Kconfig | 4 + .../arm/mach-omap1/ams-delta-fiq-handler.S | 3 +- trunk/arch/arm/mach-omap1/ams-delta-fiq.c | 1 + trunk/arch/arm/mach-omap1/board-ams-delta.c | 322 +- trunk/arch/arm/mach-omap1/board-fsample.c | 7 +- trunk/arch/arm/mach-omap1/board-h2.c | 6 +- trunk/arch/arm/mach-omap1/board-h3.c | 8 +- trunk/arch/arm/mach-omap1/board-htcherald.c | 5 +- trunk/arch/arm/mach-omap1/board-innovator.c | 7 +- trunk/arch/arm/mach-omap1/board-nokia770.c | 6 +- trunk/arch/arm/mach-omap1/board-osk.c | 7 +- trunk/arch/arm/mach-omap1/board-palmte.c | 4 +- trunk/arch/arm/mach-omap1/board-palmtt.c | 9 +- trunk/arch/arm/mach-omap1/board-palmz71.c | 9 +- trunk/arch/arm/mach-omap1/board-perseus2.c | 7 +- trunk/arch/arm/mach-omap1/board-sx1.c | 6 +- trunk/arch/arm/mach-omap1/board-voiceblue.c | 6 +- trunk/arch/arm/mach-omap1/clock.c | 5 +- trunk/arch/arm/mach-omap1/clock_data.c | 5 +- trunk/arch/arm/mach-omap1/common.h | 1 + trunk/arch/arm/mach-omap1/devices.c | 8 +- trunk/arch/arm/mach-omap1/dma.c | 2 +- trunk/arch/arm/mach-omap1/flash.c | 4 +- trunk/arch/arm/mach-omap1/fpga.c | 5 +- trunk/arch/arm/mach-omap1/gpio15xx.c | 7 +- trunk/arch/arm/mach-omap1/gpio16xx.c | 47 +- trunk/arch/arm/mach-omap1/gpio7xx.c | 14 +- trunk/arch/arm/mach-omap1/id.c | 4 + .../arm/mach-omap1/include/mach/entry-macro.S | 4 +- .../arm/mach-omap1/include/mach/hardware.h | 36 + trunk/arch/arm/mach-omap1/include/mach/io.h | 43 +- .../arch/arm/mach-omap1/include/mach/memory.h | 3 +- trunk/arch/arm/mach-omap1/io.c | 5 +- trunk/arch/arm/mach-omap1/iomap.h | 42 + trunk/arch/arm/mach-omap1/irq.c | 4 +- trunk/arch/arm/mach-omap1/lcd_dma.c | 3 +- trunk/arch/arm/mach-omap1/leds-h2p2-debug.c | 1 - trunk/arch/arm/mach-omap1/leds-innovator.c | 1 - trunk/arch/arm/mach-omap1/leds-osk.c | 1 - trunk/arch/arm/mach-omap1/mcbsp.c | 5 +- trunk/arch/arm/mach-omap1/mux.c | 1 - trunk/arch/arm/mach-omap1/pm.c | 4 +- trunk/arch/arm/mach-omap1/reset.c | 3 +- trunk/arch/arm/mach-omap1/sleep.S | 4 + trunk/arch/arm/mach-omap1/sram.S | 4 + trunk/arch/arm/mach-omap1/time.c | 4 +- trunk/arch/arm/mach-omap1/timer32k.c | 8 +- trunk/arch/arm/mach-omap2/Kconfig | 8 +- trunk/arch/arm/mach-omap2/Makefile | 13 +- trunk/arch/arm/mach-omap2/am35xx-emac.c | 117 + trunk/arch/arm/mach-omap2/am35xx-emac.h | 15 + trunk/arch/arm/mach-omap2/board-2430sdp.c | 2 +- trunk/arch/arm/mach-omap2/board-3430sdp.c | 5 +- trunk/arch/arm/mach-omap2/board-4430sdp.c | 22 +- trunk/arch/arm/mach-omap2/board-am3517evm.c | 119 +- trunk/arch/arm/mach-omap2/board-cm-t35.c | 6 +- trunk/arch/arm/mach-omap2/board-cm-t3517.c | 2 + trunk/arch/arm/mach-omap2/board-devkit8000.c | 4 +- trunk/arch/arm/mach-omap2/board-flash.c | 2 +- trunk/arch/arm/mach-omap2/board-generic.c | 111 +- trunk/arch/arm/mach-omap2/board-igep0020.c | 6 +- trunk/arch/arm/mach-omap2/board-ldp.c | 3 +- trunk/arch/arm/mach-omap2/board-n8x0.c | 9 +- trunk/arch/arm/mach-omap2/board-omap3beagle.c | 10 +- trunk/arch/arm/mach-omap2/board-omap3evm.c | 7 +- trunk/arch/arm/mach-omap2/board-omap3logic.c | 4 +- .../arch/arm/mach-omap2/board-omap3pandora.c | 26 +- .../arch/arm/mach-omap2/board-omap3stalker.c | 15 +- .../arm/mach-omap2/board-omap3touchbook.c | 18 +- trunk/arch/arm/mach-omap2/board-omap4panda.c | 27 +- trunk/arch/arm/mach-omap2/board-overo.c | 3 +- trunk/arch/arm/mach-omap2/board-rm680.c | 16 +- .../arm/mach-omap2/board-rx51-peripherals.c | 31 +- .../arch/arm/mach-omap2/board-zoom-display.c | 5 +- .../arm/mach-omap2/board-zoom-peripherals.c | 4 +- .../arm/mach-omap2/clkt2xxx_virt_prcm_set.c | 1 + trunk/arch/arm/mach-omap2/clkt_clksel.c | 1 + trunk/arch/arm/mach-omap2/clkt_dpll.c | 1 + trunk/arch/arm/mach-omap2/clock2420_data.c | 3 + trunk/arch/arm/mach-omap2/clock2430.c | 2 + trunk/arch/arm/mach-omap2/clock2430_data.c | 2 + trunk/arch/arm/mach-omap2/clock2xxx.c | 1 + trunk/arch/arm/mach-omap2/clock3xxx.c | 1 + trunk/arch/arm/mach-omap2/clock3xxx_data.c | 3 +- trunk/arch/arm/mach-omap2/clock44xx_data.c | 3 + trunk/arch/arm/mach-omap2/cm2xxx_3xxx.c | 4 +- trunk/arch/arm/mach-omap2/cm44xx.c | 2 +- trunk/arch/arm/mach-omap2/cminst44xx.c | 2 +- .../arm/mach-omap2/common-board-devices.c | 9 +- trunk/arch/arm/mach-omap2/common.c | 5 +- trunk/arch/arm/mach-omap2/common.h | 19 + trunk/arch/arm/mach-omap2/control.c | 4 +- trunk/arch/arm/mach-omap2/control.h | 6 +- trunk/arch/arm/mach-omap2/devices.c | 17 +- trunk/arch/arm/mach-omap2/display.c | 9 +- trunk/arch/arm/mach-omap2/dma.c | 2 +- trunk/arch/arm/mach-omap2/emu.c | 4 + trunk/arch/arm/mach-omap2/gpio.c | 38 +- trunk/arch/arm/mach-omap2/gpmc-nand.c | 1 + trunk/arch/arm/mach-omap2/gpmc-onenand.c | 1 + trunk/arch/arm/mach-omap2/gpmc-smsc911x.c | 11 +- trunk/arch/arm/mach-omap2/gpmc.c | 2 + trunk/arch/arm/mach-omap2/hsmmc.c | 124 +- trunk/arch/arm/mach-omap2/hsmmc.h | 14 +- trunk/arch/arm/mach-omap2/id.c | 188 +- trunk/arch/arm/mach-omap2/include/mach/io.h | 46 +- trunk/arch/arm/mach-omap2/io.c | 68 +- .../include/plat/io.h => mach-omap2/iomap.h} | 80 +- trunk/arch/arm/mach-omap2/irq.c | 65 +- trunk/arch/arm/mach-omap2/mcbsp.c | 2 +- trunk/arch/arm/mach-omap2/mux.c | 17 +- trunk/arch/arm/mach-omap2/mux.h | 2 +- trunk/arch/arm/mach-omap2/omap-hotplug.c | 2 +- .../arch/arm/mach-omap2/omap-mpuss-lowpower.c | 5 +- trunk/arch/arm/mach-omap2/omap-smp.c | 3 +- trunk/arch/arm/mach-omap2/omap-wakeupgen.c | 53 +- .../arm/mach-omap2/omap_hwmod_3xxx_data.c | 31 +- .../arm/mach-omap2/omap_hwmod_44xx_data.c | 20 +- trunk/arch/arm/mach-omap2/opp2420_data.c | 2 + trunk/arch/arm/mach-omap2/opp2430_data.c | 2 + trunk/arch/arm/mach-omap2/pm-debug.c | 6 +- trunk/arch/arm/mach-omap2/pm.c | 125 +- trunk/arch/arm/mach-omap2/pm.h | 3 +- trunk/arch/arm/mach-omap2/pm24xx.c | 101 +- trunk/arch/arm/mach-omap2/pm34xx.c | 89 +- trunk/arch/arm/mach-omap2/pm44xx.c | 58 +- .../arch/arm/mach-omap2/powerdomain-common.c | 1 + .../arm/mach-omap2/powerdomain2xxx_3xxx.c | 1 + trunk/arch/arm/mach-omap2/powerdomain44xx.c | 1 + .../arm/mach-omap2/powerdomains3xxx_data.c | 1 + trunk/arch/arm/mach-omap2/prcm_mpu44xx.c | 2 +- trunk/arch/arm/mach-omap2/prm44xx.c | 3 +- trunk/arch/arm/mach-omap2/prminst44xx.c | 2 +- trunk/arch/arm/mach-omap2/sdram-nokia.c | 1 - trunk/arch/arm/mach-omap2/sdrc2xxx.c | 6 +- trunk/arch/arm/mach-omap2/serial.c | 4 - trunk/arch/arm/mach-omap2/sleep24xx.S | 1 - trunk/arch/arm/mach-omap2/sleep34xx.S | 5 +- trunk/arch/arm/mach-omap2/sleep44xx.S | 1 - .../arch/arm/mach-omap2/smartreflex-class3.c | 1 + trunk/arch/arm/mach-omap2/smartreflex.c | 229 +- trunk/arch/arm/mach-omap2/smartreflex.h | 10 + trunk/arch/arm/mach-omap2/sr_device.c | 13 +- trunk/arch/arm/mach-omap2/sram242x.S | 4 +- trunk/arch/arm/mach-omap2/sram243x.S | 4 +- trunk/arch/arm/mach-omap2/sram34xx.S | 5 +- trunk/arch/arm/mach-omap2/timer-mpu.c | 39 - trunk/arch/arm/mach-omap2/timer.c | 22 +- trunk/arch/arm/mach-omap2/vc.c | 1 + trunk/arch/arm/mach-omap2/vp.c | 4 +- trunk/arch/arm/mach-orion5x/common.c | 1 + trunk/arch/arm/mach-orion5x/dns323-setup.c | 1 + trunk/arch/arm/mach-orion5x/ls-chl-setup.c | 1 - trunk/arch/arm/mach-orion5x/ls_hgl-setup.c | 1 - trunk/arch/arm/mach-orion5x/lsmini-setup.c | 1 - trunk/arch/arm/mach-pnx4008/core.c | 2 +- trunk/arch/arm/mach-pnx4008/dma.c | 1 - trunk/arch/arm/mach-pnx4008/irq.c | 1 - trunk/arch/arm/mach-pnx4008/time.c | 1 - trunk/arch/arm/mach-pxa/cm-x300.c | 1 + trunk/arch/arm/mach-pxa/colibri-pxa3xx.c | 1 + trunk/arch/arm/mach-pxa/corgi.c | 1 - trunk/arch/arm/mach-pxa/devices.c | 28 +- trunk/arch/arm/mach-pxa/generic.c | 1 - trunk/arch/arm/mach-pxa/hx4700.c | 77 +- .../arm/mach-pxa/include/mach/mfp-pxa27x.h | 2 + trunk/arch/arm/mach-pxa/leds-idp.c | 1 - trunk/arch/arm/mach-pxa/leds-lubbock.c | 1 - trunk/arch/arm/mach-pxa/leds-mainstone.c | 1 - trunk/arch/arm/mach-pxa/lubbock.c | 1 + trunk/arch/arm/mach-pxa/magician.c | 34 +- trunk/arch/arm/mach-pxa/poodle.c | 1 - trunk/arch/arm/mach-pxa/pxa3xx.c | 1 + trunk/arch/arm/mach-pxa/pxa95x.c | 1 + trunk/arch/arm/mach-pxa/reset.c | 1 + trunk/arch/arm/mach-pxa/viper.c | 1 + trunk/arch/arm/mach-pxa/zeus.c | 1 + trunk/arch/arm/mach-realview/core.c | 1 - trunk/arch/arm/mach-realview/hotplug.c | 1 + trunk/arch/arm/mach-realview/realview_eb.c | 27 +- .../arch/arm/mach-realview/realview_pb11mp.c | 21 +- trunk/arch/arm/mach-realview/realview_pbx.c | 20 +- trunk/arch/arm/mach-rpc/Makefile | 2 +- trunk/arch/arm/{kernel => mach-rpc}/ecard.c | 134 +- trunk/arch/arm/{kernel => mach-rpc}/ecard.h | 0 trunk/arch/arm/mach-rpc/include/mach/irqs.h | 2 - trunk/arch/arm/mach-rpc/riscpc.c | 46 +- .../{common/time-acorn.c => mach-rpc/time.c} | 2 +- trunk/arch/arm/mach-s3c2410/Kconfig | 154 - trunk/arch/arm/mach-s3c2410/Makefile | 26 - trunk/arch/arm/mach-s3c2410/common.h | 17 - trunk/arch/arm/mach-s3c2410/usb-simtec.h | 16 - trunk/arch/arm/mach-s3c2412/Kconfig | 85 - trunk/arch/arm/mach-s3c2412/Makefile | 12 - trunk/arch/arm/mach-s3c2416/Kconfig | 60 - trunk/arch/arm/mach-s3c2416/Makefile | 22 - trunk/arch/arm/mach-s3c2440/Kconfig | 165 - trunk/arch/arm/mach-s3c2440/Makefile | 26 +- trunk/arch/arm/mach-s3c2440/common.h | 17 - trunk/arch/arm/mach-s3c2443/Kconfig | 32 - trunk/arch/arm/mach-s3c2443/Makefile | 20 - trunk/arch/arm/mach-s3c24xx/Kconfig | 538 +++ trunk/arch/arm/mach-s3c24xx/Makefile | 95 + .../Makefile.boot | 0 .../{mach-s3c2410 => mach-s3c24xx}/bast-ide.c | 0 .../{mach-s3c2410 => mach-s3c24xx}/bast-irq.c | 0 .../clock.c => mach-s3c24xx/clock-s3c2412.c} | 0 .../clock.c => mach-s3c24xx/clock-s3c2416.c} | 7 - .../clock.c => mach-s3c24xx/clock-s3c2440.c} | 0 .../clock.c => mach-s3c24xx/clock-s3c2443.c} | 7 - .../clock-s3c244x.c} | 0 .../common-s3c2443.c} | 90 +- .../common-smdk.c | 0 .../dma.c => mach-s3c24xx/dma-s3c2410.c} | 0 .../dma.c => mach-s3c24xx/dma-s3c2412.c} | 0 .../dma.c => mach-s3c24xx/dma-s3c2440.c} | 0 .../dma.c => mach-s3c24xx/dma-s3c2443.c} | 30 +- .../h1940-bluetooth.c | 0 .../include/mach/anubis-cpld.h | 0 .../include/mach/anubis-irq.h | 0 .../include/mach/anubis-map.h | 0 .../include/mach/bast-cpld.h | 0 .../include/mach/bast-irq.h | 0 .../include/mach/bast-map.h | 0 .../include/mach/bast-pmu.h | 0 .../include/mach/debug-macro.S | 0 .../include/mach/dma.h | 0 .../include/mach/entry-macro.S | 0 .../include/mach/fb.h | 0 .../include/mach/gpio-fns.h | 0 .../include/mach/gpio-nrs.h | 0 .../include/mach/gpio-track.h | 0 .../include/mach/gpio.h | 0 .../include/mach/gta02.h | 0 .../include/mach/h1940-latch.h | 0 .../include/mach/h1940.h | 0 .../include/mach/hardware.h | 0 .../include/mach/idle.h | 0 .../include/mach/io.h | 0 .../include/mach/irqs.h | 0 .../include/mach/leds-gpio.h | 0 .../include/mach/map.h | 0 .../include/mach/osiris-cpld.h | 0 .../include/mach/osiris-map.h | 0 .../include/mach/otom-map.h | 0 .../include/mach/pm-core.h | 0 .../include/mach/regs-clock.h | 0 .../include/mach/regs-dsc.h | 0 .../include/mach/regs-gpio.h | 0 .../include/mach/regs-gpioj.h | 0 .../include/mach/regs-irq.h | 0 .../include/mach/regs-lcd.h | 0 .../include/mach/regs-mem.h | 0 .../include/mach/regs-power.h | 0 .../include/mach/regs-s3c2412-mem.h | 0 .../include/mach/regs-s3c2412.h | 0 .../include/mach/regs-s3c2416-mem.h | 0 .../include/mach/regs-s3c2416.h | 0 .../include/mach/regs-s3c2443-clock.h | 0 .../include/mach/regs-sdi.h | 0 .../include/mach/tick.h | 0 .../include/mach/timex.h | 0 .../include/mach/uncompress.h | 0 .../include/mach/vr1000-cpld.h | 0 .../include/mach/vr1000-irq.h | 0 .../include/mach/vr1000-map.h | 0 .../irq.c => mach-s3c24xx/irq-s3c2412.c} | 0 .../irq.c => mach-s3c24xx/irq-s3c2416.c} | 0 .../irq.c => mach-s3c24xx/irq-s3c2440.c} | 0 .../irq.c => mach-s3c24xx/irq-s3c2443.c} | 0 .../irq-s3c244x.c} | 0 .../mach-amlm5900.c | 0 .../mach-anubis.c | 1 + .../mach-at2440evb.c | 0 .../mach-bast.c | 3 +- .../mach-gta02.c | 6 +- .../mach-h1940.c | 12 +- .../mach-jive.c | 0 .../mach-mini2440.c | 0 .../{mach-s3c2410 => mach-s3c24xx}/mach-n30.c | 0 .../mach-nexcoder.c | 0 .../mach-osiris-dvs.c | 0 .../mach-osiris.c | 0 .../mach-otom.c | 0 .../mach-qt2410.c | 0 .../mach-rx1950.c | 12 +- .../mach-rx3715.c | 0 .../mach-smdk2410.c | 0 .../mach-smdk2413.c | 0 .../mach-smdk2416.c | 8 +- .../mach-smdk2440.c | 0 .../mach-smdk2443.c | 0 .../mach-tct_hammer.c | 0 .../mach-vr1000.c | 3 +- .../mach-vstms.c | 0 .../{mach-s3c2410 => mach-s3c24xx}/pm-h1940.S | 0 .../pm.c => mach-s3c24xx/pm-s3c2410.c} | 0 .../pm.c => mach-s3c24xx/pm-s3c2412.c} | 0 .../pm.c => mach-s3c24xx/pm-s3c2416.c} | 0 .../{mach-s3c2410 => mach-s3c24xx}/s3c2410.c | 1 + .../{mach-s3c2412 => mach-s3c24xx}/s3c2412.c | 1 + .../{mach-s3c2416 => mach-s3c24xx}/s3c2416.c | 3 + .../{mach-s3c2440 => mach-s3c24xx}/s3c2440.c | 0 .../{mach-s3c2440 => mach-s3c24xx}/s3c2442.c | 0 .../{mach-s3c2443 => mach-s3c24xx}/s3c2443.c | 3 + .../{mach-s3c2440 => mach-s3c24xx}/s3c244x.c | 1 + .../setup-i2c.c | 0 .../setup-sdhci-gpio.c | 0 .../{plat-s3c24xx => mach-s3c24xx}/setup-ts.c | 0 .../simtec-audio.c | 2 + .../simtec-nor.c} | 2 +- .../pm-simtec.c => mach-s3c24xx/simtec-pm.c} | 0 .../simtec-usb.c} | 2 +- .../nor-simtec.h => mach-s3c24xx/simtec.h} | 9 +- .../sleep.S => mach-s3c24xx/sleep-s3c2410.S} | 0 .../sleep.S => mach-s3c24xx/sleep-s3c2412.S} | 0 trunk/arch/arm/mach-s3c64xx/Kconfig | 9 + trunk/arch/arm/mach-s3c64xx/Makefile | 2 + trunk/arch/arm/mach-s3c64xx/clock.c | 121 +- trunk/arch/arm/mach-s3c64xx/common.c | 1 + trunk/arch/arm/mach-s3c64xx/common.h | 2 - trunk/arch/arm/mach-s3c64xx/cpuidle.c | 91 + trunk/arch/arm/mach-s3c64xx/irq-pm.c | 2 +- .../arm/mach-s3c64xx/mach-crag6410-module.c | 45 +- trunk/arch/arm/mach-s3c64xx/mach-crag6410.c | 71 +- trunk/arch/arm/mach-s3c64xx/mach-smartq.c | 3 + trunk/arch/arm/mach-s3c64xx/mach-smdk6410.c | 4 + trunk/arch/arm/mach-s3c64xx/setup-usb-phy.c | 90 + trunk/arch/arm/mach-s5p64x0/clock.c | 11 +- trunk/arch/arm/mach-s5p64x0/common.c | 1 + trunk/arch/arm/mach-s5p64x0/dma.c | 12 +- .../mach-s5p64x0/include/mach/s5p64x0-clock.h | 7 - trunk/arch/arm/mach-s5pc100/clock.c | 28 +- trunk/arch/arm/mach-s5pc100/common.c | 1 + trunk/arch/arm/mach-s5pc100/dma.c | 16 +- trunk/arch/arm/mach-s5pv210/Kconfig | 15 + trunk/arch/arm/mach-s5pv210/Makefile | 1 + trunk/arch/arm/mach-s5pv210/clock.c | 5 + trunk/arch/arm/mach-s5pv210/dma.c | 16 +- .../arch/arm/mach-s5pv210/include/mach/map.h | 4 + .../arm/mach-s5pv210/include/mach/regs-sys.h | 4 - trunk/arch/arm/mach-s5pv210/mach-aquila.c | 1 + trunk/arch/arm/mach-s5pv210/mach-goni.c | 2 +- trunk/arch/arm/mach-s5pv210/mach-smdkc110.c | 14 + trunk/arch/arm/mach-s5pv210/mach-smdkv210.c | 17 +- trunk/arch/arm/mach-s5pv210/setup-usb-phy.c | 90 + trunk/arch/arm/mach-sa1100/Makefile | 2 +- trunk/arch/arm/mach-sa1100/assabet.c | 194 +- trunk/arch/arm/mach-sa1100/badge4.c | 42 +- trunk/arch/arm/mach-sa1100/cerf.c | 17 +- trunk/arch/arm/mach-sa1100/clock.c | 82 +- trunk/arch/arm/mach-sa1100/collie.c | 55 +- trunk/arch/arm/mach-sa1100/dma.c | 348 -- trunk/arch/arm/mach-sa1100/generic.c | 161 +- trunk/arch/arm/mach-sa1100/generic.h | 7 +- trunk/arch/arm/mach-sa1100/h3100.c | 25 +- trunk/arch/arm/mach-sa1100/h3600.c | 34 +- trunk/arch/arm/mach-sa1100/h3xxx.c | 13 +- trunk/arch/arm/mach-sa1100/hackkit.c | 13 +- .../arm/mach-sa1100/include/mach/SA-1100.h | 229 +- trunk/arch/arm/mach-sa1100/include/mach/dma.h | 117 - .../arch/arm/mach-sa1100/include/mach/irqs.h | 27 +- trunk/arch/arm/mach-sa1100/include/mach/mcp.h | 2 +- .../arm/mach-sa1100/include/mach/neponset.h | 52 +- .../arm/mach-sa1100/include/mach/shannon.h | 2 +- trunk/arch/arm/mach-sa1100/irq.c | 8 +- trunk/arch/arm/mach-sa1100/jornada720.c | 46 +- trunk/arch/arm/mach-sa1100/lart.c | 82 + trunk/arch/arm/mach-sa1100/leds-assabet.c | 1 - trunk/arch/arm/mach-sa1100/leds-badge4.c | 1 - trunk/arch/arm/mach-sa1100/leds-cerf.c | 1 - trunk/arch/arm/mach-sa1100/leds-hackkit.c | 1 - trunk/arch/arm/mach-sa1100/leds-lart.c | 1 - trunk/arch/arm/mach-sa1100/nanoengine.c | 13 +- trunk/arch/arm/mach-sa1100/neponset.c | 549 +-- trunk/arch/arm/mach-sa1100/pci-nanoengine.c | 8 +- trunk/arch/arm/mach-sa1100/pleb.c | 25 +- trunk/arch/arm/mach-sa1100/pm.c | 1 - trunk/arch/arm/mach-sa1100/shannon.c | 27 +- trunk/arch/arm/mach-sa1100/simpad.c | 24 +- trunk/arch/arm/mach-sa1100/sleep.S | 37 +- trunk/arch/arm/mach-sa1100/ssp.c | 2 +- trunk/arch/arm/mach-sa1100/time.c | 1 + trunk/arch/arm/mach-shark/leds.c | 1 - trunk/arch/arm/mach-shmobile/Makefile | 1 - trunk/arch/arm/mach-shmobile/board-ag5evm.c | 39 +- trunk/arch/arm/mach-shmobile/board-ap4evb.c | 43 +- trunk/arch/arm/mach-shmobile/board-bonito.c | 44 +- trunk/arch/arm/mach-shmobile/board-g3evm.c | 38 +- trunk/arch/arm/mach-shmobile/board-g4evm.c | 38 +- trunk/arch/arm/mach-shmobile/board-kota2.c | 38 +- trunk/arch/arm/mach-shmobile/board-mackerel.c | 48 +- trunk/arch/arm/mach-shmobile/board-marzen.c | 62 +- trunk/arch/arm/mach-shmobile/clock-r8a7740.c | 8 +- trunk/arch/arm/mach-shmobile/clock-r8a7779.c | 4 +- trunk/arch/arm/mach-shmobile/clock-sh7367.c | 8 +- trunk/arch/arm/mach-shmobile/clock-sh7372.c | 10 +- trunk/arch/arm/mach-shmobile/clock-sh7377.c | 8 +- trunk/arch/arm/mach-shmobile/clock-sh73a0.c | 14 +- trunk/arch/arm/mach-shmobile/clock.c | 2 +- trunk/arch/arm/mach-shmobile/cpuidle.c | 1 - .../arm/mach-shmobile/include/mach/common.h | 11 +- .../arm/mach-shmobile/include/mach/system.h | 2 + trunk/arch/arm/mach-shmobile/localtimer.c | 26 - trunk/arch/arm/mach-shmobile/platsmp.c | 1 - trunk/arch/arm/mach-shmobile/pm-r8a7779.c | 1 - trunk/arch/arm/mach-shmobile/pm-sh7372.c | 1 - trunk/arch/arm/mach-shmobile/setup-r8a7740.c | 45 + trunk/arch/arm/mach-shmobile/setup-r8a7779.c | 54 + trunk/arch/arm/mach-shmobile/setup-sh7367.c | 32 + trunk/arch/arm/mach-shmobile/setup-sh7372.c | 39 + trunk/arch/arm/mach-shmobile/setup-sh7377.c | 32 + trunk/arch/arm/mach-shmobile/setup-sh73a0.c | 32 + trunk/arch/arm/mach-shmobile/smp-r8a7779.c | 8 +- trunk/arch/arm/mach-shmobile/smp-sh73a0.c | 8 +- trunk/arch/arm/mach-shmobile/suspend.c | 2 +- trunk/arch/arm/mach-shmobile/timer.c | 16 +- trunk/arch/arm/mach-spear6xx/Kconfig | 7 +- trunk/arch/arm/mach-spear6xx/Makefile | 6 - trunk/arch/arm/mach-spear6xx/clock.c | 14 +- trunk/arch/arm/mach-spear6xx/spear600.c | 25 - trunk/arch/arm/mach-spear6xx/spear600_evb.c | 54 - trunk/arch/arm/mach-spear6xx/spear6xx.c | 132 +- trunk/arch/arm/mach-tegra/Kconfig | 18 +- trunk/arch/arm/mach-tegra/Makefile | 10 +- trunk/arch/arm/mach-tegra/apbio.c | 145 + trunk/arch/arm/mach-tegra/apbio.h | 39 + trunk/arch/arm/mach-tegra/board-dt-tegra20.c | 6 +- trunk/arch/arm/mach-tegra/board-dt-tegra30.c | 26 +- .../arm/mach-tegra/board-harmony-pinmux.c | 6 +- .../arch/arm/mach-tegra/board-harmony-power.c | 18 +- trunk/arch/arm/mach-tegra/board-harmony.c | 2 +- trunk/arch/arm/mach-tegra/board-seaboard.c | 5 +- trunk/arch/arm/mach-tegra/clock.c | 22 + trunk/arch/arm/mach-tegra/clock.h | 15 + trunk/arch/arm/mach-tegra/common.c | 27 +- trunk/arch/arm/mach-tegra/cpu-tegra.c | 1 - trunk/arch/arm/mach-tegra/cpuidle.c | 107 + trunk/arch/arm/mach-tegra/dma.c | 128 +- trunk/arch/arm/mach-tegra/flowctrl.c | 62 + trunk/arch/arm/mach-tegra/flowctrl.h | 42 + trunk/arch/arm/mach-tegra/fuse.c | 113 +- trunk/arch/arm/mach-tegra/fuse.h | 38 +- trunk/arch/arm/mach-tegra/headsmp.S | 167 +- trunk/arch/arm/mach-tegra/hotplug.c | 1 + trunk/arch/arm/mach-tegra/include/mach/clk.h | 10 + .../arm/mach-tegra/include/mach/debug-macro.S | 88 +- .../arm/mach-tegra/include/mach/gpio-tegra.h | 2 - .../arch/arm/mach-tegra/include/mach/iomap.h | 6 + .../arm/mach-tegra/include/mach/irammap.h | 35 + trunk/arch/arm/mach-tegra/include/mach/irqs.h | 7 +- .../arm/mach-tegra/include/mach/powergate.h | 15 +- .../arm/mach-tegra/include/mach/uncompress.h | 120 +- trunk/arch/arm/mach-tegra/irq.c | 20 +- trunk/arch/arm/mach-tegra/localtimer.c | 26 - trunk/arch/arm/mach-tegra/pcie.c | 16 +- trunk/arch/arm/mach-tegra/platsmp.c | 137 +- trunk/arch/arm/mach-tegra/pmc.c | 76 + trunk/arch/arm/mach-tegra/pmc.h | 23 + trunk/arch/arm/mach-tegra/powergate.c | 53 +- trunk/arch/arm/mach-tegra/reset.c | 84 + trunk/arch/arm/mach-tegra/reset.h | 50 + trunk/arch/arm/mach-tegra/sleep.S | 91 + trunk/arch/arm/mach-tegra/tegra2_clocks.c | 32 +- trunk/arch/arm/mach-tegra/tegra2_emc.c | 224 +- trunk/arch/arm/mach-tegra/tegra2_emc.h | 11 +- trunk/arch/arm/mach-tegra/tegra30_clocks.c | 3099 +++++++++++++++++ trunk/arch/arm/mach-tegra/timer.c | 22 +- trunk/arch/arm/mach-tegra/usb_phy.c | 11 + trunk/arch/arm/mach-ux500/Kconfig | 51 +- trunk/arch/arm/mach-ux500/Makefile | 3 +- trunk/arch/arm/mach-ux500/Makefile.boot | 1 + .../arm/mach-ux500/board-mop500-regulators.c | 28 + trunk/arch/arm/mach-ux500/board-mop500-sdi.c | 31 +- .../arm/mach-ux500/board-mop500-u8500uib.c | 1 - trunk/arch/arm/mach-ux500/board-mop500.c | 173 +- trunk/arch/arm/mach-ux500/board-mop500.h | 10 +- trunk/arch/arm/mach-ux500/board-u5500-sdi.c | 4 +- trunk/arch/arm/mach-ux500/board-u5500.c | 27 +- trunk/arch/arm/mach-ux500/cache-l2x0.c | 7 +- trunk/arch/arm/mach-ux500/clock.c | 7 + trunk/arch/arm/mach-ux500/clock.h | 1 + trunk/arch/arm/mach-ux500/cpu-db5500.c | 36 +- trunk/arch/arm/mach-ux500/cpu-db8500.c | 44 +- trunk/arch/arm/mach-ux500/cpu.c | 90 +- trunk/arch/arm/mach-ux500/devices-common.c | 79 +- trunk/arch/arm/mach-ux500/devices-common.h | 83 +- trunk/arch/arm/mach-ux500/devices-db5500.h | 116 +- trunk/arch/arm/mach-ux500/devices-db8500.c | 6 + trunk/arch/arm/mach-ux500/devices-db8500.h | 176 +- trunk/arch/arm/mach-ux500/dma-db5500.c | 3 +- .../arm/mach-ux500/include/mach/db8500-regs.h | 3 + .../arm/mach-ux500/include/mach/hardware.h | 2 + .../include/mach/irqs-board-mop500.h | 2 +- trunk/arch/arm/mach-ux500/include/mach/irqs.h | 2 +- .../arch/arm/mach-ux500/include/mach/setup.h | 11 +- trunk/arch/arm/mach-ux500/include/mach/usb.h | 4 +- trunk/arch/arm/mach-ux500/localtimer.c | 29 - trunk/arch/arm/mach-ux500/timer.c | 44 +- trunk/arch/arm/mach-ux500/usb.c | 7 +- trunk/arch/arm/mach-versatile/core.c | 1 - trunk/arch/arm/mach-versatile/pci.c | 1 - trunk/arch/arm/mach-vexpress/Kconfig | 47 +- trunk/arch/arm/mach-vexpress/Makefile.boot | 6 + trunk/arch/arm/mach-vexpress/core.h | 9 +- trunk/arch/arm/mach-vexpress/ct-ca9x4.c | 67 +- trunk/arch/arm/mach-vexpress/hotplug.c | 2 +- .../arm/mach-vexpress/include/mach/ct-ca9x4.h | 3 - .../mach-vexpress/include/mach/debug-macro.S | 30 +- .../arm/mach-vexpress/include/mach/irqs.h | 2 +- .../mach-vexpress/include/mach/motherboard.h | 58 +- .../mach-vexpress/include/mach/uncompress.h | 22 +- trunk/arch/arm/mach-vexpress/platsmp.c | 160 +- trunk/arch/arm/mach-vexpress/v2m.c | 281 +- trunk/arch/arm/mach-w90x900/cpu.c | 1 + trunk/arch/arm/mm/alignment.c | 3 +- trunk/arch/arm/mm/cache-feroceon-l2.c | 1 + trunk/arch/arm/mm/cache-tauros2.c | 1 + trunk/arch/arm/mm/cache-xsc3l2.c | 2 +- trunk/arch/arm/mm/fault.c | 3 +- trunk/arch/arm/mm/flush.c | 1 - trunk/arch/arm/mm/idmap.c | 1 + trunk/arch/arm/mm/ioremap.c | 2 + trunk/arch/arm/mm/mmu.c | 2 + trunk/arch/arm/mm/pgd.c | 1 + trunk/arch/arm/mm/proc-fa526.S | 1 - trunk/arch/arm/nwfpe/fpa11.c | 1 - trunk/arch/arm/plat-iop/i2c.c | 1 - trunk/arch/arm/plat-iop/pci.c | 1 - trunk/arch/arm/plat-iop/restart.c | 1 + trunk/arch/arm/plat-mxc/avic.c | 2 +- trunk/arch/arm/plat-mxc/cpu.c | 24 + .../arm/plat-mxc/devices/platform-ahci-imx.c | 16 +- trunk/arch/arm/plat-mxc/epit.c | 2 +- .../arm/plat-mxc/include/mach/board-mx31ads.h | 33 - trunk/arch/arm/plat-mxc/include/mach/common.h | 10 + .../arm/plat-mxc/include/mach/debug-macro.S | 2 +- trunk/arch/arm/plat-mxc/include/mach/dma.h | 3 +- .../arm/plat-mxc/include/mach/iomux-mx25.h | 42 +- trunk/arch/arm/plat-mxc/pwm.c | 4 +- trunk/arch/arm/plat-mxc/system.c | 4 +- trunk/arch/arm/plat-mxc/time.c | 2 +- .../arch/arm/plat-nomadik/include/plat/mtu.h | 4 +- trunk/arch/arm/plat-nomadik/timer.c | 33 +- trunk/arch/arm/plat-omap/Kconfig | 3 + trunk/arch/arm/plat-omap/clock.c | 1 - trunk/arch/arm/plat-omap/counter_32k.c | 1 + trunk/arch/arm/plat-omap/debug-leds.c | 1 - trunk/arch/arm/plat-omap/dma.c | 5 +- trunk/arch/arm/plat-omap/dmtimer.c | 21 +- .../plat-omap/include/plat/board-ams-delta.h | 49 +- trunk/arch/arm/plat-omap/include/plat/cpu.h | 9 +- trunk/arch/arm/plat-omap/include/plat/gpio.h | 51 +- .../arm/plat-omap/include/plat/hardware.h | 6 + .../arch/arm/plat-omap/include/plat/keypad.h | 2 + trunk/arch/arm/plat-omap/include/plat/mcspi.h | 3 - trunk/arch/arm/plat-omap/include/plat/mmc.h | 2 - .../arm/plat-omap/include/plat/omap_device.h | 9 +- .../arm/plat-omap/include/plat/omap_hwmod.h | 2 - .../arm/plat-omap/include/plat/remoteproc.h | 57 + .../arch/arm/plat-omap/include/plat/serial.h | 1 - trunk/arch/arm/plat-omap/include/plat/sram.h | 1 + trunk/arch/arm/plat-omap/include/plat/tc.h | 17 - .../arm/plat-omap/include/plat/uncompress.h | 1 + trunk/arch/arm/plat-omap/include/plat/usb.h | 41 + trunk/arch/arm/plat-omap/mailbox.c | 2 +- trunk/arch/arm/plat-omap/mux.c | 5 +- trunk/arch/arm/plat-omap/omap-pm-noop.c | 2 +- trunk/arch/arm/plat-omap/omap_device.c | 46 +- trunk/arch/arm/plat-omap/sram.c | 23 +- trunk/arch/arm/plat-omap/usb.c | 4 + trunk/arch/arm/plat-orion/common.c | 7 +- .../arch/arm/plat-orion/include/plat/audio.h | 1 - trunk/arch/arm/plat-pxa/dma.c | 1 - trunk/arch/arm/plat-s3c24xx/Kconfig | 57 +- trunk/arch/arm/plat-s3c24xx/Makefile | 19 +- trunk/arch/arm/plat-s3c24xx/cpu.c | 1 + trunk/arch/arm/plat-s3c24xx/dma.c | 1 - .../arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c | 36 - .../arm/plat-s3c24xx/spi-bus1-gpd8_9_10.c | 38 - .../arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c | 36 - trunk/arch/arm/plat-s5p/Kconfig | 18 +- trunk/arch/arm/plat-s5p/Makefile | 3 +- trunk/arch/arm/plat-s5p/clock.c | 36 + trunk/arch/arm/plat-s5p/irq-eint.c | 2 +- trunk/arch/arm/plat-s5p/irq-gpioint.c | 2 +- trunk/arch/arm/plat-s5p/irq-pm.c | 25 +- trunk/arch/arm/plat-s5p/sleep.S | 44 +- trunk/arch/arm/plat-samsung/Kconfig | 4 +- trunk/arch/arm/plat-samsung/clock.c | 12 +- trunk/arch/arm/plat-samsung/cpu.c | 1 - trunk/arch/arm/plat-samsung/dev-backlight.c | 4 +- trunk/arch/arm/plat-samsung/devs.c | 81 +- trunk/arch/arm/plat-samsung/dma-ops.c | 2 +- .../plat-samsung/include/plat/audio-simtec.h | 3 - .../arm/plat-samsung/include/plat/clock.h | 22 +- .../arch/arm/plat-samsung/include/plat/cpu.h | 10 + .../arch/arm/plat-samsung/include/plat/devs.h | 4 + .../arm/plat-samsung/include/plat/dma-pl330.h | 16 + .../arm/plat-samsung/include/plat/regs-dma.h | 2 +- .../arm/plat-samsung/include/plat/regs-rtc.h | 81 +- .../include/plat/regs-usb-hsotg-phy.h | 7 +- .../arm/plat-samsung/include/plat/rtc-core.h | 27 + .../arm/plat-samsung/include/plat/s3c2410.h | 2 - .../arm/plat-samsung/include/plat/s3c2443.h | 20 - .../arm/plat-samsung/include/plat/s5p-clock.h | 6 + .../arm/plat-samsung/include/plat/sdhci.h | 2 + .../arm/plat-samsung/include/plat/udc-hs.h | 5 + .../plat-samsung/include/plat/uncompress.h | 2 + trunk/arch/arm/plat-samsung/irq-vic-timer.c | 16 + trunk/arch/arm/plat-samsung/platformdata.c | 2 + trunk/arch/arm/plat-samsung/time.c | 1 - trunk/arch/arm/plat-spear/restart.c | 1 + trunk/arch/arm/plat-versatile/Makefile | 1 - trunk/arch/arm/plat-versatile/localtimer.c | 27 - trunk/arch/arm/vfp/vfpmodule.c | 2 + trunk/arch/avr32/boards/atngw100/setup.c | 1 + trunk/arch/avr32/boards/atstk1000/atstk1002.c | 1 + trunk/arch/avr32/include/asm/atomic.h | 2 +- trunk/arch/avr32/include/asm/barrier.h | 27 + trunk/arch/avr32/include/asm/bitops.h | 1 - trunk/arch/avr32/include/asm/bug.h | 5 + .../avr32/include/asm/{system.h => cmpxchg.h} | 79 +- trunk/arch/avr32/include/asm/exec.h | 13 + trunk/arch/avr32/include/asm/special_insns.h | 13 + trunk/arch/avr32/include/asm/switch_to.h | 46 + trunk/arch/avr32/mach-at32ap/at32ap700x.c | 2 - trunk/arch/avr32/mach-at32ap/cpufreq.c | 1 - .../avr32/mach-at32ap/include/mach/board.h | 13 +- .../arch/avr32/mach-at32ap/include/mach/cpu.h | 3 - trunk/arch/avr32/oprofile/op_model_avr32.c | 1 - trunk/arch/blackfin/include/asm/system.h | 5 - trunk/arch/c6x/include/asm/Kbuild | 1 - trunk/arch/c6x/include/asm/barrier.h | 27 + trunk/arch/c6x/include/asm/bitops.h | 1 - trunk/arch/c6x/include/asm/bug.h | 23 + trunk/arch/c6x/include/asm/cmpxchg.h | 68 + trunk/arch/c6x/include/asm/exec.h | 6 + trunk/arch/c6x/include/asm/processor.h | 9 + trunk/arch/c6x/include/asm/setup.h | 1 + trunk/arch/c6x/include/asm/special_insns.h | 63 + trunk/arch/c6x/include/asm/switch_to.h | 33 + trunk/arch/c6x/include/asm/system.h | 168 - trunk/arch/c6x/kernel/irq.c | 1 + trunk/arch/c6x/kernel/setup.c | 1 + trunk/arch/c6x/kernel/soc.c | 1 - trunk/arch/c6x/kernel/time.c | 1 + trunk/arch/c6x/kernel/traps.c | 1 + trunk/arch/c6x/platforms/timer64.c | 1 + trunk/arch/cris/arch-v10/drivers/ds1302.c | 1 - trunk/arch/cris/arch-v10/drivers/gpio.c | 1 - trunk/arch/cris/arch-v10/drivers/i2c.c | 1 - trunk/arch/cris/arch-v10/drivers/pcf8563.c | 1 - .../arch/cris/arch-v10/drivers/sync_serial.c | 1 - trunk/arch/cris/arch-v10/kernel/debugport.c | 1 - trunk/arch/cris/arch-v10/kernel/dma.c | 1 + .../cris/arch-v10/kernel/io_interface_mux.c | 1 + trunk/arch/cris/arch-v10/kernel/process.c | 1 + trunk/arch/cris/arch-v10/kernel/ptrace.c | 1 - trunk/arch/cris/arch-v10/kernel/setup.c | 1 + trunk/arch/cris/arch-v10/kernel/signal.c | 1 + trunk/arch/cris/arch-v10/kernel/traps.c | 1 + trunk/arch/cris/arch-v32/drivers/i2c.c | 1 - .../arch/cris/arch-v32/drivers/mach-a3/gpio.c | 1 - .../arch/cris/arch-v32/drivers/mach-fs/gpio.c | 1 - trunk/arch/cris/arch-v32/kernel/debugport.c | 1 - trunk/arch/cris/arch-v32/kernel/fasttimer.c | 1 - trunk/arch/cris/arch-v32/kernel/ptrace.c | 1 - trunk/arch/cris/arch-v32/mach-a3/dma.c | 1 - trunk/arch/cris/arch-v32/mach-fs/dma.c | 1 - trunk/arch/cris/include/arch-v10/arch/elf.h | 2 + trunk/arch/cris/include/arch-v32/arch/elf.h | 2 + .../arch/cris/include/arch-v32/arch/system.h | 10 - trunk/arch/cris/include/asm/atomic.h | 2 +- trunk/arch/cris/include/asm/barrier.h | 25 + trunk/arch/cris/include/asm/bitops.h | 1 - .../cris/include/asm/{system.h => cmpxchg.h} | 52 +- trunk/arch/cris/include/asm/exec.h | 6 + trunk/arch/cris/include/asm/processor.h | 11 +- trunk/arch/cris/include/asm/switch_to.h | 12 + trunk/arch/cris/kernel/irq.c | 1 + trunk/arch/cris/kernel/process.c | 1 - trunk/arch/cris/kernel/ptrace.c | 1 - trunk/arch/cris/kernel/setup.c | 1 + trunk/arch/cris/kernel/traps.c | 1 + trunk/arch/cris/mm/fault.c | 1 + trunk/arch/frv/include/asm/atomic.h | 57 +- trunk/arch/frv/include/asm/barrier.h | 29 + trunk/arch/frv/include/asm/bug.h | 2 + .../frv/include/asm/{system.h => cmpxchg.h} | 98 +- trunk/arch/frv/include/asm/exec.h | 17 + trunk/arch/frv/include/asm/switch_to.h | 35 + trunk/arch/frv/kernel/debug-stub.c | 1 - trunk/arch/frv/kernel/gdb-io.c | 1 - trunk/arch/frv/kernel/gdb-stub.c | 1 - trunk/arch/frv/kernel/irq-mb93091.c | 1 - trunk/arch/frv/kernel/irq-mb93093.c | 1 - trunk/arch/frv/kernel/irq-mb93493.c | 1 - trunk/arch/frv/kernel/irq.c | 1 - trunk/arch/frv/kernel/process.c | 1 - trunk/arch/frv/kernel/ptrace.c | 1 - trunk/arch/frv/kernel/traps.c | 1 - trunk/arch/frv/mm/fault.c | 1 - trunk/arch/frv/mm/init.c | 1 - trunk/arch/frv/mm/kmap.c | 1 - trunk/arch/h8300/include/asm/atomic.h | 4 +- trunk/arch/h8300/include/asm/barrier.h | 27 + trunk/arch/h8300/include/asm/bitops.h | 1 - trunk/arch/h8300/include/asm/bug.h | 4 + trunk/arch/h8300/include/asm/cmpxchg.h | 60 + trunk/arch/h8300/include/asm/exec.h | 6 + trunk/arch/h8300/include/asm/processor.h | 5 + trunk/arch/h8300/include/asm/switch_to.h | 50 + trunk/arch/h8300/include/asm/system.h | 140 - trunk/arch/h8300/kernel/irq.c | 1 - trunk/arch/h8300/kernel/process.c | 1 - trunk/arch/h8300/kernel/ptrace.c | 1 - trunk/arch/h8300/kernel/traps.c | 1 - trunk/arch/h8300/mm/fault.c | 1 - trunk/arch/h8300/mm/init.c | 1 - trunk/arch/h8300/mm/kmap.c | 1 - trunk/arch/h8300/mm/memory.c | 1 - trunk/arch/hexagon/include/asm/atomic.h | 1 + trunk/arch/hexagon/include/asm/barrier.h | 41 + trunk/arch/hexagon/include/asm/bitops.h | 1 - .../include/asm/{system.h => cmpxchg.h} | 46 +- trunk/arch/hexagon/include/asm/exec.h | 28 + trunk/arch/hexagon/include/asm/switch_to.h | 34 + trunk/arch/hexagon/kernel/ptrace.c | 1 - trunk/arch/hexagon/kernel/smp.c | 1 - trunk/arch/hexagon/kernel/vm_events.c | 1 - trunk/arch/ia64/dig/setup.c | 2 +- trunk/arch/ia64/hp/common/sba_iommu.c | 1 - trunk/arch/ia64/hp/sim/boot/bootloader.c | 1 - trunk/arch/ia64/hp/sim/boot/fw-emu.c | 1 + trunk/arch/ia64/hp/sim/simeth.c | 1 - trunk/arch/ia64/include/asm/acpi.h | 1 - trunk/arch/ia64/include/asm/atomic.h | 1 - trunk/arch/ia64/include/asm/auxvec.h | 2 + trunk/arch/ia64/include/asm/barrier.h | 68 + trunk/arch/ia64/include/asm/exec.h | 14 + trunk/arch/ia64/include/asm/futex.h | 1 - trunk/arch/ia64/include/asm/io.h | 1 - trunk/arch/ia64/include/asm/irqflags.h | 2 + trunk/arch/ia64/include/asm/kexec.h | 1 + trunk/arch/ia64/include/asm/kvm.h | 4 + trunk/arch/ia64/include/asm/kvm_host.h | 3 + trunk/arch/ia64/include/asm/mca_asm.h | 2 + trunk/arch/ia64/include/asm/page.h | 10 + trunk/arch/ia64/include/asm/pci.h | 8 + trunk/arch/ia64/include/asm/pgtable.h | 1 - trunk/arch/ia64/include/asm/processor.h | 8 + trunk/arch/ia64/include/asm/sal.h | 1 - trunk/arch/ia64/include/asm/setup.h | 18 + trunk/arch/ia64/include/asm/sn/pda.h | 1 - trunk/arch/ia64/include/asm/spinlock.h | 1 - trunk/arch/ia64/include/asm/switch_to.h | 87 + trunk/arch/ia64/include/asm/system.h | 203 -- trunk/arch/ia64/include/asm/uv/uv.h | 1 - trunk/arch/ia64/kernel/acpi.c | 7 +- trunk/arch/ia64/kernel/efi.c | 1 + trunk/arch/ia64/kernel/fsys.S | 1 - trunk/arch/ia64/kernel/gate.S | 3 +- trunk/arch/ia64/kernel/gate.lds.S | 3 +- trunk/arch/ia64/kernel/head.S | 1 - trunk/arch/ia64/kernel/iosapic.c | 1 - trunk/arch/ia64/kernel/irq_ia64.c | 9 +- trunk/arch/ia64/kernel/ivt.S | 1 - trunk/arch/ia64/kernel/machvec.c | 1 - trunk/arch/ia64/kernel/mca.c | 7 +- trunk/arch/ia64/kernel/mca_drv.c | 1 - trunk/arch/ia64/kernel/msi_ia64.c | 4 +- trunk/arch/ia64/kernel/patch.c | 1 - trunk/arch/ia64/kernel/pci-dma.c | 1 - trunk/arch/ia64/kernel/perfmon.c | 1 - trunk/arch/ia64/kernel/ptrace.c | 1 - trunk/arch/ia64/kernel/setup.c | 3 +- trunk/arch/ia64/kernel/smp.c | 3 +- trunk/arch/ia64/kernel/smpboot.c | 20 +- trunk/arch/ia64/kernel/time.c | 1 - trunk/arch/ia64/kernel/topology.c | 3 +- trunk/arch/ia64/kernel/traps.c | 1 + trunk/arch/ia64/kernel/uncached.c | 1 - trunk/arch/ia64/kernel/unwind.c | 1 - trunk/arch/ia64/kernel/vmlinux.lds.S | 1 - trunk/arch/ia64/kvm/kvm-ia64.c | 25 +- trunk/arch/ia64/mm/fault.c | 1 - trunk/arch/ia64/mm/init.c | 1 - trunk/arch/ia64/oprofile/backtrace.c | 1 - trunk/arch/ia64/pci/pci.c | 1 - trunk/arch/ia64/sn/kernel/setup.c | 2 +- trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c | 1 - trunk/arch/ia64/sn/kernel/sn2/sn2_smp.c | 1 - trunk/arch/ia64/sn/kernel/sn2/timer.c | 1 - trunk/arch/ia64/sn/kernel/tiocx.c | 1 - trunk/arch/ia64/xen/xensetup.S | 1 - trunk/arch/m32r/include/asm/atomic.h | 3 +- trunk/arch/m32r/include/asm/barrier.h | 94 + trunk/arch/m32r/include/asm/bitops.h | 3 +- trunk/arch/m32r/include/asm/cmpxchg.h | 221 ++ trunk/arch/m32r/include/asm/dcache_clear.h | 29 + trunk/arch/m32r/include/asm/exec.h | 14 + trunk/arch/m32r/include/asm/local.h | 1 - trunk/arch/m32r/include/asm/spinlock.h | 1 + trunk/arch/m32r/include/asm/switch_to.h | 51 + trunk/arch/m32r/include/asm/system.h | 367 -- trunk/arch/m32r/kernel/ptrace.c | 1 - trunk/arch/m32r/kernel/traps.c | 1 - trunk/arch/m32r/mm/fault-nommu.c | 1 - trunk/arch/m32r/mm/fault.c | 1 - trunk/arch/m32r/platforms/m32104ut/setup.c | 1 - trunk/arch/m32r/platforms/m32700ut/setup.c | 1 - trunk/arch/m32r/platforms/mappi/setup.c | 1 - trunk/arch/m32r/platforms/mappi2/setup.c | 1 - trunk/arch/m32r/platforms/mappi3/setup.c | 1 - trunk/arch/m32r/platforms/oaks32r/setup.c | 1 - trunk/arch/m32r/platforms/opsput/setup.c | 1 - trunk/arch/m32r/platforms/usrv/setup.c | 1 - trunk/arch/m68k/amiga/amisound.c | 1 - trunk/arch/m68k/amiga/config.c | 1 - trunk/arch/m68k/apollo/config.c | 1 - trunk/arch/m68k/atari/ataints.c | 1 - trunk/arch/m68k/atari/atasound.c | 1 - trunk/arch/m68k/atari/config.c | 1 - trunk/arch/m68k/bvme6000/config.c | 1 - trunk/arch/m68k/bvme6000/rtc.c | 1 - trunk/arch/m68k/hp300/time.c | 1 - trunk/arch/m68k/include/asm/atomic.h | 2 +- trunk/arch/m68k/include/asm/barrier.h | 20 + .../m68k/include/asm/{system.h => cmpxchg.h} | 95 +- trunk/arch/m68k/include/asm/exec.h | 6 + trunk/arch/m68k/include/asm/sun3xflop.h | 1 - trunk/arch/m68k/include/asm/switch_to.h | 41 + trunk/arch/m68k/kernel/ints.c | 1 - trunk/arch/m68k/kernel/irq.c | 1 - trunk/arch/m68k/kernel/process.c | 1 - trunk/arch/m68k/kernel/ptrace.c | 1 - trunk/arch/m68k/kernel/traps.c | 1 - trunk/arch/m68k/kernel/vectors.c | 1 - trunk/arch/m68k/mac/config.c | 1 - trunk/arch/m68k/mac/misc.c | 1 - trunk/arch/m68k/mm/fault.c | 1 - trunk/arch/m68k/mm/init_mm.c | 1 - trunk/arch/m68k/mm/init_no.c | 1 - trunk/arch/m68k/mm/kmap.c | 1 - trunk/arch/m68k/mm/memory.c | 1 - trunk/arch/m68k/mm/motorola.c | 1 - trunk/arch/m68k/mm/sun3mmu.c | 1 - trunk/arch/m68k/mvme147/config.c | 1 - trunk/arch/m68k/mvme16x/config.c | 1 - trunk/arch/m68k/mvme16x/rtc.c | 1 - trunk/arch/m68k/platform/68328/config.c | 1 - trunk/arch/m68k/platform/68328/timers.c | 1 - trunk/arch/m68k/platform/68360/config.c | 1 - trunk/arch/m68k/platform/68EZ328/config.c | 1 - trunk/arch/m68k/platform/68VZ328/config.c | 1 - trunk/arch/m68k/q40/config.c | 1 - trunk/arch/m68k/q40/q40ints.c | 1 - trunk/arch/m68k/sun3/intersil.c | 1 - trunk/arch/m68k/sun3/mmu_emu.c | 1 - trunk/arch/m68k/sun3/prom/console.c | 1 - trunk/arch/m68k/sun3x/config.c | 1 - trunk/arch/m68k/sun3x/time.c | 1 - trunk/arch/microblaze/Kconfig | 33 +- trunk/arch/microblaze/boot/Makefile | 2 +- trunk/arch/microblaze/include/asm/atomic.h | 1 + trunk/arch/microblaze/include/asm/barrier.h | 27 + trunk/arch/microblaze/include/asm/cmpxchg.h | 40 + trunk/arch/microblaze/include/asm/exec.h | 14 + trunk/arch/microblaze/include/asm/fixmap.h | 109 + trunk/arch/microblaze/include/asm/highmem.h | 96 + trunk/arch/microblaze/include/asm/mmu.h | 12 + trunk/arch/microblaze/include/asm/page.h | 4 +- trunk/arch/microblaze/include/asm/pgtable.h | 3 +- trunk/arch/microblaze/include/asm/processor.h | 11 +- trunk/arch/microblaze/include/asm/setup.h | 9 +- trunk/arch/microblaze/include/asm/switch_to.h | 24 + trunk/arch/microblaze/include/asm/system.h | 97 - trunk/arch/microblaze/include/asm/uaccess.h | 2 +- trunk/arch/microblaze/kernel/cpu/cpuinfo.c | 2 + trunk/arch/microblaze/kernel/cpu/pvr.c | 1 - trunk/arch/microblaze/kernel/early_printk.c | 16 +- trunk/arch/microblaze/kernel/head.S | 129 +- .../microblaze/kernel/hw_exception_handler.S | 13 +- trunk/arch/microblaze/kernel/intc.c | 4 +- .../arch/microblaze/kernel/microblaze_ksyms.c | 1 - trunk/arch/microblaze/kernel/misc.S | 13 +- trunk/arch/microblaze/kernel/process.c | 1 - trunk/arch/microblaze/kernel/prom.c | 1 - trunk/arch/microblaze/kernel/setup.c | 25 +- trunk/arch/microblaze/kernel/timer.c | 7 +- trunk/arch/microblaze/kernel/traps.c | 1 - trunk/arch/microblaze/kernel/vmlinux.lds.S | 2 +- trunk/arch/microblaze/lib/memcpy.c | 1 - trunk/arch/microblaze/mm/Makefile | 1 + trunk/arch/microblaze/mm/fault.c | 1 - trunk/arch/microblaze/mm/highmem.c | 88 + trunk/arch/microblaze/mm/init.c | 224 +- trunk/arch/microblaze/mm/pgtable.c | 20 +- trunk/arch/mips/cavium-octeon/setup.c | 1 - trunk/arch/mips/cavium-octeon/smp.c | 2 +- trunk/arch/mips/dec/ecc-berr.c | 1 - trunk/arch/mips/dec/kn01-berr.c | 1 - trunk/arch/mips/dec/kn02xa-berr.c | 1 - trunk/arch/mips/dec/wbflush.c | 2 +- trunk/arch/mips/emma/markeins/irq.c | 1 - trunk/arch/mips/fw/arc/misc.c | 1 - trunk/arch/mips/include/asm/atomic.h | 2 +- trunk/arch/mips/include/asm/barrier.h | 2 + trunk/arch/mips/include/asm/cmpxchg.h | 124 + trunk/arch/mips/include/asm/dma.h | 1 - trunk/arch/mips/include/asm/exec.h | 17 + .../mips/include/asm/mach-au1x00/au1000_dma.h | 1 - trunk/arch/mips/include/asm/processor.h | 7 +- trunk/arch/mips/include/asm/setup.h | 11 + trunk/arch/mips/include/asm/switch_to.h | 85 + trunk/arch/mips/include/asm/system.h | 235 -- trunk/arch/mips/include/asm/txx9/jmr3927.h | 1 - trunk/arch/mips/kernel/cpu-bugs64.c | 2 +- trunk/arch/mips/kernel/cpu-probe.c | 1 - trunk/arch/mips/kernel/irq-rm7000.c | 1 - trunk/arch/mips/kernel/irq-rm9000.c | 1 - trunk/arch/mips/kernel/irq.c | 1 - trunk/arch/mips/kernel/irq_cpu.c | 1 - trunk/arch/mips/kernel/mips-mt.c | 1 - trunk/arch/mips/kernel/process.c | 1 - trunk/arch/mips/kernel/ptrace.c | 1 - trunk/arch/mips/kernel/ptrace32.c | 1 - trunk/arch/mips/kernel/rtlx.c | 1 - trunk/arch/mips/kernel/setup.c | 1 - trunk/arch/mips/kernel/signal.c | 1 + trunk/arch/mips/kernel/signal32.c | 2 +- trunk/arch/mips/kernel/signal_n32.c | 1 - trunk/arch/mips/kernel/smp-bmips.c | 1 - trunk/arch/mips/kernel/smp-cmp.c | 1 - trunk/arch/mips/kernel/smp-mt.c | 1 - trunk/arch/mips/kernel/smp.c | 2 +- trunk/arch/mips/kernel/smtc-proc.c | 1 - trunk/arch/mips/kernel/smtc.c | 1 - trunk/arch/mips/kernel/spram.c | 1 - trunk/arch/mips/kernel/syscall.c | 1 + trunk/arch/mips/kernel/traps.c | 1 - trunk/arch/mips/kernel/unaligned.c | 1 - trunk/arch/mips/kernel/vpe.c | 1 - trunk/arch/mips/lasat/reset.c | 1 - trunk/arch/mips/math-emu/dsemul.c | 1 - trunk/arch/mips/mipssim/sim_smtc.c | 1 - trunk/arch/mips/mipssim/sim_time.c | 1 + trunk/arch/mips/mm/c-octeon.c | 1 - trunk/arch/mips/mm/c-r3k.c | 1 - trunk/arch/mips/mm/c-r4k.c | 1 - trunk/arch/mips/mm/c-tx39.c | 1 - trunk/arch/mips/mm/fault.c | 1 - trunk/arch/mips/mm/page.c | 1 - trunk/arch/mips/mm/sc-ip22.c | 1 - trunk/arch/mips/mm/sc-mips.c | 1 - trunk/arch/mips/mm/sc-r5k.c | 1 - trunk/arch/mips/mm/tlb-r3k.c | 1 - trunk/arch/mips/mm/tlb-r4k.c | 1 - trunk/arch/mips/mm/tlb-r8k.c | 1 - trunk/arch/mips/mm/tlbex.c | 1 + trunk/arch/mips/mti-malta/malta-init.c | 1 - trunk/arch/mips/mti-malta/malta-int.c | 1 + trunk/arch/mips/mti-malta/malta-time.c | 1 + trunk/arch/mips/netlogic/common/irq.c | 1 - .../mips/pmc-sierra/msp71xx/msp_irq_cic.c | 1 - .../mips/pmc-sierra/msp71xx/msp_irq_per.c | 1 - .../mips/pmc-sierra/msp71xx/msp_irq_slp.c | 1 - trunk/arch/mips/pmc-sierra/yosemite/irq.c | 1 - trunk/arch/mips/pmc-sierra/yosemite/prom.c | 1 - trunk/arch/mips/pnx833x/common/interrupts.c | 1 + trunk/arch/mips/powertv/asic/asic_int.c | 1 + trunk/arch/mips/powertv/asic/irq_asic.c | 1 - trunk/arch/mips/powertv/init.c | 1 - trunk/arch/mips/rb532/irq.c | 1 - trunk/arch/mips/sgi-ip22/ip22-berr.c | 1 - trunk/arch/mips/sgi-ip22/ip22-reset.c | 1 - trunk/arch/mips/sgi-ip22/ip28-berr.c | 1 - trunk/arch/mips/sgi-ip27/ip27-irq.c | 1 - trunk/arch/mips/sgi-ip27/ip27-reset.c | 1 - trunk/arch/mips/sgi-ip32/ip32-irq.c | 1 - trunk/arch/mips/sgi-ip32/ip32-reset.c | 1 - trunk/arch/mips/sibyte/bcm1480/irq.c | 1 - trunk/arch/mips/sibyte/common/sb_tbprof.c | 1 - trunk/arch/mips/sibyte/sb1250/bus_watcher.c | 1 - trunk/arch/mips/sibyte/sb1250/irq.c | 1 - trunk/arch/mips/sni/reset.c | 1 - trunk/arch/mips/vr41xx/common/irq.c | 1 - trunk/arch/mips/vr41xx/common/pmu.c | 1 - trunk/arch/mn10300/include/asm/atomic.h | 109 +- trunk/arch/mn10300/include/asm/barrier.h | 37 + trunk/arch/mn10300/include/asm/cmpxchg.h | 115 + trunk/arch/mn10300/include/asm/dma.h | 1 - trunk/arch/mn10300/include/asm/exec.h | 16 + trunk/arch/mn10300/include/asm/switch_to.h | 49 + trunk/arch/mn10300/include/asm/system.h | 102 - trunk/arch/mn10300/kernel/entry.S | 1 - trunk/arch/mn10300/kernel/fpu.c | 1 - trunk/arch/mn10300/kernel/gdb-io-serial.c | 1 - trunk/arch/mn10300/kernel/gdb-io-ttysm.c | 1 - trunk/arch/mn10300/kernel/gdb-stub.c | 1 - trunk/arch/mn10300/kernel/mn10300-serial.c | 1 - trunk/arch/mn10300/kernel/mn10300-watchdog.c | 1 - trunk/arch/mn10300/kernel/process.c | 1 - trunk/arch/mn10300/kernel/ptrace.c | 1 - trunk/arch/mn10300/kernel/setup.c | 1 - trunk/arch/mn10300/kernel/smp-low.S | 2 +- trunk/arch/mn10300/kernel/smp.c | 1 - trunk/arch/mn10300/kernel/traps.c | 1 - trunk/arch/mn10300/lib/bitops.c | 1 - trunk/arch/mn10300/mm/fault.c | 1 - trunk/arch/mn10300/mm/init.c | 1 - trunk/arch/mn10300/mm/misalignment.c | 1 - trunk/arch/mn10300/mm/pgtable.c | 1 - trunk/arch/mn10300/mm/tlb-smp.c | 1 - trunk/arch/mn10300/proc-mn2ws0050/proc-init.c | 1 - trunk/arch/openrisc/include/asm/Kbuild | 3 + trunk/arch/openrisc/include/asm/system.h | 35 - trunk/arch/openrisc/kernel/idle.c | 1 - trunk/arch/openrisc/kernel/process.c | 1 - trunk/arch/openrisc/kernel/prom.c | 1 - trunk/arch/openrisc/kernel/ptrace.c | 1 - trunk/arch/openrisc/kernel/setup.c | 1 - trunk/arch/openrisc/kernel/traps.c | 1 - trunk/arch/openrisc/mm/init.c | 1 - trunk/arch/openrisc/mm/tlb.c | 1 - trunk/arch/parisc/include/asm/atomic.h | 1 - trunk/arch/parisc/include/asm/barrier.h | 35 + trunk/arch/parisc/include/asm/delay.h | 2 +- trunk/arch/parisc/include/asm/dma.h | 1 - trunk/arch/parisc/include/asm/exec.h | 6 + trunk/arch/parisc/include/asm/ldcw.h | 48 + trunk/arch/parisc/include/asm/processor.h | 2 +- trunk/arch/parisc/include/asm/psw.h | 41 + trunk/arch/parisc/include/asm/special_insns.h | 40 + trunk/arch/parisc/include/asm/spinlock.h | 1 - trunk/arch/parisc/include/asm/switch_to.h | 12 + trunk/arch/parisc/include/asm/system.h | 165 - trunk/arch/parisc/include/asm/thread_info.h | 1 + trunk/arch/parisc/include/asm/timex.h | 1 - trunk/arch/parisc/include/asm/uaccess.h | 1 - trunk/arch/parisc/kernel/cache.c | 1 - trunk/arch/parisc/kernel/firmware.c | 1 - trunk/arch/parisc/kernel/pci.c | 1 - trunk/arch/parisc/kernel/ptrace.c | 1 - trunk/arch/parisc/kernel/smp.c | 1 - trunk/arch/parisc/kernel/traps.c | 1 - trunk/arch/parisc/lib/bitops.c | 1 - trunk/arch/powerpc/boot/.gitignore | 1 - trunk/arch/powerpc/include/asm/atomic.h | 8 +- trunk/arch/powerpc/include/asm/auxvec.h | 2 + trunk/arch/powerpc/include/asm/barrier.h | 68 + trunk/arch/powerpc/include/asm/bug.h | 11 + trunk/arch/powerpc/include/asm/cache.h | 16 + trunk/arch/powerpc/include/asm/cmpxchg.h | 309 ++ trunk/arch/powerpc/include/asm/debug.h | 56 + trunk/arch/powerpc/include/asm/dma.h | 1 - trunk/arch/powerpc/include/asm/exec.h | 9 + .../arch/powerpc/include/asm/hw_breakpoint.h | 2 +- trunk/arch/powerpc/include/asm/iommu.h | 1 - trunk/arch/powerpc/include/asm/irq.h | 6 - trunk/arch/powerpc/include/asm/kvm.h | 46 +- trunk/arch/powerpc/include/asm/kvm_book3s.h | 98 +- .../arch/powerpc/include/asm/kvm_book3s_32.h | 6 +- .../arch/powerpc/include/asm/kvm_book3s_64.h | 180 +- trunk/arch/powerpc/include/asm/kvm_e500.h | 52 +- trunk/arch/powerpc/include/asm/kvm_host.h | 90 +- trunk/arch/powerpc/include/asm/kvm_para.h | 41 +- trunk/arch/powerpc/include/asm/kvm_ppc.h | 25 +- trunk/arch/powerpc/include/asm/machdep.h | 4 +- trunk/arch/powerpc/include/asm/mmu-book3e.h | 6 +- trunk/arch/powerpc/include/asm/mmu-hash64.h | 14 +- trunk/arch/powerpc/include/asm/pci-bridge.h | 16 +- .../powerpc/include/asm/perf_event_server.h | 2 + trunk/arch/powerpc/include/asm/ppc-opcode.h | 4 +- trunk/arch/powerpc/include/asm/processor.h | 30 + trunk/arch/powerpc/include/asm/reg.h | 5 + trunk/arch/powerpc/include/asm/reg_booke.h | 5 + trunk/arch/powerpc/include/asm/rtas.h | 36 +- trunk/arch/powerpc/include/asm/runlatch.h | 45 + trunk/arch/powerpc/include/asm/setup.h | 24 +- trunk/arch/powerpc/include/asm/smp.h | 1 - trunk/arch/powerpc/include/asm/switch_to.h | 65 + trunk/arch/powerpc/include/asm/system.h | 592 ---- trunk/arch/powerpc/include/asm/udbg.h | 1 - trunk/arch/powerpc/include/asm/vio.h | 10 +- trunk/arch/powerpc/kernel/align.c | 2 +- trunk/arch/powerpc/kernel/asm-offsets.c | 16 +- trunk/arch/powerpc/kernel/cputable.c | 1 + trunk/arch/powerpc/kernel/crash.c | 2 +- trunk/arch/powerpc/kernel/exceptions-64s.S | 8 +- trunk/arch/powerpc/kernel/idle.c | 2 +- trunk/arch/powerpc/kernel/irq.c | 10 +- trunk/arch/powerpc/kernel/kprobes.c | 1 - trunk/arch/powerpc/kernel/kvm.c | 307 +- trunk/arch/powerpc/kernel/kvm_emul.S | 112 +- trunk/arch/powerpc/kernel/lparcfg.c | 1 - trunk/arch/powerpc/kernel/ppc_ksyms.c | 2 +- trunk/arch/powerpc/kernel/process.c | 4 +- trunk/arch/powerpc/kernel/prom.c | 1 - trunk/arch/powerpc/kernel/prom_init.c | 3 +- trunk/arch/powerpc/kernel/ptrace.c | 2 +- trunk/arch/powerpc/kernel/ptrace32.c | 2 +- trunk/arch/powerpc/kernel/rtas.c | 35 +- trunk/arch/powerpc/kernel/setup-common.c | 1 - trunk/arch/powerpc/kernel/setup_32.c | 1 - trunk/arch/powerpc/kernel/setup_64.c | 3 +- trunk/arch/powerpc/kernel/signal.c | 1 + trunk/arch/powerpc/kernel/signal_32.c | 1 + trunk/arch/powerpc/kernel/signal_64.c | 1 + trunk/arch/powerpc/kernel/smp.c | 2 +- trunk/arch/powerpc/kernel/softemu8xx.c | 1 - trunk/arch/powerpc/kernel/swsusp.c | 2 +- trunk/arch/powerpc/kernel/swsusp_64.c | 1 - trunk/arch/powerpc/kernel/sys_ppc32.c | 1 + trunk/arch/powerpc/kernel/sysfs.c | 1 - trunk/arch/powerpc/kernel/traps.c | 3 +- trunk/arch/powerpc/kernel/udbg.c | 3 - trunk/arch/powerpc/kernel/vdso.c | 5 +- trunk/arch/powerpc/kernel/vio.c | 12 +- trunk/arch/powerpc/kvm/Kconfig | 1 + trunk/arch/powerpc/kvm/book3s.c | 57 +- trunk/arch/powerpc/kvm/book3s_32_mmu_host.c | 21 +- trunk/arch/powerpc/kvm/book3s_64_mmu_host.c | 66 +- trunk/arch/powerpc/kvm/book3s_64_mmu_hv.c | 919 ++++- trunk/arch/powerpc/kvm/book3s_emulate.c | 8 +- trunk/arch/powerpc/kvm/book3s_hv.c | 466 ++- trunk/arch/powerpc/kvm/book3s_hv_builtin.c | 209 +- trunk/arch/powerpc/kvm/book3s_hv_rm_mmu.c | 835 ++++- trunk/arch/powerpc/kvm/book3s_hv_rmhandlers.S | 176 +- .../arch/powerpc/kvm/book3s_paired_singles.c | 9 +- trunk/arch/powerpc/kvm/book3s_pr.c | 178 +- trunk/arch/powerpc/kvm/booke.c | 150 +- trunk/arch/powerpc/kvm/booke.h | 4 + trunk/arch/powerpc/kvm/booke_emulate.c | 23 +- trunk/arch/powerpc/kvm/booke_interrupts.S | 18 +- trunk/arch/powerpc/kvm/e500.c | 32 +- trunk/arch/powerpc/kvm/e500_emulate.c | 38 +- trunk/arch/powerpc/kvm/e500_tlb.c | 775 +++-- trunk/arch/powerpc/kvm/e500_tlb.h | 80 +- trunk/arch/powerpc/kvm/emulate.c | 61 +- trunk/arch/powerpc/kvm/powerpc.c | 148 +- trunk/arch/powerpc/kvm/trace.h | 62 +- trunk/arch/powerpc/lib/alloc.c | 2 +- trunk/arch/powerpc/lib/copyuser_power7_vmx.c | 1 + trunk/arch/powerpc/mm/44x_mmu.c | 1 - trunk/arch/powerpc/mm/fault.c | 2 +- trunk/arch/powerpc/mm/hash_utils_64.c | 1 - trunk/arch/powerpc/mm/hugetlbpage.c | 5 +- trunk/arch/powerpc/mm/init_32.c | 1 - trunk/arch/powerpc/mm/init_64.c | 1 - trunk/arch/powerpc/mm/numa.c | 2 +- trunk/arch/powerpc/mm/pgtable_32.c | 1 + trunk/arch/powerpc/mm/pgtable_64.c | 1 - trunk/arch/powerpc/oprofile/common.c | 1 - trunk/arch/powerpc/oprofile/op_model_7450.c | 1 - trunk/arch/powerpc/oprofile/op_model_cell.c | 1 - .../arch/powerpc/oprofile/op_model_fsl_emb.c | 1 - trunk/arch/powerpc/oprofile/op_model_power4.c | 1 - trunk/arch/powerpc/oprofile/op_model_rs64.c | 1 - trunk/arch/powerpc/perf/core-book3s.c | 46 +- trunk/arch/powerpc/perf/power4-pmu.c | 1 + trunk/arch/powerpc/perf/ppc970-pmu.c | 1 + .../arch/powerpc/platforms/52xx/lite5200_pm.c | 1 + trunk/arch/powerpc/platforms/82xx/pq2.c | 1 - trunk/arch/powerpc/platforms/83xx/km83xx.c | 1 - .../arch/powerpc/platforms/83xx/mpc832x_mds.c | 1 - .../arch/powerpc/platforms/83xx/mpc834x_itx.c | 1 - .../arch/powerpc/platforms/83xx/mpc834x_mds.c | 1 - .../arch/powerpc/platforms/83xx/mpc836x_mds.c | 1 - trunk/arch/powerpc/platforms/83xx/sbc834x.c | 1 - trunk/arch/powerpc/platforms/83xx/suspend.c | 1 + .../arch/powerpc/platforms/85xx/corenet_ds.c | 1 - trunk/arch/powerpc/platforms/85xx/ge_imp3a.c | 1 - trunk/arch/powerpc/platforms/85xx/ksi8560.c | 1 - .../arch/powerpc/platforms/85xx/mpc8536_ds.c | 1 - .../arch/powerpc/platforms/85xx/mpc85xx_ads.c | 1 - .../arch/powerpc/platforms/85xx/mpc85xx_cds.c | 1 - .../arch/powerpc/platforms/85xx/mpc85xx_ds.c | 1 - .../arch/powerpc/platforms/85xx/mpc85xx_mds.c | 1 - .../arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 1 - trunk/arch/powerpc/platforms/85xx/p1010rdb.c | 1 - trunk/arch/powerpc/platforms/85xx/p1023_rds.c | 1 - trunk/arch/powerpc/platforms/85xx/p2041_rdb.c | 1 - trunk/arch/powerpc/platforms/85xx/p3041_ds.c | 1 - trunk/arch/powerpc/platforms/85xx/p4080_ds.c | 1 - trunk/arch/powerpc/platforms/85xx/p5020_ds.c | 1 - trunk/arch/powerpc/platforms/85xx/sbc8548.c | 1 - trunk/arch/powerpc/platforms/85xx/sbc8560.c | 1 - trunk/arch/powerpc/platforms/85xx/socrates.c | 1 - trunk/arch/powerpc/platforms/85xx/stx_gp3.c | 1 - trunk/arch/powerpc/platforms/85xx/tqm85xx.c | 1 - .../arch/powerpc/platforms/85xx/xes_mpc85xx.c | 1 - trunk/arch/powerpc/platforms/86xx/gef_ppc9a.c | 1 - .../arch/powerpc/platforms/86xx/gef_sbc310.c | 1 - .../arch/powerpc/platforms/86xx/gef_sbc610.c | 1 - .../powerpc/platforms/86xx/mpc8610_hpcd.c | 1 - .../powerpc/platforms/86xx/mpc86xx_hpcn.c | 1 - trunk/arch/powerpc/platforms/86xx/pic.c | 1 - trunk/arch/powerpc/platforms/86xx/sbc8641d.c | 1 - .../powerpc/platforms/8xx/mpc86xads_setup.c | 1 - .../powerpc/platforms/8xx/mpc885ads_setup.c | 1 - .../arch/powerpc/platforms/8xx/tqm8xx_setup.c | 1 - trunk/arch/powerpc/platforms/cell/beat_htab.c | 2 - trunk/arch/powerpc/platforms/cell/smp.c | 1 - .../arch/powerpc/platforms/embedded6xx/c2k.c | 1 - .../powerpc/platforms/embedded6xx/holly.c | 1 - .../platforms/embedded6xx/mpc7448_hpc2.c | 1 - .../powerpc/platforms/embedded6xx/prpmc2800.c | 1 - .../platforms/embedded6xx/storcenter.c | 1 - trunk/arch/powerpc/platforms/fsl_uli1575.c | 1 - trunk/arch/powerpc/platforms/maple/setup.c | 1 - trunk/arch/powerpc/platforms/maple/time.c | 1 - trunk/arch/powerpc/platforms/pasemi/setup.c | 2 +- .../powerpc/platforms/powermac/bootx_init.c | 1 + .../powerpc/platforms/powermac/cpufreq_32.c | 2 +- trunk/arch/powerpc/platforms/powermac/nvram.c | 1 - trunk/arch/powerpc/platforms/powermac/setup.c | 1 - trunk/arch/powerpc/platforms/powermac/time.c | 1 - trunk/arch/powerpc/platforms/powernv/smp.c | 1 - trunk/arch/powerpc/platforms/ps3/mm.c | 1 + trunk/arch/powerpc/platforms/pseries/dtl.c | 2 +- trunk/arch/powerpc/platforms/pseries/eeh.c | 19 +- .../arch/powerpc/platforms/pseries/eeh_dev.c | 2 +- .../powerpc/platforms/pseries/hotplug-cpu.c | 1 - .../powerpc/platforms/pseries/io_event_irq.c | 68 +- trunk/arch/powerpc/platforms/pseries/iommu.c | 29 +- .../platforms/pseries/processor_idle.c | 2 +- trunk/arch/powerpc/platforms/pseries/ras.c | 195 +- trunk/arch/powerpc/platforms/pseries/smp.c | 1 - trunk/arch/powerpc/platforms/wsp/chroma.c | 1 - trunk/arch/powerpc/platforms/wsp/psr2.c | 1 - trunk/arch/powerpc/platforms/wsp/wsp_pci.c | 1 + trunk/arch/powerpc/sysdev/cpm_common.c | 1 - trunk/arch/powerpc/sysdev/fsl_soc.c | 1 - trunk/arch/powerpc/sysdev/msi_bitmap.c | 1 + trunk/arch/powerpc/sysdev/tsi108_dev.c | 1 - trunk/arch/powerpc/xmon/xmon.c | 1 + trunk/arch/s390/Kconfig | 1 + trunk/arch/s390/crypto/crypt_s390.h | 1 + trunk/arch/s390/include/asm/atomic.h | 2 +- trunk/arch/s390/include/asm/barrier.h | 35 + trunk/arch/s390/include/asm/cpu_mf.h | 95 + trunk/arch/s390/include/asm/ctl_reg.h | 76 + trunk/arch/s390/include/asm/elf.h | 1 - trunk/arch/s390/include/asm/exec.h | 12 + trunk/arch/s390/include/asm/facility.h | 63 + trunk/arch/s390/include/asm/irq.h | 2 + trunk/arch/s390/include/asm/kvm.h | 11 + trunk/arch/s390/include/asm/kvm_host.h | 12 +- trunk/arch/s390/include/asm/mmu.h | 14 + trunk/arch/s390/include/asm/mmu_context.h | 1 + trunk/arch/s390/include/asm/perf_event.h | 12 +- trunk/arch/s390/include/asm/processor.h | 24 + trunk/arch/s390/include/asm/setup.h | 14 + trunk/arch/s390/include/asm/smp.h | 2 +- trunk/arch/s390/include/asm/switch_to.h | 100 + trunk/arch/s390/include/asm/system.h | 315 -- trunk/arch/s390/include/asm/uaccess.h | 6 + trunk/arch/s390/kernel/Makefile | 1 + trunk/arch/s390/kernel/asm-offsets.c | 1 - trunk/arch/s390/kernel/compat_signal.c | 1 + trunk/arch/s390/kernel/cpcmd.c | 1 - trunk/arch/s390/kernel/dis.c | 1 - trunk/arch/s390/kernel/early.c | 2 +- trunk/arch/s390/kernel/irq.c | 23 + trunk/arch/s390/kernel/lgr.c | 1 - trunk/arch/s390/kernel/machine_kexec.c | 1 - trunk/arch/s390/kernel/os_info.c | 1 - trunk/arch/s390/kernel/perf_cpum_cf.c | 690 ++++ trunk/arch/s390/kernel/perf_event.c | 125 + trunk/arch/s390/kernel/process.c | 2 +- trunk/arch/s390/kernel/ptrace.c | 2 +- trunk/arch/s390/kernel/setup.c | 1 - trunk/arch/s390/kernel/signal.c | 1 + trunk/arch/s390/kernel/suspend.c | 2 +- trunk/arch/s390/kernel/traps.c | 1 - trunk/arch/s390/kernel/vdso.c | 2 +- trunk/arch/s390/kvm/Kconfig | 9 + trunk/arch/s390/kvm/diag.c | 6 +- trunk/arch/s390/kvm/intercept.c | 24 +- trunk/arch/s390/kvm/interrupt.c | 3 +- trunk/arch/s390/kvm/kvm-s390.c | 223 +- trunk/arch/s390/kvm/kvm-s390.h | 18 + trunk/arch/s390/kvm/priv.c | 27 +- trunk/arch/s390/kvm/sigp.c | 57 +- trunk/arch/s390/mm/fault.c | 2 +- trunk/arch/s390/mm/init.c | 2 +- trunk/arch/s390/mm/maccess.c | 2 +- trunk/arch/s390/mm/mmap.c | 2 - trunk/arch/s390/mm/pgtable.c | 1 - trunk/arch/s390/oprofile/hwsampler.c | 52 +- trunk/arch/score/include/asm/atomic.h | 1 + trunk/arch/score/include/asm/barrier.h | 16 + trunk/arch/score/include/asm/bitops.h | 1 - trunk/arch/score/include/asm/bug.h | 11 + trunk/arch/score/include/asm/cmpxchg.h | 49 + trunk/arch/score/include/asm/exec.h | 6 + trunk/arch/score/include/asm/switch_to.h | 13 + trunk/arch/score/include/asm/system.h | 90 - trunk/arch/sh/boards/mach-highlander/setup.c | 2 +- trunk/arch/sh/boards/mach-microdev/irq.c | 1 - trunk/arch/sh/boards/mach-sdk7786/setup.c | 2 +- trunk/arch/sh/include/asm/atomic-irq.h | 2 + trunk/arch/sh/include/asm/atomic.h | 2 +- trunk/arch/sh/include/asm/auxvec.h | 2 + trunk/arch/sh/include/asm/barrier.h | 54 + trunk/arch/sh/include/asm/bitops.h | 1 - trunk/arch/sh/include/asm/bl_bit.h | 10 + trunk/arch/sh/include/asm/bl_bit_32.h | 33 + trunk/arch/sh/include/asm/bl_bit_64.h | 40 + trunk/arch/sh/include/asm/bug.h | 5 + trunk/arch/sh/include/asm/cache_insns.h | 11 + trunk/arch/sh/include/asm/cache_insns_32.h | 21 + trunk/arch/sh/include/asm/cache_insns_64.h | 23 + trunk/arch/sh/include/asm/clock.h | 2 +- trunk/arch/sh/include/asm/cmpxchg-irq.h | 2 + trunk/arch/sh/include/asm/cmpxchg.h | 70 + trunk/arch/sh/include/asm/exec.h | 10 + trunk/arch/sh/include/asm/futex-irq.h | 1 - trunk/arch/sh/include/asm/io.h | 1 - trunk/arch/sh/include/asm/processor.h | 15 + trunk/arch/sh/include/asm/ptrace.h | 1 - trunk/arch/sh/include/asm/setup.h | 1 + trunk/arch/sh/include/asm/switch_to.h | 19 + .../asm/{system_32.h => switch_to_32.h} | 108 +- trunk/arch/sh/include/asm/switch_to_64.h | 35 + trunk/arch/sh/include/asm/system.h | 184 - trunk/arch/sh/include/asm/system_64.h | 79 - trunk/arch/sh/include/asm/traps.h | 21 + trunk/arch/sh/include/asm/traps_32.h | 68 + trunk/arch/sh/include/asm/traps_64.h | 24 + trunk/arch/sh/include/asm/uaccess.h | 14 + trunk/arch/sh/kernel/cpu/init.c | 2 +- trunk/arch/sh/kernel/cpu/irq/imask.c | 1 - trunk/arch/sh/kernel/cpu/sh2/clock-sh7619.c | 12 +- trunk/arch/sh/kernel/cpu/sh2a/clock-sh7201.c | 12 +- trunk/arch/sh/kernel/cpu/sh2a/clock-sh7203.c | 12 +- trunk/arch/sh/kernel/cpu/sh2a/clock-sh7206.c | 12 +- trunk/arch/sh/kernel/cpu/sh2a/opcode_helper.c | 1 - trunk/arch/sh/kernel/cpu/sh3/clock-sh3.c | 12 +- trunk/arch/sh/kernel/cpu/sh3/clock-sh7705.c | 12 +- trunk/arch/sh/kernel/cpu/sh3/clock-sh7706.c | 12 +- trunk/arch/sh/kernel/cpu/sh3/clock-sh7709.c | 12 +- trunk/arch/sh/kernel/cpu/sh3/clock-sh7710.c | 12 +- trunk/arch/sh/kernel/cpu/sh3/clock-sh7712.c | 10 +- trunk/arch/sh/kernel/cpu/sh4/clock-sh4-202.c | 6 +- trunk/arch/sh/kernel/cpu/sh4/clock-sh4.c | 12 +- trunk/arch/sh/kernel/cpu/sh4/fpu.c | 1 - trunk/arch/sh/kernel/cpu/sh4a/clock-sh7343.c | 4 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7366.c | 4 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7722.c | 4 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7723.c | 4 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7724.c | 6 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7757.c | 2 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7763.c | 14 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7770.c | 12 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7780.c | 14 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7785.c | 2 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7786.c | 2 +- trunk/arch/sh/kernel/cpu/sh4a/clock-shx3.c | 2 +- trunk/arch/sh/kernel/cpu/sh5/clock-sh5.c | 12 +- trunk/arch/sh/kernel/hw_breakpoint.c | 1 + trunk/arch/sh/kernel/idle.c | 2 +- trunk/arch/sh/kernel/io_trapped.c | 1 - trunk/arch/sh/kernel/process_32.c | 1 - trunk/arch/sh/kernel/process_64.c | 1 + trunk/arch/sh/kernel/ptrace_32.c | 1 - trunk/arch/sh/kernel/ptrace_64.c | 2 +- trunk/arch/sh/kernel/reboot.c | 2 +- trunk/arch/sh/kernel/signal_32.c | 1 - trunk/arch/sh/kernel/smp.c | 1 - trunk/arch/sh/kernel/traps.c | 2 +- trunk/arch/sh/kernel/traps_32.c | 3 +- trunk/arch/sh/kernel/traps_64.c | 1 - trunk/arch/sh/math-emu/math.c | 1 - trunk/arch/sh/mm/fault_32.c | 2 +- trunk/arch/sh/mm/fault_64.c | 1 - trunk/arch/sh/mm/flush-sh4.c | 1 + trunk/arch/sh/mm/pmb.c | 1 - trunk/arch/sh/mm/tlb-pteaex.c | 1 - trunk/arch/sh/mm/tlb-sh3.c | 1 - trunk/arch/sh/mm/tlb-sh4.c | 1 - trunk/arch/sh/mm/tlbflush_64.c | 1 - trunk/arch/sparc/include/asm/atomic_32.h | 2 +- trunk/arch/sparc/include/asm/atomic_64.h | 3 +- trunk/arch/sparc/include/asm/auxio_32.h | 1 - trunk/arch/sparc/include/asm/barrier.h | 8 + trunk/arch/sparc/include/asm/barrier_32.h | 15 + trunk/arch/sparc/include/asm/barrier_64.h | 56 + trunk/arch/sparc/include/asm/bug.h | 3 + trunk/arch/sparc/include/asm/cacheflush_32.h | 9 + trunk/arch/sparc/include/asm/cacheflush_64.h | 10 + trunk/arch/sparc/include/asm/cmpxchg.h | 8 + trunk/arch/sparc/include/asm/cmpxchg_32.h | 112 + trunk/arch/sparc/include/asm/cmpxchg_64.h | 145 + trunk/arch/sparc/include/asm/cpu_type.h | 34 + trunk/arch/sparc/include/asm/exec.h | 6 + trunk/arch/sparc/include/asm/floppy_32.h | 1 - trunk/arch/sparc/include/asm/futex_64.h | 1 - trunk/arch/sparc/include/asm/io_32.h | 1 - trunk/arch/sparc/include/asm/io_64.h | 1 - trunk/arch/sparc/include/asm/irqflags_32.h | 1 + trunk/arch/sparc/include/asm/mmu_context_64.h | 1 - trunk/arch/sparc/include/asm/ns87303.h | 1 - trunk/arch/sparc/include/asm/perfctr.h | 23 + trunk/arch/sparc/include/asm/pgtable_32.h | 2 +- trunk/arch/sparc/include/asm/pgtable_64.h | 1 - trunk/arch/sparc/include/asm/processor.h | 3 + trunk/arch/sparc/include/asm/processor_64.h | 3 + trunk/arch/sparc/include/asm/ptrace.h | 5 +- trunk/arch/sparc/include/asm/setup.h | 16 + trunk/arch/sparc/include/asm/switch_to.h | 8 + trunk/arch/sparc/include/asm/switch_to_32.h | 106 + trunk/arch/sparc/include/asm/switch_to_64.h | 72 + trunk/arch/sparc/include/asm/system.h | 8 - trunk/arch/sparc/include/asm/system_32.h | 284 -- trunk/arch/sparc/include/asm/system_64.h | 331 -- trunk/arch/sparc/include/asm/timer_32.h | 3 +- trunk/arch/sparc/include/asm/uaccess_64.h | 1 - trunk/arch/sparc/include/asm/vio.h | 9 +- trunk/arch/sparc/kernel/auxio_32.c | 1 + trunk/arch/sparc/kernel/devices.c | 2 +- trunk/arch/sparc/kernel/ds.c | 5 +- trunk/arch/sparc/kernel/irq.h | 1 + trunk/arch/sparc/kernel/irq_64.c | 1 - trunk/arch/sparc/kernel/kgdb_32.c | 1 + trunk/arch/sparc/kernel/module.c | 1 + trunk/arch/sparc/kernel/muldiv.c | 1 - trunk/arch/sparc/kernel/nmi.c | 1 + trunk/arch/sparc/kernel/pcr.c | 1 + trunk/arch/sparc/kernel/perf_event.c | 2 + trunk/arch/sparc/kernel/process_32.c | 2 +- trunk/arch/sparc/kernel/process_64.c | 1 - trunk/arch/sparc/kernel/ptrace_32.c | 2 +- trunk/arch/sparc/kernel/ptrace_64.c | 1 - trunk/arch/sparc/kernel/reboot.c | 2 +- trunk/arch/sparc/kernel/setup_32.c | 2 +- trunk/arch/sparc/kernel/setup_64.c | 2 +- trunk/arch/sparc/kernel/signal32.c | 1 + trunk/arch/sparc/kernel/signal_32.c | 1 + trunk/arch/sparc/kernel/signal_64.c | 2 + trunk/arch/sparc/kernel/sigutil_32.c | 1 + trunk/arch/sparc/kernel/sigutil_64.c | 1 + trunk/arch/sparc/kernel/sparc_ksyms_64.c | 2 +- trunk/arch/sparc/kernel/time_32.c | 1 - trunk/arch/sparc/kernel/traps_32.c | 1 - trunk/arch/sparc/kernel/traps_64.c | 2 +- trunk/arch/sparc/kernel/unaligned_32.c | 1 - trunk/arch/sparc/kernel/unaligned_64.c | 2 +- trunk/arch/sparc/kernel/vio.c | 8 +- trunk/arch/sparc/kernel/visemul.c | 2 +- trunk/arch/sparc/math-emu/math_64.c | 1 + trunk/arch/sparc/mm/btfixup.c | 1 - trunk/arch/sparc/mm/fault_32.c | 1 - trunk/arch/sparc/mm/init_32.c | 1 - trunk/arch/sparc/mm/init_64.c | 1 - trunk/arch/sparc/mm/init_64.h | 2 - trunk/arch/sparc/mm/loadmmu.c | 1 - trunk/arch/sparc/mm/tsb.c | 1 - trunk/arch/sparc/prom/console_32.c | 1 - trunk/arch/sparc/prom/console_64.c | 1 - trunk/arch/sparc/prom/misc_32.c | 1 - trunk/arch/sparc/prom/misc_64.c | 1 - trunk/arch/sparc/prom/p1275.c | 1 - trunk/arch/sparc/prom/ranges.c | 1 - trunk/arch/tile/include/asm/atomic.h | 2 +- trunk/arch/tile/include/asm/atomic_32.h | 1 + trunk/arch/tile/include/asm/atomic_64.h | 1 + .../tile/include/asm/{system.h => barrier.h} | 121 +- trunk/arch/tile/include/asm/bitops_32.h | 1 - trunk/arch/tile/include/asm/bitops_64.h | 1 - trunk/arch/tile/include/asm/cacheflush.h | 11 +- trunk/arch/tile/include/asm/exec.h | 20 + trunk/arch/tile/include/asm/pgtable.h | 1 - trunk/arch/tile/include/asm/setup.h | 22 + trunk/arch/tile/include/asm/smp.h | 7 - trunk/arch/tile/include/asm/spinlock_32.h | 1 - trunk/arch/tile/include/asm/switch_to.h | 76 + trunk/arch/tile/include/asm/timex.h | 2 + trunk/arch/tile/include/asm/unaligned.h | 15 + trunk/arch/tile/kernel/early_printk.c | 1 + trunk/arch/tile/kernel/proc.c | 1 + trunk/arch/tile/kernel/process.c | 3 +- trunk/arch/tile/kernel/regs_32.S | 2 +- trunk/arch/tile/kernel/regs_64.S | 2 +- trunk/arch/tile/kernel/single_step.c | 1 + trunk/arch/tile/kernel/smp.c | 19 - trunk/arch/tile/kernel/traps.c | 1 + trunk/arch/tile/mm/elf.c | 1 + trunk/arch/tile/mm/fault.c | 1 - trunk/arch/tile/mm/init.c | 1 - trunk/arch/tile/mm/pgtable.c | 1 - trunk/arch/um/Kconfig.common | 1 + trunk/arch/um/Makefile | 5 +- trunk/arch/um/defconfig | 655 +++- trunk/arch/um/drivers/chan.h | 18 +- trunk/arch/um/drivers/chan_kern.c | 198 +- trunk/arch/um/drivers/chan_user.h | 2 - trunk/arch/um/drivers/line.c | 258 +- trunk/arch/um/drivers/line.h | 29 +- trunk/arch/um/drivers/mconsole_kern.c | 2 +- trunk/arch/um/drivers/net_kern.c | 2 +- trunk/arch/um/drivers/port_kern.c | 4 +- trunk/arch/um/drivers/random.c | 2 +- trunk/arch/um/drivers/ssl.c | 41 +- trunk/arch/um/drivers/stdio_console.c | 46 +- trunk/arch/um/drivers/{ubd_user.h => ubd.h} | 0 trunk/arch/um/drivers/ubd_kern.c | 46 +- trunk/arch/um/drivers/ubd_user.c | 8 +- trunk/arch/um/drivers/xterm_kern.c | 2 +- trunk/arch/um/include/asm/Kbuild | 2 +- trunk/arch/um/include/asm/asm-offsets.h | 1 - trunk/arch/um/include/asm/auxvec.h | 4 - trunk/arch/um/include/asm/current.h | 13 - trunk/arch/um/include/asm/delay.h | 18 - trunk/arch/um/include/asm/fixmap.h | 1 - trunk/arch/um/include/asm/io.h | 57 - trunk/arch/um/include/asm/mutex.h | 9 - trunk/arch/um/include/asm/param.h | 20 - trunk/arch/um/include/asm/pci.h | 6 - trunk/arch/um/include/asm/pgalloc.h | 3 +- trunk/arch/um/include/asm/pgtable.h | 2 + trunk/arch/um/include/asm/ptrace-generic.h | 1 - trunk/arch/um/include/shared/common-offsets.h | 2 - trunk/arch/um/include/shared/kern_util.h | 2 +- trunk/arch/um/kernel/Makefile | 2 +- trunk/arch/um/kernel/process.c | 4 +- trunk/arch/um/kernel/sigio.c | 2 +- trunk/arch/um/kernel/time.c | 2 +- trunk/arch/um/os-Linux/Makefile | 2 - trunk/arch/um/os-Linux/user_syms.c | 2 +- trunk/arch/um/scripts/Makefile.rules | 7 +- trunk/arch/unicore32/include/asm/Kbuild | 1 - trunk/arch/unicore32/include/asm/barrier.h | 28 + trunk/arch/unicore32/include/asm/bug.h | 27 + trunk/arch/unicore32/include/asm/cmpxchg.h | 61 + trunk/arch/unicore32/include/asm/exec.h | 15 + .../arch/unicore32/include/asm/hwdef-copro.h | 48 + trunk/arch/unicore32/include/asm/io.h | 1 - trunk/arch/unicore32/include/asm/switch_to.h | 30 + trunk/arch/unicore32/include/asm/system.h | 161 - trunk/arch/unicore32/include/asm/uaccess.h | 1 - trunk/arch/unicore32/kernel/dma.c | 1 - trunk/arch/unicore32/kernel/head.S | 2 +- trunk/arch/unicore32/kernel/hibernate.c | 1 - trunk/arch/unicore32/kernel/irq.c | 1 - trunk/arch/unicore32/kernel/ksyms.c | 1 - trunk/arch/unicore32/kernel/process.c | 1 - trunk/arch/unicore32/kernel/setup.h | 3 + trunk/arch/unicore32/kernel/traps.c | 1 - trunk/arch/unicore32/mm/alignment.c | 2 + trunk/arch/unicore32/mm/fault.c | 1 - trunk/arch/unicore32/mm/flush.c | 1 - trunk/arch/unicore32/mm/mm.h | 5 + trunk/arch/x86/Kconfig | 7 + trunk/arch/x86/Makefile.um | 4 - trunk/arch/x86/ia32/ia32_aout.c | 1 - trunk/arch/x86/include/asm/apic.h | 1 - trunk/arch/x86/include/asm/auxvec.h | 7 + trunk/arch/x86/include/asm/barrier.h | 116 + trunk/arch/x86/include/asm/bug.h | 4 + trunk/arch/x86/include/asm/cacheflush.h | 1 + trunk/arch/x86/include/asm/elf.h | 1 - trunk/arch/x86/include/asm/exec.h | 1 + trunk/arch/x86/include/asm/futex.h | 1 - trunk/arch/x86/include/asm/i387.h | 1 - trunk/arch/x86/include/asm/kvm.h | 4 + trunk/arch/x86/include/asm/kvm_emulate.h | 3 +- trunk/arch/x86/include/asm/kvm_host.h | 63 +- trunk/arch/x86/include/asm/local.h | 1 - trunk/arch/x86/include/asm/mc146818rtc.h | 1 - trunk/arch/x86/include/asm/page_types.h | 1 - trunk/arch/x86/include/asm/perf_event.h | 1 + trunk/arch/x86/include/asm/processor.h | 31 +- trunk/arch/x86/include/asm/segment.h | 58 +- trunk/arch/x86/include/asm/special_insns.h | 199 ++ trunk/arch/x86/include/asm/stackprotector.h | 1 - trunk/arch/x86/include/asm/switch_to.h | 129 + trunk/arch/x86/include/asm/system.h | 523 --- trunk/arch/x86/include/asm/tlbflush.h | 2 +- trunk/arch/x86/include/asm/tsc.h | 4 +- trunk/arch/x86/include/asm/virtext.h | 1 - trunk/arch/x86/include/asm/x86_init.h | 6 + trunk/arch/x86/kernel/acpi/cstate.c | 1 + trunk/arch/x86/kernel/apm_32.c | 1 - trunk/arch/x86/kernel/cpu/mcheck/p5.c | 1 - .../arch/x86/kernel/cpu/mcheck/therm_throt.c | 1 - trunk/arch/x86/kernel/cpu/mcheck/winchip.c | 1 - trunk/arch/x86/kernel/cpu/mtrr/generic.c | 1 - trunk/arch/x86/kernel/cpuid.c | 1 - trunk/arch/x86/kernel/i8259.c | 1 - trunk/arch/x86/kernel/irqinit.c | 1 - trunk/arch/x86/kernel/kgdb.c | 1 - trunk/arch/x86/kernel/kvmclock.c | 15 +- trunk/arch/x86/kernel/ldt.c | 1 - trunk/arch/x86/kernel/machine_kexec_32.c | 1 - trunk/arch/x86/kernel/mca_32.c | 1 - trunk/arch/x86/kernel/module.c | 1 - trunk/arch/x86/kernel/msr.c | 1 - trunk/arch/x86/kernel/paravirt.c | 1 + trunk/arch/x86/kernel/pci-calgary_64.c | 1 - trunk/arch/x86/kernel/process.c | 1 - trunk/arch/x86/kernel/process_32.c | 2 +- trunk/arch/x86/kernel/process_64.c | 2 +- trunk/arch/x86/kernel/ptrace.c | 1 - trunk/arch/x86/kernel/setup.c | 12 +- trunk/arch/x86/kernel/smpboot.c | 1 + trunk/arch/x86/kernel/tce_64.c | 1 + trunk/arch/x86/kernel/tls.c | 1 - trunk/arch/x86/kernel/traps.c | 1 - trunk/arch/x86/kernel/tsc.c | 4 +- trunk/arch/x86/kernel/x86_init.c | 5 +- trunk/arch/x86/kvm/cpuid.c | 2 +- trunk/arch/x86/kvm/cpuid.h | 8 + trunk/arch/x86/kvm/emulate.c | 112 +- trunk/arch/x86/kvm/i8259.c | 1 + trunk/arch/x86/kvm/lapic.c | 4 +- trunk/arch/x86/kvm/mmu.c | 85 +- trunk/arch/x86/kvm/mmu_audit.c | 4 +- trunk/arch/x86/kvm/pmu.c | 10 +- trunk/arch/x86/kvm/svm.c | 119 +- trunk/arch/x86/kvm/vmx.c | 53 +- trunk/arch/x86/kvm/x86.c | 403 ++- trunk/arch/x86/mm/init.c | 1 - trunk/arch/x86/mm/init_32.c | 1 - trunk/arch/x86/mm/init_64.c | 1 - trunk/arch/x86/mm/pgtable_32.c | 1 - .../arch/x86/platform/ce4100/falconfalls.dts | 7 +- trunk/arch/x86/platform/geode/Makefile | 1 + trunk/arch/x86/platform/geode/geos.c | 128 + trunk/arch/x86/power/cpu.c | 4 +- trunk/arch/x86/power/hibernate_32.c | 1 - trunk/arch/x86/um/Kconfig | 4 +- trunk/arch/x86/um/asm/processor.h | 10 + trunk/arch/x86/um/asm/processor_32.h | 10 - trunk/arch/x86/um/asm/processor_64.h | 10 - trunk/arch/x86/um/bugs_32.c | 4 +- trunk/arch/xtensa/include/asm/atomic.h | 2 +- trunk/arch/xtensa/include/asm/barrier.h | 29 + trunk/arch/xtensa/include/asm/bitops.h | 1 - .../include/asm/{system.h => cmpxchg.h} | 67 +- trunk/arch/xtensa/include/asm/exec.h | 14 + trunk/arch/xtensa/include/asm/setup.h | 2 + trunk/arch/xtensa/include/asm/switch_to.h | 22 + trunk/arch/xtensa/include/asm/uaccess.h | 2 + trunk/arch/xtensa/kernel/process.c | 1 - trunk/arch/xtensa/kernel/ptrace.c | 1 - trunk/arch/xtensa/kernel/setup.c | 1 - trunk/arch/xtensa/kernel/traps.c | 19 + trunk/arch/xtensa/mm/fault.c | 1 - trunk/arch/xtensa/mm/tlb.c | 1 - trunk/drivers/Kconfig | 4 + trunk/drivers/Makefile | 2 + trunk/drivers/acpi/ec.c | 10 + trunk/drivers/acpi/processor_driver.c | 1 - trunk/drivers/acpi/video_detect.c | 2 +- trunk/drivers/atm/eni.c | 1 - trunk/drivers/atm/firestream.c | 1 - trunk/drivers/atm/horizon.c | 1 - trunk/drivers/atm/idt77105.c | 1 - trunk/drivers/atm/iphase.c | 1 - trunk/drivers/atm/suni.c | 1 - trunk/drivers/atm/zatm.c | 1 - trunk/drivers/base/dma-buf.c | 165 +- trunk/drivers/block/floppy.c | 1 - trunk/drivers/block/hd.c | 1 - trunk/drivers/block/nbd.c | 296 +- trunk/drivers/block/rbd.c | 730 ++-- trunk/drivers/block/rbd_types.h | 4 - trunk/drivers/block/sunvdc.c | 5 +- trunk/drivers/block/xd.c | 1 - trunk/drivers/bluetooth/bt3c_cs.c | 1 - trunk/drivers/bluetooth/btuart_cs.c | 1 - trunk/drivers/bluetooth/dtl1_cs.c | 1 - trunk/drivers/char/apm-emulation.c | 1 - trunk/drivers/char/ds1302.c | 1 - trunk/drivers/char/efirtc.c | 1 - trunk/drivers/char/genrtc.c | 1 - trunk/drivers/char/hpet.c | 1 - trunk/drivers/char/hw_random/omap-rng.c | 2 + trunk/drivers/char/ipmi/ipmi_devintf.c | 1 - trunk/drivers/char/ipmi/ipmi_kcs_sm.c | 4 +- trunk/drivers/char/ipmi/ipmi_msghandler.c | 243 +- trunk/drivers/char/ipmi/ipmi_si_intf.c | 73 +- trunk/drivers/char/ipmi/ipmi_watchdog.c | 25 +- trunk/drivers/char/lp.c | 1 - trunk/drivers/char/mbcs.c | 1 - trunk/drivers/char/mspec.c | 1 - trunk/drivers/char/mwave/3780i.c | 1 - trunk/drivers/char/nvram.c | 1 - trunk/drivers/char/nwflash.c | 1 - trunk/drivers/char/pcmcia/synclink_cs.c | 1 - trunk/drivers/char/rtc.c | 1 - trunk/drivers/char/sonypi.c | 1 - .../char/xilinx_hwicap/xilinx_hwicap.c | 1 - trunk/drivers/clk/Kconfig | 37 + trunk/drivers/clk/Makefile | 2 + trunk/drivers/clk/clk-divider.c | 200 ++ trunk/drivers/clk/clk-fixed-rate.c | 82 + trunk/drivers/clk/clk-gate.c | 150 + trunk/drivers/clk/clk-mux.c | 116 + trunk/drivers/clk/clk.c | 1461 ++++++++ trunk/drivers/clocksource/tcb_clksrc.c | 90 +- trunk/drivers/cpufreq/db8500-cpufreq.c | 13 +- trunk/drivers/cpufreq/omap-cpufreq.c | 1 - trunk/drivers/cpufreq/powernow-k7.c | 1 - trunk/drivers/devfreq/exynos4_bus.c | 230 +- trunk/drivers/dma/Kconfig | 9 + trunk/drivers/dma/Makefile | 1 + trunk/drivers/dma/sa11x0-dma.c | 1109 ++++++ trunk/drivers/edac/Kconfig | 2 +- trunk/drivers/edac/edac_mc.c | 6 +- trunk/drivers/edac/i5100_edac.c | 13 +- trunk/drivers/edac/i5400_edac.c | 54 +- trunk/drivers/edac/ppc4xx_edac.c | 4 +- trunk/drivers/edac/sb_edac.c | 52 +- trunk/drivers/firewire/core-cdev.c | 1 - trunk/drivers/firewire/core-device.c | 1 - trunk/drivers/firewire/core-topology.c | 1 - trunk/drivers/firewire/ohci.c | 1 - trunk/drivers/firewire/sbp2.c | 1 - trunk/drivers/gpio/Kconfig | 14 + trunk/drivers/gpio/Makefile | 2 + trunk/drivers/gpio/gpio-davinci.c | 26 +- trunk/drivers/gpio/gpio-ep93xx.c | 15 - trunk/drivers/gpio/gpio-lpc32xx.c | 19 +- trunk/drivers/gpio/gpio-mc9s08dz60.c | 161 + trunk/drivers/gpio/gpio-omap.c | 1313 ++++--- trunk/drivers/gpio/gpio-pl061.c | 7 +- trunk/drivers/gpio/gpio-sa1100.c | 1 + trunk/drivers/gpio/gpio-samsung.c | 487 ++- trunk/drivers/gpio/gpio-sodaville.c | 302 ++ trunk/drivers/gpio/gpio-stmpe.c | 43 +- trunk/drivers/gpio/gpio-tegra.c | 63 +- trunk/drivers/gpio/gpio-tps65910.c | 20 +- trunk/drivers/gpio/gpio-twl4030.c | 111 +- trunk/drivers/gpio/gpiolib.c | 98 +- trunk/drivers/hwmon/fschmd.c | 4 +- trunk/drivers/hwmon/mc13783-adc.c | 2 +- trunk/drivers/hwmon/w83793.c | 4 +- trunk/drivers/i2c/algos/i2c-algo-bit.c | 5 +- trunk/drivers/i2c/algos/i2c-algo-pca.c | 3 +- trunk/drivers/i2c/algos/i2c-algo-pcf.c | 3 +- trunk/drivers/i2c/algos/i2c-algo-pcf.h | 3 +- trunk/drivers/i2c/busses/Kconfig | 1 + trunk/drivers/i2c/busses/i2c-acorn.c | 1 - trunk/drivers/i2c/busses/i2c-gpio.c | 98 +- trunk/drivers/i2c/busses/i2c-i801.c | 27 +- trunk/drivers/i2c/busses/i2c-imx.c | 4 +- trunk/drivers/i2c/busses/i2c-isch.c | 10 +- trunk/drivers/i2c/busses/i2c-pxa.c | 95 +- trunk/drivers/i2c/i2c-boardinfo.c | 3 +- trunk/drivers/i2c/i2c-core.c | 3 +- trunk/drivers/i2c/i2c-core.h | 3 +- trunk/drivers/i2c/i2c-dev.c | 3 +- trunk/drivers/i2c/i2c-smbus.c | 3 +- trunk/drivers/i2c/muxes/pca9541.c | 13 +- trunk/drivers/i2c/muxes/pca954x.c | 13 +- trunk/drivers/ide/ide-cs.c | 1 - trunk/drivers/ide/qd65xx.c | 1 - trunk/drivers/infiniband/hw/ehca/ehca_reqs.c | 1 - trunk/drivers/input/joydev.c | 1 - trunk/drivers/input/joystick/amijoy.c | 1 - trunk/drivers/input/keyboard/jornada720_kbd.c | 1 + trunk/drivers/input/misc/88pm860x_onkey.c | 26 + trunk/drivers/input/mouse/amimouse.c | 1 - trunk/drivers/input/mouse/atarimouse.c | 1 - trunk/drivers/input/serio/ams_delta_serio.c | 54 +- trunk/drivers/input/serio/hp_sdc.c | 1 - trunk/drivers/input/serio/maceps2.c | 1 - trunk/drivers/input/serio/rpckbd.c | 45 +- trunk/drivers/input/serio/sa1111ps2.c | 60 +- trunk/drivers/input/touchscreen/Kconfig | 2 +- .../drivers/input/touchscreen/jornada720_ts.c | 1 + trunk/drivers/input/touchscreen/mc13783_ts.c | 11 +- trunk/drivers/isdn/hardware/avm/avm_cs.c | 1 - trunk/drivers/isdn/hisax/avma1_cs.c | 1 - trunk/drivers/isdn/hisax/elsa_cs.c | 1 - trunk/drivers/isdn/hisax/sedlbauer_cs.c | 1 - trunk/drivers/isdn/hisax/teles_cs.c | 1 - trunk/drivers/isdn/i4l/isdn_bsdcomp.c | 1 - trunk/drivers/isdn/pcbit/layer2.c | 1 - trunk/drivers/leds/Kconfig | 9 +- trunk/drivers/leds/Makefile | 1 - trunk/drivers/leds/leds-88pm860x.c | 23 + trunk/drivers/leds/leds-ams-delta.c | 126 - trunk/drivers/macintosh/macio-adb.c | 1 - trunk/drivers/macintosh/therm_adt746x.c | 1 - trunk/drivers/macintosh/therm_pm72.c | 1 - trunk/drivers/macintosh/therm_windtunnel.c | 1 - trunk/drivers/macintosh/via-cuda.c | 1 - trunk/drivers/macintosh/via-macii.c | 1 - trunk/drivers/macintosh/via-pmu.c | 1 - trunk/drivers/macintosh/via-pmu68k.c | 1 - .../drivers/macintosh/windfarm_lm75_sensor.c | 1 - trunk/drivers/macintosh/windfarm_pm121.c | 1 - trunk/drivers/macintosh/windfarm_pm81.c | 1 - trunk/drivers/macintosh/windfarm_pm91.c | 1 - .../drivers/macintosh/windfarm_smu_controls.c | 1 - .../drivers/macintosh/windfarm_smu_sensors.c | 1 - trunk/drivers/md/Kconfig | 28 +- trunk/drivers/md/Makefile | 1 + trunk/drivers/md/dm-bufio.c | 108 +- trunk/drivers/md/dm-bufio.h | 8 + trunk/drivers/md/dm-crypt.c | 46 +- trunk/drivers/md/dm-delay.c | 9 +- trunk/drivers/md/dm-exception-store.c | 2 +- trunk/drivers/md/dm-flakey.c | 3 +- trunk/drivers/md/dm-ioctl.c | 5 +- trunk/drivers/md/dm-linear.c | 3 +- trunk/drivers/md/dm-log.c | 3 +- trunk/drivers/md/dm-mpath.c | 52 +- trunk/drivers/md/dm-queue-length.c | 3 +- trunk/drivers/md/dm-raid.c | 53 +- trunk/drivers/md/dm-raid1.c | 12 +- trunk/drivers/md/dm-round-robin.c | 3 +- trunk/drivers/md/dm-service-time.c | 5 +- trunk/drivers/md/dm-stripe.c | 3 +- trunk/drivers/md/dm-table.c | 9 +- trunk/drivers/md/dm-thin-metadata.c | 5 +- trunk/drivers/md/dm-thin-metadata.h | 13 + trunk/drivers/md/dm-thin.c | 680 +++- trunk/drivers/md/dm-verity.c | 913 +++++ trunk/drivers/md/dm.c | 1 + .../md/persistent-data/dm-btree-internal.h | 7 +- .../md/persistent-data/dm-btree-remove.c | 202 +- trunk/drivers/md/persistent-data/dm-btree.c | 27 +- .../md/persistent-data/dm-space-map-common.c | 3 - trunk/drivers/media/dvb/dvb-core/dmxdev.c | 1 - trunk/drivers/media/dvb/firewire/firedtv-fw.c | 1 - trunk/drivers/media/dvb/ttpci/av7110.c | 1 - trunk/drivers/media/media-devnode.c | 1 - trunk/drivers/media/video/ivtv/ivtv-driver.h | 1 - trunk/drivers/media/video/v4l2-common.c | 1 - trunk/drivers/media/video/v4l2-dev.c | 1 - trunk/drivers/message/i2o/i2o_scsi.c | 1 - trunk/drivers/mfd/88pm860x-core.c | 110 +- trunk/drivers/mfd/88pm860x-i2c.c | 25 + trunk/drivers/mfd/Kconfig | 59 +- trunk/drivers/mfd/Makefile | 4 + trunk/drivers/mfd/ab8500-core.c | 375 +- trunk/drivers/mfd/ab8500-i2c.c | 30 +- trunk/drivers/mfd/anatop-mfd.c | 137 + trunk/drivers/mfd/asic3.c | 6 + trunk/drivers/mfd/da9052-core.c | 3 - trunk/drivers/mfd/da9052-i2c.c | 11 +- trunk/drivers/mfd/da9052-spi.c | 9 +- trunk/drivers/mfd/db8500-prcmu.c | 1220 +++++-- trunk/drivers/mfd/dbx500-prcmu-regs.h | 130 +- trunk/drivers/mfd/mc13xxx-core.c | 11 +- trunk/drivers/mfd/mcp-core.c | 51 +- trunk/drivers/mfd/mcp-sa11x0.c | 199 +- trunk/drivers/mfd/mfd-core.c | 2 +- trunk/drivers/mfd/omap-usb-host.c | 7 +- trunk/drivers/mfd/pcf50633-core.c | 8 +- trunk/drivers/mfd/pcf50633-gpio.c | 27 +- trunk/drivers/mfd/pcf50633-irq.c | 7 +- trunk/drivers/mfd/rc5t583-irq.c | 408 +++ trunk/drivers/mfd/rc5t583.c | 386 ++ trunk/drivers/mfd/s5m-core.c | 58 +- trunk/drivers/mfd/s5m-irq.c | 14 +- trunk/drivers/mfd/sm501.c | 10 +- trunk/drivers/mfd/stmpe.c | 134 +- trunk/drivers/mfd/tps65090.c | 387 ++ trunk/drivers/mfd/tps65217.c | 242 ++ trunk/drivers/mfd/tps65910-irq.c | 11 + trunk/drivers/mfd/tps65910.c | 123 +- trunk/drivers/mfd/twl-core.c | 153 +- trunk/drivers/mfd/twl-core.h | 4 +- trunk/drivers/mfd/twl4030-irq.c | 107 +- trunk/drivers/mfd/twl6030-irq.c | 86 +- trunk/drivers/mfd/ucb1x00-assabet.c | 46 +- trunk/drivers/mfd/ucb1x00-core.c | 433 +-- trunk/drivers/mfd/ucb1x00-ts.c | 39 +- trunk/drivers/mfd/wm831x-spi.c | 2 +- trunk/drivers/mfd/wm8400-core.c | 3 +- trunk/drivers/mfd/wm8994-core.c | 2 +- trunk/drivers/mfd/wm8994-regmap.c | 20 +- trunk/drivers/misc/atmel_tclib.c | 64 +- trunk/drivers/misc/sgi-gru/gru_instructions.h | 1 + trunk/drivers/misc/sgi-xp/xp.h | 1 - trunk/drivers/mmc/card/block.c | 22 +- trunk/drivers/mmc/core/cd-gpio.c | 13 +- trunk/drivers/mmc/core/core.c | 252 +- trunk/drivers/mmc/core/host.c | 1 - trunk/drivers/mmc/core/host.h | 1 - trunk/drivers/mmc/core/mmc.c | 55 +- trunk/drivers/mmc/core/mmc_ops.c | 12 +- trunk/drivers/mmc/host/Kconfig | 27 +- trunk/drivers/mmc/host/Makefile | 2 + trunk/drivers/mmc/host/at91_mci.c | 1 - trunk/drivers/mmc/host/atmel-mci.c | 2 +- trunk/drivers/mmc/host/davinci_mmc.c | 66 +- trunk/drivers/mmc/host/dw_mmc-pci.c | 158 + trunk/drivers/mmc/host/dw_mmc-pltfm.c | 134 + trunk/drivers/mmc/host/dw_mmc.c | 280 +- trunk/drivers/mmc/host/dw_mmc.h | 7 + trunk/drivers/mmc/host/omap_hsmmc.c | 293 +- trunk/drivers/mmc/host/sdhci-esdhc-imx.c | 6 +- trunk/drivers/mmc/host/sdhci-of-esdhc.c | 37 +- trunk/drivers/mmc/host/sdhci-pci.c | 47 +- trunk/drivers/mmc/host/sdhci-s3c.c | 6 +- trunk/drivers/mmc/host/sdhci-spear.c | 9 +- trunk/drivers/mmc/host/sdhci-tegra.c | 100 +- trunk/drivers/mmc/host/sdhci.c | 38 +- trunk/drivers/mmc/host/sdhci.h | 2 + trunk/drivers/mmc/host/sh_mmcif.c | 2 - trunk/drivers/mmc/host/sh_mobile_sdhi.c | 29 +- trunk/drivers/mmc/host/tmio_mmc.h | 9 +- trunk/drivers/mmc/host/tmio_mmc_pio.c | 108 +- trunk/drivers/mtd/Kconfig | 2 +- trunk/drivers/mtd/devices/Kconfig | 1 + trunk/drivers/mtd/devices/pmc551.c | 1 - trunk/drivers/mtd/devices/slram.c | 1 - trunk/drivers/mtd/maps/Kconfig | 1 + trunk/drivers/mtd/maps/pcmciamtd.c | 1 - trunk/drivers/mtd/maps/sa1100-flash.c | 112 - trunk/drivers/mtd/nand/Kconfig | 4 +- trunk/drivers/mtd/nand/ams-delta.c | 74 +- trunk/drivers/mtd/nand/atmel_nand.c | 136 +- trunk/drivers/mtd/nand/bcm_umi_nand.c | 1 - trunk/drivers/mtd/onenand/Kconfig | 1 + trunk/drivers/net/Space.c | 2 + trunk/drivers/net/appletalk/cops.c | 1 - trunk/drivers/net/appletalk/ltpc.c | 1 - trunk/drivers/net/arcnet/com20020_cs.c | 1 - trunk/drivers/net/bonding/bond_main.c | 1 - trunk/drivers/net/can/slcan.c | 1 - trunk/drivers/net/cris/eth_v10.c | 1 - trunk/drivers/net/ethernet/3com/3c574_cs.c | 1 - trunk/drivers/net/ethernet/3com/3c589_cs.c | 1 - trunk/drivers/net/ethernet/8390/3c503.c | 1 - trunk/drivers/net/ethernet/8390/ac3200.c | 1 - trunk/drivers/net/ethernet/8390/apne.c | 1 - trunk/drivers/net/ethernet/8390/ax88796.c | 1 - trunk/drivers/net/ethernet/8390/axnet_cs.c | 1 - trunk/drivers/net/ethernet/8390/e2100.c | 1 - trunk/drivers/net/ethernet/8390/es3210.c | 1 - trunk/drivers/net/ethernet/8390/etherh.c | 2 +- trunk/drivers/net/ethernet/8390/hp-plus.c | 1 - trunk/drivers/net/ethernet/8390/hp.c | 1 - trunk/drivers/net/ethernet/8390/lib8390.c | 1 - trunk/drivers/net/ethernet/8390/lne390.c | 1 - trunk/drivers/net/ethernet/8390/mac8390.c | 1 - trunk/drivers/net/ethernet/8390/ne-h8300.c | 1 - trunk/drivers/net/ethernet/8390/ne.c | 1 - trunk/drivers/net/ethernet/8390/ne2.c | 1 - trunk/drivers/net/ethernet/8390/ne2k-pci.c | 1 - trunk/drivers/net/ethernet/8390/ne3210.c | 1 - trunk/drivers/net/ethernet/8390/pcnet_cs.c | 1 - trunk/drivers/net/ethernet/8390/smc-mca.c | 1 - trunk/drivers/net/ethernet/8390/smc-ultra.c | 1 - trunk/drivers/net/ethernet/8390/smc-ultra32.c | 1 - trunk/drivers/net/ethernet/8390/stnic.c | 1 - trunk/drivers/net/ethernet/8390/wd.c | 1 - trunk/drivers/net/ethernet/8390/zorro8390.c | 1 - trunk/drivers/net/ethernet/alteon/acenic.c | 1 - trunk/drivers/net/ethernet/amd/7990.c | 1 - trunk/drivers/net/ethernet/amd/am79c961a.c | 1 - trunk/drivers/net/ethernet/amd/amd8111e.c | 1 - trunk/drivers/net/ethernet/amd/declance.c | 1 - trunk/drivers/net/ethernet/amd/hplance.c | 1 - trunk/drivers/net/ethernet/amd/mvme147.c | 1 - trunk/drivers/net/ethernet/amd/nmclan_cs.c | 1 - trunk/drivers/net/ethernet/amd/sunlance.c | 1 - trunk/drivers/net/ethernet/broadcom/tg3.c | 1 - trunk/drivers/net/ethernet/cirrus/Kconfig | 19 +- trunk/drivers/net/ethernet/cirrus/cs89x0.c | 149 +- trunk/drivers/net/ethernet/cirrus/mac89x0.c | 1 - trunk/drivers/net/ethernet/dlink/de600.c | 1 - trunk/drivers/net/ethernet/dlink/de620.c | 1 - .../drivers/net/ethernet/freescale/gianfar.c | 39 +- .../drivers/net/ethernet/freescale/gianfar.h | 2 +- trunk/drivers/net/ethernet/fujitsu/at1700.c | 1 - trunk/drivers/net/ethernet/fujitsu/eth16i.c | 1 - .../drivers/net/ethernet/fujitsu/fmvj18x_cs.c | 1 - trunk/drivers/net/ethernet/i825xx/3c507.c | 1 - trunk/drivers/net/ethernet/i825xx/3c527.c | 1 - trunk/drivers/net/ethernet/i825xx/eepro.c | 1 - trunk/drivers/net/ethernet/i825xx/eexpress.c | 1 - trunk/drivers/net/ethernet/i825xx/ether1.c | 1 - trunk/drivers/net/ethernet/i825xx/znet.c | 1 - trunk/drivers/net/ethernet/ibm/ibmveth.c | 7 +- trunk/drivers/net/ethernet/korina.c | 1 - .../net/ethernet/marvell/mv643xx_eth.c | 1 - .../drivers/net/ethernet/marvell/pxa168_eth.c | 1 - .../drivers/net/ethernet/natsemi/jazzsonic.c | 1 - trunk/drivers/net/ethernet/natsemi/macsonic.c | 1 - trunk/drivers/net/ethernet/natsemi/ns83820.c | 1 - trunk/drivers/net/ethernet/neterion/s2io.c | 1 - trunk/drivers/net/ethernet/nvidia/forcedeth.c | 1 - .../net/ethernet/qlogic/qlcnic/qlcnic.h | 4 +- .../net/ethernet/qlogic/qlcnic/qlcnic_main.c | 4 +- trunk/drivers/net/ethernet/realtek/atp.c | 1 - trunk/drivers/net/ethernet/realtek/r8169.c | 1 - trunk/drivers/net/ethernet/seeq/ether3.c | 1 - trunk/drivers/net/ethernet/seeq/seeq8005.c | 1 - trunk/drivers/net/ethernet/smsc/smc91c92_cs.c | 1 - trunk/drivers/net/ethernet/smsc/smc91x.c | 2 +- trunk/drivers/net/ethernet/sun/cassini.c | 1 - trunk/drivers/net/ethernet/sun/sunbmac.c | 1 - trunk/drivers/net/ethernet/sun/sungem.c | 1 - trunk/drivers/net/ethernet/sun/sunhme.c | 1 - trunk/drivers/net/ethernet/sun/sunqe.c | 1 - trunk/drivers/net/ethernet/sun/sunvnet.c | 5 +- .../drivers/net/ethernet/tundra/tsi108_eth.c | 1 - .../drivers/net/ethernet/xircom/xirc2ps_cs.c | 1 - trunk/drivers/net/hamradio/6pack.c | 1 - trunk/drivers/net/hamradio/baycom_par.c | 1 - trunk/drivers/net/hamradio/bpqether.c | 1 - trunk/drivers/net/hamradio/mkiss.c | 1 - trunk/drivers/net/hamradio/scc.c | 1 - trunk/drivers/net/hamradio/yam.c | 1 - trunk/drivers/net/hippi/rrunner.c | 1 - trunk/drivers/net/irda/Kconfig | 2 +- trunk/drivers/net/irda/donauboe.c | 1 - trunk/drivers/net/irda/sa1100_ir.c | 957 ++--- trunk/drivers/net/loopback.c | 1 - trunk/drivers/net/plip/plip.c | 1 - trunk/drivers/net/slip/slhc.c | 1 - trunk/drivers/net/slip/slip.c | 1 - trunk/drivers/net/tokenring/3c359.c | 1 - trunk/drivers/net/tokenring/abyss.c | 1 - trunk/drivers/net/tokenring/ibmtr_cs.c | 1 - trunk/drivers/net/tokenring/lanstreamer.c | 1 - trunk/drivers/net/tokenring/madgemc.c | 1 - trunk/drivers/net/tokenring/olympic.c | 1 - trunk/drivers/net/tokenring/proteon.c | 1 - trunk/drivers/net/tokenring/skisa.c | 1 - trunk/drivers/net/tokenring/smctr.c | 1 - trunk/drivers/net/tokenring/tms380tr.c | 1 - trunk/drivers/net/tokenring/tmspci.c | 1 - trunk/drivers/net/tun.c | 1 - trunk/drivers/net/usb/cdc-phonet.c | 6 +- trunk/drivers/net/usb/qmi_wwan.c | 36 + trunk/drivers/net/wan/dlci.c | 1 - trunk/drivers/net/wan/dscc4.c | 1 - trunk/drivers/net/wan/hd64570.c | 1 - trunk/drivers/net/wan/hd64572.c | 1 - trunk/drivers/net/wan/lapbether.c | 1 - trunk/drivers/net/wan/sdla.c | 1 - trunk/drivers/net/wan/x25_asy.c | 1 - trunk/drivers/net/wireless/airo.c | 1 - trunk/drivers/net/wireless/airo_cs.c | 1 - trunk/drivers/net/wireless/atmel.c | 1 - trunk/drivers/net/wireless/atmel_cs.c | 1 - trunk/drivers/net/wireless/iwlegacy/3945.c | 3 +- .../drivers/net/wireless/iwlegacy/4965-mac.c | 3 +- .../drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 2 +- .../drivers/net/wireless/prism54/islpci_mgt.c | 1 - trunk/drivers/net/wireless/ray_cs.c | 1 - trunk/drivers/net/wireless/wl3501_cs.c | 1 - trunk/drivers/nubus/nubus.c | 1 - trunk/drivers/of/Kconfig | 4 + trunk/drivers/of/Makefile | 1 + trunk/drivers/of/gpio.c | 11 +- trunk/drivers/of/of_mtd.c | 85 + trunk/drivers/parisc/dino.c | 1 - trunk/drivers/parisc/iosapic.c | 1 - trunk/drivers/parisc/lba_pci.c | 1 - trunk/drivers/pcmcia/at91_cf.c | 5 +- trunk/drivers/pcmcia/cs.c | 1 - trunk/drivers/pcmcia/i82092.c | 1 - trunk/drivers/pcmcia/i82365.c | 1 - trunk/drivers/pcmcia/m32r_cfc.c | 1 - trunk/drivers/pcmcia/m32r_pcc.c | 1 - trunk/drivers/pcmcia/m8xx_pcmcia.c | 1 - trunk/drivers/pcmcia/pd6729.c | 1 - trunk/drivers/pcmcia/pxa2xx_base.c | 1 - trunk/drivers/pcmcia/sa1111_generic.c | 55 +- trunk/drivers/pcmcia/sa1111_neponset.c | 7 +- trunk/drivers/pcmcia/sa11xx_base.c | 1 - trunk/drivers/pcmcia/soc_common.c | 1 - trunk/drivers/pcmcia/socket_sysfs.c | 1 - trunk/drivers/pcmcia/tcic.c | 1 - trunk/drivers/pcmcia/xxs1500_ss.c | 1 - trunk/drivers/platform/x86/Kconfig | 71 +- trunk/drivers/platform/x86/Makefile | 6 +- trunk/drivers/platform/x86/acer-wmi.c | 152 +- trunk/drivers/platform/x86/acerhdf.c | 19 +- trunk/drivers/platform/x86/amilo-rfkill.c | 5 +- trunk/drivers/platform/x86/apple-gmux.c | 244 ++ trunk/drivers/platform/x86/asus-laptop.c | 273 +- trunk/drivers/platform/x86/asus-nb-wmi.c | 12 +- trunk/drivers/platform/x86/asus-wmi.c | 68 +- trunk/drivers/platform/x86/asus-wmi.h | 14 +- trunk/drivers/platform/x86/asus_acpi.c | 1513 -------- trunk/drivers/platform/x86/compal-laptop.c | 14 +- trunk/drivers/platform/x86/dell-laptop.c | 34 +- trunk/drivers/platform/x86/eeepc-laptop.c | 13 +- trunk/drivers/platform/x86/eeepc-wmi.c | 108 +- trunk/drivers/platform/x86/hdaps.c | 4 +- .../drivers/platform/x86/intel_mid_powerbtn.c | 12 +- .../drivers/platform/x86/intel_mid_thermal.c | 14 +- trunk/drivers/platform/x86/intel_oaktrail.c | 2 +- trunk/drivers/platform/x86/samsung-laptop.c | 1771 +++++++--- trunk/drivers/platform/x86/sony-laptop.c | 15 +- trunk/drivers/platform/x86/thinkpad_acpi.c | 2 +- trunk/drivers/platform/x86/toshiba_acpi.c | 254 +- trunk/drivers/platform/x86/xo1-rfkill.c | 13 +- trunk/drivers/pnp/pnpbios/bioscalls.c | 1 - trunk/drivers/pnp/pnpbios/core.c | 1 - trunk/drivers/regulator/Kconfig | 8 - trunk/drivers/regulator/Makefile | 1 - trunk/drivers/regulator/bq24022.c | 162 - trunk/drivers/remoteproc/Kconfig | 28 + trunk/drivers/remoteproc/Makefile | 9 + trunk/drivers/remoteproc/omap_remoteproc.c | 229 ++ trunk/drivers/remoteproc/omap_remoteproc.h | 69 + trunk/drivers/remoteproc/remoteproc_core.c | 1586 +++++++++ trunk/drivers/remoteproc/remoteproc_debugfs.c | 179 + .../drivers/remoteproc/remoteproc_internal.h | 44 + trunk/drivers/remoteproc/remoteproc_virtio.c | 289 ++ trunk/drivers/rpmsg/Kconfig | 10 + trunk/drivers/rpmsg/Makefile | 1 + trunk/drivers/rpmsg/virtio_rpmsg_bus.c | 1054 ++++++ trunk/drivers/rtc/Kconfig | 6 +- trunk/drivers/rtc/rtc-88pm860x.c | 27 + trunk/drivers/rtc/rtc-at91sam9.c | 85 +- trunk/drivers/rtc/rtc-mv.c | 9 + trunk/drivers/rtc/rtc-s3c.c | 71 +- trunk/drivers/rtc/rtc-sa1100.c | 210 +- trunk/drivers/s390/char/sclp_cmd.c | 1 + trunk/drivers/s390/cio/crw.c | 1 + trunk/drivers/s390/cio/qdio_main.c | 1 - trunk/drivers/s390/cio/qdio_setup.c | 3 +- trunk/drivers/s390/crypto/ap_bus.c | 2 +- trunk/drivers/sbus/char/flash.c | 1 - trunk/drivers/sbus/char/openprom.c | 1 - trunk/drivers/sbus/char/uctrl.c | 1 - trunk/drivers/scsi/53c700.c | 1 - trunk/drivers/scsi/BusLogic.c | 1 - trunk/drivers/scsi/advansys.c | 1 - trunk/drivers/scsi/aha152x.c | 1 - trunk/drivers/scsi/aha1542.c | 1 - trunk/drivers/scsi/aha1740.c | 1 - trunk/drivers/scsi/arcmsr/arcmsr_hba.c | 1 - trunk/drivers/scsi/arm/acornscsi.c | 1 - trunk/drivers/scsi/arm/arxescsi.c | 2 +- trunk/drivers/scsi/arm/cumana_1.c | 1 - trunk/drivers/scsi/arm/fas216.c | 4 +- trunk/drivers/scsi/arm/fas216.h | 4 - trunk/drivers/scsi/arm/oak.c | 1 - trunk/drivers/scsi/atp870u.c | 1 - trunk/drivers/scsi/dtc.c | 1 - trunk/drivers/scsi/fd_mcs.c | 1 - trunk/drivers/scsi/fdomain.c | 1 - trunk/drivers/scsi/g_NCR5380.c | 1 - trunk/drivers/scsi/gdth.c | 1 - trunk/drivers/scsi/ibmmca.c | 1 - trunk/drivers/scsi/ibmvscsi/ibmvfc.c | 7 +- trunk/drivers/scsi/ibmvscsi/ibmvscsi.c | 7 +- trunk/drivers/scsi/ibmvscsi/ibmvstgt.c | 5 +- trunk/drivers/scsi/in2000.c | 1 - trunk/drivers/scsi/mac53c94.c | 1 - trunk/drivers/scsi/mac_scsi.c | 1 - trunk/drivers/scsi/mesh.c | 1 - trunk/drivers/scsi/ncr53c8xx.c | 1 - trunk/drivers/scsi/nsp32.c | 1 - trunk/drivers/scsi/osst.c | 1 - trunk/drivers/scsi/pas16.c | 1 - trunk/drivers/scsi/qla1280.c | 1 - trunk/drivers/scsi/qlogicpti.c | 1 - trunk/drivers/scsi/st.c | 1 - trunk/drivers/scsi/sun3_scsi.c | 1 - trunk/drivers/scsi/sun3_scsi_vme.c | 1 - trunk/drivers/scsi/sym53c416.c | 1 - trunk/drivers/scsi/t128.c | 1 - trunk/drivers/scsi/u14-34f.c | 1 - trunk/drivers/scsi/ultrastor.c | 1 - trunk/drivers/scsi/wd7000.c | 1 - trunk/drivers/sh/clk/cpg.c | 16 +- trunk/drivers/spi/Kconfig | 2 +- trunk/drivers/spi/spi-omap-uwire.c | 1 - trunk/drivers/spi/spi-orion.c | 5 - trunk/drivers/spi/spi-s3c24xx.c | 2 +- trunk/drivers/staging/comedi/drivers.c | 1 - .../staging/comedi/drivers/cb_pcidas64.c | 1 - trunk/drivers/staging/comedi/drivers/mite.c | 1 - trunk/drivers/staging/crystalhd/bc_dts_defs.h | 2 + trunk/drivers/staging/crystalhd/crystalhd.h | 1 - .../drivers/staging/crystalhd/crystalhd_lnx.h | 1 - .../staging/crystalhd/crystalhd_misc.h | 1 + trunk/drivers/staging/et131x/et131x.c | 1 - .../staging/ft1000/ft1000-pcmcia/ft1000_hw.c | 1 - .../staging/media/go7007/go7007-driver.c | 1 - .../drivers/staging/media/go7007/go7007-i2c.c | 1 - .../staging/media/go7007/go7007-v4l2.c | 1 - .../drivers/staging/media/go7007/snd-go7007.c | 1 - .../drivers/staging/media/lirc/lirc_serial.c | 1 - trunk/drivers/staging/media/lirc/lirc_sir.c | 1 - trunk/drivers/staging/mei/wd.c | 1 + trunk/drivers/staging/panel/panel.c | 1 - trunk/drivers/staging/sbe-2t3e3/io.c | 1 - trunk/drivers/staging/ste_rmi4/Makefile | 2 +- trunk/drivers/staging/telephony/phonedev.c | 1 - .../tidspbridge/include/dspbridge/host_os.h | 1 - trunk/drivers/staging/wlags49_h2/wl_cs.c | 1 - trunk/drivers/staging/wlags49_h2/wl_main.c | 3 +- trunk/drivers/staging/wlags49_h2/wl_netdev.c | 3 +- trunk/drivers/staging/wlags49_h2/wl_pci.c | 1 - trunk/drivers/staging/wlags49_h2/wl_util.c | 3 +- trunk/drivers/tty/amiserial.c | 1 - trunk/drivers/tty/hvc/hvc_vio.c | 7 +- trunk/drivers/tty/hvc/hvcs.c | 5 +- trunk/drivers/tty/isicom.c | 1 - trunk/drivers/tty/moxa.c | 1 - trunk/drivers/tty/mxser.c | 1 - trunk/drivers/tty/n_hdlc.c | 1 - trunk/drivers/tty/n_tty.c | 1 - trunk/drivers/tty/pty.c | 1 - trunk/drivers/tty/serial/21285.c | 1 + trunk/drivers/tty/serial/68328serial.c | 1 - trunk/drivers/tty/serial/8250/serial_cs.c | 1 - trunk/drivers/tty/serial/atmel_serial.c | 2 + trunk/drivers/tty/serial/crisv10.c | 2 +- trunk/drivers/tty/serial/dz.c | 1 - trunk/drivers/tty/serial/icom.c | 1 - trunk/drivers/tty/serial/imx.c | 7 +- trunk/drivers/tty/serial/msm_serial_hs.c | 1 - trunk/drivers/tty/serial/pxa.c | 49 +- trunk/drivers/tty/serial/sa1100.c | 1 + trunk/drivers/tty/serial/sunhv.c | 1 + trunk/drivers/tty/serial/sunsab.c | 1 + trunk/drivers/tty/serial/sunsu.c | 1 + trunk/drivers/tty/serial/sunzilog.c | 1 + trunk/drivers/tty/serial/zs.c | 1 - trunk/drivers/tty/synclink.c | 1 - trunk/drivers/tty/synclink_gt.c | 1 - trunk/drivers/tty/synclinkmp.c | 1 - trunk/drivers/tty/tty_io.c | 1 - trunk/drivers/tty/tty_ioctl.c | 1 - trunk/drivers/tty/vt/vt.c | 1 - trunk/drivers/usb/Kconfig | 4 +- trunk/drivers/usb/gadget/Kconfig | 8 +- trunk/drivers/usb/gadget/amd5536udc.c | 1 - trunk/drivers/usb/gadget/at91_udc.c | 50 +- trunk/drivers/usb/gadget/atmel_usba_udc.c | 6 +- trunk/drivers/usb/gadget/dummy_hcd.c | 1 - trunk/drivers/usb/gadget/f_phonet.c | 2 +- trunk/drivers/usb/gadget/fsl_udc_core.c | 1 - trunk/drivers/usb/gadget/goku_udc.c | 1 - trunk/drivers/usb/gadget/langwell_udc.c | 1 - trunk/drivers/usb/gadget/mv_udc_core.c | 1 - trunk/drivers/usb/gadget/net2272.c | 1 - trunk/drivers/usb/gadget/net2280.c | 1 - trunk/drivers/usb/gadget/omap_udc.c | 1 - trunk/drivers/usb/gadget/printer.c | 1 - trunk/drivers/usb/gadget/pxa25x_udc.c | 1 - trunk/drivers/usb/gadget/rndis.c | 1 - trunk/drivers/usb/gadget/s3c2410_udc.c | 1 - trunk/drivers/usb/host/ehci-atmel.c | 24 +- trunk/drivers/usb/host/ehci-hcd.c | 1 - trunk/drivers/usb/host/isp116x-hcd.c | 1 - trunk/drivers/usb/host/isp1362-hcd.c | 1 - trunk/drivers/usb/host/ohci-at91.c | 106 +- trunk/drivers/usb/host/ohci-hcd.c | 3 +- trunk/drivers/usb/host/ohci-sa1111.c | 297 +- trunk/drivers/usb/host/oxu210hp-hcd.c | 1 - trunk/drivers/usb/host/sl811-hcd.c | 1 - trunk/drivers/usb/host/u132-hcd.c | 1 - trunk/drivers/usb/host/uhci-hcd.c | 1 - trunk/drivers/usb/serial/option.c | 6 +- trunk/drivers/vhost/net.c | 2 +- trunk/drivers/vhost/vhost.c | 11 +- trunk/drivers/vhost/vhost.h | 2 +- trunk/drivers/video/Kconfig | 2 +- trunk/drivers/video/amifb.c | 1 - trunk/drivers/video/backlight/88pm860x_bl.c | 49 +- trunk/drivers/video/backlight/apple_bl.c | 23 +- trunk/drivers/video/backlight/ep93xx_bl.c | 25 +- trunk/drivers/video/backlight/tosa_lcd.c | 2 +- trunk/drivers/video/bt431.h | 1 - trunk/drivers/video/bt455.h | 1 - trunk/drivers/video/console/fbcon.c | 1 - trunk/drivers/video/console/newport_con.c | 1 - trunk/drivers/video/cyber2000fb.c | 1 - trunk/drivers/video/dnfb.c | 1 - trunk/drivers/video/ep93xx-fb.c | 18 +- trunk/drivers/video/neofb.c | 1 - trunk/drivers/video/omap/lcd_ams_delta.c | 27 +- trunk/drivers/video/omap2/dss/dispc.c | 5 - trunk/drivers/video/omap2/dss/dss.c | 3 + trunk/drivers/video/pmag-ba-fb.c | 1 - trunk/drivers/video/pmagb-b-fb.c | 1 - trunk/drivers/video/q40fb.c | 1 - trunk/drivers/video/sa1100fb.c | 493 +-- trunk/drivers/video/sa1100fb.h | 76 +- trunk/drivers/video/savage/savagefb_driver.c | 1 - trunk/drivers/virtio/config.c | 1 - trunk/drivers/watchdog/Kconfig | 10 +- trunk/drivers/watchdog/acquirewdt.c | 28 +- trunk/drivers/watchdog/advantechwdt.c | 35 +- trunk/drivers/watchdog/alim1535_wdt.c | 25 +- trunk/drivers/watchdog/alim7101_wdt.c | 56 +- trunk/drivers/watchdog/ar7_wdt.c | 38 +- trunk/drivers/watchdog/at32ap700x_wdt.c | 4 +- trunk/drivers/watchdog/at91rm9200_wdt.c | 22 +- trunk/drivers/watchdog/at91sam9_wdt.c | 12 +- trunk/drivers/watchdog/ath79_wdt.c | 9 +- trunk/drivers/watchdog/bcm47xx_wdt.c | 18 +- trunk/drivers/watchdog/bcm63xx_wdt.c | 11 +- trunk/drivers/watchdog/bfin_wdt.c | 31 +- trunk/drivers/watchdog/booke_wdt.c | 15 +- trunk/drivers/watchdog/coh901327_wdt.c | 206 +- trunk/drivers/watchdog/cpu5wdt.c | 19 +- trunk/drivers/watchdog/cpwd.c | 20 +- trunk/drivers/watchdog/dw_wdt.c | 7 +- trunk/drivers/watchdog/ep93xx_wdt.c | 251 +- trunk/drivers/watchdog/eurotechwdt.c | 33 +- trunk/drivers/watchdog/f71808e_wdt.c | 40 +- trunk/drivers/watchdog/gef_wdt.c | 15 +- trunk/drivers/watchdog/geodewdt.c | 9 +- trunk/drivers/watchdog/hpwdt.c | 31 +- trunk/drivers/watchdog/i6300esb.c | 39 +- trunk/drivers/watchdog/iTCO_vendor_support.c | 7 +- trunk/drivers/watchdog/iTCO_wdt.c | 59 +- trunk/drivers/watchdog/ib700wdt.c | 27 +- trunk/drivers/watchdog/ibmasr.c | 18 +- trunk/drivers/watchdog/imx2_wdt.c | 14 +- trunk/drivers/watchdog/indydog.c | 24 +- trunk/drivers/watchdog/intel_scu_watchdog.c | 71 +- trunk/drivers/watchdog/intel_scu_watchdog.h | 1 - trunk/drivers/watchdog/iop_wdt.c | 15 +- trunk/drivers/watchdog/it8712f_wdt.c | 39 +- trunk/drivers/watchdog/it87_wdt.c | 47 +- trunk/drivers/watchdog/ixp2000_wdt.c | 11 +- trunk/drivers/watchdog/ixp4xx_wdt.c | 15 +- trunk/drivers/watchdog/jz4740_wdt.c | 265 +- trunk/drivers/watchdog/ks8695_wdt.c | 10 +- trunk/drivers/watchdog/lantiq_wdt.c | 8 +- trunk/drivers/watchdog/m54xx_wdt.c | 14 +- trunk/drivers/watchdog/machzwd.c | 38 +- trunk/drivers/watchdog/max63xx_wdt.c | 194 +- trunk/drivers/watchdog/mixcomwd.c | 29 +- trunk/drivers/watchdog/mpc8xxx_wdt.c | 17 +- trunk/drivers/watchdog/mpcore_wdt.c | 111 +- trunk/drivers/watchdog/mv64x60_wdt.c | 15 +- trunk/drivers/watchdog/nuc900_wdt.c | 4 +- trunk/drivers/watchdog/nv_tco.c | 46 +- trunk/drivers/watchdog/octeon-wdt-main.c | 16 +- trunk/drivers/watchdog/of_xilinx_wdt.c | 41 +- trunk/drivers/watchdog/omap_wdt.c | 4 +- trunk/drivers/watchdog/orion_wdt.c | 39 +- trunk/drivers/watchdog/pc87413_wdt.c | 58 +- trunk/drivers/watchdog/pcwd.c | 127 +- trunk/drivers/watchdog/pcwd_pci.c | 113 +- trunk/drivers/watchdog/pcwd_usb.c | 78 +- trunk/drivers/watchdog/pika_wdt.c | 23 +- trunk/drivers/watchdog/pnx4008_wdt.c | 263 +- trunk/drivers/watchdog/pnx833x_wdt.c | 30 +- trunk/drivers/watchdog/rc32434_wdt.c | 33 +- trunk/drivers/watchdog/riowd.c | 10 +- trunk/drivers/watchdog/s3c2410_wdt.c | 31 +- trunk/drivers/watchdog/sa1100_wdt.c | 10 +- trunk/drivers/watchdog/sb_wdog.c | 28 +- trunk/drivers/watchdog/sbc60xxwdt.c | 42 +- trunk/drivers/watchdog/sbc7240_wdt.c | 45 +- trunk/drivers/watchdog/sbc8360.c | 25 +- trunk/drivers/watchdog/sbc_epx_c3.c | 23 +- trunk/drivers/watchdog/sbc_fitpc2_wdt.c | 14 +- trunk/drivers/watchdog/sc1200wdt.c | 34 +- trunk/drivers/watchdog/sc520_wdt.c | 40 +- trunk/drivers/watchdog/sch311x_wdt.c | 17 +- trunk/drivers/watchdog/scx200_wdt.c | 25 +- trunk/drivers/watchdog/shwdt.c | 19 +- trunk/drivers/watchdog/smsc37b787_wdt.c | 43 +- trunk/drivers/watchdog/softdog.c | 211 +- trunk/drivers/watchdog/sp5100_tco.c | 35 +- trunk/drivers/watchdog/sp805_wdt.c | 111 +- trunk/drivers/watchdog/stmp3xxx_wdt.c | 8 +- trunk/drivers/watchdog/ts72xx_wdt.c | 4 +- trunk/drivers/watchdog/twl4030_wdt.c | 4 +- trunk/drivers/watchdog/txx9wdt.c | 184 +- trunk/drivers/watchdog/via_wdt.c | 13 +- trunk/drivers/watchdog/w83627hf_wdt.c | 39 +- trunk/drivers/watchdog/w83697hf_wdt.c | 44 +- trunk/drivers/watchdog/w83697ug_wdt.c | 39 +- trunk/drivers/watchdog/w83877f_wdt.c | 41 +- trunk/drivers/watchdog/w83977f_wdt.c | 39 +- trunk/drivers/watchdog/wafer5823wdt.c | 34 +- trunk/drivers/watchdog/watchdog_core.c | 4 +- trunk/drivers/watchdog/watchdog_dev.c | 16 +- trunk/drivers/watchdog/wdrtas.c | 71 +- trunk/drivers/watchdog/wdt.c | 56 +- trunk/drivers/watchdog/wdt285.c | 13 +- trunk/drivers/watchdog/wdt977.c | 41 +- trunk/drivers/watchdog/wdt_pci.c | 71 +- trunk/drivers/watchdog/wm831x_wdt.c | 6 +- trunk/drivers/watchdog/wm8350_wdt.c | 223 +- trunk/drivers/watchdog/xen_wdt.c | 42 +- trunk/fs/9p/vfs_super.c | 2 +- trunk/fs/binfmt_aout.c | 1 - trunk/fs/binfmt_elf.c | 1 + trunk/fs/binfmt_elf_fdpic.c | 1 + trunk/fs/binfmt_flat.c | 1 - trunk/fs/buffer.c | 15 +- trunk/fs/ceph/inode.c | 11 +- trunk/fs/ceph/mds_client.c | 7 +- trunk/fs/ceph/snap.c | 2 +- trunk/fs/ceph/super.c | 19 +- trunk/fs/ceph/super.h | 4 +- trunk/fs/ceph/xattr.c | 202 +- trunk/fs/coda/inode.c | 1 - trunk/fs/coda/psdev.c | 1 - trunk/fs/coda/upcall.c | 1 - trunk/fs/dcache.c | 3 +- trunk/fs/eventpoll.c | 1 - trunk/fs/exec.c | 1 + trunk/fs/exofs/super.c | 7 +- trunk/fs/ext3/balloc.c | 84 +- trunk/fs/ext3/inode.c | 9 +- trunk/fs/ext4/balloc.c | 63 +- trunk/fs/ext4/dir.c | 13 +- trunk/fs/ext4/ext4.h | 34 +- trunk/fs/ext4/ext4_extents.h | 4 +- trunk/fs/ext4/ext4_jbd2.h | 128 +- trunk/fs/ext4/extents.c | 330 +- trunk/fs/ext4/fsync.c | 2 + trunk/fs/ext4/ialloc.c | 260 +- trunk/fs/ext4/inode.c | 95 +- trunk/fs/ext4/mballoc.c | 342 +- trunk/fs/ext4/mballoc.h | 20 +- trunk/fs/ext4/migrate.c | 2 +- trunk/fs/ext4/mmp.c | 4 +- trunk/fs/ext4/namei.c | 2 +- trunk/fs/ext4/page-io.c | 18 +- trunk/fs/ext4/resize.c | 37 +- trunk/fs/ext4/super.c | 1075 +++--- trunk/fs/ext4/xattr.c | 25 +- trunk/fs/fs-writeback.c | 22 +- trunk/fs/hostfs/hostfs.h | 3 +- trunk/fs/hostfs/hostfs_kern.c | 5 +- trunk/fs/hostfs/hostfs_user.c | 4 +- trunk/fs/jbd2/checkpoint.c | 140 +- trunk/fs/jbd2/commit.c | 48 +- trunk/fs/jbd2/journal.c | 362 +- trunk/fs/jbd2/recovery.c | 5 +- trunk/fs/jbd2/revoke.c | 12 +- trunk/fs/jbd2/transaction.c | 48 +- trunk/fs/ncpfs/file.c | 1 - trunk/fs/ncpfs/inode.c | 1 - trunk/fs/ncpfs/mmap.c | 1 - trunk/fs/nfs/client.c | 1 - trunk/fs/nfs/direct.c | 1 - trunk/fs/nfs/file.c | 1 - trunk/fs/nfs/getroot.c | 1 - trunk/fs/nfs/inode.c | 1 - trunk/fs/nfs/nfs4filelayout.c | 1 - trunk/fs/nfs/nfs4proc.c | 43 +- trunk/fs/nfs/read.c | 1 - trunk/fs/nfs/super.c | 1 - trunk/fs/proc/array.c | 2 +- trunk/fs/proc/inode.c | 1 - trunk/fs/proc/namespaces.c | 6 +- trunk/fs/proc/task_mmu.c | 5 +- trunk/fs/quota/dquot.c | 189 +- trunk/fs/reiserfs/journal.c | 1 - trunk/fs/squashfs/block.c | 3 +- trunk/fs/squashfs/dir.c | 7 +- trunk/fs/squashfs/namei.c | 5 +- trunk/fs/squashfs/squashfs_fs.h | 19 +- trunk/fs/squashfs/super.c | 5 + trunk/fs/udf/balloc.c | 84 +- trunk/fs/udf/ialloc.c | 1 + trunk/fs/udf/inode.c | 20 +- trunk/fs/udf/super.c | 5 +- trunk/fs/udf/udf_i.h | 1 + trunk/fs/ufs/inode.c | 1 - trunk/fs/ufs/super.c | 1 - trunk/fs/xfs/xfs_alloc.c | 36 +- trunk/fs/xfs/xfs_alloc.h | 12 + trunk/fs/xfs/xfs_attr.c | 16 + trunk/fs/xfs/xfs_attr_leaf.c | 40 +- trunk/fs/xfs/xfs_bmap.c | 9 + trunk/fs/xfs/xfs_buf.h | 1 - trunk/fs/xfs/xfs_da_btree.c | 32 + trunk/fs/xfs/xfs_discard.c | 61 +- trunk/fs/xfs/xfs_dquot.c | 2 +- trunk/fs/xfs/xfs_iget.c | 8 +- trunk/fs/xfs/xfs_inode.h | 4 +- trunk/fs/xfs/xfs_ioctl.c | 14 +- trunk/fs/xfs/xfs_itable.c | 3 +- trunk/fs/xfs/xfs_log.c | 3 +- trunk/fs/xfs/xfs_log_recover.c | 33 +- trunk/fs/xfs/xfs_rtalloc.c | 9 +- trunk/fs/xfs/xfs_super.c | 33 + trunk/fs/xfs/xfs_trace.h | 78 +- trunk/include/acpi/platform/aclinux.h | 1 - trunk/include/asm-generic/atomic.h | 3 +- trunk/include/asm-generic/barrier.h | 50 + trunk/include/asm-generic/bitops/atomic.h | 2 +- trunk/include/asm-generic/cmpxchg.h | 87 +- trunk/include/asm-generic/exec.h | 19 + trunk/include/asm-generic/gpio.h | 4 +- trunk/include/asm-generic/switch_to.h | 30 + trunk/include/asm-generic/system.h | 141 - trunk/include/asm-generic/vmlinux.lds.h | 35 +- trunk/include/linux/acpi.h | 1 + trunk/include/linux/apple_bl.h | 26 + trunk/include/linux/atmel_tc.h | 10 + trunk/include/linux/ceph/libceph.h | 2 +- trunk/include/linux/ceph/messenger.h | 5 +- trunk/include/linux/clk-private.h | 196 ++ trunk/include/linux/clk-provider.h | 300 ++ trunk/include/linux/clk.h | 68 +- trunk/include/linux/cnt32_to_63.h | 1 - trunk/include/linux/cpumask.h | 3 +- trunk/include/linux/debug_locks.h | 1 - trunk/include/linux/dma-buf.h | 97 +- trunk/include/linux/edac.h | 179 +- trunk/include/linux/efi.h | 1 - trunk/include/linux/fs.h | 13 - trunk/include/linux/gpio.h | 6 + trunk/include/linux/i2c-algo-bit.h | 3 +- trunk/include/linux/i2c-algo-pcf.h | 3 +- trunk/include/linux/i2c-dev.h | 3 +- trunk/include/linux/i2c-mux.h | 3 +- trunk/include/linux/i2c-smbus.h | 3 +- trunk/include/linux/i2c.h | 3 +- trunk/include/linux/i2c/twl.h | 2 +- trunk/include/linux/ide.h | 1 - trunk/include/linux/interrupt.h | 1 - trunk/include/linux/jbd2.h | 12 +- trunk/include/linux/journal-head.h | 2 + trunk/include/linux/kvm.h | 98 + trunk/include/linux/kvm_host.h | 69 +- trunk/include/linux/llist.h | 3 +- trunk/include/linux/lsm_audit.h | 1 - trunk/include/linux/mfd/88pm860x.h | 23 + trunk/include/linux/mfd/abx500.h | 7 - trunk/include/linux/mfd/abx500/ab8500-gpio.h | 4 +- .../include/linux/mfd/abx500/ab8500-sysctrl.h | 43 + trunk/include/linux/mfd/abx500/ab8500.h | 208 +- trunk/include/linux/mfd/anatop.h | 40 + trunk/include/linux/mfd/da9052/da9052.h | 2 - trunk/include/linux/mfd/db8500-prcmu.h | 183 +- trunk/include/linux/mfd/dbx500-prcmu.h | 414 ++- trunk/include/linux/mfd/mc13xxx.h | 16 +- trunk/include/linux/mfd/mcp.h | 14 +- trunk/include/linux/mfd/rc5t583.h | 295 ++ trunk/include/linux/mfd/stmpe.h | 1 + trunk/include/linux/mfd/tmio.h | 26 +- trunk/include/linux/mfd/tps65090.h | 46 + trunk/include/linux/mfd/tps65217.h | 283 ++ trunk/include/linux/mfd/tps65910.h | 11 + trunk/include/linux/mfd/ucb1x00.h | 38 +- trunk/include/linux/mfd/wm8994/pdata.h | 1 - trunk/include/linux/mm.h | 4 +- trunk/include/linux/mmc/card.h | 2 + trunk/include/linux/mmc/cd-gpio.h | 3 +- trunk/include/linux/mmc/core.h | 1 - trunk/include/linux/mmc/dw_mmc.h | 8 +- trunk/include/linux/mmc/host.h | 48 +- trunk/include/linux/mmc/mmc.h | 3 + trunk/include/linux/mmc/sdhci.h | 2 + trunk/include/linux/mmc/sh_mmcif.h | 21 +- trunk/include/linux/mmc/sh_mobile_sdhi.h | 14 + trunk/include/linux/mod_devicetable.h | 9 + trunk/include/linux/module.h | 32 +- trunk/include/linux/moduleparam.h | 58 +- trunk/include/linux/mtd/map.h | 2 +- trunk/include/linux/of.h | 26 +- trunk/include/linux/of_gpio.h | 27 +- trunk/include/linux/of_mtd.h | 19 + trunk/include/linux/parport.h | 1 - trunk/include/linux/pid_namespace.h | 8 +- trunk/include/linux/platform_data/atmel.h | 27 + trunk/include/linux/platform_data/tegra_emc.h | 34 + trunk/include/linux/radix-tree.h | 196 ++ trunk/include/linux/regulator/ab8500.h | 70 +- trunk/include/linux/regulator/bq24022.h | 24 - trunk/include/linux/remoteproc.h | 478 +++ trunk/include/linux/rpmsg.h | 326 ++ trunk/include/linux/rwsem.h | 1 - trunk/include/linux/sa11x0-dma.h | 24 + trunk/include/linux/sched.h | 1 - trunk/include/linux/sh_clk.h | 5 +- trunk/include/linux/skbuff.h | 3 +- trunk/include/linux/slab.h | 17 +- trunk/include/linux/slub_def.h | 6 +- trunk/include/linux/smp.h | 46 + trunk/include/linux/spi/orion_spi.h | 1 - .../spi.h => include/linux/spi/s3c24xx.h} | 20 +- trunk/include/linux/spinlock.h | 2 +- trunk/include/linux/stop_machine.h | 1 - trunk/include/linux/swap.h | 3 + trunk/include/linux/tty.h | 1 - trunk/include/linux/virtio_ids.h | 1 + trunk/include/linux/wait.h | 1 - trunk/include/linux/watchdog.h | 4 +- .../net/netfilter/nf_conntrack_l4proto.h | 4 + .../net/netfilter/nf_conntrack_timeout.h | 2 +- trunk/include/trace/events/jbd2.h | 29 +- trunk/include/video/sa1100fb.h | 63 + trunk/include/xen/xen-ops.h | 1 + trunk/init/main.c | 66 +- trunk/kernel/debug/debug_core.c | 1 - trunk/kernel/debug/kdb/kdb_bt.c | 1 - trunk/kernel/dma.c | 1 - trunk/kernel/kexec.c | 7 +- trunk/kernel/module.c | 37 +- trunk/kernel/params.c | 39 +- trunk/kernel/pid_namespace.c | 33 + trunk/kernel/rwsem.c | 1 - trunk/kernel/sched/core.c | 1 + trunk/kernel/signal.c | 1 + trunk/kernel/smp.c | 90 + trunk/kernel/sys.c | 9 + trunk/kernel/sysctl.c | 12 +- trunk/lib/Kconfig | 9 + trunk/lib/cpumask.c | 12 - trunk/lib/llist.c | 1 - trunk/lib/radix-tree.c | 442 +-- trunk/lib/raid6/altivec.uc | 2 +- trunk/mm/filemap.c | 86 +- trunk/mm/memcontrol.c | 4 + trunk/mm/page-writeback.c | 2 + trunk/mm/page_alloc.c | 44 +- trunk/mm/slab.c | 56 +- trunk/mm/slub.c | 36 +- trunk/mm/swapfile.c | 3 + trunk/mm/truncate.c | 40 + trunk/net/802/fc.c | 1 - trunk/net/802/fddi.c | 1 - trunk/net/802/hippi.c | 1 - trunk/net/802/tr.c | 1 - trunk/net/9p/client.c | 26 +- trunk/net/atm/clip.c | 1 - trunk/net/ax25/af_ax25.c | 1 - trunk/net/ax25/ax25_addr.c | 1 - trunk/net/ax25/ax25_dev.c | 1 - trunk/net/ax25/ax25_ds_in.c | 1 - trunk/net/ax25/ax25_ds_subr.c | 1 - trunk/net/ax25/ax25_ds_timer.c | 1 - trunk/net/ax25/ax25_iface.c | 1 - trunk/net/ax25/ax25_in.c | 1 - trunk/net/ax25/ax25_ip.c | 1 - trunk/net/ax25/ax25_out.c | 1 - trunk/net/ax25/ax25_route.c | 1 - trunk/net/ax25/ax25_std_in.c | 1 - trunk/net/ax25/ax25_std_subr.c | 1 - trunk/net/ax25/ax25_std_timer.c | 1 - trunk/net/ax25/ax25_subr.c | 1 - trunk/net/ax25/ax25_timer.c | 1 - trunk/net/ax25/ax25_uid.c | 1 - trunk/net/bluetooth/bnep/sock.c | 1 - trunk/net/bluetooth/cmtp/sock.c | 1 - trunk/net/bluetooth/hci_conn.c | 1 - trunk/net/bluetooth/hci_core.c | 1 - trunk/net/bluetooth/hci_event.c | 1 - trunk/net/bluetooth/hci_sock.c | 1 - trunk/net/bluetooth/l2cap_core.c | 1 - trunk/net/bluetooth/rfcomm/sock.c | 1 - trunk/net/bluetooth/sco.c | 1 - trunk/net/ceph/ceph_common.c | 26 +- trunk/net/ceph/messenger.c | 456 +-- trunk/net/ceph/osdmap.c | 3 +- trunk/net/core/datagram.c | 1 - trunk/net/core/dev.c | 1 - trunk/net/core/filter.c | 1 - trunk/net/core/gen_estimator.c | 1 - trunk/net/core/rtnetlink.c | 1 - trunk/net/core/scm.c | 1 - trunk/net/core/skbuff.c | 5 +- trunk/net/core/sock.c | 1 - trunk/net/core/utils.c | 1 - trunk/net/decnet/af_decnet.c | 1 - trunk/net/decnet/dn_dev.c | 1 - trunk/net/decnet/dn_nsp_in.c | 1 - trunk/net/decnet/dn_nsp_out.c | 1 - trunk/net/econet/af_econet.c | 1 - trunk/net/ethernet/eth.c | 1 - trunk/net/ipv4/af_inet.c | 1 - trunk/net/ipv4/arp.c | 1 - trunk/net/ipv4/devinet.c | 1 - trunk/net/ipv4/fib_frontend.c | 1 - trunk/net/ipv4/fib_semantics.c | 1 - trunk/net/ipv4/fib_trie.c | 1 - trunk/net/ipv4/icmp.c | 1 - trunk/net/ipv4/igmp.c | 1 - trunk/net/ipv4/ip_input.c | 1 - trunk/net/ipv4/ip_output.c | 1 - trunk/net/ipv4/ipmr.c | 1 - trunk/net/ipv4/ping.c | 1 - trunk/net/ipv4/route.c | 1 - trunk/net/ipv4/udp.c | 1 - trunk/net/ipv6/af_inet6.c | 1 - trunk/net/ipv6/icmp.c | 1 - trunk/net/ipv6/ip6mr.c | 1 - trunk/net/ipv6/route.c | 8 +- trunk/net/irda/irlan/irlan_client.c | 1 - trunk/net/irda/irlan/irlan_common.c | 1 - trunk/net/irda/irlan/irlan_provider.c | 1 - trunk/net/irda/timer.c | 1 - trunk/net/lapb/lapb_iface.c | 1 - trunk/net/lapb/lapb_in.c | 1 - trunk/net/lapb/lapb_out.c | 1 - trunk/net/lapb/lapb_subr.c | 1 - trunk/net/lapb/lapb_timer.c | 1 - trunk/net/netfilter/ipvs/ip_vs_app.c | 1 - trunk/net/netfilter/ipvs/ip_vs_proto.c | 1 - trunk/net/netfilter/nf_conntrack_core.c | 39 +- trunk/net/netfilter/nf_conntrack_proto.c | 21 + trunk/net/netfilter/nfnetlink.c | 1 - trunk/net/netfilter/nfnetlink_cttimeout.c | 45 +- trunk/net/netfilter/xt_CT.c | 31 +- trunk/net/netfilter/xt_LOG.c | 12 +- trunk/net/netrom/af_netrom.c | 1 - trunk/net/netrom/nr_dev.c | 1 - trunk/net/netrom/nr_in.c | 1 - trunk/net/netrom/nr_out.c | 1 - trunk/net/netrom/nr_route.c | 1 - trunk/net/netrom/nr_subr.c | 1 - trunk/net/netrom/nr_timer.c | 1 - trunk/net/openvswitch/datapath.c | 1 - trunk/net/packet/af_packet.c | 1 - trunk/net/rose/af_rose.c | 1 - trunk/net/rose/rose_dev.c | 1 - trunk/net/rose/rose_in.c | 1 - trunk/net/rose/rose_link.c | 1 - trunk/net/rose/rose_out.c | 1 - trunk/net/rose/rose_route.c | 1 - trunk/net/rose/rose_subr.c | 1 - trunk/net/rose/rose_timer.c | 1 - trunk/net/sunrpc/clnt.c | 1 - trunk/net/sunrpc/rpcb_clnt.c | 2 +- trunk/samples/Kconfig | 8 + trunk/samples/Makefile | 2 +- trunk/samples/rpmsg/Makefile | 1 + trunk/samples/rpmsg/rpmsg_client_sample.c | 100 + trunk/security/apparmor/domain.c | 3 +- trunk/security/apparmor/file.c | 2 + trunk/security/selinux/include/avc.h | 1 - trunk/security/selinux/include/xfrm.h | 2 + trunk/sound/oss/os.h | 1 - trunk/sound/oss/vidc.c | 1 - trunk/sound/oss/waveartist.c | 1 - trunk/sound/pci/asihpi/hpios.h | 1 - trunk/sound/pci/aw2/aw2-saa7146.c | 1 - trunk/sound/soc/imx/imx-audmux.c | 8 +- trunk/sound/soc/omap/ams-delta.c | 34 +- trunk/sound/soc/samsung/Kconfig | 12 +- trunk/tools/testing/selftests/Makefile | 7 +- .../testing/selftests/breakpoints/Makefile | 7 +- trunk/tools/testing/selftests/run_tests | 8 - trunk/tools/testing/selftests/vm/Makefile | 14 + .../testing/selftests}/vm/hugepage-mmap.c | 13 +- .../testing/selftests}/vm/hugepage-shm.c | 10 +- .../testing/selftests}/vm/map_hugetlb.c | 10 +- trunk/tools/testing/selftests/vm/run_vmtests | 77 + trunk/tools/virtio/linux/hrtimer.h | 0 trunk/tools/virtio/linux/module.h | 0 trunk/tools/virtio/linux/virtio.h | 3 + trunk/tools/vm/Makefile | 11 + .../{Documentation => tools}/vm/page-types.c | 6 +- trunk/tools/{slub => vm}/slabinfo.c | 0 trunk/virt/kvm/assigned-dev.c | 213 +- trunk/virt/kvm/kvm_main.c | 144 +- 3277 files changed, 75508 insertions(+), 37222 deletions(-) create mode 100644 trunk/Documentation/ABI/testing/sysfs-block-dm create mode 100644 trunk/Documentation/ABI/testing/sysfs-bus-rpmsg create mode 100644 trunk/Documentation/clk.txt create mode 100644 trunk/Documentation/device-mapper/verity.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/atmel-aic.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/atmel-at91.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/atmel-pmc.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/mrvl.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/omap/intc.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/spear.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/tegra/emc.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/twd.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/vexpress.txt create mode 100644 trunk/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio-omap.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio-twl4030.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio_atmel.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/sodaville.txt create mode 100644 trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt create mode 100644 trunk/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt create mode 100644 trunk/Documentation/devicetree/bindings/mtd/atmel-nand.txt create mode 100644 trunk/Documentation/devicetree/bindings/mtd/nand.txt create mode 100644 trunk/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt create mode 100644 trunk/Documentation/devicetree/bindings/serial/mrvl-serial.txt create mode 100644 trunk/Documentation/devicetree/bindings/usb/atmel-usb.txt create mode 100644 trunk/Documentation/remoteproc.txt create mode 100644 trunk/Documentation/rpmsg.txt delete mode 100644 trunk/Documentation/vm/Makefile delete mode 100644 trunk/Documentation/watchdog/00-INDEX create mode 100644 trunk/arch/alpha/include/asm/exec.h create mode 100644 trunk/arch/alpha/include/asm/mce.h create mode 100644 trunk/arch/alpha/include/asm/special_insns.h create mode 100644 trunk/arch/alpha/include/asm/switch_to.h delete mode 100644 trunk/arch/alpha/include/asm/system.h create mode 100644 trunk/arch/arm/boot/dts/am3517_mt_ventoux.dts create mode 100644 trunk/arch/arm/boot/dts/at91sam9g25ek.dts create mode 100644 trunk/arch/arm/boot/dts/at91sam9x5.dtsi create mode 100644 trunk/arch/arm/boot/dts/at91sam9x5cm.dtsi create mode 100644 trunk/arch/arm/boot/dts/db8500.dtsi create mode 100644 trunk/arch/arm/boot/dts/exynos5250-smdk5250.dts create mode 100644 trunk/arch/arm/boot/dts/exynos5250.dtsi create mode 100644 trunk/arch/arm/boot/dts/imx27-phytec-phycore.dts create mode 100644 trunk/arch/arm/boot/dts/imx27.dtsi create mode 100644 trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts create mode 100644 trunk/arch/arm/boot/dts/kirkwood.dtsi create mode 100644 trunk/arch/arm/boot/dts/omap3-evm.dts create mode 100644 trunk/arch/arm/boot/dts/pxa168-aspenite.dts create mode 100644 trunk/arch/arm/boot/dts/pxa168.dtsi create mode 100644 trunk/arch/arm/boot/dts/snowball.dts create mode 100644 trunk/arch/arm/boot/dts/spear600-evb.dts create mode 100644 trunk/arch/arm/boot/dts/spear600.dtsi create mode 100644 trunk/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi create mode 100644 trunk/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi create mode 100644 trunk/arch/arm/boot/dts/vexpress-v2m.dtsi create mode 100644 trunk/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts create mode 100644 trunk/arch/arm/boot/dts/vexpress-v2p-ca5s.dts create mode 100644 trunk/arch/arm/boot/dts/vexpress-v2p-ca9.dts delete mode 100644 trunk/arch/arm/configs/at91cap9_defconfig create mode 100644 trunk/arch/arm/configs/lpc32xx_defconfig create mode 100644 trunk/arch/arm/include/asm/barrier.h create mode 100644 trunk/arch/arm/include/asm/cmpxchg.h create mode 100644 trunk/arch/arm/include/asm/compiler.h create mode 100644 trunk/arch/arm/include/asm/cp15.h create mode 100644 trunk/arch/arm/include/asm/exec.h create mode 100644 trunk/arch/arm/include/asm/switch_to.h create mode 100644 trunk/arch/arm/include/asm/system_info.h create mode 100644 trunk/arch/arm/include/asm/system_misc.h delete mode 100644 trunk/arch/arm/mach-at91/at91cap9.c delete mode 100644 trunk/arch/arm/mach-at91/at91cap9_devices.c create mode 100644 trunk/arch/arm/mach-at91/at91sam9x5.c delete mode 100644 trunk/arch/arm/mach-at91/board-cap9adk.c create mode 100644 trunk/arch/arm/mach-at91/include/mach/at91_matrix.h create mode 100644 trunk/arch/arm/mach-at91/include/mach/at91_ramc.h delete mode 100644 trunk/arch/arm/mach-at91/include/mach/at91cap9.h delete mode 100644 trunk/arch/arm/mach-at91/include/mach/at91cap9_matrix.h create mode 100644 trunk/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h create mode 100644 trunk/arch/arm/mach-at91/include/mach/at91sam9x5.h create mode 100644 trunk/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h create mode 100644 trunk/arch/arm/mach-davinci/davinci.h delete mode 100644 trunk/arch/arm/mach-davinci/include/mach/dm355.h delete mode 100644 trunk/arch/arm/mach-davinci/include/mach/dm644x.h create mode 100644 trunk/arch/arm/mach-ebsa110/core.h rename trunk/arch/arm/{kernel => mach-ep93xx}/crunch-bits.S (100%) rename trunk/arch/arm/{kernel => mach-ep93xx}/crunch.c (98%) create mode 100644 trunk/arch/arm/mach-ep93xx/soc.h create mode 100644 trunk/arch/arm/mach-exynos/clock-exynos4.c create mode 100644 trunk/arch/arm/mach-exynos/clock-exynos4.h create mode 100644 trunk/arch/arm/mach-exynos/clock-exynos5.c delete mode 100644 trunk/arch/arm/mach-exynos/clock.c create mode 100644 trunk/arch/arm/mach-exynos/dev-uart.c delete mode 100644 trunk/arch/arm/mach-exynos/include/mach/exynos4-clock.h create mode 100644 trunk/arch/arm/mach-exynos/mach-exynos5-dt.c delete mode 100644 trunk/arch/arm/mach-highbank/include/mach/memory.h delete mode 100644 trunk/arch/arm/mach-highbank/localtimer.c rename trunk/arch/arm/mach-imx/{crmregs-imx31.h => crmregs-imx3.h} (94%) create mode 100644 trunk/arch/arm/mach-imx/imx27-dt.c delete mode 100644 trunk/arch/arm/mach-imx/localtimer.c create mode 100644 trunk/arch/arm/mach-imx/pm-imx3.c create mode 100644 trunk/arch/arm/mach-kirkwood/board-dreamplug.c create mode 100644 trunk/arch/arm/mach-kirkwood/board-dt.c create mode 100644 trunk/arch/arm/mach-lpc32xx/include/mach/board.h create mode 100644 trunk/arch/arm/mach-mmp/include/mach/regs-rtc.h create mode 100644 trunk/arch/arm/mach-mmp/mmp-dt.c create mode 100644 trunk/arch/arm/mach-mxs/devices/platform-gpmi-nand.c create mode 100644 trunk/arch/arm/mach-mxs/mach-apx4devkit.c delete mode 100644 trunk/arch/arm/mach-nomadik/include/mach/setup.h create mode 100644 trunk/arch/arm/mach-omap1/iomap.h create mode 100644 trunk/arch/arm/mach-omap2/am35xx-emac.c create mode 100644 trunk/arch/arm/mach-omap2/am35xx-emac.h rename trunk/arch/arm/{plat-omap/include/plat/io.h => mach-omap2/iomap.h} (77%) delete mode 100644 trunk/arch/arm/mach-omap2/timer-mpu.c rename trunk/arch/arm/{kernel => mach-rpc}/ecard.c (90%) rename trunk/arch/arm/{kernel => mach-rpc}/ecard.h (100%) rename trunk/arch/arm/{common/time-acorn.c => mach-rpc/time.c} (98%) delete mode 100644 trunk/arch/arm/mach-s3c2410/common.h delete mode 100644 trunk/arch/arm/mach-s3c2410/usb-simtec.h delete mode 100644 trunk/arch/arm/mach-s3c2416/Kconfig delete mode 100644 trunk/arch/arm/mach-s3c2416/Makefile delete mode 100644 trunk/arch/arm/mach-s3c2440/common.h delete mode 100644 trunk/arch/arm/mach-s3c2443/Kconfig delete mode 100644 trunk/arch/arm/mach-s3c2443/Makefile create mode 100644 trunk/arch/arm/mach-s3c24xx/Kconfig create mode 100644 trunk/arch/arm/mach-s3c24xx/Makefile rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/Makefile.boot (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/bast-ide.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/bast-irq.c (100%) rename trunk/arch/arm/{mach-s3c2412/clock.c => mach-s3c24xx/clock-s3c2412.c} (100%) rename trunk/arch/arm/{mach-s3c2416/clock.c => mach-s3c24xx/clock-s3c2416.c} (96%) rename trunk/arch/arm/{mach-s3c2440/clock.c => mach-s3c24xx/clock-s3c2440.c} (100%) rename trunk/arch/arm/{mach-s3c2443/clock.c => mach-s3c24xx/clock-s3c2443.c} (97%) rename trunk/arch/arm/{mach-s3c2440/s3c244x-clock.c => mach-s3c24xx/clock-s3c244x.c} (100%) rename trunk/arch/arm/{plat-s3c24xx/s3c2443-clock.c => mach-s3c24xx/common-s3c2443.c} (88%) rename trunk/arch/arm/{plat-s3c24xx => mach-s3c24xx}/common-smdk.c (100%) rename trunk/arch/arm/{mach-s3c2410/dma.c => mach-s3c24xx/dma-s3c2410.c} (100%) rename trunk/arch/arm/{mach-s3c2412/dma.c => mach-s3c24xx/dma-s3c2412.c} (100%) rename trunk/arch/arm/{mach-s3c2440/dma.c => mach-s3c24xx/dma-s3c2440.c} (100%) rename trunk/arch/arm/{mach-s3c2443/dma.c => mach-s3c24xx/dma-s3c2443.c} (85%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/h1940-bluetooth.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/anubis-cpld.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/anubis-irq.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/anubis-map.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/bast-cpld.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/bast-irq.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/bast-map.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/bast-pmu.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/debug-macro.S (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/dma.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/entry-macro.S (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/fb.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/gpio-fns.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/gpio-nrs.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/gpio-track.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/gpio.h (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/include/mach/gta02.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/h1940-latch.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/h1940.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/hardware.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/idle.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/io.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/irqs.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/leds-gpio.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/map.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/osiris-cpld.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/osiris-map.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/otom-map.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/pm-core.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-clock.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-dsc.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-gpio.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-gpioj.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-irq.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-lcd.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-mem.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-power.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-s3c2412-mem.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-s3c2412.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-s3c2416-mem.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-s3c2416.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-s3c2443-clock.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/regs-sdi.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/tick.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/timex.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/uncompress.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/vr1000-cpld.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/vr1000-irq.h (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/include/mach/vr1000-map.h (100%) rename trunk/arch/arm/{mach-s3c2412/irq.c => mach-s3c24xx/irq-s3c2412.c} (100%) rename trunk/arch/arm/{mach-s3c2416/irq.c => mach-s3c24xx/irq-s3c2416.c} (100%) rename trunk/arch/arm/{mach-s3c2440/irq.c => mach-s3c24xx/irq-s3c2440.c} (100%) rename trunk/arch/arm/{mach-s3c2443/irq.c => mach-s3c24xx/irq-s3c2443.c} (100%) rename trunk/arch/arm/{mach-s3c2440/s3c244x-irq.c => mach-s3c24xx/irq-s3c244x.c} (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-amlm5900.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-anubis.c (99%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-at2440evb.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-bast.c (99%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-gta02.c (99%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-h1940.c (98%) rename trunk/arch/arm/{mach-s3c2412 => mach-s3c24xx}/mach-jive.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-mini2440.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-n30.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-nexcoder.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-osiris-dvs.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-osiris.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-otom.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-qt2410.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-rx1950.c (98%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-rx3715.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-smdk2410.c (100%) rename trunk/arch/arm/{mach-s3c2412 => mach-s3c24xx}/mach-smdk2413.c (100%) rename trunk/arch/arm/{mach-s3c2416 => mach-s3c24xx}/mach-smdk2416.c (96%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/mach-smdk2440.c (100%) rename trunk/arch/arm/{mach-s3c2443 => mach-s3c24xx}/mach-smdk2443.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-tct_hammer.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/mach-vr1000.c (99%) rename trunk/arch/arm/{mach-s3c2412 => mach-s3c24xx}/mach-vstms.c (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/pm-h1940.S (100%) rename trunk/arch/arm/{mach-s3c2410/pm.c => mach-s3c24xx/pm-s3c2410.c} (100%) rename trunk/arch/arm/{mach-s3c2412/pm.c => mach-s3c24xx/pm-s3c2412.c} (100%) rename trunk/arch/arm/{mach-s3c2416/pm.c => mach-s3c24xx/pm-s3c2416.c} (100%) rename trunk/arch/arm/{mach-s3c2410 => mach-s3c24xx}/s3c2410.c (99%) rename trunk/arch/arm/{mach-s3c2412 => mach-s3c24xx}/s3c2412.c (99%) rename trunk/arch/arm/{mach-s3c2416 => mach-s3c24xx}/s3c2416.c (97%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/s3c2440.c (100%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/s3c2442.c (100%) rename trunk/arch/arm/{mach-s3c2443 => mach-s3c24xx}/s3c2443.c (96%) rename trunk/arch/arm/{mach-s3c2440 => mach-s3c24xx}/s3c244x.c (99%) rename trunk/arch/arm/{plat-s3c24xx => mach-s3c24xx}/setup-i2c.c (100%) rename trunk/arch/arm/{mach-s3c2416 => mach-s3c24xx}/setup-sdhci-gpio.c (100%) rename trunk/arch/arm/{plat-s3c24xx => mach-s3c24xx}/setup-ts.c (100%) rename trunk/arch/arm/{plat-s3c24xx => mach-s3c24xx}/simtec-audio.c (98%) rename trunk/arch/arm/{mach-s3c2410/nor-simtec.c => mach-s3c24xx/simtec-nor.c} (98%) rename trunk/arch/arm/{plat-s3c24xx/pm-simtec.c => mach-s3c24xx/simtec-pm.c} (100%) rename trunk/arch/arm/{mach-s3c2410/usb-simtec.c => mach-s3c24xx/simtec-usb.c} (99%) rename trunk/arch/arm/{mach-s3c2410/nor-simtec.h => mach-s3c24xx/simtec.h} (63%) rename trunk/arch/arm/{mach-s3c2410/sleep.S => mach-s3c24xx/sleep-s3c2410.S} (100%) rename trunk/arch/arm/{mach-s3c2412/sleep.S => mach-s3c24xx/sleep-s3c2412.S} (100%) create mode 100644 trunk/arch/arm/mach-s3c64xx/cpuidle.c create mode 100644 trunk/arch/arm/mach-s3c64xx/setup-usb-phy.c create mode 100644 trunk/arch/arm/mach-s5pv210/setup-usb-phy.c delete mode 100644 trunk/arch/arm/mach-sa1100/dma.c delete mode 100644 trunk/arch/arm/mach-sa1100/include/mach/dma.h delete mode 100644 trunk/arch/arm/mach-shmobile/localtimer.c delete mode 100644 trunk/arch/arm/mach-spear6xx/spear600.c delete mode 100644 trunk/arch/arm/mach-spear6xx/spear600_evb.c create mode 100644 trunk/arch/arm/mach-tegra/apbio.c create mode 100644 trunk/arch/arm/mach-tegra/apbio.h create mode 100644 trunk/arch/arm/mach-tegra/cpuidle.c create mode 100644 trunk/arch/arm/mach-tegra/flowctrl.c create mode 100644 trunk/arch/arm/mach-tegra/flowctrl.h create mode 100644 trunk/arch/arm/mach-tegra/include/mach/irammap.h delete mode 100644 trunk/arch/arm/mach-tegra/localtimer.c create mode 100644 trunk/arch/arm/mach-tegra/pmc.c create mode 100644 trunk/arch/arm/mach-tegra/pmc.h create mode 100644 trunk/arch/arm/mach-tegra/reset.c create mode 100644 trunk/arch/arm/mach-tegra/reset.h create mode 100644 trunk/arch/arm/mach-tegra/sleep.S create mode 100644 trunk/arch/arm/mach-tegra/tegra30_clocks.c delete mode 100644 trunk/arch/arm/mach-ux500/localtimer.c delete mode 100644 trunk/arch/arm/plat-mxc/include/mach/board-mx31ads.h create mode 100644 trunk/arch/arm/plat-omap/include/plat/remoteproc.h delete mode 100644 trunk/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c delete mode 100644 trunk/arch/arm/plat-s3c24xx/spi-bus1-gpd8_9_10.c delete mode 100644 trunk/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c create mode 100644 trunk/arch/arm/plat-samsung/include/plat/rtc-core.h delete mode 100644 trunk/arch/arm/plat-versatile/localtimer.c create mode 100644 trunk/arch/avr32/include/asm/barrier.h rename trunk/arch/avr32/include/asm/{system.h => cmpxchg.h} (57%) create mode 100644 trunk/arch/avr32/include/asm/exec.h create mode 100644 trunk/arch/avr32/include/asm/special_insns.h create mode 100644 trunk/arch/avr32/include/asm/switch_to.h delete mode 100644 trunk/arch/blackfin/include/asm/system.h create mode 100644 trunk/arch/c6x/include/asm/barrier.h create mode 100644 trunk/arch/c6x/include/asm/bug.h create mode 100644 trunk/arch/c6x/include/asm/cmpxchg.h create mode 100644 trunk/arch/c6x/include/asm/exec.h create mode 100644 trunk/arch/c6x/include/asm/special_insns.h create mode 100644 trunk/arch/c6x/include/asm/switch_to.h delete mode 100644 trunk/arch/c6x/include/asm/system.h create mode 100644 trunk/arch/cris/include/asm/barrier.h rename trunk/arch/cris/include/asm/{system.h => cmpxchg.h} (52%) create mode 100644 trunk/arch/cris/include/asm/exec.h create mode 100644 trunk/arch/cris/include/asm/switch_to.h create mode 100644 trunk/arch/frv/include/asm/barrier.h rename trunk/arch/frv/include/asm/{system.h => cmpxchg.h} (66%) create mode 100644 trunk/arch/frv/include/asm/exec.h create mode 100644 trunk/arch/frv/include/asm/switch_to.h create mode 100644 trunk/arch/h8300/include/asm/barrier.h create mode 100644 trunk/arch/h8300/include/asm/cmpxchg.h create mode 100644 trunk/arch/h8300/include/asm/exec.h create mode 100644 trunk/arch/h8300/include/asm/switch_to.h delete mode 100644 trunk/arch/h8300/include/asm/system.h create mode 100644 trunk/arch/hexagon/include/asm/barrier.h rename trunk/arch/hexagon/include/asm/{system.h => cmpxchg.h} (68%) create mode 100644 trunk/arch/hexagon/include/asm/exec.h create mode 100644 trunk/arch/hexagon/include/asm/switch_to.h create mode 100644 trunk/arch/ia64/include/asm/barrier.h create mode 100644 trunk/arch/ia64/include/asm/exec.h create mode 100644 trunk/arch/ia64/include/asm/switch_to.h delete mode 100644 trunk/arch/ia64/include/asm/system.h create mode 100644 trunk/arch/m32r/include/asm/barrier.h create mode 100644 trunk/arch/m32r/include/asm/cmpxchg.h create mode 100644 trunk/arch/m32r/include/asm/dcache_clear.h create mode 100644 trunk/arch/m32r/include/asm/exec.h create mode 100644 trunk/arch/m32r/include/asm/switch_to.h delete mode 100644 trunk/arch/m32r/include/asm/system.h create mode 100644 trunk/arch/m68k/include/asm/barrier.h rename trunk/arch/m68k/include/asm/{system.h => cmpxchg.h} (56%) create mode 100644 trunk/arch/m68k/include/asm/exec.h create mode 100644 trunk/arch/m68k/include/asm/switch_to.h create mode 100644 trunk/arch/microblaze/include/asm/barrier.h create mode 100644 trunk/arch/microblaze/include/asm/cmpxchg.h create mode 100644 trunk/arch/microblaze/include/asm/exec.h create mode 100644 trunk/arch/microblaze/include/asm/fixmap.h create mode 100644 trunk/arch/microblaze/include/asm/highmem.h create mode 100644 trunk/arch/microblaze/include/asm/switch_to.h delete mode 100644 trunk/arch/microblaze/include/asm/system.h create mode 100644 trunk/arch/microblaze/mm/highmem.c create mode 100644 trunk/arch/mips/include/asm/exec.h create mode 100644 trunk/arch/mips/include/asm/switch_to.h delete mode 100644 trunk/arch/mips/include/asm/system.h create mode 100644 trunk/arch/mn10300/include/asm/barrier.h create mode 100644 trunk/arch/mn10300/include/asm/cmpxchg.h create mode 100644 trunk/arch/mn10300/include/asm/exec.h create mode 100644 trunk/arch/mn10300/include/asm/switch_to.h delete mode 100644 trunk/arch/mn10300/include/asm/system.h delete mode 100644 trunk/arch/openrisc/include/asm/system.h create mode 100644 trunk/arch/parisc/include/asm/barrier.h create mode 100644 trunk/arch/parisc/include/asm/exec.h create mode 100644 trunk/arch/parisc/include/asm/ldcw.h create mode 100644 trunk/arch/parisc/include/asm/special_insns.h create mode 100644 trunk/arch/parisc/include/asm/switch_to.h delete mode 100644 trunk/arch/parisc/include/asm/system.h create mode 100644 trunk/arch/powerpc/include/asm/barrier.h create mode 100644 trunk/arch/powerpc/include/asm/cmpxchg.h create mode 100644 trunk/arch/powerpc/include/asm/debug.h create mode 100644 trunk/arch/powerpc/include/asm/exec.h create mode 100644 trunk/arch/powerpc/include/asm/runlatch.h create mode 100644 trunk/arch/powerpc/include/asm/switch_to.h delete mode 100644 trunk/arch/powerpc/include/asm/system.h create mode 100644 trunk/arch/s390/include/asm/barrier.h create mode 100644 trunk/arch/s390/include/asm/cpu_mf.h create mode 100644 trunk/arch/s390/include/asm/ctl_reg.h create mode 100644 trunk/arch/s390/include/asm/exec.h create mode 100644 trunk/arch/s390/include/asm/facility.h create mode 100644 trunk/arch/s390/include/asm/switch_to.h delete mode 100644 trunk/arch/s390/include/asm/system.h create mode 100644 trunk/arch/s390/kernel/perf_cpum_cf.c create mode 100644 trunk/arch/s390/kernel/perf_event.c create mode 100644 trunk/arch/score/include/asm/barrier.h create mode 100644 trunk/arch/score/include/asm/cmpxchg.h create mode 100644 trunk/arch/score/include/asm/exec.h create mode 100644 trunk/arch/score/include/asm/switch_to.h delete mode 100644 trunk/arch/score/include/asm/system.h create mode 100644 trunk/arch/sh/include/asm/barrier.h create mode 100644 trunk/arch/sh/include/asm/bl_bit.h create mode 100644 trunk/arch/sh/include/asm/bl_bit_32.h create mode 100644 trunk/arch/sh/include/asm/bl_bit_64.h create mode 100644 trunk/arch/sh/include/asm/cache_insns.h create mode 100644 trunk/arch/sh/include/asm/cache_insns_32.h create mode 100644 trunk/arch/sh/include/asm/cache_insns_64.h create mode 100644 trunk/arch/sh/include/asm/cmpxchg.h create mode 100644 trunk/arch/sh/include/asm/exec.h create mode 100644 trunk/arch/sh/include/asm/switch_to.h rename trunk/arch/sh/include/asm/{system_32.h => switch_to_32.h} (58%) create mode 100644 trunk/arch/sh/include/asm/switch_to_64.h delete mode 100644 trunk/arch/sh/include/asm/system.h delete mode 100644 trunk/arch/sh/include/asm/system_64.h create mode 100644 trunk/arch/sh/include/asm/traps.h create mode 100644 trunk/arch/sh/include/asm/traps_32.h create mode 100644 trunk/arch/sh/include/asm/traps_64.h create mode 100644 trunk/arch/sparc/include/asm/barrier.h create mode 100644 trunk/arch/sparc/include/asm/barrier_32.h create mode 100644 trunk/arch/sparc/include/asm/barrier_64.h create mode 100644 trunk/arch/sparc/include/asm/cmpxchg.h create mode 100644 trunk/arch/sparc/include/asm/cmpxchg_32.h create mode 100644 trunk/arch/sparc/include/asm/cmpxchg_64.h create mode 100644 trunk/arch/sparc/include/asm/cpu_type.h create mode 100644 trunk/arch/sparc/include/asm/exec.h create mode 100644 trunk/arch/sparc/include/asm/switch_to.h create mode 100644 trunk/arch/sparc/include/asm/switch_to_32.h create mode 100644 trunk/arch/sparc/include/asm/switch_to_64.h delete mode 100644 trunk/arch/sparc/include/asm/system.h delete mode 100644 trunk/arch/sparc/include/asm/system_32.h delete mode 100644 trunk/arch/sparc/include/asm/system_64.h rename trunk/arch/tile/include/asm/{system.h => barrier.h} (51%) create mode 100644 trunk/arch/tile/include/asm/exec.h create mode 100644 trunk/arch/tile/include/asm/switch_to.h rename trunk/arch/um/drivers/{ubd_user.h => ubd.h} (100%) delete mode 100644 trunk/arch/um/include/asm/asm-offsets.h delete mode 100644 trunk/arch/um/include/asm/auxvec.h delete mode 100644 trunk/arch/um/include/asm/current.h delete mode 100644 trunk/arch/um/include/asm/delay.h delete mode 100644 trunk/arch/um/include/asm/io.h delete mode 100644 trunk/arch/um/include/asm/mutex.h delete mode 100644 trunk/arch/um/include/asm/param.h delete mode 100644 trunk/arch/um/include/asm/pci.h create mode 100644 trunk/arch/unicore32/include/asm/barrier.h create mode 100644 trunk/arch/unicore32/include/asm/bug.h create mode 100644 trunk/arch/unicore32/include/asm/cmpxchg.h create mode 100644 trunk/arch/unicore32/include/asm/exec.h create mode 100644 trunk/arch/unicore32/include/asm/hwdef-copro.h create mode 100644 trunk/arch/unicore32/include/asm/switch_to.h delete mode 100644 trunk/arch/unicore32/include/asm/system.h create mode 100644 trunk/arch/x86/include/asm/barrier.h create mode 100644 trunk/arch/x86/include/asm/exec.h create mode 100644 trunk/arch/x86/include/asm/special_insns.h create mode 100644 trunk/arch/x86/include/asm/switch_to.h delete mode 100644 trunk/arch/x86/include/asm/system.h create mode 100644 trunk/arch/x86/platform/geode/geos.c create mode 100644 trunk/arch/xtensa/include/asm/barrier.h rename trunk/arch/xtensa/include/asm/{system.h => cmpxchg.h} (70%) create mode 100644 trunk/arch/xtensa/include/asm/exec.h create mode 100644 trunk/arch/xtensa/include/asm/switch_to.h create mode 100644 trunk/drivers/clk/clk-divider.c create mode 100644 trunk/drivers/clk/clk-fixed-rate.c create mode 100644 trunk/drivers/clk/clk-gate.c create mode 100644 trunk/drivers/clk/clk-mux.c create mode 100644 trunk/drivers/clk/clk.c create mode 100644 trunk/drivers/dma/sa11x0-dma.c create mode 100644 trunk/drivers/gpio/gpio-mc9s08dz60.c create mode 100644 trunk/drivers/gpio/gpio-sodaville.c delete mode 100644 trunk/drivers/leds/leds-ams-delta.c create mode 100644 trunk/drivers/md/dm-verity.c create mode 100644 trunk/drivers/mfd/anatop-mfd.c create mode 100644 trunk/drivers/mfd/rc5t583-irq.c create mode 100644 trunk/drivers/mfd/rc5t583.c create mode 100644 trunk/drivers/mfd/tps65090.c create mode 100644 trunk/drivers/mfd/tps65217.c create mode 100644 trunk/drivers/mmc/host/dw_mmc-pci.c create mode 100644 trunk/drivers/mmc/host/dw_mmc-pltfm.c create mode 100644 trunk/drivers/of/of_mtd.c create mode 100644 trunk/drivers/platform/x86/apple-gmux.c delete mode 100644 trunk/drivers/platform/x86/asus_acpi.c delete mode 100644 trunk/drivers/regulator/bq24022.c create mode 100644 trunk/drivers/remoteproc/Kconfig create mode 100644 trunk/drivers/remoteproc/Makefile create mode 100644 trunk/drivers/remoteproc/omap_remoteproc.c create mode 100644 trunk/drivers/remoteproc/omap_remoteproc.h create mode 100644 trunk/drivers/remoteproc/remoteproc_core.c create mode 100644 trunk/drivers/remoteproc/remoteproc_debugfs.c create mode 100644 trunk/drivers/remoteproc/remoteproc_internal.h create mode 100644 trunk/drivers/remoteproc/remoteproc_virtio.c create mode 100644 trunk/drivers/rpmsg/Kconfig create mode 100644 trunk/drivers/rpmsg/Makefile create mode 100644 trunk/drivers/rpmsg/virtio_rpmsg_bus.c create mode 100644 trunk/include/asm-generic/barrier.h create mode 100644 trunk/include/asm-generic/exec.h create mode 100644 trunk/include/asm-generic/switch_to.h delete mode 100644 trunk/include/asm-generic/system.h create mode 100644 trunk/include/linux/apple_bl.h create mode 100644 trunk/include/linux/clk-private.h create mode 100644 trunk/include/linux/clk-provider.h create mode 100644 trunk/include/linux/mfd/anatop.h create mode 100644 trunk/include/linux/mfd/rc5t583.h create mode 100644 trunk/include/linux/mfd/tps65090.h create mode 100644 trunk/include/linux/mfd/tps65217.h create mode 100644 trunk/include/linux/of_mtd.h create mode 100644 trunk/include/linux/platform_data/atmel.h create mode 100644 trunk/include/linux/platform_data/tegra_emc.h delete mode 100644 trunk/include/linux/regulator/bq24022.h create mode 100644 trunk/include/linux/remoteproc.h create mode 100644 trunk/include/linux/rpmsg.h create mode 100644 trunk/include/linux/sa11x0-dma.h rename trunk/{arch/arm/mach-s3c2410/include/mach/spi.h => include/linux/spi/s3c24xx.h} (56%) create mode 100644 trunk/include/video/sa1100fb.h create mode 100644 trunk/samples/rpmsg/Makefile create mode 100644 trunk/samples/rpmsg/rpmsg_client_sample.c delete mode 100644 trunk/tools/testing/selftests/run_tests create mode 100644 trunk/tools/testing/selftests/vm/Makefile rename trunk/{Documentation => tools/testing/selftests}/vm/hugepage-mmap.c (93%) rename trunk/{Documentation => tools/testing/selftests}/vm/hugepage-shm.c (94%) rename trunk/{Documentation => tools/testing/selftests}/vm/map_hugetlb.c (94%) create mode 100644 trunk/tools/testing/selftests/vm/run_vmtests create mode 100644 trunk/tools/virtio/linux/hrtimer.h create mode 100644 trunk/tools/virtio/linux/module.h create mode 100644 trunk/tools/vm/Makefile rename trunk/{Documentation => tools}/vm/page-types.c (99%) rename trunk/tools/{slub => vm}/slabinfo.c (100%) diff --git a/[refs] b/[refs] index 1deff5f27ca1..1a4c3b8f33a2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3fa016a0b5c5237e9c387fc3249592b2cb5391c6 +refs/heads/master: 0a03726ca982129b1e054f0e8c34ca7eea348acd diff --git a/trunk/Documentation/ABI/testing/sysfs-block-dm b/trunk/Documentation/ABI/testing/sysfs-block-dm new file mode 100644 index 000000000000..87ca5691e29b --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-block-dm @@ -0,0 +1,25 @@ +What: /sys/block/dm-/dm/name +Date: January 2009 +KernelVersion: 2.6.29 +Contact: dm-devel@redhat.com +Description: Device-mapper device name. + Read-only string containing mapped device name. +Users: util-linux, device-mapper udev rules + +What: /sys/block/dm-/dm/uuid +Date: January 2009 +KernelVersion: 2.6.29 +Contact: dm-devel@redhat.com +Description: Device-mapper device UUID. + Read-only string containing DM-UUID or empty string + if DM-UUID is not set. +Users: util-linux, device-mapper udev rules + +What: /sys/block/dm-/dm/suspended +Date: June 2009 +KernelVersion: 2.6.31 +Contact: dm-devel@redhat.com +Description: Device-mapper device suspend state. + Contains the value 1 while the device is suspended. + Otherwise it contains 0. Read-only attribute. +Users: util-linux, device-mapper udev rules diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-rpmsg b/trunk/Documentation/ABI/testing/sysfs-bus-rpmsg new file mode 100644 index 000000000000..189e419a5a2d --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-bus-rpmsg @@ -0,0 +1,75 @@ +What: /sys/bus/rpmsg/devices/.../name +Date: June 2011 +KernelVersion: 3.3 +Contact: Ohad Ben-Cohen +Description: + Every rpmsg device is a communication channel with a remote + processor. Channels are identified with a (textual) name, + which is maximum 32 bytes long (defined as RPMSG_NAME_SIZE in + rpmsg.h). + + This sysfs entry contains the name of this channel. + +What: /sys/bus/rpmsg/devices/.../src +Date: June 2011 +KernelVersion: 3.3 +Contact: Ohad Ben-Cohen +Description: + Every rpmsg device is a communication channel with a remote + processor. Channels have a local ("source") rpmsg address, + and remote ("destination") rpmsg address. When an entity + starts listening on one end of a channel, it assigns it with + a unique rpmsg address (a 32 bits integer). This way when + inbound messages arrive to this address, the rpmsg core + dispatches them to the listening entity (a kernel driver). + + This sysfs entry contains the src (local) rpmsg address + of this channel. If it contains 0xffffffff, then an address + wasn't assigned (can happen if no driver exists for this + channel). + +What: /sys/bus/rpmsg/devices/.../dst +Date: June 2011 +KernelVersion: 3.3 +Contact: Ohad Ben-Cohen +Description: + Every rpmsg device is a communication channel with a remote + processor. Channels have a local ("source") rpmsg address, + and remote ("destination") rpmsg address. When an entity + starts listening on one end of a channel, it assigns it with + a unique rpmsg address (a 32 bits integer). This way when + inbound messages arrive to this address, the rpmsg core + dispatches them to the listening entity. + + This sysfs entry contains the dst (remote) rpmsg address + of this channel. If it contains 0xffffffff, then an address + wasn't assigned (can happen if the kernel driver that + is attached to this channel is exposing a service to the + remote processor. This make it a local rpmsg server, + and it is listening for inbound messages that may be sent + from any remote rpmsg client; it is not bound to a single + remote entity). + +What: /sys/bus/rpmsg/devices/.../announce +Date: June 2011 +KernelVersion: 3.3 +Contact: Ohad Ben-Cohen +Description: + Every rpmsg device is a communication channel with a remote + processor. Channels are identified by a textual name (see + /sys/bus/rpmsg/devices/.../name above) and have a local + ("source") rpmsg address, and remote ("destination") rpmsg + address. + + A channel is first created when an entity, whether local + or remote, starts listening on it for messages (and is thus + called an rpmsg server). + + When that happens, a "name service" announcement is sent + to the other processor, in order to let it know about the + creation of the channel (this way remote clients know they + can start sending messages). + + This sysfs entry tells us whether the channel is a local + server channel that is announced (values are either + true or false). diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-samsung-laptop b/trunk/Documentation/ABI/testing/sysfs-driver-samsung-laptop index e82e7c2b8f80..678819a3f8bf 100644 --- a/trunk/Documentation/ABI/testing/sysfs-driver-samsung-laptop +++ b/trunk/Documentation/ABI/testing/sysfs-driver-samsung-laptop @@ -17,3 +17,21 @@ Description: Some Samsung laptops have different "performance levels" Specifically, not all support the "overclock" option, and it's still unknown if this value even changes anything, other than making the user feel a bit better. + +What: /sys/devices/platform/samsung/battery_life_extender +Date: December 1, 2011 +KernelVersion: 3.3 +Contact: Corentin Chary +Description: Max battery charge level can be modified, battery cycle + life can be extended by reducing the max battery charge + level. + 0 means normal battery mode (100% charge) + 1 means battery life extender mode (80% charge) + +What: /sys/devices/platform/samsung/usb_charge +Date: December 1, 2011 +KernelVersion: 3.3 +Contact: Corentin Chary +Description: Use your USB ports to charge devices, even + when your laptop is powered off. + 1 means enabled, 0 means disabled. diff --git a/trunk/Documentation/Makefile b/trunk/Documentation/Makefile index 9b4bc5c76f33..30b656ece7aa 100644 --- a/trunk/Documentation/Makefile +++ b/trunk/Documentation/Makefile @@ -1,3 +1,3 @@ obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ - pcmcia/ spi/ timers/ vm/ watchdog/src/ + pcmcia/ spi/ timers/ watchdog/src/ diff --git a/trunk/Documentation/clk.txt b/trunk/Documentation/clk.txt new file mode 100644 index 000000000000..1943fae014fd --- /dev/null +++ b/trunk/Documentation/clk.txt @@ -0,0 +1,233 @@ + The Common Clk Framework + Mike Turquette + +This document endeavours to explain the common clk framework details, +and how to port a platform over to this framework. It is not yet a +detailed explanation of the clock api in include/linux/clk.h, but +perhaps someday it will include that information. + + Part 1 - introduction and interface split + +The common clk framework is an interface to control the clock nodes +available on various devices today. This may come in the form of clock +gating, rate adjustment, muxing or other operations. This framework is +enabled with the CONFIG_COMMON_CLK option. + +The interface itself is divided into two halves, each shielded from the +details of its counterpart. First is the common definition of struct +clk which unifies the framework-level accounting and infrastructure that +has traditionally been duplicated across a variety of platforms. Second +is a common implementation of the clk.h api, defined in +drivers/clk/clk.c. Finally there is struct clk_ops, whose operations +are invoked by the clk api implementation. + +The second half of the interface is comprised of the hardware-specific +callbacks registered with struct clk_ops and the corresponding +hardware-specific structures needed to model a particular clock. For +the remainder of this document any reference to a callback in struct +clk_ops, such as .enable or .set_rate, implies the hardware-specific +implementation of that code. Likewise, references to struct clk_foo +serve as a convenient shorthand for the implementation of the +hardware-specific bits for the hypothetical "foo" hardware. + +Tying the two halves of this interface together is struct clk_hw, which +is defined in struct clk_foo and pointed to within struct clk. This +allows easy for navigation between the two discrete halves of the common +clock interface. + + Part 2 - common data structures and api + +Below is the common struct clk definition from +include/linux/clk-private.h, modified for brevity: + + struct clk { + const char *name; + const struct clk_ops *ops; + struct clk_hw *hw; + char **parent_names; + struct clk **parents; + struct clk *parent; + struct hlist_head children; + struct hlist_node child_node; + ... + }; + +The members above make up the core of the clk tree topology. The clk +api itself defines several driver-facing functions which operate on +struct clk. That api is documented in include/linux/clk.h. + +Platforms and devices utilizing the common struct clk use the struct +clk_ops pointer in struct clk to perform the hardware-specific parts of +the operations defined in clk.h: + + struct clk_ops { + int (*prepare)(struct clk_hw *hw); + void (*unprepare)(struct clk_hw *hw); + int (*enable)(struct clk_hw *hw); + void (*disable)(struct clk_hw *hw); + int (*is_enabled)(struct clk_hw *hw); + unsigned long (*recalc_rate)(struct clk_hw *hw, + unsigned long parent_rate); + long (*round_rate)(struct clk_hw *hw, unsigned long, + unsigned long *); + int (*set_parent)(struct clk_hw *hw, u8 index); + u8 (*get_parent)(struct clk_hw *hw); + int (*set_rate)(struct clk_hw *hw, unsigned long); + void (*init)(struct clk_hw *hw); + }; + + Part 3 - hardware clk implementations + +The strength of the common struct clk comes from its .ops and .hw pointers +which abstract the details of struct clk from the hardware-specific bits, and +vice versa. To illustrate consider the simple gateable clk implementation in +drivers/clk/clk-gate.c: + +struct clk_gate { + struct clk_hw hw; + void __iomem *reg; + u8 bit_idx; + ... +}; + +struct clk_gate contains struct clk_hw hw as well as hardware-specific +knowledge about which register and bit controls this clk's gating. +Nothing about clock topology or accounting, such as enable_count or +notifier_count, is needed here. That is all handled by the common +framework code and struct clk. + +Let's walk through enabling this clk from driver code: + + struct clk *clk; + clk = clk_get(NULL, "my_gateable_clk"); + + clk_prepare(clk); + clk_enable(clk); + +The call graph for clk_enable is very simple: + +clk_enable(clk); + clk->ops->enable(clk->hw); + [resolves to...] + clk_gate_enable(hw); + [resolves struct clk gate with to_clk_gate(hw)] + clk_gate_set_bit(gate); + +And the definition of clk_gate_set_bit: + +static void clk_gate_set_bit(struct clk_gate *gate) +{ + u32 reg; + + reg = __raw_readl(gate->reg); + reg |= BIT(gate->bit_idx); + writel(reg, gate->reg); +} + +Note that to_clk_gate is defined as: + +#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, clk) + +This pattern of abstraction is used for every clock hardware +representation. + + Part 4 - supporting your own clk hardware + +When implementing support for a new type of clock it only necessary to +include the following header: + +#include + +include/linux/clk.h is included within that header and clk-private.h +must never be included from the code which implements the operations for +a clock. More on that below in Part 5. + +To construct a clk hardware structure for your platform you must define +the following: + +struct clk_foo { + struct clk_hw hw; + ... hardware specific data goes here ... +}; + +To take advantage of your data you'll need to support valid operations +for your clk: + +struct clk_ops clk_foo_ops { + .enable = &clk_foo_enable; + .disable = &clk_foo_disable; +}; + +Implement the above functions using container_of: + +#define to_clk_foo(_hw) container_of(_hw, struct clk_foo, hw) + +int clk_foo_enable(struct clk_hw *hw) +{ + struct clk_foo *foo; + + foo = to_clk_foo(hw); + + ... perform magic on foo ... + + return 0; +}; + +Below is a matrix detailing which clk_ops are mandatory based upon the +hardware capbilities of that clock. A cell marked as "y" means +mandatory, a cell marked as "n" implies that either including that +callback is invalid or otherwise uneccesary. Empty cells are either +optional or must be evaluated on a case-by-case basis. + + clock hardware characteristics + ----------------------------------------------------------- + | gate | change rate | single parent | multiplexer | root | + |------|-------------|---------------|-------------|------| +.prepare | | | | | | +.unprepare | | | | | | + | | | | | | +.enable | y | | | | | +.disable | y | | | | | +.is_enabled | y | | | | | + | | | | | | +.recalc_rate | | y | | | | +.round_rate | | y | | | | +.set_rate | | y | | | | + | | | | | | +.set_parent | | | n | y | n | +.get_parent | | | n | y | n | + | | | | | | +.init | | | | | | + ----------------------------------------------------------- + +Finally, register your clock at run-time with a hardware-specific +registration function. This function simply populates struct clk_foo's +data and then passes the common struct clk parameters to the framework +with a call to: + +clk_register(...) + +See the basic clock types in drivers/clk/clk-*.c for examples. + + Part 5 - static initialization of clock data + +For platforms with many clocks (often numbering into the hundreds) it +may be desirable to statically initialize some clock data. This +presents a problem since the definition of struct clk should be hidden +from everyone except for the clock core in drivers/clk/clk.c. + +To get around this problem struct clk's definition is exposed in +include/linux/clk-private.h along with some macros for more easily +initializing instances of the basic clock types. These clocks must +still be initialized with the common clock framework via a call to +__clk_init. + +clk-private.h must NEVER be included by code which implements struct +clk_ops callbacks, nor must it be included by any logic which pokes +around inside of struct clk at run-time. To do so is a layering +violation. + +To better enforce this policy, always follow this simple rule: any +statically initialized clock data MUST be defined in a separate file +from the logic that implements its ops. Basically separate the logic +from the data and all is well. diff --git a/trunk/Documentation/device-mapper/thin-provisioning.txt b/trunk/Documentation/device-mapper/thin-provisioning.txt index 1ff044d87ca4..3370bc4d7b98 100644 --- a/trunk/Documentation/device-mapper/thin-provisioning.txt +++ b/trunk/Documentation/device-mapper/thin-provisioning.txt @@ -75,10 +75,12 @@ less sharing than average you'll need a larger-than-average metadata device. As a guide, we suggest you calculate the number of bytes to use in the metadata device as 48 * $data_dev_size / $data_block_size but round it up -to 2MB if the answer is smaller. The largest size supported is 16GB. +to 2MB if the answer is smaller. If you're creating large numbers of +snapshots which are recording large amounts of change, you may find you +need to increase this. -If you're creating large numbers of snapshots which are recording large -amounts of change, you may need find you need to increase this. +The largest size supported is 16GB: If the device is larger, +a warning will be issued and the excess space will not be used. Reloading a pool table ---------------------- @@ -167,6 +169,38 @@ ii) Using an internal snapshot. dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 1" +External snapshots +------------------ + +You can use an external _read only_ device as an origin for a +thinly-provisioned volume. Any read to an unprovisioned area of the +thin device will be passed through to the origin. Writes trigger +the allocation of new blocks as usual. + +One use case for this is VM hosts that want to run guests on +thinly-provisioned volumes but have the base image on another device +(possibly shared between many VMs). + +You must not write to the origin device if you use this technique! +Of course, you may write to the thin device and take internal snapshots +of the thin volume. + +i) Creating a snapshot of an external device + + This is the same as creating a thin device. + You don't mention the origin at this stage. + + dmsetup message /dev/mapper/pool 0 "create_thin 0" + +ii) Using a snapshot of an external device. + + Append an extra parameter to the thin target specifying the origin: + + dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 0 /dev/image" + + N.B. All descendants (internal snapshots) of this snapshot require the + same extra origin parameter. + Deactivation ------------ @@ -189,7 +223,13 @@ i) Constructor [ []*] Optional feature arguments: - - 'skip_block_zeroing': skips the zeroing of newly-provisioned blocks. + + skip_block_zeroing: Skip the zeroing of newly-provisioned blocks. + + ignore_discard: Disable discard support. + + no_discard_passdown: Don't pass discards down to the underlying + data device, but just remove the mapping. Data block size must be between 64KB (128 sectors) and 1GB (2097152 sectors) inclusive. @@ -237,16 +277,6 @@ iii) Messages Deletes a thin device. Irreversible. - trim - - Delete mappings from the end of a thin device. Irreversible. - You might want to use this if you're reducing the size of - your thinly-provisioned device. In many cases, due to the - sharing of blocks between devices, it is not possible to - determine in advance how much space 'trim' will release. (In - future a userspace tool might be able to perform this - calculation.) - set_transaction_id Userland volume managers, such as LVM, need a way to @@ -262,7 +292,7 @@ iii) Messages i) Constructor - thin + thin [] pool dev: the thin-pool device, e.g. /dev/mapper/my_pool or 253:0 @@ -271,6 +301,11 @@ i) Constructor the internal device identifier of the device to be activated. + external origin dev: + an optional block device outside the pool to be treated as a + read-only snapshot origin: reads to unprovisioned areas of the + thin target will be mapped to this device. + The pool doesn't store any size against the thin devices. If you load a thin target that is smaller than you've been using previously, then you'll have no access to blocks mapped beyond the end. If you diff --git a/trunk/Documentation/device-mapper/verity.txt b/trunk/Documentation/device-mapper/verity.txt new file mode 100644 index 000000000000..32e48797a14f --- /dev/null +++ b/trunk/Documentation/device-mapper/verity.txt @@ -0,0 +1,194 @@ +dm-verity +========== + +Device-Mapper's "verity" target provides transparent integrity checking of +block devices using a cryptographic digest provided by the kernel crypto API. +This target is read-only. + +Construction Parameters +======================= + + + + + + + This is the version number of the on-disk format. + + 0 is the original format used in the Chromium OS. + The salt is appended when hashing, digests are stored continuously and + the rest of the block is padded with zeros. + + 1 is the current format that should be used for new devices. + The salt is prepended when hashing and each digest is + padded with zeros to the power of two. + + + This is the device containing the data the integrity of which needs to be + checked. It may be specified as a path, like /dev/sdaX, or a device number, + :. + + + This is the device that that supplies the hash tree data. It may be + specified similarly to the device path and may be the same device. If the + same device is used, the hash_start should be outside of the dm-verity + configured device size. + + + The block size on a data device. Each block corresponds to one digest on + the hash device. + + + The size of a hash block. + + + The number of data blocks on the data device. Additional blocks are + inaccessible. You can place hashes to the same partition as data, in this + case hashes are placed after . + + + This is the offset, in -blocks, from the start of hash_dev + to the root block of the hash tree. + + + The cryptographic hash algorithm used for this device. This should + be the name of the algorithm, like "sha1". + + + The hexadecimal encoding of the cryptographic hash of the root hash block + and the salt. This hash should be trusted as there is no other authenticity + beyond this point. + + + The hexadecimal encoding of the salt value. + +Theory of operation +=================== + +dm-verity is meant to be setup as part of a verified boot path. This +may be anything ranging from a boot using tboot or trustedgrub to just +booting from a known-good device (like a USB drive or CD). + +When a dm-verity device is configured, it is expected that the caller +has been authenticated in some way (cryptographic signatures, etc). +After instantiation, all hashes will be verified on-demand during +disk access. If they cannot be verified up to the root node of the +tree, the root hash, then the I/O will fail. This should identify +tampering with any data on the device and the hash data. + +Cryptographic hashes are used to assert the integrity of the device on a +per-block basis. This allows for a lightweight hash computation on first read +into the page cache. Block hashes are stored linearly-aligned to the nearest +block the size of a page. + +Hash Tree +--------- + +Each node in the tree is a cryptographic hash. If it is a leaf node, the hash +is of some block data on disk. If it is an intermediary node, then the hash is +of a number of child nodes. + +Each entry in the tree is a collection of neighboring nodes that fit in one +block. The number is determined based on block_size and the size of the +selected cryptographic digest algorithm. The hashes are linearly-ordered in +this entry and any unaligned trailing space is ignored but included when +calculating the parent node. + +The tree looks something like: + +alg = sha256, num_blocks = 32768, block_size = 4096 + + [ root ] + / . . . \ + [entry_0] [entry_1] + / . . . \ . . . \ + [entry_0_0] . . . [entry_0_127] . . . . [entry_1_127] + / ... \ / . . . \ / \ + blk_0 ... blk_127 blk_16256 blk_16383 blk_32640 . . . blk_32767 + + +On-disk format +============== + +Below is the recommended on-disk format. The verity kernel code does not +read the on-disk header. It only reads the hash blocks which directly +follow the header. It is expected that a user-space tool will verify the +integrity of the verity_header and then call dmsetup with the correct +parameters. Alternatively, the header can be omitted and the dmsetup +parameters can be passed via the kernel command-line in a rooted chain +of trust where the command-line is verified. + +The on-disk format is especially useful in cases where the hash blocks +are on a separate partition. The magic number allows easy identification +of the partition contents. Alternatively, the hash blocks can be stored +in the same partition as the data to be verified. In such a configuration +the filesystem on the partition would be sized a little smaller than +the full-partition, leaving room for the hash blocks. + +struct superblock { + uint8_t signature[8] + "verity\0\0"; + + uint8_t version; + 1 - current format + + uint8_t data_block_bits; + log2(data block size) + + uint8_t hash_block_bits; + log2(hash block size) + + uint8_t pad1[1]; + zero padding + + uint16_t salt_size; + big-endian salt size + + uint8_t pad2[2]; + zero padding + + uint32_t data_blocks_hi; + big-endian high 32 bits of the 64-bit number of data blocks + + uint32_t data_blocks_lo; + big-endian low 32 bits of the 64-bit number of data blocks + + uint8_t algorithm[16]; + cryptographic algorithm + + uint8_t salt[384]; + salt (the salt size is specified above) + + uint8_t pad3[88]; + zero padding to 512-byte boundary +} + +Directly following the header (and with sector number padded to the next hash +block boundary) are the hash blocks which are stored a depth at a time +(starting from the root), sorted in order of increasing index. + +Status +====== +V (for Valid) is returned if every check performed so far was valid. +If any check failed, C (for Corruption) is returned. + +Example +======= + +Setup a device: + dmsetup create vroot --table \ + "0 2097152 "\ + "verity 1 /dev/sda1 /dev/sda2 4096 4096 2097152 1 "\ + "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\ + "1234000000000000000000000000000000000000000000000000000000000000" + +A command line tool veritysetup is available to compute or verify +the hash tree or activate the kernel driver. This is available from +the LVM2 upstream repository and may be supplied as a package called +device-mapper-verity-tools: + git://sources.redhat.com/git/lvm2 + http://sourceware.org/git/?p=lvm2.git + http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/verity?cvsroot=lvm2 + +veritysetup -a vroot /dev/sda1 /dev/sda2 \ + 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 diff --git a/trunk/Documentation/devicetree/bindings/arm/atmel-aic.txt b/trunk/Documentation/devicetree/bindings/arm/atmel-aic.txt new file mode 100644 index 000000000000..aabca4f83402 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/atmel-aic.txt @@ -0,0 +1,38 @@ +* Advanced Interrupt Controller (AIC) + +Required properties: +- compatible: Should be "atmel,-aic" +- interrupt-controller: Identifies the node as an interrupt controller. +- interrupt-parent: For single AIC system, it is an empty property. +- #interrupt-cells: The number of cells to define the interrupts. It sould be 2. + The first cell is the IRQ number (aka "Peripheral IDentifier" on datasheet). + The second cell is used to specify flags: + bits[3:0] trigger type and level flags: + 1 = low-to-high edge triggered. + 2 = high-to-low edge triggered. + 4 = active high level-sensitive. + 8 = active low level-sensitive. + Valid combinations are 1, 2, 3, 4, 8. + Default flag for internal sources should be set to 4 (active high). +- reg: Should contain AIC registers location and length + +Examples: + /* + * AIC + */ + aic: interrupt-controller@fffff000 { + compatible = "atmel,at91rm9200-aic"; + interrupt-controller; + interrupt-parent; + #interrupt-cells = <2>; + reg = <0xfffff000 0x200>; + }; + + /* + * An interrupt generating device that is wired to an AIC. + */ + dma: dma-controller@ffffec00 { + compatible = "atmel,at91sam9g45-dma"; + reg = <0xffffec00 0x200>; + interrupts = <21 4>; + }; diff --git a/trunk/Documentation/devicetree/bindings/arm/atmel-at91.txt b/trunk/Documentation/devicetree/bindings/arm/atmel-at91.txt new file mode 100644 index 000000000000..ecc81e368715 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/atmel-at91.txt @@ -0,0 +1,92 @@ +Atmel AT91 device tree bindings. +================================ + +PIT Timer required properties: +- compatible: Should be "atmel,at91sam9260-pit" +- reg: Should contain registers location and length +- interrupts: Should contain interrupt for the PIT which is the IRQ line + shared across all System Controller members. + +TC/TCLIB Timer required properties: +- compatible: Should be "atmel,-pit". + can be "at91rm9200" or "at91sam9x5" +- reg: Should contain registers location and length +- interrupts: Should contain all interrupts for the TC block + Note that you can specify several interrupt cells if the TC + block has one interrupt per channel. + +Examples: + +One interrupt per TC block: + tcb0: timer@fff7c000 { + compatible = "atmel,at91rm9200-tcb"; + reg = <0xfff7c000 0x100>; + interrupts = <18 4>; + }; + +One interrupt per TC channel in a TC block: + tcb1: timer@fffdc000 { + compatible = "atmel,at91rm9200-tcb"; + reg = <0xfffdc000 0x100>; + interrupts = <26 4 27 4 28 4>; + }; + +RSTC Reset Controller required properties: +- compatible: Should be "atmel,-rstc". + can be "at91sam9260" or "at91sam9g45" +- reg: Should contain registers location and length + +Example: + + rstc@fffffd00 { + compatible = "atmel,at91sam9260-rstc"; + reg = <0xfffffd00 0x10>; + }; + +RAMC SDRAM/DDR Controller required properties: +- compatible: Should be "atmel,at91sam9260-sdramc", + "atmel,at91sam9g45-ddramc", +- reg: Should contain registers location and length + For at91sam9263 and at91sam9g45 you must specify 2 entries. + +Examples: + + ramc0: ramc@ffffe800 { + compatible = "atmel,at91sam9g45-ddramc"; + reg = <0xffffe800 0x200>; + }; + + ramc0: ramc@ffffe400 { + compatible = "atmel,at91sam9g45-ddramc"; + reg = <0xffffe400 0x200 + 0xffffe600 0x200>; + }; + +SHDWC Shutdown Controller + +required properties: +- compatible: Should be "atmel,-shdwc". + can be "at91sam9260", "at91sam9rl" or "at91sam9x5". +- reg: Should contain registers location and length + +optional properties: +- atmel,wakeup-mode: String, operation mode of the wakeup mode. + Supported values are: "none", "high", "low", "any". +- atmel,wakeup-counter: Counter on Wake-up 0 (between 0x0 and 0xf). + +optional at91sam9260 properties: +- atmel,wakeup-rtt-timer: boolean to enable Real-time Timer Wake-up. + +optional at91sam9rl properties: +- atmel,wakeup-rtc-timer: boolean to enable Real-time Clock Wake-up. +- atmel,wakeup-rtt-timer: boolean to enable Real-time Timer Wake-up. + +optional at91sam9x5 properties: +- atmel,wakeup-rtc-timer: boolean to enable Real-time Clock Wake-up. + +Example: + + rstc@fffffd00 { + compatible = "atmel,at91sam9260-rstc"; + reg = <0xfffffd00 0x10>; + }; diff --git a/trunk/Documentation/devicetree/bindings/arm/atmel-pmc.txt b/trunk/Documentation/devicetree/bindings/arm/atmel-pmc.txt new file mode 100644 index 000000000000..389bed5056e8 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/atmel-pmc.txt @@ -0,0 +1,11 @@ +* Power Management Controller (PMC) + +Required properties: +- compatible: Should be "atmel,at91rm9200-pmc" +- reg: Should contain PMC registers location and length + +Examples: + pmc: pmc@fffffc00 { + compatible = "atmel,at91rm9200-pmc"; + reg = <0xfffffc00 0x100>; + }; diff --git a/trunk/Documentation/devicetree/bindings/arm/fsl.txt b/trunk/Documentation/devicetree/bindings/arm/fsl.txt index 54bdddadf1cf..bfbc771a65f8 100644 --- a/trunk/Documentation/devicetree/bindings/arm/fsl.txt +++ b/trunk/Documentation/devicetree/bindings/arm/fsl.txt @@ -28,3 +28,25 @@ Required root node properties: i.MX6 Quad SABRE Lite Board Required root node properties: - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; + +Generic i.MX boards +------------------- + +No iomux setup is done for these boards, so this must have been configured +by the bootloader for boards to work with the generic bindings. + +i.MX27 generic board +Required root node properties: + - compatible = "fsl,imx27"; + +i.MX51 generic board +Required root node properties: + - compatible = "fsl,imx51"; + +i.MX53 generic board +Required root node properties: + - compatible = "fsl,imx53"; + +i.MX6q generic board +Required root node properties: + - compatible = "fsl,imx6q"; diff --git a/trunk/Documentation/devicetree/bindings/arm/mrvl.txt b/trunk/Documentation/devicetree/bindings/arm/mrvl.txt new file mode 100644 index 000000000000..d8de933e9d81 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/mrvl.txt @@ -0,0 +1,6 @@ +Marvell Platforms Device Tree Bindings +---------------------------------------------------- + +PXA168 Aspenite Board +Required root node properties: + - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168"; diff --git a/trunk/Documentation/devicetree/bindings/arm/omap/intc.txt b/trunk/Documentation/devicetree/bindings/arm/omap/intc.txt new file mode 100644 index 000000000000..f2583e6ec060 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/omap/intc.txt @@ -0,0 +1,27 @@ +* OMAP Interrupt Controller + +OMAP2/3 are using a TI interrupt controller that can support several +configurable number of interrupts. + +Main node required properties: + +- compatible : should be: + "ti,omap2-intc" +- interrupt-controller : Identifies the node as an interrupt controller +- #interrupt-cells : Specifies the number of cells needed to encode an + interrupt source. The type shall be a and the value shall be 1. + + The cell contains the interrupt number in the range [0-128]. +- ti,intc-size: Number of interrupts handled by the interrupt controller. +- reg: physical base address and size of the intc registers map. + +Example: + + intc: interrupt-controller@1 { + compatible = "ti,omap2-intc"; + interrupt-controller; + #interrupt-cells = <1>; + ti,intc-size = <96>; + reg = <0x48200000 0x1000>; + }; + diff --git a/trunk/Documentation/devicetree/bindings/arm/spear.txt b/trunk/Documentation/devicetree/bindings/arm/spear.txt new file mode 100644 index 000000000000..f8e54f092328 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/spear.txt @@ -0,0 +1,8 @@ +ST SPEAr Platforms Device Tree Bindings +--------------------------------------- + +Boards with the ST SPEAr600 SoC shall have the following properties: + +Required root node property: + +compatible = "st,spear600"; diff --git a/trunk/Documentation/devicetree/bindings/arm/tegra/emc.txt b/trunk/Documentation/devicetree/bindings/arm/tegra/emc.txt new file mode 100644 index 000000000000..09335f8eee00 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/tegra/emc.txt @@ -0,0 +1,100 @@ +Embedded Memory Controller + +Properties: +- name : Should be emc +- #address-cells : Should be 1 +- #size-cells : Should be 0 +- compatible : Should contain "nvidia,tegra20-emc". +- reg : Offset and length of the register set for the device +- nvidia,use-ram-code : If present, the sub-nodes will be addressed + and chosen using the ramcode board selector. If omitted, only one + set of tables can be present and said tables will be used + irrespective of ram-code configuration. + +Child device nodes describe the memory settings for different configurations and clock rates. + +Example: + + emc@7000f400 { + #address-cells = < 1 >; + #size-cells = < 0 >; + compatible = "nvidia,tegra20-emc"; + reg = <0x7000f4000 0x200>; + } + + +Embedded Memory Controller ram-code table + +If the emc node has the nvidia,use-ram-code property present, then the +next level of nodes below the emc table are used to specify which settings +apply for which ram-code settings. + +If the emc node lacks the nvidia,use-ram-code property, this level is omitted +and the tables are stored directly under the emc node (see below). + +Properties: + +- name : Should be emc-tables +- nvidia,ram-code : the binary representation of the ram-code board strappings + for which this node (and children) are valid. + + + +Embedded Memory Controller configuration table + +This is a table containing the EMC register settings for the various +operating speeds of the memory controller. They are always located as +subnodes of the emc controller node. + +There are two ways of specifying which tables to use: + +* The simplest is if there is just one set of tables in the device tree, + and they will always be used (based on which frequency is used). + This is the preferred method, especially when firmware can fill in + this information based on the specific system information and just + pass it on to the kernel. + +* The slightly more complex one is when more than one memory configuration + might exist on the system. The Tegra20 platform handles this during + early boot by selecting one out of possible 4 memory settings based + on a 2-pin "ram code" bootstrap setting on the board. The values of + these strappings can be read through a register in the SoC, and thus + used to select which tables to use. + +Properties: +- name : Should be emc-table +- compatible : Should contain "nvidia,tegra20-emc-table". +- reg : either an opaque enumerator to tell different tables apart, or + the valid frequency for which the table should be used (in kHz). +- clock-frequency : the clock frequency for the EMC at which this + table should be used (in kHz). +- nvidia,emc-registers : a 46 word array of EMC registers to be programmed + for operation at the 'clock-frequency' setting. + The order and contents of the registers are: + RC, RFC, RAS, RP, R2W, W2R, R2P, W2P, RD_RCD, WR_RCD, RRD, REXT, + WDV, QUSE, QRST, QSAFE, RDV, REFRESH, BURST_REFRESH_NUM, PDEX2WR, + PDEX2RD, PCHG2PDEN, ACT2PDEN, AR2PDEN, RW2PDEN, TXSR, TCKE, TFAW, + TRPAB, TCLKSTABLE, TCLKSTOP, TREFBW, QUSE_EXTRA, FBIO_CFG6, ODT_WRITE, + ODT_READ, FBIO_CFG5, CFG_DIG_DLL, DLL_XFORM_DQS, DLL_XFORM_QUSE, + ZCAL_REF_CNT, ZCAL_WAIT_CNT, AUTO_CAL_INTERVAL, CFG_CLKTRIM_0, + CFG_CLKTRIM_1, CFG_CLKTRIM_2 + + emc-table@166000 { + reg = <166000>; + compatible = "nvidia,tegra20-emc-table"; + clock-frequency = < 166000 >; + nvidia,emc-registers = < 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 >; + }; + + emc-table@333000 { + reg = <333000>; + compatible = "nvidia,tegra20-emc-table"; + clock-frequency = < 333000 >; + nvidia,emc-registers = < 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 >; + }; diff --git a/trunk/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/trunk/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt new file mode 100644 index 000000000000..b5846e21cc2e --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt @@ -0,0 +1,19 @@ +NVIDIA Tegra Power Management Controller (PMC) + +Properties: +- name : Should be pmc +- compatible : Should contain "nvidia,tegra-pmc". +- reg : Offset and length of the register set for the device +- nvidia,invert-interrupt : If present, inverts the PMU interrupt signal. + The PMU is an external Power Management Unit, whose interrupt output + signal is fed into the PMC. This signal is optionally inverted, and then + fed into the ARM GIC. The PMC is not involved in the detection or + handling of this interrupt signal, merely its inversion. + +Example: + +pmc@7000f400 { + compatible = "nvidia,tegra20-pmc"; + reg = <0x7000e400 0x400>; + nvidia,invert-interrupt; +}; diff --git a/trunk/Documentation/devicetree/bindings/arm/twd.txt b/trunk/Documentation/devicetree/bindings/arm/twd.txt new file mode 100644 index 000000000000..75b8610939fa --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/twd.txt @@ -0,0 +1,48 @@ +* ARM Timer Watchdog + +ARM 11MP, Cortex-A5 and Cortex-A9 are often associated with a per-core +Timer-Watchdog (aka TWD), which provides both a per-cpu local timer +and watchdog. + +The TWD is usually attached to a GIC to deliver its two per-processor +interrupts. + +** Timer node required properties: + +- compatible : Should be one of: + "arm,cortex-a9-twd-timer" + "arm,cortex-a5-twd-timer" + "arm,arm11mp-twd-timer" + +- interrupts : One interrupt to each core + +- reg : Specify the base address and the size of the TWD timer + register window. + +Example: + + twd-timer@2c000600 { + compatible = "arm,arm11mp-twd-timer""; + reg = <0x2c000600 0x20>; + interrupts = <1 13 0xf01>; + }; + +** Watchdog node properties: + +- compatible : Should be one of: + "arm,cortex-a9-twd-wdt" + "arm,cortex-a5-twd-wdt" + "arm,arm11mp-twd-wdt" + +- interrupts : One interrupt to each core + +- reg : Specify the base address and the size of the TWD watchdog + register window. + +Example: + + twd-watchdog@2c000620 { + compatible = "arm,arm11mp-twd-wdt"; + reg = <0x2c000620 0x20>; + interrupts = <1 14 0xf01>; + }; diff --git a/trunk/Documentation/devicetree/bindings/arm/vexpress.txt b/trunk/Documentation/devicetree/bindings/arm/vexpress.txt new file mode 100644 index 000000000000..ec8b50cbb2e8 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/vexpress.txt @@ -0,0 +1,146 @@ +ARM Versatile Express boards family +----------------------------------- + +ARM's Versatile Express platform consists of a motherboard and one +or more daughterboards (tiles). The motherboard provides a set of +peripherals. Processor and RAM "live" on the tiles. + +The motherboard and each core tile should be described by a separate +Device Tree source file, with the tile's description including +the motherboard file using a /include/ directive. As the motherboard +can be initialized in one of two different configurations ("memory +maps"), care must be taken to include the correct one. + +Required properties in the root node: +- compatible value: + compatible = "arm,vexpress,", "arm,vexpress"; + where is the full tile model name (as used in the tile's + Technical Reference Manual), eg.: + - for Coretile Express A5x2 (V2P-CA5s): + compatible = "arm,vexpress,v2p-ca5s", "arm,vexpress"; + - for Coretile Express A9x4 (V2P-CA9): + compatible = "arm,vexpress,v2p-ca9", "arm,vexpress"; + If a tile comes in several variants or can be used in more then one + configuration, the compatible value should be: + compatible = "arm,vexpress,,", \ + "arm,vexpress,", "arm,vexpress"; + eg: + - Coretile Express A15x2 (V2P-CA15) with Tech Chip 1: + compatible = "arm,vexpress,v2p-ca15,tc1", \ + "arm,vexpress,v2p-ca15", "arm,vexpress"; + - LogicTile Express 13MG (V2F-2XV6) running Cortex-A7 (3 cores) SMM: + compatible = "arm,vexpress,v2f-2xv6,ca7x3", \ + "arm,vexpress,v2f-2xv6", "arm,vexpress"; + +Optional properties in the root node: +- tile model name (use name from the tile's Technical Reference + Manual, eg. "V2P-CA5s") + model = ""; +- tile's HBI number (unique ARM's board model ID, visible on the + PCB's silkscreen) in hexadecimal transcription: + arm,hbi = <0xhbi> + eg: + - for Coretile Express A5x2 (V2P-CA5s) HBI-0191: + arm,hbi = <0x191>; + - Coretile Express A9x4 (V2P-CA9) HBI-0225: + arm,hbi = <0x225>; + +Top-level standard "cpus" node is required. It must contain a node +with device_type = "cpu" property for every available core, eg.: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a5"; + reg = <0>; + }; + }; + +The motherboard description file provides a single "motherboard" node +using 2 address cells corresponding to the Static Memory Bus used +between the motherboard and the tile. The first cell defines the Chip +Select (CS) line number, the second cell address offset within the CS. +All interrupt lines between the motherboard and the tile are active +high and are described using single cell. + +Optional properties of the "motherboard" node: +- motherboard's memory map variant: + arm,v2m-memory-map = ""; + where name is one of: + - "rs1" - for RS1 map (i.a. peripherals on CS3); this map is also + referred to as "ARM Cortex-A Series memory map": + arm,v2m-memory-map = "rs1"; + When this property is missing, the motherboard is using the original + memory map (also known as the "Legacy memory map", primarily used + with the original CoreTile Express A9x4) with peripherals on CS7. + +Motherboard .dtsi files provide a set of labelled peripherals that +can be used to obtain required phandle in the tile's "aliases" node: +- UARTs, note that the numbers correspond to the physical connectors + on the motherboard's back panel: + v2m_serial0, v2m_serial1, v2m_serial2 and v2m_serial3 +- I2C controllers: + v2m_i2c_dvi and v2m_i2c_pcie +- SP804 timers: + v2m_timer01 and v2m_timer23 + +Current Linux implementation requires a "arm,v2m_timer" alias +pointing at one of the motherboard's SP804 timers, if it is to be +used as the system timer. This alias should be defined in the +motherboard files. + +The tile description must define "ranges", "interrupt-map-mask" and +"interrupt-map" properties to translate the motherboard's address +and interrupt space into one used by the tile's processor. + +Abbreviated example: + +/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; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a5"; + reg = <0>; + }; + }; + + gic: interrupt-controller@2c001000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x2c001000 0x1000>, + <0x2c000100 0x100>; + }; + + motherboard { + /* CS0 is visible at 0x08000000 */ + ranges = <0 0 0x08000000 0x04000000>; + interrupt-map-mask = <0 0 63>; + /* Active high IRQ 0 is connected to GIC's SPI0 */ + interrupt-map = <0 0 0 &gic 0 0 4>; + }; +}; + +/include/ "vexpress-v2m-rs1.dtsi" diff --git a/trunk/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt b/trunk/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt new file mode 100644 index 000000000000..90fa7da525b8 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt @@ -0,0 +1,30 @@ +* NVIDIA Tegra APB DMA controller + +Required properties: +- compatible: Should be "nvidia,-apbdma" +- reg: Should contain DMA registers location and length. This shuld include + all of the per-channel registers. +- interrupts: Should contain all of the per-channel DMA interrupts. + +Examples: + +apbdma: dma@6000a000 { + compatible = "nvidia,tegra20-apbdma"; + reg = <0x6000a000 0x1200>; + interrupts = < 0 136 0x04 + 0 137 0x04 + 0 138 0x04 + 0 139 0x04 + 0 140 0x04 + 0 141 0x04 + 0 142 0x04 + 0 143 0x04 + 0 144 0x04 + 0 145 0x04 + 0 146 0x04 + 0 147 0x04 + 0 148 0x04 + 0 149 0x04 + 0 150 0x04 + 0 151 0x04 >; +}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio-omap.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio-omap.txt new file mode 100644 index 000000000000..bff51a2fee1e --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio-omap.txt @@ -0,0 +1,36 @@ +OMAP GPIO controller bindings + +Required properties: +- compatible: + - "ti,omap2-gpio" for OMAP2 controllers + - "ti,omap3-gpio" for OMAP3 controllers + - "ti,omap4-gpio" for OMAP4 controllers +- #gpio-cells : Should be two. + - first cell is the pin number + - second cell is used to specify optional parameters (unused) +- gpio-controller : Marks the device node as a GPIO controller. +- #interrupt-cells : Should be 2. +- interrupt-controller: Mark the device node as an interrupt controller + The first cell is the GPIO number. + The second cell is used to specify flags: + bits[3:0] trigger type and level flags: + 1 = low-to-high edge triggered. + 2 = high-to-low edge triggered. + 4 = active high level-sensitive. + 8 = active low level-sensitive. + +OMAP specific properties: +- ti,hwmods: Name of the hwmod associated to the GPIO: + "gpio", being the 1-based instance number from the HW spec + + +Example: + +gpio4: gpio4 { + compatible = "ti,omap4-gpio"; + ti,hwmods = "gpio4"; + #gpio-cells = <2>; + gpio-controller; + #interrupt-cells = <2>; + interrupt-controller; +}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio-twl4030.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio-twl4030.txt new file mode 100644 index 000000000000..16695d9cf1e8 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio-twl4030.txt @@ -0,0 +1,23 @@ +twl4030 GPIO controller bindings + +Required properties: +- compatible: + - "ti,twl4030-gpio" for twl4030 GPIO controller +- #gpio-cells : Should be two. + - first cell is the pin number + - second cell is used to specify optional parameters (unused) +- gpio-controller : Marks the device node as a GPIO controller. +- #interrupt-cells : Should be 2. +- interrupt-controller: Mark the device node as an interrupt controller + The first cell is the GPIO number. + The second cell is not used. + +Example: + +twl_gpio: gpio { + compatible = "ti,twl4030-gpio"; + #gpio-cells = <2>; + gpio-controller; + #interrupt-cells = <2>; + interrupt-controller; +}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio_atmel.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio_atmel.txt new file mode 100644 index 000000000000..66efc804806a --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio_atmel.txt @@ -0,0 +1,20 @@ +* Atmel GPIO controller (PIO) + +Required properties: +- compatible: "atmel,-gpio", where is at91rm9200 or at91sam9x5. +- reg: Should contain GPIO controller registers location and length +- interrupts: Should be the port interrupt shared by all the pins. +- #gpio-cells: Should be two. The first cell is the pin number and + the second cell is used to specify optional parameters (currently + unused). +- gpio-controller: Marks the device node as a GPIO controller. + +Example: + pioA: gpio@fffff200 { + compatible = "atmel,at91rm9200-gpio"; + reg = <0xfffff200 0x100>; + interrupts = <2 4>; + #gpio-cells = <2>; + gpio-controller; + }; + diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt new file mode 100644 index 000000000000..4f8ec947c6bd --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt @@ -0,0 +1,32 @@ +Device-Tree bindings for i2c gpio driver + +Required properties: + - compatible = "i2c-gpio"; + - gpios: sda and scl gpio + + +Optional properties: + - i2c-gpio,sda-open-drain: sda as open drain + - i2c-gpio,scl-open-drain: scl as open drain + - i2c-gpio,scl-output-only: scl as output only + - i2c-gpio,delay-us: delay between GPIO operations (may depend on each platform) + - i2c-gpio,timeout-ms: timeout to get data + +Example nodes: + +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>; + + rv3029c2@56 { + compatible = "rv3029c2"; + reg = <0x56>; + }; +}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt index eb4b530d64e1..023c9526e5f8 100644 --- a/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt @@ -1,8 +1,40 @@ -NVIDIA Tegra 2 GPIO controller +NVIDIA Tegra GPIO controller Required properties: -- compatible : "nvidia,tegra20-gpio" +- compatible : "nvidia,tegra-gpio" +- reg : Physical base address and length of the controller's registers. +- interrupts : The interrupt outputs from the controller. For Tegra20, + there should be 7 interrupts specified, and for Tegra30, there should + be 8 interrupts specified. - #gpio-cells : Should be two. The first cell is the pin number and the second cell is used to specify optional parameters: - bit 0 specifies polarity (0 for normal, 1 for inverted) - gpio-controller : Marks the device node as a GPIO controller. +- #interrupt-cells : Should be 2. + The first cell is the GPIO number. + The second cell is used to specify flags: + bits[3:0] trigger type and level flags: + 1 = low-to-high edge triggered. + 2 = high-to-low edge triggered. + 4 = active high level-sensitive. + 8 = active low level-sensitive. + Valid combinations are 1, 2, 3, 4, 8. +- interrupt-controller : Marks the device node as an interrupt controller. + +Example: + +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; +}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt new file mode 100644 index 000000000000..1e34cfe5ebea --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt @@ -0,0 +1,23 @@ +* Marvell PXA GPIO controller + +Required properties: +- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" +- reg : Address and length of the register set for the device +- interrupts : Should be the port interrupt shared by all gpio pins, if +- interrupt-name : Should be the name of irq resource. + one number. +- gpio-controller : Marks the device node as a gpio controller. +- #gpio-cells : Should be one. It is the pin number. + +Example: + + gpio: gpio@d4019000 { + compatible = "mrvl,mmp-gpio", "mrvl,pxa-gpio"; + reg = <0xd4019000 0x1000>; + interrupts = <49>, <17>, <18>; + interrupt-name = "gpio_mux", "gpio0", "gpio1"; + gpio-controller; + #gpio-cells = <1>; + interrupt-controller; + #interrupt-cells = <1>; + }; diff --git a/trunk/Documentation/devicetree/bindings/gpio/sodaville.txt b/trunk/Documentation/devicetree/bindings/gpio/sodaville.txt new file mode 100644 index 000000000000..563eff22b975 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/sodaville.txt @@ -0,0 +1,48 @@ +GPIO controller on CE4100 / Sodaville SoCs +========================================== + +The bindings for CE4100's GPIO controller match the generic description +which is covered by the gpio.txt file in this folder. + +The only additional property is the intel,muxctl property which holds the +value which is written into the MUXCNTL register. + +There is no compatible property for now because the driver is probed via +PCI id (vendor 0x8086 device 0x2e67). + +The interrupt specifier consists of two cells encoded as follows: + - <1st cell>: The interrupt-number that identifies the interrupt source. + - <2nd cell>: The level-sense information, encoded as follows: + 4 - active high level-sensitive + 8 - active low level-sensitive + +Example of the GPIO device and one user: + + pcigpio: gpio@b,1 { + /* two cells for GPIO and interrupt */ + #gpio-cells = <2>; + #interrupt-cells = <2>; + compatible = "pci8086,2e67.2", + "pci8086,2e67", + "pciclassff0000", + "pciclassff00"; + + reg = <0x15900 0x0 0x0 0x0 0x0>; + /* Interrupt line of the gpio device */ + interrupts = <15 1>; + /* It is an interrupt and GPIO controller itself */ + interrupt-controller; + gpio-controller; + intel,muxctl = <0>; + }; + + testuser@20 { + compatible = "example,testuser"; + /* User the 11th GPIO line as an active high triggered + * level interrupt + */ + interrupts = <11 8>; + interrupt-parent = <&pcigpio>; + /* Use this GPIO also with the gpio functions */ + gpios = <&pcigpio 11 0>; + }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt new file mode 100644 index 000000000000..071eb3caae91 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt @@ -0,0 +1,37 @@ +* I2C + +Required properties : + + - reg : Offset and length of the register set for the device + - compatible : should be "mrvl,mmp-twsi" where CHIP is the name of a + compatible processor, e.g. pxa168, pxa910, mmp2, mmp3. + For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required + as shown in the example below. + +Recommended properties : + + - interrupts : where a is the interrupt number and b is a + field that represents an encoding of the sense and level + information for the interrupt. This should be encoded based on + the information in section 2) depending on the type of interrupt + controller you have. + - interrupt-parent : the phandle for the interrupt controller that + services interrupts for this device. + - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling + status register of i2c controller instead. + - mrvl,i2c-fast-mode : Enable fast mode of i2c controller. + +Examples: + twsi1: i2c@d4011000 { + compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; + reg = <0xd4011000 0x1000>; + interrupts = <7>; + mrvl,i2c-fast-mode; + }; + + twsi2: i2c@d4025000 { + compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; + reg = <0xd4025000 0x1000>; + interrupts = <58>; + }; + diff --git a/trunk/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/trunk/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt new file mode 100644 index 000000000000..dbd4368ab8cc --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt @@ -0,0 +1,33 @@ +* TI Highspeed MMC host controller for OMAP + +The Highspeed MMC Host Controller on TI OMAP family +provides an interface for MMC, SD, and SDIO types of memory cards. + +Required properties: +- compatible: + Should be "ti,omap2-hsmmc", for OMAP2 controllers + Should be "ti,omap3-hsmmc", for OMAP3 controllers + Should be "ti,omap4-hsmmc", for OMAP4 controllers +- ti,hwmods: Must be "mmc", n is controller instance starting 1 +- reg : should contain hsmmc registers location and length + +Optional properties: +ti,dual-volt: boolean, supports dual voltage cards +-supply: phandle to the regulator device tree node +"supply-name" examples are "vmmc", "vmmc_aux" etc +ti,bus-width: Number of data lines, default assumed is 1 if the property is missing. +cd-gpios: GPIOs for card detection +wp-gpios: GPIOs for write protection +ti,non-removable: non-removable slot (like eMMC) +ti,needs-special-reset: Requires a special softreset sequence + +Example: + mmc1: mmc@0x4809c000 { + compatible = "ti,omap4-hsmmc"; + reg = <0x4809c000 0x400>; + ti,hwmods = "mmc1"; + ti,dual-volt; + ti,bus-width = <4>; + vmmc-supply = <&vmmc>; /* phandle to regulator node */ + ti,non-removable; + }; diff --git a/trunk/Documentation/devicetree/bindings/mtd/atmel-nand.txt b/trunk/Documentation/devicetree/bindings/mtd/atmel-nand.txt new file mode 100644 index 000000000000..5903ecf6e895 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/mtd/atmel-nand.txt @@ -0,0 +1,41 @@ +Atmel NAND flash + +Required properties: +- compatible : "atmel,at91rm9200-nand". +- reg : should specify localbus address and size used for the chip, + and if availlable the ECC. +- atmel,nand-addr-offset : offset for the address latch. +- atmel,nand-cmd-offset : offset for the command latch. +- #address-cells, #size-cells : Must be present if the device has sub-nodes + representing partitions. + +- gpios : specifies the gpio pins to control the NAND device. detect is an + optional gpio and may be set to 0 if not present. + +Optional properties: +- nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default. + Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", + "soft_bch". +- nand-bus-width : 8 or 16 bus width if not present 8 +- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false + +Examples: +nand0: nand@40000000,0 { + 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>; + nand-on-flash-bbt; + nand-ecc-mode = "soft"; + gpios = <&pioC 13 0 + &pioC 14 0 + 0 + >; + partition@0 { + ... + }; +}; diff --git a/trunk/Documentation/devicetree/bindings/mtd/nand.txt b/trunk/Documentation/devicetree/bindings/mtd/nand.txt new file mode 100644 index 000000000000..03855c8c492a --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/mtd/nand.txt @@ -0,0 +1,7 @@ +* MTD generic binding + +- nand-ecc-mode : String, operation mode of the NAND ecc mode. + Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", + "soft_bch". +- nand-bus-width : 8 or 16 bus width if not present 8 +- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false diff --git a/trunk/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt b/trunk/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt new file mode 100644 index 000000000000..0cda19ad4859 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt @@ -0,0 +1,17 @@ +* Marvell Real Time Clock controller + +Required properties: +- compatible: should be "mrvl,sa1100-rtc" +- reg: physical base address of the controller and length of memory mapped + region. +- interrupts: Should be two. The first interrupt number is the rtc alarm + interrupt and the second interrupt number is the rtc hz interrupt. +- interrupt-names: Assign name of irq resource. + +Example: + rtc: rtc@d4010000 { + compatible = "mrvl,mmp-rtc"; + reg = <0xd4010000 0x1000>; + interrupts = <5>, <6>; + interrupt-name = "rtc 1Hz", "rtc alarm"; + }; diff --git a/trunk/Documentation/devicetree/bindings/serial/mrvl-serial.txt b/trunk/Documentation/devicetree/bindings/serial/mrvl-serial.txt new file mode 100644 index 000000000000..d744340de887 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/serial/mrvl-serial.txt @@ -0,0 +1,4 @@ +PXA UART controller + +Required properties: +- compatible : should be "mrvl,mmp-uart" or "mrvl,pxa-uart". diff --git a/trunk/Documentation/devicetree/bindings/usb/atmel-usb.txt b/trunk/Documentation/devicetree/bindings/usb/atmel-usb.txt new file mode 100644 index 000000000000..60bd2150a3e6 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/usb/atmel-usb.txt @@ -0,0 +1,49 @@ +Atmel SOC USB controllers + +OHCI + +Required properties: + - compatible: Should be "atmel,at91rm9200-ohci" for USB controllers + used in host mode. + - num-ports: Number of ports. + - atmel,vbus-gpio: If present, specifies a gpio that needs to be + activated for the bus to be powered. + - atmel,oc-gpio: If present, specifies a gpio that needs to be + activated for the overcurrent detection. + +usb0: ohci@00500000 { + compatible = "atmel,at91rm9200-ohci", "usb-ohci"; + reg = <0x00500000 0x100000>; + interrupts = <20 4>; + num-ports = <2>; +}; + +EHCI + +Required properties: + - compatible: Should be "atmel,at91sam9g45-ehci" for USB controllers + used in host mode. + +usb1: ehci@00800000 { + compatible = "atmel,at91sam9g45-ehci", "usb-ehci"; + reg = <0x00800000 0x100000>; + interrupts = <22 4>; +}; + +AT91 USB device controller + +Required properties: + - compatible: Should be "atmel,at91rm9200-udc" + - reg: Address and length of the register set for the device + - interrupts: Should contain macb interrupt + +Optional properties: + - atmel,vbus-gpio: If present, specifies a gpio that needs to be + activated for the bus to be powered. + +usb1: gadget@fffa4000 { + compatible = "atmel,at91rm9200-udc"; + reg = <0xfffa4000 0x4000>; + interrupts = <10 4>; + atmel,vbus-gpio = <&pioC 5 0>; +}; diff --git a/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt b/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt index 035d63d5646d..007005ddbe12 100644 --- a/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt +++ b/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt @@ -11,3 +11,16 @@ Required properties : - phy_type : Should be one of "ulpi" or "utmi". - nvidia,vbus-gpio : If present, specifies a gpio that needs to be activated for the bus to be powered. + +Optional properties: + - dr_mode : dual role mode. Indicates the working mode for + nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral", + or "otg". Default to "host" if not defined for backward compatibility. + host means this is a host controller + peripheral means it is device controller + otg means it can operate as either ("on the go") + - nvidia,has-legacy-mode : boolean indicates whether this controller can + operate in legacy mode (as APX 2500 / 2600). In legacy mode some + registers are accessed through the APB_MISC base address instead of + the USB controller. Since this is a legacy issue it probably does not + warrant a compatible string of its own. diff --git a/trunk/Documentation/dma-buf-sharing.txt b/trunk/Documentation/dma-buf-sharing.txt index 225f96d88f55..3bbd5c51605a 100644 --- a/trunk/Documentation/dma-buf-sharing.txt +++ b/trunk/Documentation/dma-buf-sharing.txt @@ -32,8 +32,12 @@ The buffer-user *IMPORTANT*: [see https://lkml.org/lkml/2011/12/20/211 for more details] For this first version, A buffer shared using the dma_buf sharing API: - *may* be exported to user space using "mmap" *ONLY* by exporter, outside of - this framework. -- may be used *ONLY* by importers that do not need CPU access to the buffer. + this framework. +- with this new iteration of the dma-buf api cpu access from the kernel has been + enable, see below for the details. + +dma-buf operations for device dma only +-------------------------------------- The dma_buf buffer sharing API usage contains the following steps: @@ -219,10 +223,120 @@ NOTES: If the exporter chooses not to allow an attach() operation once a map_dma_buf() API has been called, it simply returns an error. -Miscellaneous notes: +Kernel cpu access to a dma-buf buffer object +-------------------------------------------- + +The motivation to allow cpu access from the kernel to a dma-buf object from the +importers side are: +- fallback operations, e.g. if the devices is connected to a usb bus and the + kernel needs to shuffle the data around first before sending it away. +- full transparency for existing users on the importer side, i.e. userspace + should not notice the difference between a normal object from that subsystem + and an imported one backed by a dma-buf. This is really important for drm + opengl drivers that expect to still use all the existing upload/download + paths. + +Access to a dma_buf from the kernel context involves three steps: + +1. Prepare access, which invalidate any necessary caches and make the object + available for cpu access. +2. Access the object page-by-page with the dma_buf map apis +3. Finish access, which will flush any necessary cpu caches and free reserved + resources. + +1. Prepare access + + Before an importer can access a dma_buf object with the cpu from the kernel + context, it needs to notify the exporter of the access that is about to + happen. + + Interface: + int dma_buf_begin_cpu_access(struct dma_buf *dmabuf, + size_t start, size_t len, + enum dma_data_direction direction) + + This allows the exporter to ensure that the memory is actually available for + cpu access - the exporter might need to allocate or swap-in and pin the + backing storage. The exporter also needs to ensure that cpu access is + coherent for the given range and access direction. The range and access + direction can be used by the exporter to optimize the cache flushing, i.e. + access outside of the range or with a different direction (read instead of + write) might return stale or even bogus data (e.g. when the exporter needs to + copy the data to temporary storage). + + This step might fail, e.g. in oom conditions. + +2. Accessing the buffer + + To support dma_buf objects residing in highmem cpu access is page-based using + an api similar to kmap. Accessing a dma_buf is done in aligned chunks of + PAGE_SIZE size. Before accessing a chunk it needs to be mapped, which returns + a pointer in kernel virtual address space. Afterwards the chunk needs to be + unmapped again. There is no limit on how often a given chunk can be mapped + and unmapped, i.e. the importer does not need to call begin_cpu_access again + before mapping the same chunk again. + + Interfaces: + void *dma_buf_kmap(struct dma_buf *, unsigned long); + void dma_buf_kunmap(struct dma_buf *, unsigned long, void *); + + There are also atomic variants of these interfaces. Like for kmap they + facilitate non-blocking fast-paths. Neither the importer nor the exporter (in + the callback) is allowed to block when using these. + + Interfaces: + void *dma_buf_kmap_atomic(struct dma_buf *, unsigned long); + void dma_buf_kunmap_atomic(struct dma_buf *, unsigned long, void *); + + For importers all the restrictions of using kmap apply, like the limited + supply of kmap_atomic slots. Hence an importer shall only hold onto at most 2 + atomic dma_buf kmaps at the same time (in any given process context). + + dma_buf kmap calls outside of the range specified in begin_cpu_access are + undefined. If the range is not PAGE_SIZE aligned, kmap needs to succeed on + the partial chunks at the beginning and end but may return stale or bogus + data outside of the range (in these partial chunks). + + Note that these calls need to always succeed. The exporter needs to complete + any preparations that might fail in begin_cpu_access. + +3. Finish access + + When the importer is done accessing the range specified in begin_cpu_access, + it needs to announce this to the exporter (to facilitate cache flushing and + unpinning of any pinned resources). The result of of any dma_buf kmap calls + after end_cpu_access is undefined. + + Interface: + void dma_buf_end_cpu_access(struct dma_buf *dma_buf, + size_t start, size_t len, + enum dma_data_direction dir); + + +Miscellaneous notes +------------------- + - Any exporters or users of the dma-buf buffer sharing framework must have a 'select DMA_SHARED_BUFFER' in their respective Kconfigs. +- In order to avoid fd leaks on exec, the FD_CLOEXEC flag must be set + on the file descriptor. This is not just a resource leak, but a + potential security hole. It could give the newly exec'd application + access to buffers, via the leaked fd, to which it should otherwise + not be permitted access. + + The problem with doing this via a separate fcntl() call, versus doing it + atomically when the fd is created, is that this is inherently racy in a + multi-threaded app[3]. The issue is made worse when it is library code + opening/creating the file descriptor, as the application may not even be + aware of the fd's. + + To avoid this problem, userspace must have a way to request O_CLOEXEC + flag be set when the dma-buf fd is created. So any API provided by + the exporting driver to create a dmabuf fd must provide a way to let + userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd(). + References: [1] struct dma_buf_ops in include/linux/dma-buf.h [2] All interfaces mentioned above defined in include/linux/dma-buf.h +[3] https://lwn.net/Articles/236486/ diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index 4bfd982f8080..0cad4803ffac 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -513,20 +513,6 @@ Who: Bjorn Helgaas ---------------------------- -What: The CAP9 SoC family will be removed -When: 3.4 -Files: arch/arm/mach-at91/at91cap9.c - arch/arm/mach-at91/at91cap9_devices.c - arch/arm/mach-at91/include/mach/at91cap9.h - arch/arm/mach-at91/include/mach/at91cap9_matrix.h - arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h - arch/arm/mach-at91/board-cap9adk.c -Why: The code is not actively maintained and platforms are now hard to find. -Who: Nicolas Ferre - Jean-Christophe PLAGNIOL-VILLARD - ----------------------------- - What: Low Performance USB Block driver ("CONFIG_BLK_DEV_UB") When: 3.6 Why: This driver provides support for USB storage devices like "USB diff --git a/trunk/Documentation/filesystems/ext4.txt b/trunk/Documentation/filesystems/ext4.txt index 8c10bf375c73..1b7f9acbcbbe 100644 --- a/trunk/Documentation/filesystems/ext4.txt +++ b/trunk/Documentation/filesystems/ext4.txt @@ -144,9 +144,6 @@ journal_async_commit Commit block can be written to disk without waiting mount the device. This will enable 'journal_checksum' internally. -journal=update Update the ext4 file system's journal to the current - format. - journal_dev=devnum When the external journal device's major/minor numbers have changed, this option allows the user to specify the new journal location. The journal device is @@ -356,11 +353,6 @@ nouid32 Disables 32-bit UIDs and GIDs. This is for interoperability with older kernels which only store and expect 16-bit values. -resize Allows to resize filesystem to the end of the last - existing block group, further resize has to be done - with resize2fs either online, or offline. It can be - used only with conjunction with remount. - block_validity This options allows to enables/disables the in-kernel noblock_validity facility for tracking filesystem metadata blocks within internal data structures. This allows multi- diff --git a/trunk/Documentation/gpio.txt b/trunk/Documentation/gpio.txt index 792faa3c06cf..620a07844e8c 100644 --- a/trunk/Documentation/gpio.txt +++ b/trunk/Documentation/gpio.txt @@ -271,9 +271,26 @@ Some platforms may also use knowledge about what GPIOs are active for power management, such as by powering down unused chip sectors and, more easily, gating off unused clocks. -Note that requesting a GPIO does NOT cause it to be configured in any -way; it just marks that GPIO as in use. Separate code must handle any -pin setup (e.g. controlling which pin the GPIO uses, pullup/pulldown). +For GPIOs that use pins known to the pinctrl subsystem, that subsystem should +be informed of their use; a gpiolib driver's .request() operation may call +pinctrl_request_gpio(), and a gpiolib driver's .free() operation may call +pinctrl_free_gpio(). The pinctrl subsystem allows a pinctrl_request_gpio() +to succeed concurrently with a pin or pingroup being "owned" by a device for +pin multiplexing. + +Any programming of pin multiplexing hardware that is needed to route the +GPIO signal to the appropriate pin should occur within a GPIO driver's +.direction_input() or .direction_output() operations, and occur after any +setup of an output GPIO's value. This allows a glitch-free migration from a +pin's special function to GPIO. This is sometimes required when using a GPIO +to implement a workaround on signals typically driven by a non-GPIO HW block. + +Some platforms allow some or all GPIO signals to be routed to different pins. +Similarly, other aspects of the GPIO or pin may need to be configured, such as +pullup/pulldown. Platform software should arrange that any such details are +configured prior to gpio_request() being called for those GPIOs, e.g. using +the pinctrl subsystem's mapping table, so that GPIO users need not be aware +of these details. Also note that it's your responsibility to have stopped using a GPIO before you free it. @@ -302,6 +319,8 @@ where 'flags' is currently defined to specify the following properties: * GPIOF_INIT_LOW - as output, set initial level to LOW * GPIOF_INIT_HIGH - as output, set initial level to HIGH + * GPIOF_OPEN_DRAIN - gpio pin is open drain type. + * GPIOF_OPEN_SOURCE - gpio pin is open source type. since GPIOF_INIT_* are only valid when configured as output, so group valid combinations as: @@ -310,8 +329,19 @@ combinations as: * GPIOF_OUT_INIT_LOW - configured as output, initial level LOW * GPIOF_OUT_INIT_HIGH - configured as output, initial level HIGH -In the future, these flags can be extended to support more properties such -as open-drain status. +When setting the flag as GPIOF_OPEN_DRAIN then it will assume that pins is +open drain type. Such pins will not be driven to 1 in output mode. It is +require to connect pull-up on such pins. By enabling this flag, gpio lib will +make the direction to input when it is asked to set value of 1 in output mode +to make the pin HIGH. The pin is make to LOW by driving value 0 in output mode. + +When setting the flag as GPIOF_OPEN_SOURCE then it will assume that pins is +open source type. Such pins will not be driven to 0 in output mode. It is +require to connect pull-down on such pin. By enabling this flag, gpio lib will +make the direction to input when it is asked to set value of 0 in output mode +to make the pin LOW. The pin is make to HIGH by driving value 1 in output mode. + +In the future, these flags can be extended to support more properties. Further more, to ease the claim/release of multiple GPIOs, 'struct gpio' is introduced to encapsulate all three fields as: diff --git a/trunk/Documentation/i2c/busses/i2c-i801 b/trunk/Documentation/i2c/busses/i2c-i801 index 2871fd500349..71f55bbcefc8 100644 --- a/trunk/Documentation/i2c/busses/i2c-i801 +++ b/trunk/Documentation/i2c/busses/i2c-i801 @@ -20,6 +20,7 @@ Supported adapters: * Intel Patsburg (PCH) * Intel DH89xxCC (PCH) * Intel Panther Point (PCH) + * Intel Lynx Point (PCH) Datasheets: Publicly available at the Intel website On Intel Patsburg and later chipsets, both the normal host SMBus controller diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index 58eac231fe69..e2f8c297a8a4 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -1869,6 +1869,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. shutdown the other cpus. Instead use the REBOOT_VECTOR irq. + nomodule Disable module load + nopat [X86] Disable PAT (page attribute table extension of pagetables) support. diff --git a/trunk/Documentation/laptops/asus-laptop.txt b/trunk/Documentation/laptops/asus-laptop.txt index 803e51f6768b..a1e04d679289 100644 --- a/trunk/Documentation/laptops/asus-laptop.txt +++ b/trunk/Documentation/laptops/asus-laptop.txt @@ -45,7 +45,7 @@ Status Usage ----- - Try "modprobe asus_acpi". Check your dmesg (simply type dmesg). You should + Try "modprobe asus-laptop". Check your dmesg (simply type dmesg). You should see some lines like this : Asus Laptop Extras version 0.42 diff --git a/trunk/Documentation/laptops/sony-laptop.txt b/trunk/Documentation/laptops/sony-laptop.txt index 2bd4e82e5d9f..0d5ac7f5287e 100644 --- a/trunk/Documentation/laptops/sony-laptop.txt +++ b/trunk/Documentation/laptops/sony-laptop.txt @@ -17,6 +17,11 @@ subsystem. See the logs of acpid or /proc/acpi/event and devices are created by the driver. Additionally, loading the driver with the debug option will report all events in the kernel log. +The "scancodes" passed to the input system (that can be remapped with udev) +are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c +module. For example the "FN/E" key combination (EJECTCD on some models) +generates the scancode 20 (0x14). + Backlight control: ------------------ If your laptop model supports it, you will find sysfs files in the diff --git a/trunk/Documentation/remoteproc.txt b/trunk/Documentation/remoteproc.txt new file mode 100644 index 000000000000..70a048cd3fa3 --- /dev/null +++ b/trunk/Documentation/remoteproc.txt @@ -0,0 +1,322 @@ +Remote Processor Framework + +1. Introduction + +Modern SoCs typically have heterogeneous remote processor devices in asymmetric +multiprocessing (AMP) configurations, which may be running different instances +of operating system, whether it's Linux or any other flavor of real-time OS. + +OMAP4, for example, has dual Cortex-A9, dual Cortex-M3 and a C64x+ DSP. +In a typical configuration, the dual cortex-A9 is running Linux in a SMP +configuration, and each of the other three cores (two M3 cores and a DSP) +is running its own instance of RTOS in an AMP configuration. + +The remoteproc framework allows different platforms/architectures to +control (power on, load firmware, power off) those remote processors while +abstracting the hardware differences, so the entire driver doesn't need to be +duplicated. In addition, this framework also adds rpmsg virtio devices +for remote processors that supports this kind of communication. This way, +platform-specific remoteproc drivers only need to provide a few low-level +handlers, and then all rpmsg drivers will then just work +(for more information about the virtio-based rpmsg bus and its drivers, +please read Documentation/rpmsg.txt). +Registration of other types of virtio devices is now also possible. Firmwares +just need to publish what kind of virtio devices do they support, and then +remoteproc will add those devices. This makes it possible to reuse the +existing virtio drivers with remote processor backends at a minimal development +cost. + +2. User API + + int rproc_boot(struct rproc *rproc) + - Boot a remote processor (i.e. load its firmware, power it on, ...). + If the remote processor is already powered on, this function immediately + returns (successfully). + Returns 0 on success, and an appropriate error value otherwise. + Note: to use this function you should already have a valid rproc + handle. There are several ways to achieve that cleanly (devres, pdata, + the way remoteproc_rpmsg.c does this, or, if this becomes prevalent, we + might also consider using dev_archdata for this). See also + rproc_get_by_name() below. + + void rproc_shutdown(struct rproc *rproc) + - Power off a remote processor (previously booted with rproc_boot()). + In case @rproc is still being used by an additional user(s), then + this function will just decrement the power refcount and exit, + without really powering off the device. + Every call to rproc_boot() must (eventually) be accompanied by a call + to rproc_shutdown(). Calling rproc_shutdown() redundantly is a bug. + Notes: + - we're not decrementing the rproc's refcount, only the power refcount. + which means that the @rproc handle stays valid even after + rproc_shutdown() returns, and users can still use it with a subsequent + rproc_boot(), if needed. + - don't call rproc_shutdown() to unroll rproc_get_by_name(), exactly + because rproc_shutdown() _does not_ decrement the refcount of @rproc. + To decrement the refcount of @rproc, use rproc_put() (but _only_ if + you acquired @rproc using rproc_get_by_name()). + + struct rproc *rproc_get_by_name(const char *name) + - Find an rproc handle using the remote processor's name, and then + boot it. If it's already powered on, then just immediately return + (successfully). Returns the rproc handle on success, and NULL on failure. + This function increments the remote processor's refcount, so always + use rproc_put() to decrement it back once rproc isn't needed anymore. + Note: currently rproc_get_by_name() and rproc_put() are not used anymore + by the rpmsg bus and its drivers. We need to scrutinize the use cases + that still need them, and see if we can migrate them to use the non + name-based boot/shutdown interface. + + void rproc_put(struct rproc *rproc) + - Decrement @rproc's power refcount and shut it down if it reaches zero + (essentially by just calling rproc_shutdown), and then decrement @rproc's + validity refcount too. + After this function returns, @rproc may _not_ be used anymore, and its + handle should be considered invalid. + This function should be called _iff_ the @rproc handle was grabbed by + calling rproc_get_by_name(). + +3. Typical usage + +#include + +/* in case we were given a valid 'rproc' handle */ +int dummy_rproc_example(struct rproc *my_rproc) +{ + int ret; + + /* let's power on and boot our remote processor */ + ret = rproc_boot(my_rproc); + if (ret) { + /* + * something went wrong. handle it and leave. + */ + } + + /* + * our remote processor is now powered on... give it some work + */ + + /* let's shut it down now */ + rproc_shutdown(my_rproc); +} + +4. API for implementors + + struct rproc *rproc_alloc(struct device *dev, const char *name, + const struct rproc_ops *ops, + const char *firmware, int len) + - Allocate a new remote processor handle, but don't register + it yet. Required parameters are the underlying device, the + name of this remote processor, platform-specific ops handlers, + the name of the firmware to boot this rproc with, and the + length of private data needed by the allocating rproc driver (in bytes). + + This function should be used by rproc implementations during + initialization of the remote processor. + After creating an rproc handle using this function, and when ready, + implementations should then call rproc_register() to complete + the registration of the remote processor. + On success, the new rproc is returned, and on failure, NULL. + + Note: _never_ directly deallocate @rproc, even if it was not registered + yet. Instead, if you just need to unroll rproc_alloc(), use rproc_free(). + + void rproc_free(struct rproc *rproc) + - Free an rproc handle that was allocated by rproc_alloc. + This function should _only_ be used if @rproc was only allocated, + but not registered yet. + If @rproc was already successfully registered (by calling + rproc_register()), then use rproc_unregister() instead. + + int rproc_register(struct rproc *rproc) + - Register @rproc with the remoteproc framework, after it has been + allocated with rproc_alloc(). + This is called by the platform-specific rproc implementation, whenever + a new remote processor device is probed. + Returns 0 on success and an appropriate error code otherwise. + Note: this function initiates an asynchronous firmware loading + context, which will look for virtio devices supported by the rproc's + firmware. + If found, those virtio devices will be created and added, so as a result + of registering this remote processor, additional virtio drivers might get + probed. + + int rproc_unregister(struct rproc *rproc) + - Unregister a remote processor, and decrement its refcount. + If its refcount drops to zero, then @rproc will be freed. If not, + it will be freed later once the last reference is dropped. + + This function should be called when the platform specific rproc + implementation decides to remove the rproc device. it should + _only_ be called if a previous invocation of rproc_register() + has completed successfully. + + After rproc_unregister() returns, @rproc is _not_ valid anymore and + it shouldn't be used. More specifically, don't call rproc_free() + or try to directly free @rproc after rproc_unregister() returns; + none of these are needed, and calling them is a bug. + + Returns 0 on success and -EINVAL if @rproc isn't valid. + +5. Implementation callbacks + +These callbacks should be provided by platform-specific remoteproc +drivers: + +/** + * struct rproc_ops - platform-specific device handlers + * @start: power on the device and boot it + * @stop: power off the device + * @kick: kick a virtqueue (virtqueue id given as a parameter) + */ +struct rproc_ops { + int (*start)(struct rproc *rproc); + int (*stop)(struct rproc *rproc); + void (*kick)(struct rproc *rproc, int vqid); +}; + +Every remoteproc implementation should at least provide the ->start and ->stop +handlers. If rpmsg/virtio functionality is also desired, then the ->kick handler +should be provided as well. + +The ->start() handler takes an rproc handle and should then power on the +device and boot it (use rproc->priv to access platform-specific private data). +The boot address, in case needed, can be found in rproc->bootaddr (remoteproc +core puts there the ELF entry point). +On success, 0 should be returned, and on failure, an appropriate error code. + +The ->stop() handler takes an rproc handle and powers the device down. +On success, 0 is returned, and on failure, an appropriate error code. + +The ->kick() handler takes an rproc handle, and an index of a virtqueue +where new message was placed in. Implementations should interrupt the remote +processor and let it know it has pending messages. Notifying remote processors +the exact virtqueue index to look in is optional: it is easy (and not +too expensive) to go through the existing virtqueues and look for new buffers +in the used rings. + +6. Binary Firmware Structure + +At this point remoteproc only supports ELF32 firmware binaries. However, +it is quite expected that other platforms/devices which we'd want to +support with this framework will be based on different binary formats. + +When those use cases show up, we will have to decouple the binary format +from the framework core, so we can support several binary formats without +duplicating common code. + +When the firmware is parsed, its various segments are loaded to memory +according to the specified device address (might be a physical address +if the remote processor is accessing memory directly). + +In addition to the standard ELF segments, most remote processors would +also include a special section which we call "the resource table". + +The resource table contains system resources that the remote processor +requires before it should be powered on, such as allocation of physically +contiguous memory, or iommu mapping of certain on-chip peripherals. +Remotecore will only power up the device after all the resource table's +requirement are met. + +In addition to system resources, the resource table may also contain +resource entries that publish the existence of supported features +or configurations by the remote processor, such as trace buffers and +supported virtio devices (and their configurations). + +The resource table begins with this header: + +/** + * struct resource_table - firmware resource table header + * @ver: version number + * @num: number of resource entries + * @reserved: reserved (must be zero) + * @offset: array of offsets pointing at the various resource entries + * + * The header of the resource table, as expressed by this structure, + * contains a version number (should we need to change this format in the + * future), the number of available resource entries, and their offsets + * in the table. + */ +struct resource_table { + u32 ver; + u32 num; + u32 reserved[2]; + u32 offset[0]; +} __packed; + +Immediately following this header are the resource entries themselves, +each of which begins with the following resource entry header: + +/** + * struct fw_rsc_hdr - firmware resource entry header + * @type: resource type + * @data: resource data + * + * Every resource entry begins with a 'struct fw_rsc_hdr' header providing + * its @type. The content of the entry itself will immediately follow + * this header, and it should be parsed according to the resource type. + */ +struct fw_rsc_hdr { + u32 type; + u8 data[0]; +} __packed; + +Some resources entries are mere announcements, where the host is informed +of specific remoteproc configuration. Other entries require the host to +do something (e.g. allocate a system resource). Sometimes a negotiation +is expected, where the firmware requests a resource, and once allocated, +the host should provide back its details (e.g. address of an allocated +memory region). + +Here are the various resource types that are currently supported: + +/** + * enum fw_resource_type - types of resource entries + * + * @RSC_CARVEOUT: request for allocation of a physically contiguous + * memory region. + * @RSC_DEVMEM: request to iommu_map a memory-based peripheral. + * @RSC_TRACE: announces the availability of a trace buffer into which + * the remote processor will be writing logs. + * @RSC_VDEV: declare support for a virtio device, and serve as its + * virtio header. + * @RSC_LAST: just keep this one at the end + * + * Please note that these values are used as indices to the rproc_handle_rsc + * lookup table, so please keep them sane. Moreover, @RSC_LAST is used to + * check the validity of an index before the lookup table is accessed, so + * please update it as needed. + */ +enum fw_resource_type { + RSC_CARVEOUT = 0, + RSC_DEVMEM = 1, + RSC_TRACE = 2, + RSC_VDEV = 3, + RSC_LAST = 4, +}; + +For more details regarding a specific resource type, please see its +dedicated structure in include/linux/remoteproc.h. + +We also expect that platform-specific resource entries will show up +at some point. When that happens, we could easily add a new RSC_PLATFORM +type, and hand those resources to the platform-specific rproc driver to handle. + +7. Virtio and remoteproc + +The firmware should provide remoteproc information about virtio devices +that it supports, and their configurations: a RSC_VDEV resource entry +should specify the virtio device id (as in virtio_ids.h), virtio features, +virtio config space, vrings information, etc. + +When a new remote processor is registered, the remoteproc framework +will look for its resource table and will register the virtio devices +it supports. A firmware may support any number of virtio devices, and +of any type (a single remote processor can also easily support several +rpmsg virtio devices this way, if desired). + +Of course, RSC_VDEV resource entries are only good enough for static +allocation of virtio devices. Dynamic allocations will also be made possible +using the rpmsg bus (similar to how we already do dynamic allocations of +rpmsg channels; read more about it in rpmsg.txt). diff --git a/trunk/Documentation/rpmsg.txt b/trunk/Documentation/rpmsg.txt new file mode 100644 index 000000000000..409d9f964c5b --- /dev/null +++ b/trunk/Documentation/rpmsg.txt @@ -0,0 +1,293 @@ +Remote Processor Messaging (rpmsg) Framework + +Note: this document describes the rpmsg bus and how to write rpmsg drivers. +To learn how to add rpmsg support for new platforms, check out remoteproc.txt +(also a resident of Documentation/). + +1. Introduction + +Modern SoCs typically employ heterogeneous remote processor devices in +asymmetric multiprocessing (AMP) configurations, which may be running +different instances of operating system, whether it's Linux or any other +flavor of real-time OS. + +OMAP4, for example, has dual Cortex-A9, dual Cortex-M3 and a C64x+ DSP. +Typically, the dual cortex-A9 is running Linux in a SMP configuration, +and each of the other three cores (two M3 cores and a DSP) is running +its own instance of RTOS in an AMP configuration. + +Typically AMP remote processors employ dedicated DSP codecs and multimedia +hardware accelerators, and therefore are often used to offload CPU-intensive +multimedia tasks from the main application processor. + +These remote processors could also be used to control latency-sensitive +sensors, drive random hardware blocks, or just perform background tasks +while the main CPU is idling. + +Users of those remote processors can either be userland apps (e.g. multimedia +frameworks talking with remote OMX components) or kernel drivers (controlling +hardware accessible only by the remote processor, reserving kernel-controlled +resources on behalf of the remote processor, etc..). + +Rpmsg is a virtio-based messaging bus that allows kernel drivers to communicate +with remote processors available on the system. In turn, drivers could then +expose appropriate user space interfaces, if needed. + +When writing a driver that exposes rpmsg communication to userland, please +keep in mind that remote processors might have direct access to the +system's physical memory and other sensitive hardware resources (e.g. on +OMAP4, remote cores and hardware accelerators may have direct access to the +physical memory, gpio banks, dma controllers, i2c bus, gptimers, mailbox +devices, hwspinlocks, etc..). Moreover, those remote processors might be +running RTOS where every task can access the entire memory/devices exposed +to the processor. To minimize the risks of rogue (or buggy) userland code +exploiting remote bugs, and by that taking over the system, it is often +desired to limit userland to specific rpmsg channels (see definition below) +it can send messages on, and if possible, minimize how much control +it has over the content of the messages. + +Every rpmsg device is a communication channel with a remote processor (thus +rpmsg devices are called channels). Channels are identified by a textual name +and have a local ("source") rpmsg address, and remote ("destination") rpmsg +address. + +When a driver starts listening on a channel, its rx callback is bound with +a unique rpmsg local address (a 32-bit integer). This way when inbound messages +arrive, the rpmsg core dispatches them to the appropriate driver according +to their destination address (this is done by invoking the driver's rx handler +with the payload of the inbound message). + + +2. User API + + int rpmsg_send(struct rpmsg_channel *rpdev, void *data, int len); + - sends a message across to the remote processor on a given channel. + The caller should specify the channel, the data it wants to send, + and its length (in bytes). The message will be sent on the specified + channel, i.e. its source and destination address fields will be + set to the channel's src and dst addresses. + + In case there are no TX buffers available, the function will block until + one becomes available (i.e. until the remote processor consumes + a tx buffer and puts it back on virtio's used descriptor ring), + or a timeout of 15 seconds elapses. When the latter happens, + -ERESTARTSYS is returned. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + int rpmsg_sendto(struct rpmsg_channel *rpdev, void *data, int len, u32 dst); + - sends a message across to the remote processor on a given channel, + to a destination address provided by the caller. + The caller should specify the channel, the data it wants to send, + its length (in bytes), and an explicit destination address. + The message will then be sent to the remote processor to which the + channel belongs, using the channel's src address, and the user-provided + dst address (thus the channel's dst address will be ignored). + + In case there are no TX buffers available, the function will block until + one becomes available (i.e. until the remote processor consumes + a tx buffer and puts it back on virtio's used descriptor ring), + or a timeout of 15 seconds elapses. When the latter happens, + -ERESTARTSYS is returned. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + int rpmsg_send_offchannel(struct rpmsg_channel *rpdev, u32 src, u32 dst, + void *data, int len); + - sends a message across to the remote processor, using the src and dst + addresses provided by the user. + The caller should specify the channel, the data it wants to send, + its length (in bytes), and explicit source and destination addresses. + The message will then be sent to the remote processor to which the + channel belongs, but the channel's src and dst addresses will be + ignored (and the user-provided addresses will be used instead). + + In case there are no TX buffers available, the function will block until + one becomes available (i.e. until the remote processor consumes + a tx buffer and puts it back on virtio's used descriptor ring), + or a timeout of 15 seconds elapses. When the latter happens, + -ERESTARTSYS is returned. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + int rpmsg_trysend(struct rpmsg_channel *rpdev, void *data, int len); + - sends a message across to the remote processor on a given channel. + The caller should specify the channel, the data it wants to send, + and its length (in bytes). The message will be sent on the specified + channel, i.e. its source and destination address fields will be + set to the channel's src and dst addresses. + + In case there are no TX buffers available, the function will immediately + return -ENOMEM without waiting until one becomes available. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + int rpmsg_trysendto(struct rpmsg_channel *rpdev, void *data, int len, u32 dst) + - sends a message across to the remote processor on a given channel, + to a destination address provided by the user. + The user should specify the channel, the data it wants to send, + its length (in bytes), and an explicit destination address. + The message will then be sent to the remote processor to which the + channel belongs, using the channel's src address, and the user-provided + dst address (thus the channel's dst address will be ignored). + + In case there are no TX buffers available, the function will immediately + return -ENOMEM without waiting until one becomes available. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + int rpmsg_trysend_offchannel(struct rpmsg_channel *rpdev, u32 src, u32 dst, + void *data, int len); + - sends a message across to the remote processor, using source and + destination addresses provided by the user. + The user should specify the channel, the data it wants to send, + its length (in bytes), and explicit source and destination addresses. + The message will then be sent to the remote processor to which the + channel belongs, but the channel's src and dst addresses will be + ignored (and the user-provided addresses will be used instead). + + In case there are no TX buffers available, the function will immediately + return -ENOMEM without waiting until one becomes available. + The function can only be called from a process context (for now). + Returns 0 on success and an appropriate error value on failure. + + struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_channel *rpdev, + void (*cb)(struct rpmsg_channel *, void *, int, void *, u32), + void *priv, u32 addr); + - every rpmsg address in the system is bound to an rx callback (so when + inbound messages arrive, they are dispatched by the rpmsg bus using the + appropriate callback handler) by means of an rpmsg_endpoint struct. + + This function allows drivers to create such an endpoint, and by that, + bind a callback, and possibly some private data too, to an rpmsg address + (either one that is known in advance, or one that will be dynamically + assigned for them). + + Simple rpmsg drivers need not call rpmsg_create_ept, because an endpoint + is already created for them when they are probed by the rpmsg bus + (using the rx callback they provide when they registered to the rpmsg bus). + + So things should just work for simple drivers: they already have an + endpoint, their rx callback is bound to their rpmsg address, and when + relevant inbound messages arrive (i.e. messages which their dst address + equals to the src address of their rpmsg channel), the driver's handler + is invoked to process it. + + That said, more complicated drivers might do need to allocate + additional rpmsg addresses, and bind them to different rx callbacks. + To accomplish that, those drivers need to call this function. + Drivers should provide their channel (so the new endpoint would bind + to the same remote processor their channel belongs to), an rx callback + function, an optional private data (which is provided back when the + rx callback is invoked), and an address they want to bind with the + callback. If addr is RPMSG_ADDR_ANY, then rpmsg_create_ept will + dynamically assign them an available rpmsg address (drivers should have + a very good reason why not to always use RPMSG_ADDR_ANY here). + + Returns a pointer to the endpoint on success, or NULL on error. + + void rpmsg_destroy_ept(struct rpmsg_endpoint *ept); + - destroys an existing rpmsg endpoint. user should provide a pointer + to an rpmsg endpoint that was previously created with rpmsg_create_ept(). + + int register_rpmsg_driver(struct rpmsg_driver *rpdrv); + - registers an rpmsg driver with the rpmsg bus. user should provide + a pointer to an rpmsg_driver struct, which contains the driver's + ->probe() and ->remove() functions, an rx callback, and an id_table + specifying the names of the channels this driver is interested to + be probed with. + + void unregister_rpmsg_driver(struct rpmsg_driver *rpdrv); + - unregisters an rpmsg driver from the rpmsg bus. user should provide + a pointer to a previously-registered rpmsg_driver struct. + Returns 0 on success, and an appropriate error value on failure. + + +3. Typical usage + +The following is a simple rpmsg driver, that sends an "hello!" message +on probe(), and whenever it receives an incoming message, it dumps its +content to the console. + +#include +#include +#include + +static void rpmsg_sample_cb(struct rpmsg_channel *rpdev, void *data, int len, + void *priv, u32 src) +{ + print_hex_dump(KERN_INFO, "incoming message:", DUMP_PREFIX_NONE, + 16, 1, data, len, true); +} + +static int rpmsg_sample_probe(struct rpmsg_channel *rpdev) +{ + int err; + + dev_info(&rpdev->dev, "chnl: 0x%x -> 0x%x\n", rpdev->src, rpdev->dst); + + /* send a message on our channel */ + err = rpmsg_send(rpdev, "hello!", 6); + if (err) { + pr_err("rpmsg_send failed: %d\n", err); + return err; + } + + return 0; +} + +static void __devexit rpmsg_sample_remove(struct rpmsg_channel *rpdev) +{ + dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n"); +} + +static struct rpmsg_device_id rpmsg_driver_sample_id_table[] = { + { .name = "rpmsg-client-sample" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sample_id_table); + +static struct rpmsg_driver rpmsg_sample_client = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sample_id_table, + .probe = rpmsg_sample_probe, + .callback = rpmsg_sample_cb, + .remove = __devexit_p(rpmsg_sample_remove), +}; + +static int __init init(void) +{ + return register_rpmsg_driver(&rpmsg_sample_client); +} +module_init(init); + +static void __exit fini(void) +{ + unregister_rpmsg_driver(&rpmsg_sample_client); +} +module_exit(fini); + +Note: a similar sample which can be built and loaded can be found +in samples/rpmsg/. + +4. Allocations of rpmsg channels: + +At this point we only support dynamic allocations of rpmsg channels. + +This is possible only with remote processors that have the VIRTIO_RPMSG_F_NS +virtio device feature set. This feature bit means that the remote +processor supports dynamic name service announcement messages. + +When this feature is enabled, creation of rpmsg devices (i.e. channels) +is completely dynamic: the remote processor announces the existence of a +remote rpmsg service by sending a name service message (which contains +the name and rpmsg addr of the remote service, see struct rpmsg_ns_msg). + +This message is then handled by the rpmsg bus, which in turn dynamically +creates and registers an rpmsg channel (which represents the remote service). +If/when a relevant rpmsg driver is registered, it will be immediately probed +by the bus, and can then start sending messages to the remote service. + +The plan is also to add static creation of rpmsg channels via the virtio +config space, but it's not implemented yet. diff --git a/trunk/Documentation/virtual/kvm/api.txt b/trunk/Documentation/virtual/kvm/api.txt index e1d94bf4056e..6386f8c0482e 100644 --- a/trunk/Documentation/virtual/kvm/api.txt +++ b/trunk/Documentation/virtual/kvm/api.txt @@ -95,7 +95,7 @@ described as 'basic' will be available. Capability: basic Architectures: all Type: system ioctl -Parameters: none +Parameters: machine type identifier (KVM_VM_*) Returns: a VM fd that can be used to control the new virtual machine. The new VM has no virtual cpus and no memory. An mmap() of a VM fd @@ -103,6 +103,11 @@ will access the virtual machine's physical address space; offset zero corresponds to guest physical address zero. Use of mmap() on a VM fd is discouraged if userspace memory allocation (KVM_CAP_USER_MEMORY) is available. +You most certainly want to use 0 as machine type. + +In order to create user controlled virtual machines on S390, check +KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as +privileged user (CAP_SYS_ADMIN). 4.3 KVM_GET_MSR_INDEX_LIST @@ -213,6 +218,11 @@ allocation of vcpu ids. For example, if userspace wants single-threaded guest vcpus, it should make all vcpu ids be a multiple of the number of vcpus per vcore. +For virtual cpus that have been created with S390 user controlled virtual +machines, the resulting vcpu fd can be memory mapped at page offset +KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual +cpu's hardware control block. + 4.8 KVM_GET_DIRTY_LOG (vm ioctl) Capability: basic @@ -1159,6 +1169,14 @@ following flags are specified: /* Depends on KVM_CAP_IOMMU */ #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) +/* The following two depend on KVM_CAP_PCI_2_3 */ +#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) +#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) + +If KVM_DEV_ASSIGN_PCI_2_3 is set, the kernel will manage legacy INTx interrupts +via the PCI-2.3-compliant device-level mask, thus enable IRQ sharing with other +assigned devices or host devices. KVM_DEV_ASSIGN_MASK_INTX specifies the +guest's view on the INTx mask, see KVM_ASSIGN_SET_INTX_MASK for details. The KVM_DEV_ASSIGN_ENABLE_IOMMU flag is a mandatory option to ensure isolation of the device. Usages not specifying this flag are deprecated. @@ -1399,6 +1417,71 @@ The following flags are defined: If datamatch flag is set, the event will be signaled only if the written value to the registered address is equal to datamatch in struct kvm_ioeventfd. +4.59 KVM_DIRTY_TLB + +Capability: KVM_CAP_SW_TLB +Architectures: ppc +Type: vcpu ioctl +Parameters: struct kvm_dirty_tlb (in) +Returns: 0 on success, -1 on error + +struct kvm_dirty_tlb { + __u64 bitmap; + __u32 num_dirty; +}; + +This must be called whenever userspace has changed an entry in the shared +TLB, prior to calling KVM_RUN on the associated vcpu. + +The "bitmap" field is the userspace address of an array. This array +consists of a number of bits, equal to the total number of TLB entries as +determined by the last successful call to KVM_CONFIG_TLB, rounded up to the +nearest multiple of 64. + +Each bit corresponds to one TLB entry, ordered the same as in the shared TLB +array. + +The array is little-endian: the bit 0 is the least significant bit of the +first byte, bit 8 is the least significant bit of the second byte, etc. +This avoids any complications with differing word sizes. + +The "num_dirty" field is a performance hint for KVM to determine whether it +should skip processing the bitmap and just invalidate everything. It must +be set to the number of set bits in the bitmap. + +4.60 KVM_ASSIGN_SET_INTX_MASK + +Capability: KVM_CAP_PCI_2_3 +Architectures: x86 +Type: vm ioctl +Parameters: struct kvm_assigned_pci_dev (in) +Returns: 0 on success, -1 on error + +Allows userspace to mask PCI INTx interrupts from the assigned device. The +kernel will not deliver INTx interrupts to the guest between setting and +clearing of KVM_ASSIGN_SET_INTX_MASK via this interface. This enables use of +and emulation of PCI 2.3 INTx disable command register behavior. + +This may be used for both PCI 2.3 devices supporting INTx disable natively and +older devices lacking this support. Userspace is responsible for emulating the +read value of the INTx disable bit in the guest visible PCI command register. +When modifying the INTx disable state, userspace should precede updating the +physical device command register by calling this ioctl to inform the kernel of +the new intended INTx mask state. + +Note that the kernel uses the device INTx disable bit to internally manage the +device interrupt state for PCI 2.3 devices. Reads of this register may +therefore not match the expected value. Writes should always use the guest +intended INTx disable value rather than attempting to read-copy-update the +current physical device state. Races between user and kernel updates to the +INTx disable bit are handled lazily in the kernel. It's possible the device +may generate unintended interrupts, but they will not be injected into the +guest. + +See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified +by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is +evaluated. + 4.62 KVM_CREATE_SPAPR_TCE Capability: KVM_CAP_SPAPR_TCE @@ -1491,6 +1574,101 @@ following algorithm: Some guests configure the LINT1 NMI input to cause a panic, aiding in debugging. +4.65 KVM_S390_UCAS_MAP + +Capability: KVM_CAP_S390_UCONTROL +Architectures: s390 +Type: vcpu ioctl +Parameters: struct kvm_s390_ucas_mapping (in) +Returns: 0 in case of success + +The parameter is defined like this: + struct kvm_s390_ucas_mapping { + __u64 user_addr; + __u64 vcpu_addr; + __u64 length; + }; + +This ioctl maps the memory at "user_addr" with the length "length" to +the vcpu's address space starting at "vcpu_addr". All parameters need to +be alligned by 1 megabyte. + +4.66 KVM_S390_UCAS_UNMAP + +Capability: KVM_CAP_S390_UCONTROL +Architectures: s390 +Type: vcpu ioctl +Parameters: struct kvm_s390_ucas_mapping (in) +Returns: 0 in case of success + +The parameter is defined like this: + struct kvm_s390_ucas_mapping { + __u64 user_addr; + __u64 vcpu_addr; + __u64 length; + }; + +This ioctl unmaps the memory in the vcpu's address space starting at +"vcpu_addr" with the length "length". The field "user_addr" is ignored. +All parameters need to be alligned by 1 megabyte. + +4.67 KVM_S390_VCPU_FAULT + +Capability: KVM_CAP_S390_UCONTROL +Architectures: s390 +Type: vcpu ioctl +Parameters: vcpu absolute address (in) +Returns: 0 in case of success + +This call creates a page table entry on the virtual cpu's address space +(for user controlled virtual machines) or the virtual machine's address +space (for regular virtual machines). This only works for minor faults, +thus it's recommended to access subject memory page via the user page +table upfront. This is useful to handle validity intercepts for user +controlled virtual machines to fault in the virtual cpu's lowcore pages +prior to calling the KVM_RUN ioctl. + +4.68 KVM_SET_ONE_REG + +Capability: KVM_CAP_ONE_REG +Architectures: all +Type: vcpu ioctl +Parameters: struct kvm_one_reg (in) +Returns: 0 on success, negative value on failure + +struct kvm_one_reg { + __u64 id; + __u64 addr; +}; + +Using this ioctl, a single vcpu register can be set to a specific value +defined by user space with the passed in struct kvm_one_reg, where id +refers to the register identifier as described below and addr is a pointer +to a variable with the respective size. There can be architecture agnostic +and architecture specific registers. Each have their own range of operation +and their own constants and width. To keep track of the implemented +registers, find a list below: + + Arch | Register | Width (bits) + | | + PPC | KVM_REG_PPC_HIOR | 64 + +4.69 KVM_GET_ONE_REG + +Capability: KVM_CAP_ONE_REG +Architectures: all +Type: vcpu ioctl +Parameters: struct kvm_one_reg (in and out) +Returns: 0 on success, negative value on failure + +This ioctl allows to receive the value of a single register implemented +in a vcpu. The register to read is indicated by the "id" field of the +kvm_one_reg struct passed in. On success, the register value can be found +at the memory location pointed to by "addr". + +The list of registers accessible using this interface is identical to the +list in 4.64. + 5. The kvm_run structure Application code obtains a pointer to the kvm_run structure by @@ -1651,6 +1829,20 @@ s390 specific. s390 specific. + /* KVM_EXIT_S390_UCONTROL */ + struct { + __u64 trans_exc_code; + __u32 pgm_code; + } s390_ucontrol; + +s390 specific. A page fault has occurred for a user controlled virtual +machine (KVM_VM_S390_UNCONTROL) on it's host page table that cannot be +resolved by the kernel. +The program code and the translation exception code that were placed +in the cpu's lowcore are presented here as defined by the z Architecture +Principles of Operation Book in the Chapter for Dynamic Address Translation +(DAT) + /* KVM_EXIT_DCR */ struct { __u32 dcrn; @@ -1693,6 +1885,29 @@ developer registration required to access it). /* Fix the size of the union. */ char padding[256]; }; + + /* + * shared registers between kvm and userspace. + * kvm_valid_regs specifies the register classes set by the host + * kvm_dirty_regs specified the register classes dirtied by userspace + * struct kvm_sync_regs is architecture specific, as well as the + * bits for kvm_valid_regs and kvm_dirty_regs + */ + __u64 kvm_valid_regs; + __u64 kvm_dirty_regs; + union { + struct kvm_sync_regs regs; + char padding[1024]; + } s; + +If KVM_CAP_SYNC_REGS is defined, these fields allow userspace to access +certain guest registers without having to call SET/GET_*REGS. Thus we can +avoid some system call overhead if userspace has to handle the exit. +Userspace can query the validity of the structure by checking +kvm_valid_regs for specific bits. These bits are architecture specific +and usually define the validity of a groups of registers. (e.g. one bit + for general purpose registers) + }; 6. Capabilities that can be enabled @@ -1741,3 +1956,45 @@ HTAB address part of SDR1 contains an HVA instead of a GPA, as PAPR keeps the HTAB invisible to the guest. When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. + +6.3 KVM_CAP_SW_TLB + +Architectures: ppc +Parameters: args[0] is the address of a struct kvm_config_tlb +Returns: 0 on success; -1 on error + +struct kvm_config_tlb { + __u64 params; + __u64 array; + __u32 mmu_type; + __u32 array_len; +}; + +Configures the virtual CPU's TLB array, establishing a shared memory area +between userspace and KVM. The "params" and "array" fields are userspace +addresses of mmu-type-specific data structures. The "array_len" field is an +safety mechanism, and should be set to the size in bytes of the memory that +userspace has reserved for the array. It must be at least the size dictated +by "mmu_type" and "params". + +While KVM_RUN is active, the shared region is under control of KVM. Its +contents are undefined, and any modification by userspace results in +boundedly undefined behavior. + +On return from KVM_RUN, the shared region will reflect the current state of +the guest's TLB. If userspace makes any changes, it must call KVM_DIRTY_TLB +to tell KVM which entries have been changed, prior to calling KVM_RUN again +on this vcpu. + +For mmu types KVM_MMU_FSL_BOOKE_NOHV and KVM_MMU_FSL_BOOKE_HV: + - The "params" field is of type "struct kvm_book3e_206_tlb_params". + - The "array" field points to an array of type "struct + kvm_book3e_206_tlb_entry". + - The array consists of all entries in the first TLB, followed by all + entries in the second TLB. + - Within a TLB, entries are ordered first by increasing set number. Within a + set, entries are ordered by way (increasing ESEL). + - The hash for determining set number in TLB0 is: (MAS2 >> 12) & (num_sets - 1) + where "num_sets" is the tlb_sizes[] value divided by the tlb_ways[] value. + - The tsize field of mas1 shall be set to 4K on TLB0, even though the + hardware ignores this value for TLB0. diff --git a/trunk/Documentation/virtual/kvm/ppc-pv.txt b/trunk/Documentation/virtual/kvm/ppc-pv.txt index 2b7ce190cde4..6e7c37050930 100644 --- a/trunk/Documentation/virtual/kvm/ppc-pv.txt +++ b/trunk/Documentation/virtual/kvm/ppc-pv.txt @@ -81,28 +81,8 @@ additional registers to the magic page. If you add fields to the magic page, also define a new hypercall feature to indicate that the host can give you more registers. Only if the host supports the additional features, make use of them. -The magic page has the following layout as described in -arch/powerpc/include/asm/kvm_para.h: - -struct kvm_vcpu_arch_shared { - __u64 scratch1; - __u64 scratch2; - __u64 scratch3; - __u64 critical; /* Guest may not get interrupts if == r1 */ - __u64 sprg0; - __u64 sprg1; - __u64 sprg2; - __u64 sprg3; - __u64 srr0; - __u64 srr1; - __u64 dar; - __u64 msr; - __u32 dsisr; - __u32 int_pending; /* Tells the guest if we have an interrupt */ -}; - -Additions to the page must only occur at the end. Struct fields are always 32 -or 64 bit aligned, depending on them being 32 or 64 bit wide respectively. +The magic page layout is described by struct kvm_vcpu_arch_shared +in arch/powerpc/include/asm/kvm_para.h. Magic page features =================== diff --git a/trunk/Documentation/vm/Makefile b/trunk/Documentation/vm/Makefile deleted file mode 100644 index 3fa4d0668864..000000000000 --- a/trunk/Documentation/vm/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# kbuild trick to avoid linker error. Can be omitted if a module is built. -obj- := dummy.o - -# List of programs to build -hostprogs-y := page-types hugepage-mmap hugepage-shm map_hugetlb - -# Tell kbuild to always build the programs -always := $(hostprogs-y) diff --git a/trunk/Documentation/watchdog/00-INDEX b/trunk/Documentation/watchdog/00-INDEX deleted file mode 100644 index fc9082a1477a..000000000000 --- a/trunk/Documentation/watchdog/00-INDEX +++ /dev/null @@ -1,19 +0,0 @@ -00-INDEX - - this file. -convert_drivers_to_kernel_api.txt - - how-to for converting old watchdog drivers to the new kernel API. -hpwdt.txt - - information on the HP iLO2 NMI watchdog -pcwd-watchdog.txt - - documentation for Berkshire Products PC Watchdog ISA cards. -src/ - - directory holding watchdog related example programs. -watchdog-api.txt - - description of the Linux Watchdog driver API. -watchdog-kernel-api.txt - - description of the Linux WatchDog Timer Driver Core kernel API. -watchdog-parameters.txt - - information on driver parameters (for drivers other than - the ones that have driver-specific files here) -wdt.txt - - description of the Watchdog Timer Interfaces for Linux. diff --git a/trunk/Documentation/watchdog/convert_drivers_to_kernel_api.txt b/trunk/Documentation/watchdog/convert_drivers_to_kernel_api.txt index be8119bb15d2..271b8850dde7 100644 --- a/trunk/Documentation/watchdog/convert_drivers_to_kernel_api.txt +++ b/trunk/Documentation/watchdog/convert_drivers_to_kernel_api.txt @@ -59,6 +59,10 @@ Here is a overview of the functions and probably needed actions: WDIOC_GETTIMEOUT: No preparations needed + WDIOC_GETTIMELEFT: + It needs get_timeleft() callback to be defined. Otherwise it + will return EOPNOTSUPP + Other IOCTLs can be served using the ioctl-callback. Note that this is mainly intended for porting old drivers; new drivers should not invent private IOCTLs. Private IOCTLs are processed first. When the callback returns with diff --git a/trunk/Documentation/watchdog/watchdog-kernel-api.txt b/trunk/Documentation/watchdog/watchdog-kernel-api.txt index 9e162465b0cf..227f6cd0e5fa 100644 --- a/trunk/Documentation/watchdog/watchdog-kernel-api.txt +++ b/trunk/Documentation/watchdog/watchdog-kernel-api.txt @@ -1,6 +1,6 @@ The Linux WatchDog Timer Driver Core kernel API. =============================================== -Last reviewed: 29-Nov-2011 +Last reviewed: 16-Mar-2012 Wim Van Sebroeck @@ -77,6 +77,7 @@ struct watchdog_ops { int (*ping)(struct watchdog_device *); unsigned int (*status)(struct watchdog_device *); int (*set_timeout)(struct watchdog_device *, unsigned int); + unsigned int (*get_timeleft)(struct watchdog_device *); long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long); }; @@ -117,11 +118,13 @@ they are supported. These optional routines/operations are: status of the device is reported with watchdog WDIOF_* status flags/bits. * set_timeout: this routine checks and changes the timeout of the watchdog timer device. It returns 0 on success, -EINVAL for "parameter out of range" - and -EIO for "could not write value to the watchdog". On success the timeout - value of the watchdog_device will be changed to the value that was just used - to re-program the watchdog timer device. + and -EIO for "could not write value to the watchdog". On success this + routine should set the timeout value of the watchdog_device to the + achieved timeout value (which may be different from the requested one + because the watchdog does not necessarily has a 1 second resolution). (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the watchdog's info structure). +* get_timeleft: this routines returns the time that's left before a reset. * ioctl: if this routine is present then it will be called first before we do our own internal ioctl call handling. This routine should return -ENOIOCTLCMD if a command is not supported. The parameters that are passed to the ioctl diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index f47091abb8f7..f9faadef7ab7 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -786,7 +786,6 @@ M: Sascha Hauer L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained T: git git://git.pengutronix.de/git/imx/linux-2.6.git -F: arch/arm/mach-mx*/ F: arch/arm/mach-imx/ F: arch/arm/plat-mxc/ @@ -816,9 +815,12 @@ S: Maintained ARM/H4700 (HP IPAQ HX4700) MACHINE SUPPORT M: Philipp Zabel +M: Paul Parsons +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: arch/arm/mach-pxa/hx4700.c F: arch/arm/mach-pxa/include/mach/hx4700.h +F: sound/soc/pxa/hx4700.c ARM/HP JORNADA 7XX MACHINE SUPPORT M: Kristoffer Ericson @@ -2223,13 +2225,16 @@ W: http://lanana.org/docs/device-list/index.html S: Maintained DEVICE-MAPPER (LVM) -P: Alasdair Kergon +M: Alasdair Kergon +M: dm-devel@redhat.com L: dm-devel@redhat.com W: http://sources.redhat.com/dm Q: http://patchwork.kernel.org/project/dm-devel/list/ +T: quilt http://people.redhat.com/agk/patches/linux/editing/ S: Maintained F: Documentation/device-mapper/ F: drivers/md/dm* +F: drivers/md/persistent-data/ F: include/linux/device-mapper.h F: include/linux/dm-*.h @@ -5420,7 +5425,7 @@ F: drivers/media/video/pvrusb2/ PXA2xx/PXA3xx SUPPORT M: Eric Miao M: Russell King -M: Haojian Zhuang +M: Haojian Zhuang L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) T: git git://github.com/hzhuang1/linux.git T: git git://git.linaro.org/people/ycmiao/pxa-linux.git @@ -5435,7 +5440,7 @@ F: sound/soc/pxa MMP SUPPORT M: Eric Miao -M: Haojian Zhuang +M: Haojian Zhuang L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) T: git git://github.com/hzhuang1/linux.git T: git git://git.linaro.org/people/ycmiao/pxa-linux.git @@ -5632,6 +5637,13 @@ S: Supported F: drivers/base/regmap/ F: include/linux/regmap.h +REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM +M: Ohad Ben-Cohen +S: Maintained +F: drivers/remoteproc/ +F: Documentation/remoteproc.txt +F: include/linux/remoteproc.txt + RFKILL M: Johannes Berg L: linux-wireless@vger.kernel.org @@ -5764,6 +5776,12 @@ F: drivers/media/common/saa7146* F: drivers/media/video/*7146* F: include/media/*7146* +SAMSUNG LAPTOP DRIVER +M: Corentin Chary +L: platform-driver-x86@vger.kernel.org +S: Maintained +F: drivers/platform/x86/samsung-laptop.c + SAMSUNG AUDIO (ASoC) DRIVERS M: Sangbeom Kim L: alsa-devel@alsa-project.org (moderated for non-subscribers) @@ -6062,7 +6080,8 @@ F: arch/arm/mach-s3c2410/bast-irq.c TI DAVINCI MACHINE SUPPORT M: Sekhar Nori M: Kevin Hilman -L: davinci-linux-open-source@linux.davincidsp.com (subscribers-only) +L: davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers) +T: git git://gitorious.org/linux-davinci/linux-davinci.git Q: http://patchwork.kernel.org/project/linux-davinci/list/ S: Supported F: arch/arm/mach-davinci @@ -6605,9 +6624,10 @@ F: include/linux/if_team.h TEGRA SUPPORT M: Colin Cross M: Olof Johansson -M: Stephen Warren +M: Stephen Warren L: linux-tegra@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/olof/tegra.git +Q: http://patchwork.ozlabs.org/project/linux-tegra/list/ +T: git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git S: Supported F: arch/arm/mach-tegra diff --git a/trunk/arch/alpha/boot/bootp.c b/trunk/arch/alpha/boot/bootp.c index be61670d4096..2a542a506557 100644 --- a/trunk/arch/alpha/boot/bootp.c +++ b/trunk/arch/alpha/boot/bootp.c @@ -13,7 +13,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/boot/bootpz.c b/trunk/arch/alpha/boot/bootpz.c index c98865f21423..d6ad191698da 100644 --- a/trunk/arch/alpha/boot/bootpz.c +++ b/trunk/arch/alpha/boot/bootpz.c @@ -15,7 +15,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/boot/head.S b/trunk/arch/alpha/boot/head.S index f3d98089b3dc..b06812bcac83 100644 --- a/trunk/arch/alpha/boot/head.S +++ b/trunk/arch/alpha/boot/head.S @@ -4,7 +4,6 @@ * initial bootloader stuff.. */ -#include .set noreorder .globl __start diff --git a/trunk/arch/alpha/boot/main.c b/trunk/arch/alpha/boot/main.c index ded57d9a80e1..3baf2d1e908d 100644 --- a/trunk/arch/alpha/boot/main.c +++ b/trunk/arch/alpha/boot/main.c @@ -11,7 +11,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/include/asm/atomic.h b/trunk/arch/alpha/include/asm/atomic.h index 640f909ddd41..f62251e82ffa 100644 --- a/trunk/arch/alpha/include/asm/atomic.h +++ b/trunk/arch/alpha/include/asm/atomic.h @@ -3,7 +3,6 @@ #include #include -#include /* * Atomic operations that C can't guarantee us. Useful for @@ -169,6 +168,73 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v) return result; } +/* + * Atomic exchange routines. + */ + +#define __ASM__MB +#define ____xchg(type, args...) __xchg ## type ## _local(args) +#define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) +#include + +#define xchg_local(ptr,x) \ + ({ \ + __typeof__(*(ptr)) _x_ = (x); \ + (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ + sizeof(*(ptr))); \ + }) + +#define cmpxchg_local(ptr, o, n) \ + ({ \ + __typeof__(*(ptr)) _o_ = (o); \ + __typeof__(*(ptr)) _n_ = (n); \ + (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ + (unsigned long)_n_, \ + sizeof(*(ptr))); \ + }) + +#define cmpxchg64_local(ptr, o, n) \ + ({ \ + BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ + cmpxchg_local((ptr), (o), (n)); \ + }) + +#ifdef CONFIG_SMP +#undef __ASM__MB +#define __ASM__MB "\tmb\n" +#endif +#undef ____xchg +#undef ____cmpxchg +#define ____xchg(type, args...) __xchg ##type(args) +#define ____cmpxchg(type, args...) __cmpxchg ##type(args) +#include + +#define xchg(ptr,x) \ + ({ \ + __typeof__(*(ptr)) _x_ = (x); \ + (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, \ + sizeof(*(ptr))); \ + }) + +#define cmpxchg(ptr, o, n) \ + ({ \ + __typeof__(*(ptr)) _o_ = (o); \ + __typeof__(*(ptr)) _n_ = (n); \ + (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ + (unsigned long)_n_, sizeof(*(ptr)));\ + }) + +#define cmpxchg64(ptr, o, n) \ + ({ \ + BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ + cmpxchg((ptr), (o), (n)); \ + }) + +#undef __ASM__MB +#undef ____cmpxchg + +#define __HAVE_ARCH_CMPXCHG 1 + #define atomic64_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new)) #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) diff --git a/trunk/arch/alpha/include/asm/auxvec.h b/trunk/arch/alpha/include/asm/auxvec.h index e96fe880e310..a3a579dfdb4d 100644 --- a/trunk/arch/alpha/include/asm/auxvec.h +++ b/trunk/arch/alpha/include/asm/auxvec.h @@ -21,4 +21,6 @@ #define AT_L2_CACHESHAPE 36 #define AT_L3_CACHESHAPE 37 +#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ + #endif /* __ASM_ALPHA_AUXVEC_H */ diff --git a/trunk/arch/alpha/include/asm/core_lca.h b/trunk/arch/alpha/include/asm/core_lca.h index f7cb4b460954..8ee6c516279c 100644 --- a/trunk/arch/alpha/include/asm/core_lca.h +++ b/trunk/arch/alpha/include/asm/core_lca.h @@ -1,8 +1,8 @@ #ifndef __ALPHA_LCA__H__ #define __ALPHA_LCA__H__ -#include #include +#include /* * Low Cost Alpha (LCA) definitions (these apply to 21066 and 21068, diff --git a/trunk/arch/alpha/include/asm/core_mcpcia.h b/trunk/arch/alpha/include/asm/core_mcpcia.h index 9f67a056b461..ad44bef29fba 100644 --- a/trunk/arch/alpha/include/asm/core_mcpcia.h +++ b/trunk/arch/alpha/include/asm/core_mcpcia.h @@ -7,6 +7,7 @@ #include #include +#include /* * MCPCIA is the internal name for a core logic chipset which provides diff --git a/trunk/arch/alpha/include/asm/core_t2.h b/trunk/arch/alpha/include/asm/core_t2.h index 91b46801b290..ade9d92e68b4 100644 --- a/trunk/arch/alpha/include/asm/core_t2.h +++ b/trunk/arch/alpha/include/asm/core_t2.h @@ -7,7 +7,6 @@ #include #include #include -#include /* * T2 is the internal name for the core logic chipset which provides diff --git a/trunk/arch/alpha/include/asm/elf.h b/trunk/arch/alpha/include/asm/elf.h index da5449e22175..968d9991f5ee 100644 --- a/trunk/arch/alpha/include/asm/elf.h +++ b/trunk/arch/alpha/include/asm/elf.h @@ -2,6 +2,7 @@ #define __ASM_ALPHA_ELF_H #include +#include /* Special values for the st_other field in the symbol table. */ diff --git a/trunk/arch/alpha/include/asm/exec.h b/trunk/arch/alpha/include/asm/exec.h new file mode 100644 index 000000000000..4a5a41f30779 --- /dev/null +++ b/trunk/arch/alpha/include/asm/exec.h @@ -0,0 +1,6 @@ +#ifndef __ALPHA_EXEC_H +#define __ALPHA_EXEC_H + +#define arch_align_stack(x) (x) + +#endif /* __ALPHA_EXEC_H */ diff --git a/trunk/arch/alpha/include/asm/fpu.h b/trunk/arch/alpha/include/asm/fpu.h index ecb17a72acc3..db00f7885faa 100644 --- a/trunk/arch/alpha/include/asm/fpu.h +++ b/trunk/arch/alpha/include/asm/fpu.h @@ -1,6 +1,8 @@ #ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H +#include + /* * Alpha floating-point control register defines: */ diff --git a/trunk/arch/alpha/include/asm/io.h b/trunk/arch/alpha/include/asm/io.h index 56ff96501350..7a3d38d5ed6b 100644 --- a/trunk/arch/alpha/include/asm/io.h +++ b/trunk/arch/alpha/include/asm/io.h @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/include/asm/irqflags.h b/trunk/arch/alpha/include/asm/irqflags.h index 299bbc7e9d71..ffb1726484af 100644 --- a/trunk/arch/alpha/include/asm/irqflags.h +++ b/trunk/arch/alpha/include/asm/irqflags.h @@ -1,7 +1,7 @@ #ifndef __ALPHA_IRQFLAGS_H #define __ALPHA_IRQFLAGS_H -#include +#include #define IPL_MIN 0 #define IPL_SW0 1 diff --git a/trunk/arch/alpha/include/asm/mce.h b/trunk/arch/alpha/include/asm/mce.h new file mode 100644 index 000000000000..660285b9aca8 --- /dev/null +++ b/trunk/arch/alpha/include/asm/mce.h @@ -0,0 +1,83 @@ +#ifndef __ALPHA_MCE_H +#define __ALPHA_MCE_H + +/* + * This is the logout header that should be common to all platforms + * (assuming they are running OSF/1 PALcode, I guess). + */ +struct el_common { + unsigned int size; /* size in bytes of logout area */ + unsigned int sbz1 : 30; /* should be zero */ + unsigned int err2 : 1; /* second error */ + unsigned int retry : 1; /* retry flag */ + unsigned int proc_offset; /* processor-specific offset */ + unsigned int sys_offset; /* system-specific offset */ + unsigned int code; /* machine check code */ + unsigned int frame_rev; /* frame revision */ +}; + +/* Machine Check Frame for uncorrectable errors (Large format) + * --- This is used to log uncorrectable errors such as + * double bit ECC errors. + * --- These errors are detected by both processor and systems. + */ +struct el_common_EV5_uncorrectable_mcheck { + unsigned long shadow[8]; /* Shadow reg. 8-14, 25 */ + unsigned long paltemp[24]; /* PAL TEMP REGS. */ + unsigned long exc_addr; /* Address of excepting instruction*/ + unsigned long exc_sum; /* Summary of arithmetic traps. */ + unsigned long exc_mask; /* Exception mask (from exc_sum). */ + unsigned long pal_base; /* Base address for PALcode. */ + unsigned long isr; /* Interrupt Status Reg. */ + unsigned long icsr; /* CURRENT SETUP OF EV5 IBOX */ + unsigned long ic_perr_stat; /* I-CACHE Reg. <11> set Data parity + <12> set TAG parity*/ + unsigned long dc_perr_stat; /* D-CACHE error Reg. Bits set to 1: + <2> Data error in bank 0 + <3> Data error in bank 1 + <4> Tag error in bank 0 + <5> Tag error in bank 1 */ + unsigned long va; /* Effective VA of fault or miss. */ + unsigned long mm_stat; /* Holds the reason for D-stream + fault or D-cache parity errors */ + unsigned long sc_addr; /* Address that was being accessed + when EV5 detected Secondary cache + failure. */ + unsigned long sc_stat; /* Helps determine if the error was + TAG/Data parity(Secondary Cache)*/ + unsigned long bc_tag_addr; /* Contents of EV5 BC_TAG_ADDR */ + unsigned long ei_addr; /* Physical address of any transfer + that is logged in EV5 EI_STAT */ + unsigned long fill_syndrome; /* For correcting ECC errors. */ + unsigned long ei_stat; /* Helps identify reason of any + processor uncorrectable error + at its external interface. */ + unsigned long ld_lock; /* Contents of EV5 LD_LOCK register*/ +}; + +struct el_common_EV6_mcheck { + unsigned int FrameSize; /* Bytes, including this field */ + unsigned int FrameFlags; /* <31> = Retry, <30> = Second Error */ + unsigned int CpuOffset; /* Offset to CPU-specific info */ + unsigned int SystemOffset; /* Offset to system-specific info */ + unsigned int MCHK_Code; + unsigned int MCHK_Frame_Rev; + unsigned long I_STAT; /* EV6 Internal Processor Registers */ + unsigned long DC_STAT; /* (See the 21264 Spec) */ + unsigned long C_ADDR; + unsigned long DC1_SYNDROME; + unsigned long DC0_SYNDROME; + unsigned long C_STAT; + unsigned long C_STS; + unsigned long MM_STAT; + unsigned long EXC_ADDR; + unsigned long IER_CM; + unsigned long ISUM; + unsigned long RESERVED0; + unsigned long PAL_BASE; + unsigned long I_CTL; + unsigned long PCTX; +}; + + +#endif /* __ALPHA_MCE_H */ diff --git a/trunk/arch/alpha/include/asm/mmu_context.h b/trunk/arch/alpha/include/asm/mmu_context.h index 86c08a02d239..4c51c05333c6 100644 --- a/trunk/arch/alpha/include/asm/mmu_context.h +++ b/trunk/arch/alpha/include/asm/mmu_context.h @@ -7,7 +7,6 @@ * Copyright (C) 1996, Linus Torvalds */ -#include #include #include #include diff --git a/trunk/arch/alpha/include/asm/pal.h b/trunk/arch/alpha/include/asm/pal.h index 9b4ba0d6f00b..6699ee583429 100644 --- a/trunk/arch/alpha/include/asm/pal.h +++ b/trunk/arch/alpha/include/asm/pal.h @@ -48,4 +48,116 @@ #define PAL_retsys 61 #define PAL_rti 63 +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ + +extern void halt(void) __attribute__((noreturn)); +#define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) + +#define imb() \ +__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") + +#define draina() \ +__asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") + +#define __CALL_PAL_R0(NAME, TYPE) \ +extern inline TYPE NAME(void) \ +{ \ + register TYPE __r0 __asm__("$0"); \ + __asm__ __volatile__( \ + "call_pal %1 # " #NAME \ + :"=r" (__r0) \ + :"i" (PAL_ ## NAME) \ + :"$1", "$16", "$22", "$23", "$24", "$25"); \ + return __r0; \ +} + +#define __CALL_PAL_W1(NAME, TYPE0) \ +extern inline void NAME(TYPE0 arg0) \ +{ \ + register TYPE0 __r16 __asm__("$16") = arg0; \ + __asm__ __volatile__( \ + "call_pal %1 # "#NAME \ + : "=r"(__r16) \ + : "i"(PAL_ ## NAME), "0"(__r16) \ + : "$1", "$22", "$23", "$24", "$25"); \ +} + +#define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \ +extern inline void NAME(TYPE0 arg0, TYPE1 arg1) \ +{ \ + register TYPE0 __r16 __asm__("$16") = arg0; \ + register TYPE1 __r17 __asm__("$17") = arg1; \ + __asm__ __volatile__( \ + "call_pal %2 # "#NAME \ + : "=r"(__r16), "=r"(__r17) \ + : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ + : "$1", "$22", "$23", "$24", "$25"); \ +} + +#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \ +extern inline RTYPE NAME(TYPE0 arg0) \ +{ \ + register RTYPE __r0 __asm__("$0"); \ + register TYPE0 __r16 __asm__("$16") = arg0; \ + __asm__ __volatile__( \ + "call_pal %2 # "#NAME \ + : "=r"(__r16), "=r"(__r0) \ + : "i"(PAL_ ## NAME), "0"(__r16) \ + : "$1", "$22", "$23", "$24", "$25"); \ + return __r0; \ +} + +#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \ +extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \ +{ \ + register RTYPE __r0 __asm__("$0"); \ + register TYPE0 __r16 __asm__("$16") = arg0; \ + register TYPE1 __r17 __asm__("$17") = arg1; \ + __asm__ __volatile__( \ + "call_pal %3 # "#NAME \ + : "=r"(__r16), "=r"(__r17), "=r"(__r0) \ + : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ + : "$1", "$22", "$23", "$24", "$25"); \ + return __r0; \ +} + +__CALL_PAL_W1(cflush, unsigned long); +__CALL_PAL_R0(rdmces, unsigned long); +__CALL_PAL_R0(rdps, unsigned long); +__CALL_PAL_R0(rdusp, unsigned long); +__CALL_PAL_RW1(swpipl, unsigned long, unsigned long); +__CALL_PAL_R0(whami, unsigned long); +__CALL_PAL_W2(wrent, void*, unsigned long); +__CALL_PAL_W1(wripir, unsigned long); +__CALL_PAL_W1(wrkgp, unsigned long); +__CALL_PAL_W1(wrmces, unsigned long); +__CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); +__CALL_PAL_W1(wrusp, unsigned long); +__CALL_PAL_W1(wrvptptr, unsigned long); + +/* + * TB routines.. + */ +#define __tbi(nr,arg,arg1...) \ +({ \ + register unsigned long __r16 __asm__("$16") = (nr); \ + register unsigned long __r17 __asm__("$17"); arg; \ + __asm__ __volatile__( \ + "call_pal %3 #__tbi" \ + :"=r" (__r16),"=r" (__r17) \ + :"0" (__r16),"i" (PAL_tbi) ,##arg1 \ + :"$0", "$1", "$22", "$23", "$24", "$25"); \ +}) + +#define tbi(x,y) __tbi(x,__r17=(y),"1" (__r17)) +#define tbisi(x) __tbi(1,__r17=(x),"1" (__r17)) +#define tbisd(x) __tbi(2,__r17=(x),"1" (__r17)) +#define tbis(x) __tbi(3,__r17=(x),"1" (__r17)) +#define tbiap() __tbi(-1, /* no second argument */) +#define tbia() __tbi(-2, /* no second argument */) + +#endif /* !__ASSEMBLY__ */ +#endif /* __KERNEL__ */ + #endif /* __ALPHA_PAL_H */ diff --git a/trunk/arch/alpha/include/asm/pgtable.h b/trunk/arch/alpha/include/asm/pgtable.h index de98a732683d..81a4342d5a3f 100644 --- a/trunk/arch/alpha/include/asm/pgtable.h +++ b/trunk/arch/alpha/include/asm/pgtable.h @@ -15,6 +15,7 @@ #include #include /* For TASK_SIZE */ #include +#include struct mm_struct; struct vm_area_struct; diff --git a/trunk/arch/alpha/include/asm/setup.h b/trunk/arch/alpha/include/asm/setup.h index 2e023a4aa317..b50014b30909 100644 --- a/trunk/arch/alpha/include/asm/setup.h +++ b/trunk/arch/alpha/include/asm/setup.h @@ -3,4 +3,40 @@ #define COMMAND_LINE_SIZE 256 +/* + * We leave one page for the initial stack page, and one page for + * the initial process structure. Also, the console eats 3 MB for + * the initial bootloader (one of which we can reclaim later). + */ +#define BOOT_PCB 0x20000000 +#define BOOT_ADDR 0x20000000 +/* Remove when official MILO sources have ELF support: */ +#define BOOT_SIZE (16*1024) + +#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS +#define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ +#else +#define KERNEL_START_PHYS 0x1000000 /* required: Wildfire/Titan/Marvel */ +#endif + +#define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) +#define SWAPPER_PGD KERNEL_START +#define INIT_STACK (PAGE_OFFSET+KERNEL_START_PHYS+0x02000) +#define EMPTY_PGT (PAGE_OFFSET+KERNEL_START_PHYS+0x04000) +#define EMPTY_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x08000) +#define ZERO_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) + +#define START_ADDR (PAGE_OFFSET+KERNEL_START_PHYS+0x10000) + +/* + * This is setup by the secondary bootstrap loader. Because + * the zero page is zeroed out as soon as the vm system is + * initialized, we need to copy things out into a more permanent + * place. + */ +#define PARAM ZERO_PGE +#define COMMAND_LINE ((char*)(PARAM + 0x0000)) +#define INITRD_START (*(unsigned long *) (PARAM+0x100)) +#define INITRD_SIZE (*(unsigned long *) (PARAM+0x108)) + #endif diff --git a/trunk/arch/alpha/include/asm/special_insns.h b/trunk/arch/alpha/include/asm/special_insns.h new file mode 100644 index 000000000000..88d3452b21f0 --- /dev/null +++ b/trunk/arch/alpha/include/asm/special_insns.h @@ -0,0 +1,41 @@ +#ifndef __ALPHA_SPECIAL_INSNS_H +#define __ALPHA_SPECIAL_INSNS_H + +enum implver_enum { + IMPLVER_EV4, + IMPLVER_EV5, + IMPLVER_EV6 +}; + +#ifdef CONFIG_ALPHA_GENERIC +#define implver() \ +({ unsigned long __implver; \ + __asm__ ("implver %0" : "=r"(__implver)); \ + (enum implver_enum) __implver; }) +#else +/* Try to eliminate some dead code. */ +#ifdef CONFIG_ALPHA_EV4 +#define implver() IMPLVER_EV4 +#endif +#ifdef CONFIG_ALPHA_EV5 +#define implver() IMPLVER_EV5 +#endif +#if defined(CONFIG_ALPHA_EV6) +#define implver() IMPLVER_EV6 +#endif +#endif + +enum amask_enum { + AMASK_BWX = (1UL << 0), + AMASK_FIX = (1UL << 1), + AMASK_CIX = (1UL << 2), + AMASK_MAX = (1UL << 8), + AMASK_PRECISE_TRAP = (1UL << 9), +}; + +#define amask(mask) \ +({ unsigned long __amask, __input = (mask); \ + __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \ + __amask; }) + +#endif /* __ALPHA_SPECIAL_INSNS_H */ diff --git a/trunk/arch/alpha/include/asm/spinlock.h b/trunk/arch/alpha/include/asm/spinlock.h index d0faca1e992d..3bba21e41b81 100644 --- a/trunk/arch/alpha/include/asm/spinlock.h +++ b/trunk/arch/alpha/include/asm/spinlock.h @@ -1,7 +1,6 @@ #ifndef _ALPHA_SPINLOCK_H #define _ALPHA_SPINLOCK_H -#include #include #include diff --git a/trunk/arch/alpha/include/asm/switch_to.h b/trunk/arch/alpha/include/asm/switch_to.h new file mode 100644 index 000000000000..44c0d4f2c0b2 --- /dev/null +++ b/trunk/arch/alpha/include/asm/switch_to.h @@ -0,0 +1,14 @@ +#ifndef __ALPHA_SWITCH_TO_H +#define __ALPHA_SWITCH_TO_H + + +struct task_struct; +extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct *); + +#define switch_to(P,N,L) \ + do { \ + (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ + check_mmu_context(); \ + } while (0) + +#endif /* __ALPHA_SWITCH_TO_H */ diff --git a/trunk/arch/alpha/include/asm/system.h b/trunk/arch/alpha/include/asm/system.h deleted file mode 100644 index 9f78e6934637..000000000000 --- a/trunk/arch/alpha/include/asm/system.h +++ /dev/null @@ -1,354 +0,0 @@ -#ifndef __ALPHA_SYSTEM_H -#define __ALPHA_SYSTEM_H - -#include -#include -#include - -/* - * System defines.. Note that this is included both from .c and .S - * files, so it does only defines, not any C code. - */ - -/* - * We leave one page for the initial stack page, and one page for - * the initial process structure. Also, the console eats 3 MB for - * the initial bootloader (one of which we can reclaim later). - */ -#define BOOT_PCB 0x20000000 -#define BOOT_ADDR 0x20000000 -/* Remove when official MILO sources have ELF support: */ -#define BOOT_SIZE (16*1024) - -#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS -#define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ -#else -#define KERNEL_START_PHYS 0x1000000 /* required: Wildfire/Titan/Marvel */ -#endif - -#define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) -#define SWAPPER_PGD KERNEL_START -#define INIT_STACK (PAGE_OFFSET+KERNEL_START_PHYS+0x02000) -#define EMPTY_PGT (PAGE_OFFSET+KERNEL_START_PHYS+0x04000) -#define EMPTY_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x08000) -#define ZERO_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) - -#define START_ADDR (PAGE_OFFSET+KERNEL_START_PHYS+0x10000) - -/* - * This is setup by the secondary bootstrap loader. Because - * the zero page is zeroed out as soon as the vm system is - * initialized, we need to copy things out into a more permanent - * place. - */ -#define PARAM ZERO_PGE -#define COMMAND_LINE ((char*)(PARAM + 0x0000)) -#define INITRD_START (*(unsigned long *) (PARAM+0x100)) -#define INITRD_SIZE (*(unsigned long *) (PARAM+0x108)) - -#ifndef __ASSEMBLY__ -#include -#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ - -/* - * This is the logout header that should be common to all platforms - * (assuming they are running OSF/1 PALcode, I guess). - */ -struct el_common { - unsigned int size; /* size in bytes of logout area */ - unsigned int sbz1 : 30; /* should be zero */ - unsigned int err2 : 1; /* second error */ - unsigned int retry : 1; /* retry flag */ - unsigned int proc_offset; /* processor-specific offset */ - unsigned int sys_offset; /* system-specific offset */ - unsigned int code; /* machine check code */ - unsigned int frame_rev; /* frame revision */ -}; - -/* Machine Check Frame for uncorrectable errors (Large format) - * --- This is used to log uncorrectable errors such as - * double bit ECC errors. - * --- These errors are detected by both processor and systems. - */ -struct el_common_EV5_uncorrectable_mcheck { - unsigned long shadow[8]; /* Shadow reg. 8-14, 25 */ - unsigned long paltemp[24]; /* PAL TEMP REGS. */ - unsigned long exc_addr; /* Address of excepting instruction*/ - unsigned long exc_sum; /* Summary of arithmetic traps. */ - unsigned long exc_mask; /* Exception mask (from exc_sum). */ - unsigned long pal_base; /* Base address for PALcode. */ - unsigned long isr; /* Interrupt Status Reg. */ - unsigned long icsr; /* CURRENT SETUP OF EV5 IBOX */ - unsigned long ic_perr_stat; /* I-CACHE Reg. <11> set Data parity - <12> set TAG parity*/ - unsigned long dc_perr_stat; /* D-CACHE error Reg. Bits set to 1: - <2> Data error in bank 0 - <3> Data error in bank 1 - <4> Tag error in bank 0 - <5> Tag error in bank 1 */ - unsigned long va; /* Effective VA of fault or miss. */ - unsigned long mm_stat; /* Holds the reason for D-stream - fault or D-cache parity errors */ - unsigned long sc_addr; /* Address that was being accessed - when EV5 detected Secondary cache - failure. */ - unsigned long sc_stat; /* Helps determine if the error was - TAG/Data parity(Secondary Cache)*/ - unsigned long bc_tag_addr; /* Contents of EV5 BC_TAG_ADDR */ - unsigned long ei_addr; /* Physical address of any transfer - that is logged in EV5 EI_STAT */ - unsigned long fill_syndrome; /* For correcting ECC errors. */ - unsigned long ei_stat; /* Helps identify reason of any - processor uncorrectable error - at its external interface. */ - unsigned long ld_lock; /* Contents of EV5 LD_LOCK register*/ -}; - -struct el_common_EV6_mcheck { - unsigned int FrameSize; /* Bytes, including this field */ - unsigned int FrameFlags; /* <31> = Retry, <30> = Second Error */ - unsigned int CpuOffset; /* Offset to CPU-specific info */ - unsigned int SystemOffset; /* Offset to system-specific info */ - unsigned int MCHK_Code; - unsigned int MCHK_Frame_Rev; - unsigned long I_STAT; /* EV6 Internal Processor Registers */ - unsigned long DC_STAT; /* (See the 21264 Spec) */ - unsigned long C_ADDR; - unsigned long DC1_SYNDROME; - unsigned long DC0_SYNDROME; - unsigned long C_STAT; - unsigned long C_STS; - unsigned long MM_STAT; - unsigned long EXC_ADDR; - unsigned long IER_CM; - unsigned long ISUM; - unsigned long RESERVED0; - unsigned long PAL_BASE; - unsigned long I_CTL; - unsigned long PCTX; -}; - -extern void halt(void) __attribute__((noreturn)); -#define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) - -#define switch_to(P,N,L) \ - do { \ - (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ - check_mmu_context(); \ - } while (0) - -struct task_struct; -extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); - -#define imb() \ -__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") - -#define draina() \ -__asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") - -enum implver_enum { - IMPLVER_EV4, - IMPLVER_EV5, - IMPLVER_EV6 -}; - -#ifdef CONFIG_ALPHA_GENERIC -#define implver() \ -({ unsigned long __implver; \ - __asm__ ("implver %0" : "=r"(__implver)); \ - (enum implver_enum) __implver; }) -#else -/* Try to eliminate some dead code. */ -#ifdef CONFIG_ALPHA_EV4 -#define implver() IMPLVER_EV4 -#endif -#ifdef CONFIG_ALPHA_EV5 -#define implver() IMPLVER_EV5 -#endif -#if defined(CONFIG_ALPHA_EV6) -#define implver() IMPLVER_EV6 -#endif -#endif - -enum amask_enum { - AMASK_BWX = (1UL << 0), - AMASK_FIX = (1UL << 1), - AMASK_CIX = (1UL << 2), - AMASK_MAX = (1UL << 8), - AMASK_PRECISE_TRAP = (1UL << 9), -}; - -#define amask(mask) \ -({ unsigned long __amask, __input = (mask); \ - __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \ - __amask; }) - -#define __CALL_PAL_R0(NAME, TYPE) \ -extern inline TYPE NAME(void) \ -{ \ - register TYPE __r0 __asm__("$0"); \ - __asm__ __volatile__( \ - "call_pal %1 # " #NAME \ - :"=r" (__r0) \ - :"i" (PAL_ ## NAME) \ - :"$1", "$16", "$22", "$23", "$24", "$25"); \ - return __r0; \ -} - -#define __CALL_PAL_W1(NAME, TYPE0) \ -extern inline void NAME(TYPE0 arg0) \ -{ \ - register TYPE0 __r16 __asm__("$16") = arg0; \ - __asm__ __volatile__( \ - "call_pal %1 # "#NAME \ - : "=r"(__r16) \ - : "i"(PAL_ ## NAME), "0"(__r16) \ - : "$1", "$22", "$23", "$24", "$25"); \ -} - -#define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \ -extern inline void NAME(TYPE0 arg0, TYPE1 arg1) \ -{ \ - register TYPE0 __r16 __asm__("$16") = arg0; \ - register TYPE1 __r17 __asm__("$17") = arg1; \ - __asm__ __volatile__( \ - "call_pal %2 # "#NAME \ - : "=r"(__r16), "=r"(__r17) \ - : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ - : "$1", "$22", "$23", "$24", "$25"); \ -} - -#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \ -extern inline RTYPE NAME(TYPE0 arg0) \ -{ \ - register RTYPE __r0 __asm__("$0"); \ - register TYPE0 __r16 __asm__("$16") = arg0; \ - __asm__ __volatile__( \ - "call_pal %2 # "#NAME \ - : "=r"(__r16), "=r"(__r0) \ - : "i"(PAL_ ## NAME), "0"(__r16) \ - : "$1", "$22", "$23", "$24", "$25"); \ - return __r0; \ -} - -#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \ -extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \ -{ \ - register RTYPE __r0 __asm__("$0"); \ - register TYPE0 __r16 __asm__("$16") = arg0; \ - register TYPE1 __r17 __asm__("$17") = arg1; \ - __asm__ __volatile__( \ - "call_pal %3 # "#NAME \ - : "=r"(__r16), "=r"(__r17), "=r"(__r0) \ - : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ - : "$1", "$22", "$23", "$24", "$25"); \ - return __r0; \ -} - -__CALL_PAL_W1(cflush, unsigned long); -__CALL_PAL_R0(rdmces, unsigned long); -__CALL_PAL_R0(rdps, unsigned long); -__CALL_PAL_R0(rdusp, unsigned long); -__CALL_PAL_RW1(swpipl, unsigned long, unsigned long); -__CALL_PAL_R0(whami, unsigned long); -__CALL_PAL_W2(wrent, void*, unsigned long); -__CALL_PAL_W1(wripir, unsigned long); -__CALL_PAL_W1(wrkgp, unsigned long); -__CALL_PAL_W1(wrmces, unsigned long); -__CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); -__CALL_PAL_W1(wrusp, unsigned long); -__CALL_PAL_W1(wrvptptr, unsigned long); - -/* - * TB routines.. - */ -#define __tbi(nr,arg,arg1...) \ -({ \ - register unsigned long __r16 __asm__("$16") = (nr); \ - register unsigned long __r17 __asm__("$17"); arg; \ - __asm__ __volatile__( \ - "call_pal %3 #__tbi" \ - :"=r" (__r16),"=r" (__r17) \ - :"0" (__r16),"i" (PAL_tbi) ,##arg1 \ - :"$0", "$1", "$22", "$23", "$24", "$25"); \ -}) - -#define tbi(x,y) __tbi(x,__r17=(y),"1" (__r17)) -#define tbisi(x) __tbi(1,__r17=(x),"1" (__r17)) -#define tbisd(x) __tbi(2,__r17=(x),"1" (__r17)) -#define tbis(x) __tbi(3,__r17=(x),"1" (__r17)) -#define tbiap() __tbi(-1, /* no second argument */) -#define tbia() __tbi(-2, /* no second argument */) - -/* - * Atomic exchange routines. - */ - -#define __ASM__MB -#define ____xchg(type, args...) __xchg ## type ## _local(args) -#define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) -#include - -#define xchg_local(ptr,x) \ - ({ \ - __typeof__(*(ptr)) _x_ = (x); \ - (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ - sizeof(*(ptr))); \ - }) - -#define cmpxchg_local(ptr, o, n) \ - ({ \ - __typeof__(*(ptr)) _o_ = (o); \ - __typeof__(*(ptr)) _n_ = (n); \ - (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ - (unsigned long)_n_, \ - sizeof(*(ptr))); \ - }) - -#define cmpxchg64_local(ptr, o, n) \ - ({ \ - BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ - cmpxchg_local((ptr), (o), (n)); \ - }) - -#ifdef CONFIG_SMP -#undef __ASM__MB -#define __ASM__MB "\tmb\n" -#endif -#undef ____xchg -#undef ____cmpxchg -#define ____xchg(type, args...) __xchg ##type(args) -#define ____cmpxchg(type, args...) __cmpxchg ##type(args) -#include - -#define xchg(ptr,x) \ - ({ \ - __typeof__(*(ptr)) _x_ = (x); \ - (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, \ - sizeof(*(ptr))); \ - }) - -#define cmpxchg(ptr, o, n) \ - ({ \ - __typeof__(*(ptr)) _o_ = (o); \ - __typeof__(*(ptr)) _n_ = (n); \ - (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ - (unsigned long)_n_, sizeof(*(ptr)));\ - }) - -#define cmpxchg64(ptr, o, n) \ - ({ \ - BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ - cmpxchg((ptr), (o), (n)); \ - }) - -#undef __ASM__MB -#undef ____cmpxchg - -#define __HAVE_ARCH_CMPXCHG 1 - -#endif /* __ASSEMBLY__ */ - -#define arch_align_stack(x) (x) - -#endif diff --git a/trunk/arch/alpha/include/asm/xchg.h b/trunk/arch/alpha/include/asm/xchg.h index beba1b803e0d..1d1b436fbff2 100644 --- a/trunk/arch/alpha/include/asm/xchg.h +++ b/trunk/arch/alpha/include/asm/xchg.h @@ -1,4 +1,4 @@ -#ifndef __ALPHA_SYSTEM_H +#ifndef _ALPHA_ATOMIC_H #error Do not include xchg.h directly! #else /* diff --git a/trunk/arch/alpha/kernel/core_apecs.c b/trunk/arch/alpha/kernel/core_apecs.c index ca46b2c24457..708c831efa76 100644 --- a/trunk/arch/alpha/kernel/core_apecs.c +++ b/trunk/arch/alpha/kernel/core_apecs.c @@ -21,6 +21,7 @@ #include #include +#include #include "proto.h" #include "pci_impl.h" diff --git a/trunk/arch/alpha/kernel/core_cia.c b/trunk/arch/alpha/kernel/core_cia.c index 1d6ee6c985f9..c44339e176c1 100644 --- a/trunk/arch/alpha/kernel/core_cia.c +++ b/trunk/arch/alpha/kernel/core_cia.c @@ -23,6 +23,7 @@ #include #include +#include #include "proto.h" #include "pci_impl.h" diff --git a/trunk/arch/alpha/kernel/core_t2.c b/trunk/arch/alpha/kernel/core_t2.c index 2f770e994289..3ada4f7b085d 100644 --- a/trunk/arch/alpha/kernel/core_t2.c +++ b/trunk/arch/alpha/kernel/core_t2.c @@ -21,6 +21,7 @@ #include #include +#include #include "proto.h" #include "pci_impl.h" diff --git a/trunk/arch/alpha/kernel/err_impl.h b/trunk/arch/alpha/kernel/err_impl.h index 0c010ca4611e..ae529c416037 100644 --- a/trunk/arch/alpha/kernel/err_impl.h +++ b/trunk/arch/alpha/kernel/err_impl.h @@ -7,6 +7,8 @@ * implementations. */ +#include + union el_timestamp; struct el_subpacket; struct ev7_lf_subpackets; diff --git a/trunk/arch/alpha/kernel/head.S b/trunk/arch/alpha/kernel/head.S index 4bdd1d2ff353..c352499ab9f8 100644 --- a/trunk/arch/alpha/kernel/head.S +++ b/trunk/arch/alpha/kernel/head.S @@ -8,14 +8,12 @@ */ #include -#include #include +#include +#include __HEAD -.globl swapper_pg_dir .globl _stext -swapper_pg_dir=SWAPPER_PGD - .set noreorder .globl __start .ent __start diff --git a/trunk/arch/alpha/kernel/irq.c b/trunk/arch/alpha/kernel/irq.c index 381431a2d6d9..2872accd2215 100644 --- a/trunk/arch/alpha/kernel/irq.c +++ b/trunk/arch/alpha/kernel/irq.c @@ -26,7 +26,6 @@ #include #include -#include #include #include diff --git a/trunk/arch/alpha/kernel/irq_alpha.c b/trunk/arch/alpha/kernel/irq_alpha.c index 51b7fbd9e4c1..772ddfdb71a8 100644 --- a/trunk/arch/alpha/kernel/irq_alpha.c +++ b/trunk/arch/alpha/kernel/irq_alpha.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "proto.h" #include "irq_impl.h" diff --git a/trunk/arch/alpha/kernel/osf_sys.c b/trunk/arch/alpha/kernel/osf_sys.c index 01e8715e26d9..49ee3193477a 100644 --- a/trunk/arch/alpha/kernel/osf_sys.c +++ b/trunk/arch/alpha/kernel/osf_sys.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index 89bbe5b41145..153d3fce3e8e 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -31,7 +31,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/ptrace.c b/trunk/arch/alpha/kernel/ptrace.c index e2af5eb59bb4..54616f496aed 100644 --- a/trunk/arch/alpha/kernel/ptrace.c +++ b/trunk/arch/alpha/kernel/ptrace.c @@ -16,7 +16,6 @@ #include #include -#include #include #include "proto.h" diff --git a/trunk/arch/alpha/kernel/setup.c b/trunk/arch/alpha/kernel/setup.c index 32de56067e63..9e3107cc5ebb 100644 --- a/trunk/arch/alpha/kernel/setup.c +++ b/trunk/arch/alpha/kernel/setup.c @@ -55,7 +55,6 @@ static struct notifier_block alpha_panic_block = { #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_alcor.c b/trunk/arch/alpha/kernel/sys_alcor.c index 8606d77e5163..118dc6af1805 100644 --- a/trunk/arch/alpha/kernel/sys_alcor.c +++ b/trunk/arch/alpha/kernel/sys_alcor.c @@ -18,7 +18,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_cabriolet.c b/trunk/arch/alpha/kernel/sys_cabriolet.c index 1029619fb6c0..4c50f8f40cbb 100644 --- a/trunk/arch/alpha/kernel/sys_cabriolet.c +++ b/trunk/arch/alpha/kernel/sys_cabriolet.c @@ -18,7 +18,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_dp264.c b/trunk/arch/alpha/kernel/sys_dp264.c index 13f0717fc7fe..5bf401f7ea97 100644 --- a/trunk/arch/alpha/kernel/sys_dp264.c +++ b/trunk/arch/alpha/kernel/sys_dp264.c @@ -21,7 +21,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_eb64p.c b/trunk/arch/alpha/kernel/sys_eb64p.c index 3c6c13cd8b19..ad40a425e841 100644 --- a/trunk/arch/alpha/kernel/sys_eb64p.c +++ b/trunk/arch/alpha/kernel/sys_eb64p.c @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_eiger.c b/trunk/arch/alpha/kernel/sys_eiger.c index 35f480db7719..79d69d7f63f8 100644 --- a/trunk/arch/alpha/kernel/sys_eiger.c +++ b/trunk/arch/alpha/kernel/sys_eiger.c @@ -18,7 +18,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_jensen.c b/trunk/arch/alpha/kernel/sys_jensen.c index 7f1a87f176e2..5a0af11b3a61 100644 --- a/trunk/arch/alpha/kernel/sys_jensen.c +++ b/trunk/arch/alpha/kernel/sys_jensen.c @@ -15,7 +15,6 @@ #include #include -#include #define __EXTERN_INLINE inline #include diff --git a/trunk/arch/alpha/kernel/sys_marvel.c b/trunk/arch/alpha/kernel/sys_marvel.c index fc8b12508611..14a4b6a7cf59 100644 --- a/trunk/arch/alpha/kernel/sys_marvel.c +++ b/trunk/arch/alpha/kernel/sys_marvel.c @@ -13,7 +13,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_miata.c b/trunk/arch/alpha/kernel/sys_miata.c index 258da684670b..d5b9776a608d 100644 --- a/trunk/arch/alpha/kernel/sys_miata.c +++ b/trunk/arch/alpha/kernel/sys_miata.c @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_mikasa.c b/trunk/arch/alpha/kernel/sys_mikasa.c index c0fd7284dec3..5e82dc1ad6f2 100644 --- a/trunk/arch/alpha/kernel/sys_mikasa.c +++ b/trunk/arch/alpha/kernel/sys_mikasa.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_nautilus.c b/trunk/arch/alpha/kernel/sys_nautilus.c index 4112200307c7..4d4c046f708d 100644 --- a/trunk/arch/alpha/kernel/sys_nautilus.c +++ b/trunk/arch/alpha/kernel/sys_nautilus.c @@ -35,7 +35,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_noritake.c b/trunk/arch/alpha/kernel/sys_noritake.c index 21725283cdd7..063e594fd969 100644 --- a/trunk/arch/alpha/kernel/sys_noritake.c +++ b/trunk/arch/alpha/kernel/sys_noritake.c @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_rawhide.c b/trunk/arch/alpha/kernel/sys_rawhide.c index a125d6bea7e1..dfd510ae5d8c 100644 --- a/trunk/arch/alpha/kernel/sys_rawhide.c +++ b/trunk/arch/alpha/kernel/sys_rawhide.c @@ -16,7 +16,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_ruffian.c b/trunk/arch/alpha/kernel/sys_ruffian.c index 2581cbec6fc2..a3f485257170 100644 --- a/trunk/arch/alpha/kernel/sys_ruffian.c +++ b/trunk/arch/alpha/kernel/sys_ruffian.c @@ -18,7 +18,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_rx164.c b/trunk/arch/alpha/kernel/sys_rx164.c index b172b27555a7..08ee737d4fba 100644 --- a/trunk/arch/alpha/kernel/sys_rx164.c +++ b/trunk/arch/alpha/kernel/sys_rx164.c @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_sable.c b/trunk/arch/alpha/kernel/sys_sable.c index 98d1dbffe98f..8a0aa6d67b53 100644 --- a/trunk/arch/alpha/kernel/sys_sable.c +++ b/trunk/arch/alpha/kernel/sys_sable.c @@ -16,7 +16,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_sio.c b/trunk/arch/alpha/kernel/sys_sio.c index 47bec1e97d1c..febd24eba7a6 100644 --- a/trunk/arch/alpha/kernel/sys_sio.c +++ b/trunk/arch/alpha/kernel/sys_sio.c @@ -20,7 +20,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_sx164.c b/trunk/arch/alpha/kernel/sys_sx164.c index 73e1c317afcb..d063b360efed 100644 --- a/trunk/arch/alpha/kernel/sys_sx164.c +++ b/trunk/arch/alpha/kernel/sys_sx164.c @@ -17,7 +17,6 @@ #include #include -#include #include #include #include @@ -26,6 +25,7 @@ #include #include #include +#include #include "proto.h" #include "irq_impl.h" diff --git a/trunk/arch/alpha/kernel/sys_takara.c b/trunk/arch/alpha/kernel/sys_takara.c index 2ae99ad6975e..dd0f1eae3c68 100644 --- a/trunk/arch/alpha/kernel/sys_takara.c +++ b/trunk/arch/alpha/kernel/sys_takara.c @@ -16,7 +16,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_titan.c b/trunk/arch/alpha/kernel/sys_titan.c index b8eafa053539..2533db280d9b 100644 --- a/trunk/arch/alpha/kernel/sys_titan.c +++ b/trunk/arch/alpha/kernel/sys_titan.c @@ -21,7 +21,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_wildfire.c b/trunk/arch/alpha/kernel/sys_wildfire.c index 17c85a65e7b0..ee1874887776 100644 --- a/trunk/arch/alpha/kernel/sys_wildfire.c +++ b/trunk/arch/alpha/kernel/sys_wildfire.c @@ -15,7 +15,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/traps.c b/trunk/arch/alpha/kernel/traps.c index 0414e021a91c..80d987c0e9aa 100644 --- a/trunk/arch/alpha/kernel/traps.c +++ b/trunk/arch/alpha/kernel/traps.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "proto.h" diff --git a/trunk/arch/alpha/kernel/vmlinux.lds.S b/trunk/arch/alpha/kernel/vmlinux.lds.S index f937ad123852..647b84c15382 100644 --- a/trunk/arch/alpha/kernel/vmlinux.lds.S +++ b/trunk/arch/alpha/kernel/vmlinux.lds.S @@ -2,6 +2,7 @@ #include #include #include +#include OUTPUT_FORMAT("elf64-alpha") OUTPUT_ARCH(alpha) @@ -25,6 +26,7 @@ SECTIONS *(.fixup) *(.gnu.warning) } :kernel + swapper_pg_dir = SWAPPER_PGD; _etext = .; /* End of text section */ NOTES :kernel :note diff --git a/trunk/arch/alpha/lib/stacktrace.c b/trunk/arch/alpha/lib/stacktrace.c index 6d432e42aedc..5e832161e6d2 100644 --- a/trunk/arch/alpha/lib/stacktrace.c +++ b/trunk/arch/alpha/lib/stacktrace.c @@ -1,5 +1,4 @@ #include -#include typedef unsigned int instr; diff --git a/trunk/arch/alpha/mm/fault.c b/trunk/arch/alpha/mm/fault.c index fadd5f882ff9..5eecab1a84ef 100644 --- a/trunk/arch/alpha/mm/fault.c +++ b/trunk/arch/alpha/mm/fault.c @@ -24,7 +24,6 @@ #include #include -#include #include extern void die_if_kernel(char *,struct pt_regs *,long, unsigned long *); diff --git a/trunk/arch/alpha/mm/init.c b/trunk/arch/alpha/mm/init.c index 69d0c5761e2f..1ad6ca74bed2 100644 --- a/trunk/arch/alpha/mm/init.c +++ b/trunk/arch/alpha/mm/init.c @@ -22,7 +22,6 @@ #include #include -#include #include #include #include @@ -31,6 +30,7 @@ #include #include #include +#include extern void die_if_kernel(char *,struct pt_regs *,long); diff --git a/trunk/arch/alpha/oprofile/common.c b/trunk/arch/alpha/oprofile/common.c index bd8ac533a504..a0a5d27aa215 100644 --- a/trunk/arch/alpha/oprofile/common.c +++ b/trunk/arch/alpha/oprofile/common.c @@ -12,7 +12,6 @@ #include #include #include -#include #include "op_impl.h" diff --git a/trunk/arch/alpha/oprofile/op_model_ev4.c b/trunk/arch/alpha/oprofile/op_model_ev4.c index 80d764dbf22f..18aa9b4f94f1 100644 --- a/trunk/arch/alpha/oprofile/op_model_ev4.c +++ b/trunk/arch/alpha/oprofile/op_model_ev4.c @@ -11,7 +11,6 @@ #include #include #include -#include #include "op_impl.h" diff --git a/trunk/arch/alpha/oprofile/op_model_ev5.c b/trunk/arch/alpha/oprofile/op_model_ev5.c index ceea6e1ad79a..c32f8a0ad925 100644 --- a/trunk/arch/alpha/oprofile/op_model_ev5.c +++ b/trunk/arch/alpha/oprofile/op_model_ev5.c @@ -11,7 +11,6 @@ #include #include #include -#include #include "op_impl.h" diff --git a/trunk/arch/alpha/oprofile/op_model_ev6.c b/trunk/arch/alpha/oprofile/op_model_ev6.c index 0869f85f5748..1c84cc257fc7 100644 --- a/trunk/arch/alpha/oprofile/op_model_ev6.c +++ b/trunk/arch/alpha/oprofile/op_model_ev6.c @@ -11,7 +11,6 @@ #include #include #include -#include #include "op_impl.h" diff --git a/trunk/arch/alpha/oprofile/op_model_ev67.c b/trunk/arch/alpha/oprofile/op_model_ev67.c index 5b9d178e0228..34a57a126553 100644 --- a/trunk/arch/alpha/oprofile/op_model_ev67.c +++ b/trunk/arch/alpha/oprofile/op_model_ev67.c @@ -12,7 +12,6 @@ #include #include #include -#include #include "op_impl.h" diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 87693e631129..5098564d5879 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -325,9 +325,10 @@ config ARCH_AT91 select ARCH_REQUIRE_GPIOLIB select HAVE_CLK select CLKDEV_LOOKUP + select IRQ_DOMAIN help This enables support for systems based on the Atmel AT91RM9200, - AT91SAM9 and AT91CAP9 processors. + AT91SAM9 processors. config ARCH_BCMRING bool "Broadcom BCMRING" @@ -737,7 +738,6 @@ config ARCH_RPC bool "RiscPC" select ARCH_ACORN select FIQ - select TIMER_ACORN select ARCH_MAY_HAVE_PC_FDC select HAVE_PATA_PLATFORM select ISA_DMA_API @@ -760,31 +760,31 @@ config ARCH_SA1100 select ARCH_HAS_CPUFREQ select CPU_FREQ select GENERIC_CLOCKEVENTS - select HAVE_CLK + select CLKDEV_LOOKUP select HAVE_SCHED_CLOCK 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_S3C2410 - bool "Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443, S3C2450" +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 help - Samsung S3C2410X CPU based systems, such as the Simtec Electronics - BAST (), the IPAQ 1940 or - the Samsung SMDK2410 development board (and derivatives). - - Note, the S3C2416 and the S3C2450 are so close that they even share - the same SoC ID code. This means that there is no separate machine - directory (no arch/arm/mach-s3c2450) as the S3C2416 was first. + 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" @@ -907,6 +907,7 @@ config ARCH_U300 config ARCH_U8500 bool "ST-Ericsson U8500 Series" + depends on MMU select CPU_V7 select ARM_AMBA select GENERIC_CLOCKEVENTS @@ -1072,12 +1073,10 @@ source "arch/arm/plat-s5p/Kconfig" source "arch/arm/plat-spear/Kconfig" -if ARCH_S3C2410 -source "arch/arm/mach-s3c2410/Kconfig" +source "arch/arm/mach-s3c24xx/Kconfig" +if ARCH_S3C24XX source "arch/arm/mach-s3c2412/Kconfig" -source "arch/arm/mach-s3c2416/Kconfig" source "arch/arm/mach-s3c2440/Kconfig" -source "arch/arm/mach-s3c2443/Kconfig" endif if ARCH_S3C64XX @@ -1133,6 +1132,7 @@ config PLAT_VERSATILE config ARM_TIMER_SP804 bool select CLKSRC_MMIO + select HAVE_SCHED_CLOCK source arch/arm/mm/Kconfig @@ -1583,7 +1583,8 @@ config LOCAL_TIMERS config ARCH_NR_GPIO int default 1024 if ARCH_SHMOBILE || ARCH_TEGRA - default 350 if ARCH_U8500 + default 355 if ARCH_U8500 + default 264 if MACH_H4700 default 0 help Maximum number of GPIOs in the system. @@ -1594,7 +1595,7 @@ source kernel/Kconfig.preempt config HZ int - default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \ + 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 @@ -2120,7 +2121,7 @@ config CPU_FREQ_S3C config CPU_FREQ_S3C24XX bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)" - depends on ARCH_S3C2410 && CPU_FREQ && EXPERIMENTAL + depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL select CPU_FREQ_S3C help This enables the CPUfreq driver for the Samsung S3C24XX family diff --git a/trunk/arch/arm/Kconfig.debug b/trunk/arch/arm/Kconfig.debug index 03646c4c13d1..66ca8014ff3e 100644 --- a/trunk/arch/arm/Kconfig.debug +++ b/trunk/arch/arm/Kconfig.debug @@ -86,7 +86,7 @@ choice depends on HAVE_AT91_DBGU0 config AT91_DEBUG_LL_DBGU1 - bool "Kernel low-level debugging on 9263, 9g45 and cap9" + bool "Kernel low-level debugging on 9263 and 9g45" depends on HAVE_AT91_DBGU1 config DEBUG_CLPS711X_UART1 @@ -180,12 +180,12 @@ choice Say Y here if you want kernel low-level debugging support on i.MX50 or i.MX53. - config DEBUG_IMX6Q_UART - bool "i.MX6Q Debug UART" + 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. + on i.MX6Q UART4. config DEBUG_MSM_UART1 bool "Kernel low-level debugging messages via MSM UART1" diff --git a/trunk/arch/arm/Makefile b/trunk/arch/arm/Makefile index 1683bfb9166f..dcb088e868fe 100644 --- a/trunk/arch/arm/Makefile +++ b/trunk/arch/arm/Makefile @@ -174,12 +174,13 @@ machine-$(CONFIG_ARCH_PRIMA2) := prima2 machine-$(CONFIG_ARCH_PXA) := pxa machine-$(CONFIG_ARCH_REALVIEW) := realview machine-$(CONFIG_ARCH_RPC) := rpc -machine-$(CONFIG_ARCH_S3C2410) := s3c2410 s3c2412 s3c2416 s3c2440 s3c2443 +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 diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index c5d60250d43d..5f6045f1766c 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -58,7 +58,7 @@ add \rb, \rb, #0x00010000 @ Ser1 #endif .endm -#elif defined(CONFIG_ARCH_S3C2410) +#elif defined(CONFIG_ARCH_S3C24XX) .macro loadsp, rb, tmp mov \rb, #0x50000000 add \rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT diff --git a/trunk/arch/arm/boot/dts/am3517_mt_ventoux.dts b/trunk/arch/arm/boot/dts/am3517_mt_ventoux.dts new file mode 100644 index 000000000000..5eb26d7d9b4e --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/at91sam9g20.dtsi b/trunk/arch/arm/boot/dts/at91sam9g20.dtsi index 07603b8c9503..92f36627e7f8 100644 --- a/trunk/arch/arm/boot/dts/at91sam9g20.dtsi +++ b/trunk/arch/arm/boot/dts/at91sam9g20.dtsi @@ -23,6 +23,11 @@ serial4 = &usart3; serial5 = &usart4; serial6 = &usart5; + gpio0 = &pioA; + gpio1 = &pioB; + gpio2 = &pioC; + tcb0 = &tcb0; + tcb1 = &tcb1; }; cpus { cpu@0 { @@ -47,24 +52,89 @@ ranges; aic: interrupt-controller@fffff000 { - #interrupt-cells = <1>; + #interrupt-cells = <2>; compatible = "atmel,at91rm9200-aic"; interrupt-controller; interrupt-parent; 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>; + interrupts = <1 4>; status = "disabled"; }; usart0: serial@fffb0000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffb0000 0x200>; - interrupts = <6>; + interrupts = <6 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -73,7 +143,7 @@ usart1: serial@fffb4000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffb4000 0x200>; - interrupts = <7>; + interrupts = <7 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -82,7 +152,7 @@ usart2: serial@fffb8000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffb8000 0x200>; - interrupts = <8>; + interrupts = <8 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -91,7 +161,7 @@ usart3: serial@fffd0000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffd0000 0x200>; - interrupts = <23>; + interrupts = <23 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -100,7 +170,7 @@ usart4: serial@fffd4000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffd4000 0x200>; - interrupts = <24>; + interrupts = <24 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -109,7 +179,7 @@ usart5: serial@fffd8000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfffd8000 0x200>; - interrupts = <25>; + interrupts = <25 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -118,9 +188,52 @@ macb0: ethernet@fffc4000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffc4000 0x100>; - interrupts = <21>; + 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/trunk/arch/arm/boot/dts/at91sam9g25ek.dts b/trunk/arch/arm/boot/dts/at91sam9g25ek.dts new file mode 100644 index 000000000000..ac0dc0031dda --- /dev/null +++ b/trunk/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 0 + &pioD 20 0 + >; + }; + + usb1: ehci@00700000 { + status = "okay"; + }; + }; +}; diff --git a/trunk/arch/arm/boot/dts/at91sam9g45.dtsi b/trunk/arch/arm/boot/dts/at91sam9g45.dtsi index fffa005300a4..3d0c32fb218f 100644 --- a/trunk/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/trunk/arch/arm/boot/dts/at91sam9g45.dtsi @@ -22,6 +22,13 @@ serial2 = &usart1; serial3 = &usart2; serial4 = &usart3; + gpio0 = &pioA; + gpio1 = &pioB; + gpio2 = &pioC; + gpio3 = &pioD; + gpio4 = &pioE; + tcb0 = &tcb0; + tcb1 = &tcb1; }; cpus { cpu@0 { @@ -46,30 +53,115 @@ ranges; aic: interrupt-controller@fffff000 { - #interrupt-cells = <1>; + #interrupt-cells = <2>; compatible = "atmel,at91rm9200-aic"; interrupt-controller; interrupt-parent; 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>; + 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>; + interrupts = <1 4>; status = "disabled"; }; usart0: serial@fff8c000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfff8c000 0x200>; - interrupts = <7>; + interrupts = <7 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -78,7 +170,7 @@ usart1: serial@fff90000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfff90000 0x200>; - interrupts = <8>; + interrupts = <8 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -87,7 +179,7 @@ usart2: serial@fff94000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfff94000 0x200>; - interrupts = <9>; + interrupts = <9 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -96,7 +188,7 @@ usart3: serial@fff98000 { compatible = "atmel,at91sam9260-usart"; reg = <0xfff98000 0x200>; - interrupts = <10>; + interrupts = <10 4>; atmel,use-dma-rx; atmel,use-dma-tx; status = "disabled"; @@ -105,9 +197,52 @@ macb0: ethernet@fffbc000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffbc000 0x100>; - interrupts = <25>; + 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/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts b/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts index a387e7704ce1..c4c8ae4123d5 100644 --- a/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts +++ b/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts @@ -14,13 +14,24 @@ compatible = "atmel,at91sam9m10g45ek", "atmel,at91sam9g45", "atmel,at91sam9"; chosen { - bootargs = "mem=64M console=ttyS0,115200 mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,60M(rootfs),-(data) root=/dev/mtdblock1 rw rootfstype=jffs2"; + bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2"; }; memory@70000000 { 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 { @@ -36,5 +47,110 @@ 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 0 + &pioD 3 0>; + }; + + 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/trunk/arch/arm/boot/dts/at91sam9x5.dtsi b/trunk/arch/arm/boot/dts/at91sam9x5.dtsi new file mode 100644 index 000000000000..c111001f254e --- /dev/null +++ b/trunk/arch/arm/boot/dts/at91sam9x5.dtsi @@ -0,0 +1,264 @@ +/* + * 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@20000000 { + 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; + interrupt-parent; + 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 = <&pioC 8 0 + &pioC 14 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/trunk/arch/arm/boot/dts/at91sam9x5cm.dtsi b/trunk/arch/arm/boot/dts/at91sam9x5cm.dtsi new file mode 100644 index 000000000000..67936f83c694 --- /dev/null +++ b/trunk/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@20000000 { + 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/trunk/arch/arm/boot/dts/db8500.dtsi b/trunk/arch/arm/boot/dts/db8500.dtsi new file mode 100644 index 000000000000..d73dce645667 --- /dev/null +++ b/trunk/arch/arm/boot/dts/db8500.dtsi @@ -0,0 +1,275 @@ +/* + * 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; + interrupt-parent; + 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/trunk/arch/arm/boot/dts/exynos5250-smdk5250.dts b/trunk/arch/arm/boot/dts/exynos5250-smdk5250.dts new file mode 100644 index 000000000000..399d17b231d2 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/exynos5250.dtsi b/trunk/arch/arm/boot/dts/exynos5250.dtsi new file mode 100644 index 000000000000..dfc433599436 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/highbank.dts b/trunk/arch/arm/boot/dts/highbank.dts index 305635bd45c0..37c0ff9c8b90 100644 --- a/trunk/arch/arm/boot/dts/highbank.dts +++ b/trunk/arch/arm/boot/dts/highbank.dts @@ -72,15 +72,15 @@ ranges; timer@fff10600 { - compatible = "arm,smp-twd"; + compatible = "arm,cortex-a9-twd-timer"; reg = <0xfff10600 0x20>; - interrupts = <1 13 0xf04>; + interrupts = <1 13 0xf01>; }; watchdog@fff10620 { - compatible = "arm,cortex-a9-wdt"; + compatible = "arm,cortex-a9-twd-wdt"; reg = <0xfff10620 0x20>; - interrupts = <1 14 0xf04>; + interrupts = <1 14 0xf01>; }; intc: interrupt-controller@fff11000 { diff --git a/trunk/arch/arm/boot/dts/imx27-phytec-phycore.dts b/trunk/arch/arm/boot/dts/imx27-phytec-phycore.dts new file mode 100644 index 000000000000..a51a08fc2af9 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/imx27.dtsi b/trunk/arch/arm/boot/dts/imx27.dtsi new file mode 100644 index 000000000000..bc5e7d5ddd54 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/imx51-babbage.dts b/trunk/arch/arm/boot/dts/imx51-babbage.dts index 564cb8c19f15..9949e6060dee 100644 --- a/trunk/arch/arm/boot/dts/imx51-babbage.dts +++ b/trunk/arch/arm/boot/dts/imx51-babbage.dts @@ -56,8 +56,95 @@ compatible = "fsl,mc13892"; spi-max-frequency = <6000000>; reg = <0>; - mc13xxx-irq-gpios = <&gpio1 8 0>; - fsl,mc13xxx-uses-regulator; + 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 { diff --git a/trunk/arch/arm/boot/dts/imx6q-arm2.dts b/trunk/arch/arm/boot/dts/imx6q-arm2.dts index c3977e0478b9..ce1c8238c897 100644 --- a/trunk/arch/arm/boot/dts/imx6q-arm2.dts +++ b/trunk/arch/arm/boot/dts/imx6q-arm2.dts @@ -36,11 +36,13 @@ 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"; }; @@ -50,6 +52,18 @@ }; }; + 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"; diff --git a/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts index 08d920de7286..4663a4e5a285 100644 --- a/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -32,18 +32,52 @@ 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/trunk/arch/arm/boot/dts/imx6q.dtsi b/trunk/arch/arm/boot/dts/imx6q.dtsi index 263e8f3664b5..4905f51a106f 100644 --- a/trunk/arch/arm/boot/dts/imx6q.dtsi +++ b/trunk/arch/arm/boot/dts/imx6q.dtsi @@ -88,9 +88,9 @@ ranges; timer@00a00600 { - compatible = "arm,smp-twd"; - reg = <0x00a00600 0x100>; - interrupts = <1 13 0xf4>; + compatible = "arm,cortex-a9-twd-timer"; + reg = <0x00a00600 0x20>; + interrupts = <1 13 0xf01>; }; L2: l2-cache@00a02000 { diff --git a/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts b/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts new file mode 100644 index 000000000000..a5376b84227f --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/kirkwood.dtsi b/trunk/arch/arm/boot/dts/kirkwood.dtsi new file mode 100644 index 000000000000..3474ef890945 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/omap3-beagle.dts b/trunk/arch/arm/boot/dts/omap3-beagle.dts index 9486be62bcdd..9f72cd4cf308 100644 --- a/trunk/arch/arm/boot/dts/omap3-beagle.dts +++ b/trunk/arch/arm/boot/dts/omap3-beagle.dts @@ -13,15 +13,6 @@ model = "TI OMAP3 BeagleBoard"; compatible = "ti,omap3-beagle", "ti,omap3"; - /* - * Since the initial device tree board file does not create any - * devices (MMC, network...), the only way to boot is to provide a - * ramdisk. - */ - chosen { - bootargs = "root=/dev/ram0 rw console=ttyO2,115200n8 initrd=0x81600000,20M ramdisk_size=20480 no_console_suspend debug earlyprintk"; - }; - memory { device_type = "memory"; reg = <0x80000000 0x20000000>; /* 512 MB */ diff --git a/trunk/arch/arm/boot/dts/omap3-evm.dts b/trunk/arch/arm/boot/dts/omap3-evm.dts new file mode 100644 index 000000000000..2eee16ec59b4 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/omap3.dtsi b/trunk/arch/arm/boot/dts/omap3.dtsi index 216c3317461d..c6121357c1eb 100644 --- a/trunk/arch/arm/boot/dts/omap3.dtsi +++ b/trunk/arch/arm/boot/dts/omap3.dtsi @@ -61,34 +61,57 @@ ranges; ti,hwmods = "l3_main"; - intc: interrupt-controller@1 { - compatible = "ti,omap3-intc"; + intc: interrupt-controller@48200000 { + compatible = "ti,omap2-intc"; interrupt-controller; #interrupt-cells = <1>; + ti,intc-size = <96>; + reg = <0x48200000 0x1000>; }; - uart1: serial@0x4806a000 { + uart1: serial@4806a000 { compatible = "ti,omap3-uart"; ti,hwmods = "uart1"; clock-frequency = <48000000>; }; - uart2: serial@0x4806c000 { + uart2: serial@4806c000 { compatible = "ti,omap3-uart"; ti,hwmods = "uart2"; clock-frequency = <48000000>; }; - uart3: serial@0x49020000 { + uart3: serial@49020000 { compatible = "ti,omap3-uart"; ti,hwmods = "uart3"; clock-frequency = <48000000>; }; - uart4: serial@0x49042000 { + 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/trunk/arch/arm/boot/dts/omap4-panda.dts b/trunk/arch/arm/boot/dts/omap4-panda.dts index c7026578ce7d..9755ad5917f8 100644 --- a/trunk/arch/arm/boot/dts/omap4-panda.dts +++ b/trunk/arch/arm/boot/dts/omap4-panda.dts @@ -13,15 +13,6 @@ model = "TI OMAP4 PandaBoard"; compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4"; - /* - * Since the initial device tree board file does not create any - * devices (MMC, network...), the only way to boot is to provide a - * ramdisk. - */ - chosen { - bootargs = "root=/dev/ram0 rw console=ttyO2,115200n8 initrd=0x81600000,20M ramdisk_size=20480 no_console_suspend debug"; - }; - memory { device_type = "memory"; reg = <0x80000000 0x40000000>; /* 1 GB */ diff --git a/trunk/arch/arm/boot/dts/omap4-sdp.dts b/trunk/arch/arm/boot/dts/omap4-sdp.dts index 066e28c90328..63c6b2b2bf42 100644 --- a/trunk/arch/arm/boot/dts/omap4-sdp.dts +++ b/trunk/arch/arm/boot/dts/omap4-sdp.dts @@ -13,15 +13,6 @@ model = "TI OMAP4 SDP board"; compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4"; - /* - * Since the initial device tree board file does not create any - * devices (MMC, network...), the only way to boot is to provide a - * ramdisk. - */ - chosen { - bootargs = "root=/dev/ram0 rw console=ttyO2,115200n8 initrd=0x81600000,20M ramdisk_size=20480 no_console_suspend debug"; - }; - memory { device_type = "memory"; reg = <0x80000000 0x40000000>; /* 1 GB */ diff --git a/trunk/arch/arm/boot/dts/omap4.dtsi b/trunk/arch/arm/boot/dts/omap4.dtsi index e8fe75fac7c5..3d35559e77bc 100644 --- a/trunk/arch/arm/boot/dts/omap4.dtsi +++ b/trunk/arch/arm/boot/dts/omap4.dtsi @@ -99,33 +99,61 @@ gic: interrupt-controller@48241000 { compatible = "arm,cortex-a9-gic"; interrupt-controller; - #interrupt-cells = <1>; + #interrupt-cells = <3>; reg = <0x48241000 0x1000>, <0x48240100 0x0100>; }; - uart1: serial@0x4806a000 { + uart1: serial@4806a000 { compatible = "ti,omap4-uart"; ti,hwmods = "uart1"; clock-frequency = <48000000>; }; - uart2: serial@0x4806c000 { + uart2: serial@4806c000 { compatible = "ti,omap4-uart"; ti,hwmods = "uart2"; clock-frequency = <48000000>; }; - uart3: serial@0x48020000 { + uart3: serial@48020000 { compatible = "ti,omap4-uart"; ti,hwmods = "uart3"; clock-frequency = <48000000>; }; - uart4: serial@0x4806e000 { + 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/trunk/arch/arm/boot/dts/pxa168-aspenite.dts b/trunk/arch/arm/boot/dts/pxa168-aspenite.dts new file mode 100644 index 000000000000..e762facb3fa4 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/pxa168.dtsi b/trunk/arch/arm/boot/dts/pxa168.dtsi new file mode 100644 index 000000000000..d32d5128f225 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/snowball.dts b/trunk/arch/arm/boot/dts/snowball.dts new file mode 100644 index 000000000000..359c6d679156 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/spear600-evb.dts b/trunk/arch/arm/boot/dts/spear600-evb.dts new file mode 100644 index 000000000000..636292e18c90 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/spear600.dtsi b/trunk/arch/arm/boot/dts/spear600.dtsi new file mode 100644 index 000000000000..ebe0885a2b98 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/tegra-cardhu.dts b/trunk/arch/arm/boot/dts/tegra-cardhu.dts index 70c41fc897d7..ac3fb7558459 100644 --- a/trunk/arch/arm/boot/dts/tegra-cardhu.dts +++ b/trunk/arch/arm/boot/dts/tegra-cardhu.dts @@ -14,6 +14,22 @@ clock-frequency = < 408000000 >; }; + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + + serial@70006300 { + status = "disable"; + }; + + serial@70006400 { + status = "disable"; + }; + i2c@7000c000 { clock-frequency = <100000>; }; @@ -33,4 +49,22 @@ 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@78000400 { + support-8bit; + }; }; diff --git a/trunk/arch/arm/boot/dts/tegra-harmony.dts b/trunk/arch/arm/boot/dts/tegra-harmony.dts index 80afa1b70b80..6e8447dc0202 100644 --- a/trunk/arch/arm/boot/dts/tegra-harmony.dts +++ b/trunk/arch/arm/boot/dts/tegra-harmony.dts @@ -10,19 +10,25 @@ reg = < 0x00000000 0x40000000 >; }; + pmc@7000f400 { + nvidia,invert-interrupt; + }; + i2c@7000c000 { clock-frequency = <400000>; - codec: wm8903@1a { + wm8903: wm8903@1a { compatible = "wlf,wm8903"; reg = <0x1a>; - interrupts = < 347 >; + interrupt-parent = <&gpio>; + interrupts = < 187 0x04 >; gpio-controller; #gpio-cells = <2>; - /* 0x8000 = Not configured */ - gpio-cfg = < 0x8000 0x8000 0 0x8000 0x8000 >; + micdet-cfg = <0>; + micdet-delay = <100>; + gpio-cfg = < 0xffffffff 0xffffffff 0 0xffffffff 0xffffffff >; }; }; @@ -38,13 +44,32 @@ clock-frequency = <400000>; }; - sound { - compatible = "nvidia,harmony-sound", "nvidia,tegra-wm8903"; + i2s@70002a00 { + status = "disable"; + }; - spkr-en-gpios = <&codec 2 0>; - hp-det-gpios = <&gpio 178 0>; - int-mic-en-gpios = <&gpio 184 0>; - ext-mic-en-gpios = <&gpio 185 0>; + 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 { diff --git a/trunk/arch/arm/boot/dts/tegra-paz00.dts b/trunk/arch/arm/boot/dts/tegra-paz00.dts index 825d2957da0b..6c02abb469d4 100644 --- a/trunk/arch/arm/boot/dts/tegra-paz00.dts +++ b/trunk/arch/arm/boot/dts/tegra-paz00.dts @@ -12,6 +12,13 @@ i2c@7000c000 { clock-frequency = <400000>; + + alc5632: alc5632@1e { + compatible = "realtek,alc5632"; + reg = <0x1e>; + gpio-controller; + #gpio-cells = <2>; + }; }; i2c@7000c400 { @@ -35,6 +42,35 @@ 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 { @@ -74,4 +110,25 @@ 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/trunk/arch/arm/boot/dts/tegra-seaboard.dts b/trunk/arch/arm/boot/dts/tegra-seaboard.dts index b55a02e34ba7..dbf1c5a171c2 100644 --- a/trunk/arch/arm/boot/dts/tegra-seaboard.dts +++ b/trunk/arch/arm/boot/dts/tegra-seaboard.dts @@ -13,6 +13,20 @@ 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 { @@ -32,6 +46,32 @@ }; }; + 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"; }; @@ -72,6 +112,7 @@ usb@c5000000 { nvidia,vbus-gpio = <&gpio 24 0>; /* PD0 */ + dr_mode = "otg"; }; gpio-keys { @@ -93,4 +134,42 @@ 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/trunk/arch/arm/boot/dts/tegra-trimslice.dts b/trunk/arch/arm/boot/dts/tegra-trimslice.dts index 3b3ee7db99f3..252476867b54 100644 --- a/trunk/arch/arm/boot/dts/tegra-trimslice.dts +++ b/trunk/arch/arm/boot/dts/tegra-trimslice.dts @@ -26,6 +26,18 @@ status = "disable"; }; + i2s@70002800 { + status = "disable"; + }; + + i2s@70002a00 { + status = "disable"; + }; + + das@70000c00 { + status = "disable"; + }; + serial@70006000 { clock-frequency = < 216000000 >; }; diff --git a/trunk/arch/arm/boot/dts/tegra-ventana.dts b/trunk/arch/arm/boot/dts/tegra-ventana.dts index c7d3b87f29df..2dcff8728e90 100644 --- a/trunk/arch/arm/boot/dts/tegra-ventana.dts +++ b/trunk/arch/arm/boot/dts/tegra-ventana.dts @@ -12,6 +12,20 @@ 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 { @@ -26,6 +40,34 @@ 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"; }; diff --git a/trunk/arch/arm/boot/dts/tegra20.dtsi b/trunk/arch/arm/boot/dts/tegra20.dtsi index 3da7afd45322..108e894a8926 100644 --- a/trunk/arch/arm/boot/dts/tegra20.dtsi +++ b/trunk/arch/arm/boot/dts/tegra20.dtsi @@ -4,6 +4,11 @@ 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; @@ -12,6 +17,33 @@ < 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>; @@ -44,18 +76,18 @@ interrupts = < 0 53 0x04 >; }; - i2s@70002800 { + tegra_i2s1: i2s@70002800 { compatible = "nvidia,tegra20-i2s"; reg = <0x70002800 0x200>; interrupts = < 0 13 0x04 >; - dma-channel = < 2 >; + nvidia,dma-request-selector = < &apbdma 2 >; }; - i2s@70002a00 { + tegra_i2s2: i2s@70002a00 { compatible = "nvidia,tegra20-i2s"; reg = <0x70002a00 0x200>; interrupts = < 0 3 0x04 >; - dma-channel = < 1 >; + nvidia,dma-request-selector = < &apbdma 1 >; }; das@70000c00 { @@ -75,6 +107,8 @@ 0 89 0x04 >; #gpio-cells = <2>; gpio-controller; + #interrupt-cells = <2>; + interrupt-controller; }; pinmux: pinmux@70000000 { @@ -120,6 +154,13 @@ 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>; @@ -149,6 +190,7 @@ reg = <0xc5000000 0x4000>; interrupts = < 0 20 0x04 >; phy_type = "utmi"; + nvidia,has-legacy-mode; }; usb@c5004000 { diff --git a/trunk/arch/arm/boot/dts/tegra30.dtsi b/trunk/arch/arm/boot/dts/tegra30.dtsi index ee7db9892e02..62a7b39f1c9a 100644 --- a/trunk/arch/arm/boot/dts/tegra30.dtsi +++ b/trunk/arch/arm/boot/dts/tegra30.dtsi @@ -4,6 +4,11 @@ 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; @@ -12,6 +17,51 @@ < 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>; @@ -55,9 +105,18 @@ 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 >; + 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 { diff --git a/trunk/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi b/trunk/arch/arm/boot/dts/usb_a9g20-dab-mmx.dtsi new file mode 100644 index 000000000000..ad3eca17c436 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/usb_a9g20.dts b/trunk/arch/arm/boot/dts/usb_a9g20.dts index f04b535477f5..3b3c4e0fa79f 100644 --- a/trunk/arch/arm/boot/dts/usb_a9g20.dts +++ b/trunk/arch/arm/boot/dts/usb_a9g20.dts @@ -13,13 +13,24 @@ compatible = "calao,usb-a9g20", "atmel,at91sam9g20", "atmel,at91sam9"; chosen { - bootargs = "mem=64M console=ttyS0,115200 mtdparts=atmel_nand:128k(at91bootstrap),256k(barebox)ro,128k(bareboxenv),128k(bareboxenv2),4M(kernel),120M(rootfs),-(data) root=/dev/mtdblock5 rw rootfstype=ubifs"; + bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs"; }; memory@20000000 { 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 { @@ -30,6 +41,90 @@ 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/trunk/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/trunk/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi new file mode 100644 index 000000000000..16076e2d0934 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/vexpress-v2m.dtsi b/trunk/arch/arm/boot/dts/vexpress-v2m.dtsi new file mode 100644 index 000000000000..a6c9c7c82d53 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/trunk/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts new file mode 100644 index 000000000000..941b161ab78c --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/trunk/arch/arm/boot/dts/vexpress-v2p-ca5s.dts new file mode 100644 index 000000000000..6905e66d4748 --- /dev/null +++ b/trunk/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/trunk/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/trunk/arch/arm/boot/dts/vexpress-v2p-ca9.dts new file mode 100644 index 000000000000..da778693be54 --- /dev/null +++ b/trunk/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/trunk/arch/arm/common/Kconfig b/trunk/arch/arm/common/Kconfig index 81a933eb0903..3bb1d7589bd9 100644 --- a/trunk/arch/arm/common/Kconfig +++ b/trunk/arch/arm/common/Kconfig @@ -35,9 +35,6 @@ config DMABOUNCE bool select ZONE_DMA -config TIMER_ACORN - bool - config SHARP_LOCOMO bool diff --git a/trunk/arch/arm/common/Makefile b/trunk/arch/arm/common/Makefile index 6ea9b6f3607a..69feafe7286c 100644 --- a/trunk/arch/arm/common/Makefile +++ b/trunk/arch/arm/common/Makefile @@ -9,7 +9,6 @@ obj-$(CONFIG_PL330) += pl330.o obj-$(CONFIG_SA1111) += sa1111.o obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o obj-$(CONFIG_DMABOUNCE) += dmabounce.o -obj-$(CONFIG_TIMER_ACORN) += time-acorn.o obj-$(CONFIG_SHARP_LOCOMO) += locomo.o obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o obj-$(CONFIG_SHARP_SCOOP) += scoop.o diff --git a/trunk/arch/arm/common/sa1111.c b/trunk/arch/arm/common/sa1111.c index 61691cdbdcf2..9173d112ea01 100644 --- a/trunk/arch/arm/common/sa1111.c +++ b/trunk/arch/arm/common/sa1111.c @@ -16,6 +16,7 @@ */ #include #include +#include #include #include #include @@ -28,9 +29,8 @@ #include #include -#include -#include #include +#include #include #include @@ -86,8 +86,10 @@ #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 __init sa1110_mb_enable(void); +extern void sa1110_mb_enable(void); +extern void sa1110_mb_disable(void); /* * We keep the following data for the overall SA1111. Note that the @@ -104,6 +106,7 @@ struct sa1111 { 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 @@ -118,6 +121,7 @@ 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]; }; @@ -126,6 +130,7 @@ static struct sa1111_dev_info sa1111_devices[] = { { .offset = SA1111_USB, .skpcr_mask = SKPCR_UCLKEN, + .dma = true, .devid = SA1111_DEVID_USB, .irq = { IRQ_USBPWR, @@ -139,6 +144,7 @@ static struct sa1111_dev_info sa1111_devices[] = { { .offset = 0x0600, .skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN, + .dma = true, .devid = SA1111_DEVID_SAC, .irq = { AUDXMTDMADONEA, @@ -155,7 +161,7 @@ static struct sa1111_dev_info sa1111_devices[] = { { .offset = SA1111_KBD, .skpcr_mask = SKPCR_PTCLKEN, - .devid = SA1111_DEVID_PS2, + .devid = SA1111_DEVID_PS2_KBD, .irq = { IRQ_TPRXINT, IRQ_TPTXINT @@ -164,7 +170,7 @@ static struct sa1111_dev_info sa1111_devices[] = { { .offset = SA1111_MSE, .skpcr_mask = SKPCR_PMCLKEN, - .devid = SA1111_DEVID_PS2, + .devid = SA1111_DEVID_PS2_MSE, .irq = { IRQ_MSRXINT, IRQ_MSTXINT @@ -434,16 +440,28 @@ static struct irq_chip sa1111_high_chip = { .irq_set_wake = sa1111_wake_highirq, }; -static void sa1111_setup_irq(struct sa1111 *sachip) +static int sa1111_setup_irq(struct sa1111 *sachip, unsigned irq_base) { void __iomem *irqbase = sachip->base + SA1111_INTC; - unsigned int irq; + 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); @@ -463,14 +481,16 @@ static void sa1111_setup_irq(struct sa1111 *sachip) sa1111_writel(~0, irqbase + SA1111_INTSTATCLR0); sa1111_writel(~0, irqbase + SA1111_INTSTATCLR1); - for (irq = IRQ_GPAIN0; irq <= SSPROR; irq++) { + 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 (irq = AUDXMTDMADONEA; irq <= IRQ_S1_BVD1_STSCHG; irq++) { + 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); @@ -483,6 +503,11 @@ static void sa1111_setup_irq(struct sa1111 *sachip) 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; } /* @@ -581,41 +606,10 @@ sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac, } #endif -#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); -} -#endif - static void sa1111_dev_release(struct device *_dev) { struct sa1111_dev *dev = SA1111_DEV(_dev); - release_resource(&dev->res); kfree(dev); } @@ -624,67 +618,58 @@ 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 out; + 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->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask; 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; - memmove(dev->irq, info->irq, sizeof(dev->irq)); - - ret = request_resource(parent, &dev->res); - if (ret) { - printk("SA1111: failed to allocate resource for %s\n", - dev->res.name); - dev_set_name(&dev->dev, NULL); - kfree(dev); - goto out; - } - - ret = device_register(&dev->dev); - if (ret) { - release_resource(&dev->res); - kfree(dev); - goto out; - } + for (i = 0; i < ARRAY_SIZE(info->irq); i++) + dev->irq[i] = sachip->irq_base + info->irq[i]; -#ifdef CONFIG_DMABOUNCE /* - * If the parent device has a DMA mask associated with it, - * propagate it down to the children. + * If the parent device has a DMA mask associated with it, and + * this child supports DMA, propagate it down to the children. */ - if (sachip->dev->dma_mask) { + 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; + } - if (dev->dma_mask != 0xffffffffUL) { - ret = dmabounce_register_dev(&dev->dev, 1024, 4096, - sa1111_needs_bounce); - if (ret) { - dev_err(&dev->dev, "SA1111: Failed to register" - " with dmabounce\n"); - device_unregister(&dev->dev); - } - } + 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; } -#endif -out: + 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; } @@ -698,16 +683,21 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, * 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; @@ -727,6 +717,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) sachip->dev = me; dev_set_drvdata(sachip->dev, sachip); + sachip->pdata = pd; sachip->phys = mem->start; sachip->irq = irq; @@ -759,6 +750,16 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) */ 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; @@ -789,24 +790,14 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) } #endif - /* - * The interrupt controller must be initialised before any - * other device to ensure that the interrupts are available. - */ - if (sachip->irq != NO_IRQ) - sa1111_setup_irq(sachip); - g_sa1111 = sachip; has_devs = ~0; - if (machine_is_assabet() || machine_is_jornada720() || - machine_is_badge4()) - has_devs &= ~(1 << 4); - else - has_devs &= ~(1 << 1); + if (pd) + has_devs &= ~pd->disable_devs; for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++) - if (has_devs & (1 << i)) + if (sa1111_devices[i].devid & has_devs) sa1111_init_one_child(sachip, mem, &sa1111_devices[i]); return 0; @@ -824,7 +815,10 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) static int sa1111_remove_one(struct device *dev, void *data) { - device_unregister(dev); + struct sa1111_dev *sadev = SA1111_DEV(dev); + device_del(&sadev->dev); + release_resource(&sadev->res); + put_device(&sadev->dev); return 0; } @@ -846,6 +840,7 @@ static void __sa1111_remove(struct sa1111 *sachip) 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); } @@ -904,6 +899,9 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state) 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); @@ -919,13 +917,15 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state) */ val = sa1111_readl(sachip->base + SA1111_SKCR); sa1111_writel(val | SKCR_SLEEP, sachip->base + SA1111_SKCR); - sa1111_writel(0, sachip->base + SA1111_SKPWM0); - sa1111_writel(0, sachip->base + SA1111_SKPWM1); clk_disable(sachip->clk); spin_unlock_irqrestore(&sachip->lock, flags); +#ifdef CONFIG_ARCH_SA1100 + sa1110_mb_disable(); +#endif + return 0; } @@ -966,6 +966,11 @@ static int sa1111_resume(struct platform_device *dev) */ 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! @@ -1053,6 +1058,7 @@ static struct platform_driver sa1111_device_driver = { .resume = sa1111_resume, .driver = { .name = "sa1111", + .owner = THIS_MODULE, }, }; @@ -1238,16 +1244,23 @@ EXPORT_SYMBOL(sa1111_set_sleep_io); * sa1111_enable_device - enable an on-chip SA1111 function block * @sadev: SA1111 function block device to enable */ -void sa1111_enable_device(struct sa1111_dev *sadev) +int sa1111_enable_device(struct sa1111_dev *sadev) { struct sa1111 *sachip = sa1111_chip_driver(sadev); unsigned long flags; unsigned int val; + int 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); + 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); @@ -1265,6 +1278,9 @@ void sa1111_disable_device(struct sa1111_dev *sadev) 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); @@ -1279,7 +1295,7 @@ 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; + return dev->devid & drv->devid; } static int sa1111_bus_suspend(struct device *dev, pm_message_t state) @@ -1304,6 +1320,14 @@ static int sa1111_bus_resume(struct device *dev) 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); @@ -1333,6 +1357,7 @@ struct bus_type sa1111_bus_type = { .remove = sa1111_bus_remove, .suspend = sa1111_bus_suspend, .resume = sa1111_bus_resume, + .shutdown = sa1111_bus_shutdown, }; EXPORT_SYMBOL(sa1111_bus_type); @@ -1349,9 +1374,70 @@ void sa1111_driver_unregister(struct sa1111_driver *driver) } 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; @@ -1360,6 +1446,9 @@ static int __init sa1111_init(void) 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); } diff --git a/trunk/arch/arm/common/timer-sp.c b/trunk/arch/arm/common/timer-sp.c index 8794a34eae61..df13a3ffff35 100644 --- a/trunk/arch/arm/common/timer-sp.c +++ b/trunk/arch/arm/common/timer-sp.c @@ -26,6 +26,7 @@ #include #include +#include #include static long __init sp804_get_clock_rate(const char *name) @@ -67,7 +68,16 @@ static long __init sp804_get_clock_rate(const char *name) return rate; } -void __init sp804_clocksource_init(void __iomem *base, const char *name) +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); @@ -83,6 +93,11 @@ void __init sp804_clocksource_init(void __iomem *base, const char *name) 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); + } } diff --git a/trunk/arch/arm/common/via82c505.c b/trunk/arch/arm/common/via82c505.c index 67dd2affc57a..1171a5010aea 100644 --- a/trunk/arch/arm/common/via82c505.c +++ b/trunk/arch/arm/common/via82c505.c @@ -6,7 +6,6 @@ #include #include -#include #include diff --git a/trunk/arch/arm/configs/at91cap9_defconfig b/trunk/arch/arm/configs/at91cap9_defconfig deleted file mode 100644 index 8826eb218e73..000000000000 --- a/trunk/arch/arm/configs/at91cap9_defconfig +++ /dev/null @@ -1,108 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_BLK_DEV_INITRD=y -CONFIG_SLAB=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_BLK_DEV_BSG is not set -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set -CONFIG_ARCH_AT91=y -CONFIG_ARCH_AT91CAP9=y -CONFIG_MACH_AT91CAP9ADK=y -CONFIG_MTD_AT91_DATAFLASH_CARD=y -CONFIG_AT91_PROGRAMMABLE_CLOCKS=y -# CONFIG_ARM_THUMB is not set -CONFIG_AEABI=y -CONFIG_LEDS=y -CONFIG_LEDS_CPU=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 rw" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_BEET is not set -# CONFIG_INET_LRO is not set -# CONFIG_INET_DIAG is not set -# CONFIG_IPV6 is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_CFI=y -CONFIG_MTD_JEDECPROBE=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=y -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_FB=y -CONFIG_FB_ATMEL=y -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_CLUT224 is not set -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_DEVICEFS=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_MMC=y -CONFIG_MMC_AT91=m -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_AT91SAM9=y -CONFIG_EXT2_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_CRAMFS=y -CONFIG_NFS_FS=y -CONFIG_ROOT_NFS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_USER=y diff --git a/trunk/arch/arm/configs/at91sam9g20_defconfig b/trunk/arch/arm/configs/at91sam9g20_defconfig index 9123568d9a8d..994d331b2319 100644 --- a/trunk/arch/arm/configs/at91sam9g20_defconfig +++ b/trunk/arch/arm/configs/at91sam9g20_defconfig @@ -74,6 +74,8 @@ CONFIG_LEGACY_PTY_COUNT=16 CONFIG_SERIAL_ATMEL=y CONFIG_SERIAL_ATMEL_CONSOLE=y CONFIG_HW_RANDOM=y +CONFIG_I2C=y +CONFIG_I2C_GPIO=y CONFIG_SPI=y CONFIG_SPI_ATMEL=y CONFIG_SPI_SPIDEV=y @@ -105,6 +107,7 @@ CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_RV3029C2=y CONFIG_RTC_DRV_AT91SAM9=y CONFIG_EXT2_FS=y CONFIG_MSDOS_FS=y diff --git a/trunk/arch/arm/configs/imx_v4_v5_defconfig b/trunk/arch/arm/configs/imx_v4_v5_defconfig index a22e93079063..b5ac644e12af 100644 --- a/trunk/arch/arm/configs/imx_v4_v5_defconfig +++ b/trunk/arch/arm/configs/imx_v4_v5_defconfig @@ -45,6 +45,7 @@ CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE_XP=y CONFIG_PM_DEBUG=y CONFIG_NET=y +CONFIG_SMSC911X=y CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_INET=y @@ -68,6 +69,7 @@ CONFIG_MTD_CFI=y CONFIG_MTD_CFI_ADV_OPTIONS=y CONFIG_MTD_CFI_GEOMETRY=y # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y # CONFIG_MTD_CFI_I2 is not set CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_PHYSMAP=y @@ -78,6 +80,8 @@ CONFIG_MISC_DEVICES=y CONFIG_EEPROM_AT24=y CONFIG_EEPROM_AT25=y CONFIG_NETDEVICES=y +CONFIG_CS89x0=y +CONFIG_CS89x0_PLATFORM=y CONFIG_DM9000=y CONFIG_SMC91X=y CONFIG_SMC911X=y @@ -115,6 +119,21 @@ CONFIG_FB_IMX=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_LCD_L4F00242T03=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L2_COMMON=y +CONFIG_VIDEO_MEDIA=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_CONTIG=y +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEO_CAPTURE_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=y +CONFIG_SOC_CAMERA_OV2640=y +CONFIG_VIDEO_MX2_HOSTSUPPORT=y +CONFIG_VIDEO_MX2=y CONFIG_BACKLIGHT_PWM=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FONTS=y diff --git a/trunk/arch/arm/configs/imx_v6_v7_defconfig b/trunk/arch/arm/configs/imx_v6_v7_defconfig index 3a4fb2e5fc68..dc6f6411bbf5 100644 --- a/trunk/arch/arm/configs/imx_v6_v7_defconfig +++ b/trunk/arch/arm/configs/imx_v6_v7_defconfig @@ -5,6 +5,7 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=18 CONFIG_CGROUPS=y CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y CONFIG_EXPERT=y # CONFIG_SLUB_DEBUG is not set # CONFIG_COMPAT_BRK is not set @@ -12,7 +13,6 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y -# CONFIG_LBDAF is not set # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_MXC=y CONFIG_MACH_MX31LILLY=y @@ -26,7 +26,6 @@ CONFIG_MACH_ARMADILLO5X0=y CONFIG_MACH_KZM_ARM11_01=y CONFIG_MACH_PCM043=y CONFIG_MACH_MX35_3DS=y -CONFIG_MACH_EUKREA_CPUIMX35=y CONFIG_MACH_VPR200=y CONFIG_MACH_IMX51_DT=y CONFIG_MACH_MX51_3DS=y @@ -82,8 +81,9 @@ CONFIG_PATA_IMX=y CONFIG_NETDEVICES=y # CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_CHELSIO is not set +CONFIG_CS89x0=y +CONFIG_CS89x0_PLATFORM=y # CONFIG_NET_VENDOR_FARADAY is not set -CONFIG_FEC=y # CONFIG_NET_VENDOR_INTEL is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MICREL is not set @@ -126,7 +126,40 @@ CONFIG_WATCHDOG=y CONFIG_IMX2_WDT=y CONFIG_MFD_MC13XXX=y CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_MC13783=y CONFIG_REGULATOR_MC13892=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L2_COMMON=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEO_CAPTURE_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=y +CONFIG_SOC_CAMERA_OV2640=y +CONFIG_MX3_VIDEO=y +CONFIG_VIDEO_MX3=y +CONFIG_FB=y +CONFIG_FB_MX3=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_LCD_L4F00242T03=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_MXC=y diff --git a/trunk/arch/arm/configs/lpc32xx_defconfig b/trunk/arch/arm/configs/lpc32xx_defconfig new file mode 100644 index 000000000000..fb2088171ca9 --- /dev/null +++ b/trunk/arch/arm/configs/lpc32xx_defconfig @@ -0,0 +1,145 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_EMBEDDED=y +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_ARCH_LPC32XX=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttyS0,115200n81 root=/dev/ram0" +CONFIG_CPU_IDLE=y +CONFIG_FPE_NWFPE=y +CONFIG_VFP=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_AOUT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_FW_LOADER is not set +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_MISC_DEVICES=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_PHYLIB=y +CONFIG_SMSC_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_LPC32XX=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_PNX=y +CONFIG_SPI=y +CONFIG_SPI_PL022=y +CONFIG_GPIO_SYSFS=y +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_PNX4008_WATCHDOG=y +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_VERBOSE_PROCFS is not set +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_SOC=y +# CONFIG_HID_SUPPORT is not set +CONFIG_USB=y +CONFIG_USB_STORAGE=y +CONFIG_USB_LIBUSUAL=y +CONFIG_MMC=y +# CONFIG_MMC_BLOCK_BOUNCE is not set +CONFIG_MMC_ARMMMCI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_LPC32XX=y +CONFIG_EXT2_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +CONFIG_CRAMFS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEBUG_INFO=y +# CONFIG_FTRACE is not set +# CONFIG_ARM_UNWIND is not set +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y +CONFIG_CRYPTO_ANSI_CPRNG=y +# CONFIG_CRYPTO_HW is not set +CONFIG_CRC_CCITT=y diff --git a/trunk/arch/arm/configs/magician_defconfig b/trunk/arch/arm/configs/magician_defconfig index 443675d317e6..a691ef4c6008 100644 --- a/trunk/arch/arm/configs/magician_defconfig +++ b/trunk/arch/arm/configs/magician_defconfig @@ -101,7 +101,7 @@ CONFIG_MFD_ASIC3=y CONFIG_HTC_EGPIO=y CONFIG_HTC_PASIC3=y CONFIG_REGULATOR=y -CONFIG_REGULATOR_BQ24022=y +CONFIG_REGULATOR_GPIO=y CONFIG_FB=y CONFIG_FB_PXA=y CONFIG_FB_PXA_OVERLAY=y diff --git a/trunk/arch/arm/configs/mini2440_defconfig b/trunk/arch/arm/configs/mini2440_defconfig index 2472a9585834..42da9183acc8 100644 --- a/trunk/arch/arm/configs/mini2440_defconfig +++ b/trunk/arch/arm/configs/mini2440_defconfig @@ -13,7 +13,7 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set CONFIG_BLK_DEV_INTEGRITY=y -CONFIG_ARCH_S3C2410=y +CONFIG_ARCH_S3C24XX=y CONFIG_S3C_ADC=y CONFIG_S3C24XX_PWM=y CONFIG_MACH_MINI2440=y diff --git a/trunk/arch/arm/configs/mxs_defconfig b/trunk/arch/arm/configs/mxs_defconfig index 6ee781bf6bf1..1ebbf451c48d 100644 --- a/trunk/arch/arm/configs/mxs_defconfig +++ b/trunk/arch/arm/configs/mxs_defconfig @@ -77,10 +77,10 @@ CONFIG_DEVPTS_MULTIPLE_INSTANCES=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y # CONFIG_HW_RANDOM is not set -CONFIG_I2C=m +CONFIG_I2C=y # CONFIG_I2C_COMPAT is not set -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_MXS=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MXS=y CONFIG_SPI=y CONFIG_SPI_GPIO=m CONFIG_DEBUG_GPIO=y @@ -90,6 +90,20 @@ CONFIG_GPIO_SYSFS=y CONFIG_DISPLAY_SUPPORT=m # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_JACK=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_ARM=y +CONFIG_SND_SOC=y +CONFIG_SND_MXS_SOC=y +CONFIG_SND_SOC_MXS_SGTL5000=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_SGTL5000=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_MMC=y CONFIG_MMC_MXS=y CONFIG_RTC_CLASS=y diff --git a/trunk/arch/arm/configs/s3c2410_defconfig b/trunk/arch/arm/configs/s3c2410_defconfig index f9096c1b0a65..193448f31284 100644 --- a/trunk/arch/arm/configs/s3c2410_defconfig +++ b/trunk/arch/arm/configs/s3c2410_defconfig @@ -3,40 +3,47 @@ CONFIG_SYSVIPC=y CONFIG_IKCONFIG=m CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=16 -CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_BLK_DEV_INITRD=y CONFIG_SLAB=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_S3C2410=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_ARCH_S3C24XX=y CONFIG_S3C_BOOT_ERROR_RESET=y CONFIG_S3C_ADC=y CONFIG_S3C24XX_PWM=y -CONFIG_ARCH_SMDK2410=y +CONFIG_CPU_S3C2412=y +CONFIG_CPU_S3C2416=y +CONFIG_CPU_S3C2440=y +CONFIG_CPU_S3C2442=y +CONFIG_CPU_S3C2443=y +CONFIG_MACH_AML_M5900=y +CONFIG_ARCH_BAST=y CONFIG_ARCH_H1940=y CONFIG_MACH_N30=y -CONFIG_ARCH_BAST=y CONFIG_MACH_OTOM=y -CONFIG_MACH_AML_M5900=y +CONFIG_MACH_QT2410=y +CONFIG_ARCH_SMDK2410=y CONFIG_MACH_TCT_HAMMER=y CONFIG_MACH_VR1000=y -CONFIG_MACH_QT2410=y CONFIG_MACH_JIVE=y CONFIG_MACH_SMDK2412=y CONFIG_MACH_VSTMS=y CONFIG_MACH_SMDK2416=y CONFIG_MACH_ANUBIS=y -CONFIG_MACH_NEO1973_GTA02=y +CONFIG_MACH_AT2440EVB=y +CONFIG_MACH_MINI2440=y +CONFIG_MACH_NEXCODER_2440=y CONFIG_MACH_OSIRIS=y CONFIG_MACH_OSIRIS_DVS=m CONFIG_MACH_RX3715=y CONFIG_ARCH_S3C2440=y -CONFIG_MACH_NEXCODER_2440=y -CONFIG_SMDK2440_CPU2442=y -CONFIG_MACH_AT2440EVB=y -CONFIG_MACH_MINI2440=y +CONFIG_MACH_NEO1973_GTA02=y CONFIG_MACH_RX1950=y +CONFIG_SMDK2440_CPU2442=y CONFIG_MACH_SMDK2443=y # CONFIG_ARM_THUMB is not set CONFIG_ZBOOT_ROM_TEXT=0x0 @@ -45,7 +52,6 @@ CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0" CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE_XP=y CONFIG_BINFMT_AOUT=y -CONFIG_PM=y CONFIG_APM_EMULATION=m CONFIG_NET=y CONFIG_PACKET=y @@ -58,7 +64,6 @@ CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m @@ -80,7 +85,6 @@ CONFIG_IPV6_MIP6=m CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m CONFIG_IPV6_TUNNEL=m CONFIG_NETFILTER=y -CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NF_CONNTRACK=m CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CT_PROTO_DCCP=m @@ -138,7 +142,6 @@ CONFIG_IP_VS=m CONFIG_NF_CONNTRACK_IPV4=m CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_TTL=m @@ -150,7 +153,6 @@ CONFIG_NF_NAT=m CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_IP_NF_MANGLE=m CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m @@ -177,8 +179,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m @@ -199,7 +199,6 @@ CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_MTD=y -CONFIG_MTD_PARTITIONS=y CONFIG_MTD_REDBOOT_PARTS=y CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y CONFIG_MTD_CMDLINE_PARTS=y @@ -221,9 +220,6 @@ CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_UB=m CONFIG_BLK_DEV_RAM=y CONFIG_ATA_OVER_ETH=m -CONFIG_EEPROM_AT25=m -CONFIG_EEPROM_LEGACY=m -CONFIG_EEPROM_93CX6=m CONFIG_IDE=y CONFIG_BLK_DEV_IDECD=y CONFIG_BLK_DEV_IDETAPE=m @@ -240,7 +236,6 @@ CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y CONFIG_NETDEVICES=y -CONFIG_NET_ETHERNET=y CONFIG_DM9000=y CONFIG_INPUT_EVDEV=y CONFIG_MOUSE_APPLETOUCH=m @@ -274,7 +269,6 @@ CONFIG_JOYSTICK_XPAD_LEDS=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=m CONFIG_INPUT_MISC=y -CONFIG_INPUT_ATI_REMOTE=m CONFIG_INPUT_ATI_REMOTE2=m CONFIG_INPUT_KEYSPAN_REMOTE=m CONFIG_INPUT_POWERMATE=m @@ -300,7 +294,6 @@ CONFIG_I2C_SIMTEC=y CONFIG_SPI=y CONFIG_SPI_GPIO=m CONFIG_SPI_S3C24XX=m -CONFIG_SPI_S3C24XX_GPIO=m CONFIG_SPI_SPIDEV=m CONFIG_SPI_TLE62X0=m CONFIG_SENSORS_LM75=m @@ -315,7 +308,6 @@ CONFIG_FB_MODE_HELPERS=y CONFIG_FB_S3C2410=y CONFIG_FB_SM501=y CONFIG_BACKLIGHT_PWM=m -# CONFIG_VGA_CONSOLE is not set CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_SOUND=y CONFIG_SND=y @@ -330,10 +322,6 @@ CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_CAIAQ=m CONFIG_SND_SOC=y -CONFIG_SND_S3C24XX_SOC=y -CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m -CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m -CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m # CONFIG_USB_HID is not set CONFIG_USB=y CONFIG_USB_DEVICEFS=y @@ -387,9 +375,7 @@ CONFIG_MMC_TEST=m CONFIG_MMC_SDHCI=m CONFIG_MMC_SPI=m CONFIG_MMC_S3C=y -CONFIG_LEDS_CLASS=m CONFIG_LEDS_S3C24XX=m -CONFIG_LEDS_H1940=m CONFIG_LEDS_PCA9532=m CONFIG_LEDS_GPIO=m CONFIG_LEDS_PCA955X=m @@ -410,8 +396,6 @@ CONFIG_EXT3_FS=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT4_FS=m CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_INOTIFY=y -CONFIG_AUTOFS_FS=m CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=m CONFIG_ISO9660_FS=y @@ -436,9 +420,6 @@ CONFIG_NFSD=m CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_CIFS=m -CONFIG_PARTITION_ADVANCED=y -CONFIG_BSD_DISKLABEL=y -CONFIG_SOLARIS_X86_PARTITION=y CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_737=m CONFIG_NLS_CODEPAGE_775=m @@ -481,9 +462,7 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_INFO=y -# CONFIG_RCU_CPU_STALL_DETECTOR is not set CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_DEBUG_USER=y -CONFIG_DEBUG_ERRORS=y CONFIG_DEBUG_LL=y # CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/trunk/arch/arm/configs/tct_hammer_defconfig b/trunk/arch/arm/configs/tct_hammer_defconfig index 95c0f0d63db6..1d24f8458bef 100644 --- a/trunk/arch/arm/configs/tct_hammer_defconfig +++ b/trunk/arch/arm/configs/tct_hammer_defconfig @@ -14,7 +14,7 @@ CONFIG_SLOB=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_S3C2410=y +CONFIG_ARCH_S3C24XX=y CONFIG_MACH_TCT_HAMMER=y CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 diff --git a/trunk/arch/arm/configs/tegra_defconfig b/trunk/arch/arm/configs/tegra_defconfig index fd5d3041d717..351d6708c3ae 100644 --- a/trunk/arch/arm/configs/tegra_defconfig +++ b/trunk/arch/arm/configs/tegra_defconfig @@ -11,11 +11,14 @@ CONFIG_RT_GROUP_SCHED=y CONFIG_BLK_DEV_INITRD=y # CONFIG_ELF_CORE is not set CONFIG_EMBEDDED=y +CONFIG_PERF_EVENTS=y CONFIG_SLAB=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_EFI_PARTITION=y # CONFIG_IOSCHED_DEADLINE is not set # CONFIG_IOSCHED_CFQ is not set CONFIG_ARCH_TEGRA=y @@ -27,18 +30,20 @@ CONFIG_MACH_PAZ00=y CONFIG_MACH_TRIMSLICE=y CONFIG_MACH_WARIO=y CONFIG_MACH_VENTANA=y -CONFIG_TEGRA_DEBUG_UARTD=y -CONFIG_ARM_ERRATA_742230=y +CONFIG_TEGRA_EMC_SCALING_ENABLE=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_SMP=y -CONFIG_NR_CPUS=2 CONFIG_PREEMPT=y CONFIG_AEABI=y # CONFIG_OABI_COMPAT is not set CONFIG_HIGHMEM=y CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_AUTO_ZRELADDR=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_CPU_IDLE=y CONFIG_VFP=y CONFIG_NET=y CONFIG_PACKET=y @@ -68,7 +73,6 @@ CONFIG_IPV6_MULTIPLE_TABLES=y # CONFIG_FIRMWARE_IN_KERNEL is not set CONFIG_PROC_DEVICETREE=y CONFIG_BLK_DEV_LOOP=y -CONFIG_MISC_DEVICES=y CONFIG_AD525X_DPOT=y CONFIG_AD525X_DPOT_I2C=y CONFIG_ICS932S401=y @@ -76,6 +80,7 @@ CONFIG_APDS9802ALS=y CONFIG_ISL29003=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y # CONFIG_SCSI_LOWLEVEL is not set CONFIG_NETDEVICES=y CONFIG_DUMMY=y @@ -85,8 +90,7 @@ CONFIG_USB_USBNET=y CONFIG_USB_NET_SMSC75XX=y CONFIG_USB_NET_SMSC95XX=y # CONFIG_WLAN is not set -# CONFIG_INPUT is not set -# CONFIG_SERIO is not set +CONFIG_INPUT_EVDEV=y # CONFIG_VT is not set # CONFIG_LEGACY_PTYS is not set # CONFIG_DEVKMEM is not set @@ -96,13 +100,15 @@ CONFIG_SERIAL_OF_PLATFORM=y # CONFIG_HW_RANDOM is not set CONFIG_I2C=y # CONFIG_I2C_COMPAT is not set -# CONFIG_I2C_HELPER_AUTO is not set CONFIG_I2C_TEGRA=y CONFIG_SPI=y CONFIG_SPI_TEGRA=y CONFIG_SENSORS_LM90=y CONFIG_MFD_TPS6586X=y CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_GPIO=y CONFIG_REGULATOR_TPS6586X=y CONFIG_SOUND=y CONFIG_SND=y @@ -116,11 +122,13 @@ CONFIG_SND_SOC=y CONFIG_SND_SOC_TEGRA=y CONFIG_SND_SOC_TEGRA_WM8903=y CONFIG_SND_SOC_TEGRA_TRIMSLICE=y +CONFIG_SND_SOC_TEGRA_ALC5632=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_TEGRA=y CONFIG_USB_STORAGE=y CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=16 CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_TEGRA=y @@ -130,6 +138,11 @@ CONFIG_STAGING=y CONFIG_IIO=y CONFIG_SENSORS_ISL29018=y CONFIG_SENSORS_AK8975=y +CONFIG_MFD_NVEC=y +CONFIG_KEYBOARD_NVEC=y +CONFIG_SERIO_NVEC_PS2=y +CONFIG_TEGRA_IOMMU_GART=y +CONFIG_TEGRA_IOMMU_SMMU=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y @@ -138,13 +151,12 @@ CONFIG_EXT3_FS=y # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y # CONFIG_DNOTIFY is not set CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_NFS_FS=y CONFIG_ROOT_NFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_EFI_PARTITION=y CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ISO8859_1=y CONFIG_PRINTK_TIME=y @@ -162,9 +174,8 @@ CONFIG_DEBUG_SG=y CONFIG_DEBUG_LL=y CONFIG_EARLY_PRINTK=y CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_TWOFISH=y # CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DEV_TEGRA_AES=y CONFIG_CRC_CCITT=y -CONFIG_CRC16=y diff --git a/trunk/arch/arm/configs/u8500_defconfig b/trunk/arch/arm/configs/u8500_defconfig index 2d7b6e7b7271..889d73ac1ae1 100644 --- a/trunk/arch/arm/configs/u8500_defconfig +++ b/trunk/arch/arm/configs/u8500_defconfig @@ -13,6 +13,7 @@ CONFIG_UX500_SOC_DB8500=y CONFIG_MACH_HREFV60=y CONFIG_MACH_SNOWBALL=y CONFIG_MACH_U5500=y +CONFIG_MACH_UX500_DT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_SMP=y diff --git a/trunk/arch/arm/include/asm/atomic.h b/trunk/arch/arm/include/asm/atomic.h index 86976d034382..68374ba6a943 100644 --- a/trunk/arch/arm/include/asm/atomic.h +++ b/trunk/arch/arm/include/asm/atomic.h @@ -13,7 +13,9 @@ #include #include -#include +#include +#include +#include #define ATOMIC_INIT(i) { (i) } diff --git a/trunk/arch/arm/include/asm/barrier.h b/trunk/arch/arm/include/asm/barrier.h new file mode 100644 index 000000000000..44f4a09ff37b --- /dev/null +++ b/trunk/arch/arm/include/asm/barrier.h @@ -0,0 +1,69 @@ +#ifndef __ASM_BARRIER_H +#define __ASM_BARRIER_H + +#ifndef __ASSEMBLY__ + +#define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); + +#if __LINUX_ARM_ARCH__ >= 7 || \ + (__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K)) +#define sev() __asm__ __volatile__ ("sev" : : : "memory") +#define wfe() __asm__ __volatile__ ("wfe" : : : "memory") +#define wfi() __asm__ __volatile__ ("wfi" : : : "memory") +#endif + +#if __LINUX_ARM_ARCH__ >= 7 +#define isb() __asm__ __volatile__ ("isb" : : : "memory") +#define dsb() __asm__ __volatile__ ("dsb" : : : "memory") +#define dmb() __asm__ __volatile__ ("dmb" : : : "memory") +#elif defined(CONFIG_CPU_XSC3) || __LINUX_ARM_ARCH__ == 6 +#define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ + : : "r" (0) : "memory") +#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ + : : "r" (0) : "memory") +#define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ + : : "r" (0) : "memory") +#elif defined(CONFIG_CPU_FA526) +#define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ + : : "r" (0) : "memory") +#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ + : : "r" (0) : "memory") +#define dmb() __asm__ __volatile__ ("" : : : "memory") +#else +#define isb() __asm__ __volatile__ ("" : : : "memory") +#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ + : : "r" (0) : "memory") +#define dmb() __asm__ __volatile__ ("" : : : "memory") +#endif + +#ifdef CONFIG_ARCH_HAS_BARRIERS +#include +#elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP) +#include +#define mb() do { dsb(); outer_sync(); } while (0) +#define rmb() dsb() +#define wmb() mb() +#else +#include +#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) +#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) +#define wmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) +#endif + +#ifndef CONFIG_SMP +#define smp_mb() barrier() +#define smp_rmb() barrier() +#define smp_wmb() barrier() +#else +#define smp_mb() dmb() +#define smp_rmb() dmb() +#define smp_wmb() dmb() +#endif + +#define read_barrier_depends() do { } while(0) +#define smp_read_barrier_depends() do { } while(0) + +#define set_mb(var, value) do { var = value; smp_mb(); } while (0) + +#endif /* !__ASSEMBLY__ */ +#endif /* __ASM_BARRIER_H */ diff --git a/trunk/arch/arm/include/asm/bitops.h b/trunk/arch/arm/include/asm/bitops.h index f7419ef9c8f9..e691ec91e4d3 100644 --- a/trunk/arch/arm/include/asm/bitops.h +++ b/trunk/arch/arm/include/asm/bitops.h @@ -24,7 +24,7 @@ #endif #include -#include +#include #define smp_mb__before_clear_bit() smp_mb() #define smp_mb__after_clear_bit() smp_mb() diff --git a/trunk/arch/arm/include/asm/bug.h b/trunk/arch/arm/include/asm/bug.h index fac79dceb736..7af5c6c3653a 100644 --- a/trunk/arch/arm/include/asm/bug.h +++ b/trunk/arch/arm/include/asm/bug.h @@ -1,6 +1,7 @@ #ifndef _ASMARM_BUG_H #define _ASMARM_BUG_H +#include #ifdef CONFIG_BUG @@ -57,4 +58,33 @@ do { \ #include +struct pt_regs; +void die(const char *msg, struct pt_regs *regs, int err); + +struct siginfo; +void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, + unsigned long err, unsigned long trap); + +#ifdef CONFIG_ARM_LPAE +#define FAULT_CODE_ALIGNMENT 33 +#define FAULT_CODE_DEBUG 34 +#else +#define FAULT_CODE_ALIGNMENT 1 +#define FAULT_CODE_DEBUG 2 +#endif + +void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, + struct pt_regs *), + int sig, int code, const char *name); + +void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, + struct pt_regs *), + int sig, int code, const char *name); + +extern asmlinkage void c_backtrace(unsigned long fp, int pmode); + +struct mm_struct; +extern void show_pte(struct mm_struct *mm, unsigned long addr); +extern void __show_regs(struct pt_regs *); + #endif diff --git a/trunk/arch/arm/include/asm/cmpxchg.h b/trunk/arch/arm/include/asm/cmpxchg.h new file mode 100644 index 000000000000..d41d7cbf0ada --- /dev/null +++ b/trunk/arch/arm/include/asm/cmpxchg.h @@ -0,0 +1,295 @@ +#ifndef __ASM_ARM_CMPXCHG_H +#define __ASM_ARM_CMPXCHG_H + +#include +#include + +#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) +/* + * On the StrongARM, "swp" is terminally broken since it bypasses the + * cache totally. This means that the cache becomes inconsistent, and, + * since we use normal loads/stores as well, this is really bad. + * Typically, this causes oopsen in filp_close, but could have other, + * more disastrous effects. There are two work-arounds: + * 1. Disable interrupts and emulate the atomic swap + * 2. Clean the cache, perform atomic swap, flush the cache + * + * We choose (1) since its the "easiest" to achieve here and is not + * dependent on the processor type. + * + * NOTE that this solution won't work on an SMP system, so explcitly + * forbid it here. + */ +#define swp_is_buggy +#endif + +static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) +{ + extern void __bad_xchg(volatile void *, int); + unsigned long ret; +#ifdef swp_is_buggy + unsigned long flags; +#endif +#if __LINUX_ARM_ARCH__ >= 6 + unsigned int tmp; +#endif + + smp_mb(); + + switch (size) { +#if __LINUX_ARM_ARCH__ >= 6 + case 1: + asm volatile("@ __xchg1\n" + "1: ldrexb %0, [%3]\n" + " strexb %1, %2, [%3]\n" + " teq %1, #0\n" + " bne 1b" + : "=&r" (ret), "=&r" (tmp) + : "r" (x), "r" (ptr) + : "memory", "cc"); + break; + case 4: + asm volatile("@ __xchg4\n" + "1: ldrex %0, [%3]\n" + " strex %1, %2, [%3]\n" + " teq %1, #0\n" + " bne 1b" + : "=&r" (ret), "=&r" (tmp) + : "r" (x), "r" (ptr) + : "memory", "cc"); + break; +#elif defined(swp_is_buggy) +#ifdef CONFIG_SMP +#error SMP is not supported on this platform +#endif + case 1: + raw_local_irq_save(flags); + ret = *(volatile unsigned char *)ptr; + *(volatile unsigned char *)ptr = x; + raw_local_irq_restore(flags); + break; + + case 4: + raw_local_irq_save(flags); + ret = *(volatile unsigned long *)ptr; + *(volatile unsigned long *)ptr = x; + raw_local_irq_restore(flags); + break; +#else + case 1: + asm volatile("@ __xchg1\n" + " swpb %0, %1, [%2]" + : "=&r" (ret) + : "r" (x), "r" (ptr) + : "memory", "cc"); + break; + case 4: + asm volatile("@ __xchg4\n" + " swp %0, %1, [%2]" + : "=&r" (ret) + : "r" (x), "r" (ptr) + : "memory", "cc"); + break; +#endif + default: + __bad_xchg(ptr, size), ret = 0; + break; + } + smp_mb(); + + return ret; +} + +#define xchg(ptr,x) \ + ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) + +#include + +#if __LINUX_ARM_ARCH__ < 6 +/* min ARCH < ARMv6 */ + +#ifdef CONFIG_SMP +#error "SMP is not supported on this platform" +#endif + +/* + * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make + * them available. + */ +#define cmpxchg_local(ptr, o, n) \ + ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ + (unsigned long)(n), sizeof(*(ptr)))) +#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) + +#ifndef CONFIG_SMP +#include +#endif + +#else /* min ARCH >= ARMv6 */ + +extern void __bad_cmpxchg(volatile void *ptr, int size); + +/* + * cmpxchg only support 32-bits operands on ARMv6. + */ + +static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) +{ + unsigned long oldval, res; + + switch (size) { +#ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ + case 1: + do { + asm volatile("@ __cmpxchg1\n" + " ldrexb %1, [%2]\n" + " mov %0, #0\n" + " teq %1, %3\n" + " strexbeq %0, %4, [%2]\n" + : "=&r" (res), "=&r" (oldval) + : "r" (ptr), "Ir" (old), "r" (new) + : "memory", "cc"); + } while (res); + break; + case 2: + do { + asm volatile("@ __cmpxchg1\n" + " ldrexh %1, [%2]\n" + " mov %0, #0\n" + " teq %1, %3\n" + " strexheq %0, %4, [%2]\n" + : "=&r" (res), "=&r" (oldval) + : "r" (ptr), "Ir" (old), "r" (new) + : "memory", "cc"); + } while (res); + break; +#endif + case 4: + do { + asm volatile("@ __cmpxchg4\n" + " ldrex %1, [%2]\n" + " mov %0, #0\n" + " teq %1, %3\n" + " strexeq %0, %4, [%2]\n" + : "=&r" (res), "=&r" (oldval) + : "r" (ptr), "Ir" (old), "r" (new) + : "memory", "cc"); + } while (res); + break; + default: + __bad_cmpxchg(ptr, size); + oldval = 0; + } + + return oldval; +} + +static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, + unsigned long new, int size) +{ + unsigned long ret; + + smp_mb(); + ret = __cmpxchg(ptr, old, new, size); + smp_mb(); + + return ret; +} + +#define cmpxchg(ptr,o,n) \ + ((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ + (unsigned long)(o), \ + (unsigned long)(n), \ + sizeof(*(ptr)))) + +static inline unsigned long __cmpxchg_local(volatile void *ptr, + unsigned long old, + unsigned long new, int size) +{ + unsigned long ret; + + switch (size) { +#ifdef CONFIG_CPU_V6 /* min ARCH == ARMv6 */ + case 1: + case 2: + ret = __cmpxchg_local_generic(ptr, old, new, size); + break; +#endif + default: + ret = __cmpxchg(ptr, old, new, size); + } + + return ret; +} + +#define cmpxchg_local(ptr,o,n) \ + ((__typeof__(*(ptr)))__cmpxchg_local((ptr), \ + (unsigned long)(o), \ + (unsigned long)(n), \ + sizeof(*(ptr)))) + +#ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ + +/* + * Note : ARMv7-M (currently unsupported by Linux) does not support + * ldrexd/strexd. If ARMv7-M is ever supported by the Linux kernel, it should + * not be allowed to use __cmpxchg64. + */ +static inline unsigned long long __cmpxchg64(volatile void *ptr, + unsigned long long old, + unsigned long long new) +{ + register unsigned long long oldval asm("r0"); + register unsigned long long __old asm("r2") = old; + register unsigned long long __new asm("r4") = new; + unsigned long res; + + do { + asm volatile( + " @ __cmpxchg8\n" + " ldrexd %1, %H1, [%2]\n" + " mov %0, #0\n" + " teq %1, %3\n" + " teqeq %H1, %H3\n" + " strexdeq %0, %4, %H4, [%2]\n" + : "=&r" (res), "=&r" (oldval) + : "r" (ptr), "Ir" (__old), "r" (__new) + : "memory", "cc"); + } while (res); + + return oldval; +} + +static inline unsigned long long __cmpxchg64_mb(volatile void *ptr, + unsigned long long old, + unsigned long long new) +{ + unsigned long long ret; + + smp_mb(); + ret = __cmpxchg64(ptr, old, new); + smp_mb(); + + return ret; +} + +#define cmpxchg64(ptr,o,n) \ + ((__typeof__(*(ptr)))__cmpxchg64_mb((ptr), \ + (unsigned long long)(o), \ + (unsigned long long)(n))) + +#define cmpxchg64_local(ptr,o,n) \ + ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ + (unsigned long long)(o), \ + (unsigned long long)(n))) + +#else /* min ARCH = ARMv6 */ + +#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) + +#endif + +#endif /* __LINUX_ARM_ARCH__ >= 6 */ + +#endif /* __ASM_ARM_CMPXCHG_H */ diff --git a/trunk/arch/arm/include/asm/compiler.h b/trunk/arch/arm/include/asm/compiler.h new file mode 100644 index 000000000000..8155db2f7fa1 --- /dev/null +++ b/trunk/arch/arm/include/asm/compiler.h @@ -0,0 +1,15 @@ +#ifndef __ASM_ARM_COMPILER_H +#define __ASM_ARM_COMPILER_H + +/* + * This is used to ensure the compiler did actually allocate the register we + * asked it for some inline assembly sequences. Apparently we can't trust + * the compiler from one version to another so a bit of paranoia won't hurt. + * This string is meant to be concatenated with the inline asm string and + * will cause compilation to stop on mismatch. + * (for details, see gcc PR 15089) + */ +#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" + + +#endif /* __ASM_ARM_COMPILER_H */ diff --git a/trunk/arch/arm/include/asm/cp15.h b/trunk/arch/arm/include/asm/cp15.h new file mode 100644 index 000000000000..5ef4d8015a60 --- /dev/null +++ b/trunk/arch/arm/include/asm/cp15.h @@ -0,0 +1,87 @@ +#ifndef __ASM_ARM_CP15_H +#define __ASM_ARM_CP15_H + +#include + +/* + * CR1 bits (CP#15 CR1) + */ +#define CR_M (1 << 0) /* MMU enable */ +#define CR_A (1 << 1) /* Alignment abort enable */ +#define CR_C (1 << 2) /* Dcache enable */ +#define CR_W (1 << 3) /* Write buffer enable */ +#define CR_P (1 << 4) /* 32-bit exception handler */ +#define CR_D (1 << 5) /* 32-bit data address range */ +#define CR_L (1 << 6) /* Implementation defined */ +#define CR_B (1 << 7) /* Big endian */ +#define CR_S (1 << 8) /* System MMU protection */ +#define CR_R (1 << 9) /* ROM MMU protection */ +#define CR_F (1 << 10) /* Implementation defined */ +#define CR_Z (1 << 11) /* Implementation defined */ +#define CR_I (1 << 12) /* Icache enable */ +#define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ +#define CR_RR (1 << 14) /* Round Robin cache replacement */ +#define CR_L4 (1 << 15) /* LDR pc can set T bit */ +#define CR_DT (1 << 16) +#define CR_IT (1 << 18) +#define CR_ST (1 << 19) +#define CR_FI (1 << 21) /* Fast interrupt (lower latency mode) */ +#define CR_U (1 << 22) /* Unaligned access operation */ +#define CR_XP (1 << 23) /* Extended page tables */ +#define CR_VE (1 << 24) /* Vectored interrupts */ +#define CR_EE (1 << 25) /* Exception (Big) Endian */ +#define CR_TRE (1 << 28) /* TEX remap enable */ +#define CR_AFE (1 << 29) /* Access flag enable */ +#define CR_TE (1 << 30) /* Thumb exception enable */ + +#ifndef __ASSEMBLY__ + +#if __LINUX_ARM_ARCH__ >= 4 +#define vectors_high() (cr_alignment & CR_V) +#else +#define vectors_high() (0) +#endif + +extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ +extern unsigned long cr_alignment; /* defined in entry-armv.S */ + +static inline unsigned int get_cr(void) +{ + unsigned int val; + asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc"); + return val; +} + +static inline void set_cr(unsigned int val) +{ + asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" + : : "r" (val) : "cc"); + isb(); +} + +#ifndef CONFIG_SMP +extern void adjust_cr(unsigned long mask, unsigned long set); +#endif + +#define CPACC_FULL(n) (3 << (n * 2)) +#define CPACC_SVC(n) (1 << (n * 2)) +#define CPACC_DISABLE(n) (0 << (n * 2)) + +static inline unsigned int get_copro_access(void) +{ + unsigned int val; + asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access" + : "=r" (val) : : "cc"); + return val; +} + +static inline void set_copro_access(unsigned int val) +{ + asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access" + : : "r" (val) : "cc"); + isb(); +} + +#endif + +#endif diff --git a/trunk/arch/arm/include/asm/div64.h b/trunk/arch/arm/include/asm/div64.h index d3f0a9eee9f6..fe92ccf1d0b0 100644 --- a/trunk/arch/arm/include/asm/div64.h +++ b/trunk/arch/arm/include/asm/div64.h @@ -1,8 +1,8 @@ #ifndef __ASM_ARM_DIV64 #define __ASM_ARM_DIV64 -#include #include +#include /* * The semantics of do_div() are: diff --git a/trunk/arch/arm/include/asm/dma.h b/trunk/arch/arm/include/asm/dma.h index 69a5b0b6455c..5694a0d6576b 100644 --- a/trunk/arch/arm/include/asm/dma.h +++ b/trunk/arch/arm/include/asm/dma.h @@ -19,7 +19,6 @@ * It should not be re-used except for that purpose. */ #include -#include #include #include diff --git a/trunk/arch/arm/include/asm/domain.h b/trunk/arch/arm/include/asm/domain.h index b5dc173d336f..3d2220498abc 100644 --- a/trunk/arch/arm/include/asm/domain.h +++ b/trunk/arch/arm/include/asm/domain.h @@ -10,6 +10,10 @@ #ifndef __ASM_PROC_DOMAIN_H #define __ASM_PROC_DOMAIN_H +#ifndef __ASSEMBLY__ +#include +#endif + /* * Domain numbers * diff --git a/trunk/arch/arm/include/asm/exec.h b/trunk/arch/arm/include/asm/exec.h new file mode 100644 index 000000000000..7c4fbef72b3a --- /dev/null +++ b/trunk/arch/arm/include/asm/exec.h @@ -0,0 +1,6 @@ +#ifndef __ASM_ARM_EXEC_H +#define __ASM_ARM_EXEC_H + +#define arch_align_stack(x) (x) + +#endif /* __ASM_ARM_EXEC_H */ diff --git a/trunk/arch/arm/include/asm/hardware/arm_timer.h b/trunk/arch/arm/include/asm/hardware/arm_timer.h index c0f4e7bf22de..d6030ff599db 100644 --- a/trunk/arch/arm/include/asm/hardware/arm_timer.h +++ b/trunk/arch/arm/include/asm/hardware/arm_timer.h @@ -9,7 +9,12 @@ * * Integrator AP has 16-bit timers, Integrator CP, Versatile and Realview * can have 16-bit or 32-bit selectable via a bit in the control register. + * + * Every SP804 contains two identical timers. */ +#define TIMER_1_BASE 0x00 +#define TIMER_2_BASE 0x20 + #define TIMER_LOAD 0x00 /* ACVR rw */ #define TIMER_VALUE 0x04 /* ACVR ro */ #define TIMER_CTRL 0x08 /* ACVR rw */ diff --git a/trunk/arch/arm/include/asm/hardware/iop3xx.h b/trunk/arch/arm/include/asm/hardware/iop3xx.h index 077c32326c63..2ff2c75a4639 100644 --- a/trunk/arch/arm/include/asm/hardware/iop3xx.h +++ b/trunk/arch/arm/include/asm/hardware/iop3xx.h @@ -231,6 +231,9 @@ extern int iop3xx_get_init_atu(void); #ifndef __ASSEMBLY__ + +#include + void iop3xx_map_io(void); void iop_init_cp6_handler(void); void iop_init_time(unsigned long tickrate); diff --git a/trunk/arch/arm/include/asm/hardware/sa1111.h b/trunk/arch/arm/include/asm/hardware/sa1111.h index 92ed254c175b..7c2bbc7f0be1 100644 --- a/trunk/arch/arm/include/asm/hardware/sa1111.h +++ b/trunk/arch/arm/include/asm/hardware/sa1111.h @@ -132,33 +132,9 @@ #define SKPCR_DCLKEN (1<<7) #define SKPCR_PWMCLKEN (1<<8) -/* - * USB Host controller - */ +/* USB Host controller */ #define SA1111_USB 0x0400 -/* - * Offsets from SA1111_USB_BASE - */ -#define SA1111_USB_STATUS 0x0118 -#define SA1111_USB_RESET 0x011c -#define SA1111_USB_IRQTEST 0x0120 - -#define USB_RESET_FORCEIFRESET (1 << 0) -#define USB_RESET_FORCEHCRESET (1 << 1) -#define USB_RESET_CLKGENRESET (1 << 2) -#define USB_RESET_SIMSCALEDOWN (1 << 3) -#define USB_RESET_USBINTTEST (1 << 4) -#define USB_RESET_SLEEPSTBYEN (1 << 5) -#define USB_RESET_PWRSENSELOW (1 << 6) -#define USB_RESET_PWRCTRLLOW (1 << 7) - -#define USB_STATUS_IRQHCIRMTWKUP (1 << 7) -#define USB_STATUS_IRQHCIBUFFACC (1 << 8) -#define USB_STATUS_NIRQHCIM (1 << 9) -#define USB_STATUS_NHCIMFCLR (1 << 10) -#define USB_STATUS_USBPWRSENSE (1 << 11) - /* * Serial Audio Controller * @@ -327,22 +303,6 @@ * PC_SSR GPIO Block C Sleep State */ -#define _PA_DDR _SA1111( 0x1000 ) -#define _PA_DRR _SA1111( 0x1004 ) -#define _PA_DWR _SA1111( 0x1004 ) -#define _PA_SDR _SA1111( 0x1008 ) -#define _PA_SSR _SA1111( 0x100c ) -#define _PB_DDR _SA1111( 0x1010 ) -#define _PB_DRR _SA1111( 0x1014 ) -#define _PB_DWR _SA1111( 0x1014 ) -#define _PB_SDR _SA1111( 0x1018 ) -#define _PB_SSR _SA1111( 0x101c ) -#define _PC_DDR _SA1111( 0x1020 ) -#define _PC_DRR _SA1111( 0x1024 ) -#define _PC_DWR _SA1111( 0x1024 ) -#define _PC_SDR _SA1111( 0x1028 ) -#define _PC_SSR _SA1111( 0x102c ) - #define SA1111_GPIO 0x1000 #define SA1111_GPIO_PADDR (0x000) @@ -425,106 +385,30 @@ #define SA1111_WAKEPOL0 0x0034 #define SA1111_WAKEPOL1 0x0038 -/* - * PS/2 Trackpad and Mouse Interfaces - * - * Registers - * PS2CR Control Register - * PS2STAT Status Register - * PS2DATA Transmit/Receive Data register - * PS2CLKDIV Clock Division Register - * PS2PRECNT Clock Precount Register - * PS2TEST1 Test register 1 - * PS2TEST2 Test register 2 - * PS2TEST3 Test register 3 - * PS2TEST4 Test register 4 - */ - +/* PS/2 Trackpad and Mouse Interfaces */ #define SA1111_KBD 0x0a00 #define SA1111_MSE 0x0c00 -/* - * These are offsets from the above bases. - */ -#define SA1111_PS2CR 0x0000 -#define SA1111_PS2STAT 0x0004 -#define SA1111_PS2DATA 0x0008 -#define SA1111_PS2CLKDIV 0x000c -#define SA1111_PS2PRECNT 0x0010 - -#define PS2CR_ENA 0x08 -#define PS2CR_FKD 0x02 -#define PS2CR_FKC 0x01 - -#define PS2STAT_STP 0x0100 -#define PS2STAT_TXE 0x0080 -#define PS2STAT_TXB 0x0040 -#define PS2STAT_RXF 0x0020 -#define PS2STAT_RXB 0x0010 -#define PS2STAT_ENA 0x0008 -#define PS2STAT_RXP 0x0004 -#define PS2STAT_KBD 0x0002 -#define PS2STAT_KBC 0x0001 +/* PCMCIA Interface */ +#define SA1111_PCMCIA 0x1600 -/* - * PCMCIA Interface - * - * Registers - * PCSR Status Register - * PCCR Control Register - * PCSSR Sleep State Register - */ - -#define SA1111_PCMCIA 0x1600 - -/* - * These are offsets from the above base. - */ -#define SA1111_PCCR 0x0000 -#define SA1111_PCSSR 0x0004 -#define SA1111_PCSR 0x0008 - -#define PCSR_S0_READY (1<<0) -#define PCSR_S1_READY (1<<1) -#define PCSR_S0_DETECT (1<<2) -#define PCSR_S1_DETECT (1<<3) -#define PCSR_S0_VS1 (1<<4) -#define PCSR_S0_VS2 (1<<5) -#define PCSR_S1_VS1 (1<<6) -#define PCSR_S1_VS2 (1<<7) -#define PCSR_S0_WP (1<<8) -#define PCSR_S1_WP (1<<9) -#define PCSR_S0_BVD1 (1<<10) -#define PCSR_S0_BVD2 (1<<11) -#define PCSR_S1_BVD1 (1<<12) -#define PCSR_S1_BVD2 (1<<13) - -#define PCCR_S0_RST (1<<0) -#define PCCR_S1_RST (1<<1) -#define PCCR_S0_FLT (1<<2) -#define PCCR_S1_FLT (1<<3) -#define PCCR_S0_PWAITEN (1<<4) -#define PCCR_S1_PWAITEN (1<<5) -#define PCCR_S0_PSE (1<<6) -#define PCCR_S1_PSE (1<<7) - -#define PCSSR_S0_SLEEP (1<<0) -#define PCSSR_S1_SLEEP (1<<1) extern struct bus_type sa1111_bus_type; -#define SA1111_DEVID_SBI 0 -#define SA1111_DEVID_SK 1 -#define SA1111_DEVID_USB 2 -#define SA1111_DEVID_SAC 3 -#define SA1111_DEVID_SSP 4 -#define SA1111_DEVID_PS2 5 -#define SA1111_DEVID_GPIO 6 -#define SA1111_DEVID_INT 7 -#define SA1111_DEVID_PCMCIA 8 +#define SA1111_DEVID_SBI (1 << 0) +#define SA1111_DEVID_SK (1 << 1) +#define SA1111_DEVID_USB (1 << 2) +#define SA1111_DEVID_SAC (1 << 3) +#define SA1111_DEVID_SSP (1 << 4) +#define SA1111_DEVID_PS2 (3 << 5) +#define SA1111_DEVID_PS2_KBD (1 << 5) +#define SA1111_DEVID_PS2_MSE (1 << 6) +#define SA1111_DEVID_GPIO (1 << 7) +#define SA1111_DEVID_INT (1 << 8) +#define SA1111_DEVID_PCMCIA (1 << 9) struct sa1111_dev { struct device dev; @@ -548,6 +432,7 @@ struct sa1111_driver { int (*remove)(struct sa1111_dev *); int (*suspend)(struct sa1111_dev *, pm_message_t); int (*resume)(struct sa1111_dev *); + void (*shutdown)(struct sa1111_dev *); }; #define SA1111_DRV(_d) container_of((_d), struct sa1111_driver, drv) @@ -555,9 +440,10 @@ struct sa1111_driver { #define SA1111_DRIVER_NAME(_sadev) ((_sadev)->dev.driver->name) /* - * These frob the SKPCR register. + * These frob the SKPCR register, and call platform specific + * enable/disable functions. */ -void sa1111_enable_device(struct sa1111_dev *); +int sa1111_enable_device(struct sa1111_dev *); void sa1111_disable_device(struct sa1111_dev *); unsigned int sa1111_pll_clock(struct sa1111_dev *); @@ -580,6 +466,10 @@ void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned i struct sa1111_platform_data { int irq_base; /* base for cascaded on-chip IRQs */ + unsigned disable_devs; + void *data; + int (*enable)(void *, unsigned); + void (*disable)(void *, unsigned); }; #endif /* _ASM_ARCH_SA1111 */ diff --git a/trunk/arch/arm/include/asm/hardware/timer-sp.h b/trunk/arch/arm/include/asm/hardware/timer-sp.h index 4384d81eee79..2dd9d3f83f29 100644 --- a/trunk/arch/arm/include/asm/hardware/timer-sp.h +++ b/trunk/arch/arm/include/asm/hardware/timer-sp.h @@ -1,2 +1,15 @@ -void sp804_clocksource_init(void __iomem *, const char *); +void __sp804_clocksource_and_sched_clock_init(void __iomem *, + const char *, int); + +static inline void sp804_clocksource_init(void __iomem *base, const char *name) +{ + __sp804_clocksource_and_sched_clock_init(base, name, 0); +} + +static inline void sp804_clocksource_and_sched_clock_init(void __iomem *base, + const char *name) +{ + __sp804_clocksource_and_sched_clock_init(base, name, 1); +} + void sp804_clockevents_init(void __iomem *, unsigned int, const char *); diff --git a/trunk/arch/arm/include/asm/io.h b/trunk/arch/arm/include/asm/io.h index 9275828feb3d..bae7eb6011d2 100644 --- a/trunk/arch/arm/include/asm/io.h +++ b/trunk/arch/arm/include/asm/io.h @@ -26,7 +26,6 @@ #include #include #include -#include #include /* @@ -99,6 +98,7 @@ static inline void __iomem *__typesafe_io(unsigned long addr) /* IO barriers */ #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE +#include #define __iormb() rmb() #define __iowmb() wmb() #else diff --git a/trunk/arch/arm/include/asm/localtimer.h b/trunk/arch/arm/include/asm/localtimer.h index c6a18424888e..f77ffc1eb0c2 100644 --- a/trunk/arch/arm/include/asm/localtimer.h +++ b/trunk/arch/arm/include/asm/localtimer.h @@ -11,47 +11,24 @@ #define __ASM_ARM_LOCALTIMER_H #include -#include struct clock_event_device; -/* - * Setup a per-cpu timer, whether it be a local timer or dummy broadcast - */ -void percpu_timer_setup(void); +struct local_timer_ops { + int (*setup)(struct clock_event_device *); + void (*stop)(struct clock_event_device *); +}; #ifdef CONFIG_LOCAL_TIMERS - -#ifdef CONFIG_HAVE_ARM_TWD - -#include "smp_twd.h" - -#define local_timer_stop(c) twd_timer_stop((c)) - -#else - -/* - * Stop the local timer - */ -void local_timer_stop(struct clock_event_device *); - -#endif - /* - * Setup a local timer interrupt for a CPU. + * Register a local timer driver */ -int local_timer_setup(struct clock_event_device *); - +int local_timer_register(struct local_timer_ops *); #else - -static inline int local_timer_setup(struct clock_event_device *evt) +static inline int local_timer_register(struct local_timer_ops *ops) { return -ENXIO; } - -static inline void local_timer_stop(struct clock_event_device *evt) -{ -} #endif #endif diff --git a/trunk/arch/arm/include/asm/mmu.h b/trunk/arch/arm/include/asm/mmu.h index 14965658a923..b8e580a297e4 100644 --- a/trunk/arch/arm/include/asm/mmu.h +++ b/trunk/arch/arm/include/asm/mmu.h @@ -34,4 +34,11 @@ typedef struct { #endif +/* + * switch_mm() may do a full cache flush over the context switch, + * so enable interrupts over the context switch to avoid high + * latency. + */ +#define __ARCH_WANT_INTERRUPTS_ON_CTXSW + #endif diff --git a/trunk/arch/arm/include/asm/processor.h b/trunk/arch/arm/include/asm/processor.h index cb8d638924fd..f4d7f56ee51f 100644 --- a/trunk/arch/arm/include/asm/processor.h +++ b/trunk/arch/arm/include/asm/processor.h @@ -22,7 +22,6 @@ #include #include #include -#include #ifdef __KERNEL__ #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ @@ -90,6 +89,8 @@ unsigned long get_wchan(struct task_struct *p); #define cpu_relax() barrier() #endif +void cpu_idle_wait(void); + /* * Create a new kernel thread */ diff --git a/trunk/arch/arm/include/asm/smp_twd.h b/trunk/arch/arm/include/asm/smp_twd.h index ef9ffba97ad8..0f01f4677bd2 100644 --- a/trunk/arch/arm/include/asm/smp_twd.h +++ b/trunk/arch/arm/include/asm/smp_twd.h @@ -18,11 +18,28 @@ #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) -struct clock_event_device; +#include -extern void __iomem *twd_base; +struct twd_local_timer { + struct resource res[2]; +}; -void twd_timer_setup(struct clock_event_device *); -void twd_timer_stop(struct clock_event_device *); +#define DEFINE_TWD_LOCAL_TIMER(name,base,irq) \ +struct twd_local_timer name __initdata = { \ + .res = { \ + DEFINE_RES_MEM(base, 0x10), \ + DEFINE_RES_IRQ(irq), \ + }, \ +}; + +int twd_local_timer_register(struct twd_local_timer *); + +#ifdef CONFIG_HAVE_ARM_TWD +void twd_local_timer_of_register(void); +#else +static inline void twd_local_timer_of_register(void) +{ +} +#endif #endif diff --git a/trunk/arch/arm/include/asm/switch_to.h b/trunk/arch/arm/include/asm/switch_to.h new file mode 100644 index 000000000000..fa09e6b49bf1 --- /dev/null +++ b/trunk/arch/arm/include/asm/switch_to.h @@ -0,0 +1,18 @@ +#ifndef __ASM_ARM_SWITCH_TO_H +#define __ASM_ARM_SWITCH_TO_H + +#include + +/* + * switch_to(prev, next) should switch from task `prev' to `next' + * `prev' will never be the same as `next'. schedule() itself + * contains the memory barrier to tell GCC not to cache `current'. + */ +extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *); + +#define switch_to(prev,next,last) \ +do { \ + last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ +} while (0) + +#endif /* __ASM_ARM_SWITCH_TO_H */ diff --git a/trunk/arch/arm/include/asm/system.h b/trunk/arch/arm/include/asm/system.h index 424aa458c487..74542c52f9be 100644 --- a/trunk/arch/arm/include/asm/system.h +++ b/trunk/arch/arm/include/asm/system.h @@ -1,544 +1,8 @@ -#ifndef __ASM_ARM_SYSTEM_H -#define __ASM_ARM_SYSTEM_H - -#ifdef __KERNEL__ - -#define CPU_ARCH_UNKNOWN 0 -#define CPU_ARCH_ARMv3 1 -#define CPU_ARCH_ARMv4 2 -#define CPU_ARCH_ARMv4T 3 -#define CPU_ARCH_ARMv5 4 -#define CPU_ARCH_ARMv5T 5 -#define CPU_ARCH_ARMv5TE 6 -#define CPU_ARCH_ARMv5TEJ 7 -#define CPU_ARCH_ARMv6 8 -#define CPU_ARCH_ARMv7 9 - -/* - * CR1 bits (CP#15 CR1) - */ -#define CR_M (1 << 0) /* MMU enable */ -#define CR_A (1 << 1) /* Alignment abort enable */ -#define CR_C (1 << 2) /* Dcache enable */ -#define CR_W (1 << 3) /* Write buffer enable */ -#define CR_P (1 << 4) /* 32-bit exception handler */ -#define CR_D (1 << 5) /* 32-bit data address range */ -#define CR_L (1 << 6) /* Implementation defined */ -#define CR_B (1 << 7) /* Big endian */ -#define CR_S (1 << 8) /* System MMU protection */ -#define CR_R (1 << 9) /* ROM MMU protection */ -#define CR_F (1 << 10) /* Implementation defined */ -#define CR_Z (1 << 11) /* Implementation defined */ -#define CR_I (1 << 12) /* Icache enable */ -#define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ -#define CR_RR (1 << 14) /* Round Robin cache replacement */ -#define CR_L4 (1 << 15) /* LDR pc can set T bit */ -#define CR_DT (1 << 16) -#define CR_IT (1 << 18) -#define CR_ST (1 << 19) -#define CR_FI (1 << 21) /* Fast interrupt (lower latency mode) */ -#define CR_U (1 << 22) /* Unaligned access operation */ -#define CR_XP (1 << 23) /* Extended page tables */ -#define CR_VE (1 << 24) /* Vectored interrupts */ -#define CR_EE (1 << 25) /* Exception (Big) Endian */ -#define CR_TRE (1 << 28) /* TEX remap enable */ -#define CR_AFE (1 << 29) /* Access flag enable */ -#define CR_TE (1 << 30) /* Thumb exception enable */ - -/* - * This is used to ensure the compiler did actually allocate the register we - * asked it for some inline assembly sequences. Apparently we can't trust - * the compiler from one version to another so a bit of paranoia won't hurt. - * This string is meant to be concatenated with the inline asm string and - * will cause compilation to stop on mismatch. - * (for details, see gcc PR 15089) - */ -#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" - -#ifndef __ASSEMBLY__ - -#include -#include -#include - -#include - -struct thread_info; -struct task_struct; - -/* information about the system we're running on */ -extern unsigned int system_rev; -extern unsigned int system_serial_low; -extern unsigned int system_serial_high; -extern unsigned int mem_fclk_21285; - -struct pt_regs; - -void die(const char *msg, struct pt_regs *regs, int err); - -struct siginfo; -void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, - unsigned long err, unsigned long trap); - -#ifdef CONFIG_ARM_LPAE -#define FAULT_CODE_ALIGNMENT 33 -#define FAULT_CODE_DEBUG 34 -#else -#define FAULT_CODE_ALIGNMENT 1 -#define FAULT_CODE_DEBUG 2 -#endif - -void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, - struct pt_regs *), - int sig, int code, const char *name); - -void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, - struct pt_regs *), - int sig, int code, const char *name); - -#define xchg(ptr,x) \ - ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) - -extern asmlinkage void c_backtrace(unsigned long fp, int pmode); - -struct mm_struct; -extern void show_pte(struct mm_struct *mm, unsigned long addr); -extern void __show_regs(struct pt_regs *); - -extern int __pure cpu_architecture(void); -extern void cpu_init(void); - -void soft_restart(unsigned long); -extern void (*arm_pm_restart)(char str, const char *cmd); -extern void (*arm_pm_idle)(void); - -#define UDBG_UNDEFINED (1 << 0) -#define UDBG_SYSCALL (1 << 1) -#define UDBG_BADABORT (1 << 2) -#define UDBG_SEGV (1 << 3) -#define UDBG_BUS (1 << 4) - -extern unsigned int user_debug; - -#if __LINUX_ARM_ARCH__ >= 4 -#define vectors_high() (cr_alignment & CR_V) -#else -#define vectors_high() (0) -#endif - -#if __LINUX_ARM_ARCH__ >= 7 || \ - (__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K)) -#define sev() __asm__ __volatile__ ("sev" : : : "memory") -#define wfe() __asm__ __volatile__ ("wfe" : : : "memory") -#define wfi() __asm__ __volatile__ ("wfi" : : : "memory") -#endif - -#if __LINUX_ARM_ARCH__ >= 7 -#define isb() __asm__ __volatile__ ("isb" : : : "memory") -#define dsb() __asm__ __volatile__ ("dsb" : : : "memory") -#define dmb() __asm__ __volatile__ ("dmb" : : : "memory") -#elif defined(CONFIG_CPU_XSC3) || __LINUX_ARM_ARCH__ == 6 -#define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ - : : "r" (0) : "memory") -#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ - : : "r" (0) : "memory") -#define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ - : : "r" (0) : "memory") -#elif defined(CONFIG_CPU_FA526) -#define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ - : : "r" (0) : "memory") -#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ - : : "r" (0) : "memory") -#define dmb() __asm__ __volatile__ ("" : : : "memory") -#else -#define isb() __asm__ __volatile__ ("" : : : "memory") -#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ - : : "r" (0) : "memory") -#define dmb() __asm__ __volatile__ ("" : : : "memory") -#endif - -#ifdef CONFIG_ARCH_HAS_BARRIERS -#include -#elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP) -#define mb() do { dsb(); outer_sync(); } while (0) -#define rmb() dsb() -#define wmb() mb() -#else -#include -#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) -#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) -#define wmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) -#endif - -#ifndef CONFIG_SMP -#define smp_mb() barrier() -#define smp_rmb() barrier() -#define smp_wmb() barrier() -#else -#define smp_mb() dmb() -#define smp_rmb() dmb() -#define smp_wmb() dmb() -#endif - -#define read_barrier_depends() do { } while(0) -#define smp_read_barrier_depends() do { } while(0) - -#define set_mb(var, value) do { var = value; smp_mb(); } while (0) -#define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); - -extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ -extern unsigned long cr_alignment; /* defined in entry-armv.S */ - -static inline unsigned int get_cr(void) -{ - unsigned int val; - asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc"); - return val; -} - -static inline void set_cr(unsigned int val) -{ - asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" - : : "r" (val) : "cc"); - isb(); -} - -#ifndef CONFIG_SMP -extern void adjust_cr(unsigned long mask, unsigned long set); -#endif - -#define CPACC_FULL(n) (3 << (n * 2)) -#define CPACC_SVC(n) (1 << (n * 2)) -#define CPACC_DISABLE(n) (0 << (n * 2)) - -static inline unsigned int get_copro_access(void) -{ - unsigned int val; - asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access" - : "=r" (val) : : "cc"); - return val; -} - -static inline void set_copro_access(unsigned int val) -{ - asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access" - : : "r" (val) : "cc"); - isb(); -} - -/* - * switch_mm() may do a full cache flush over the context switch, - * so enable interrupts over the context switch to avoid high - * latency. - */ -#define __ARCH_WANT_INTERRUPTS_ON_CTXSW - -/* - * switch_to(prev, next) should switch from task `prev' to `next' - * `prev' will never be the same as `next'. schedule() itself - * contains the memory barrier to tell GCC not to cache `current'. - */ -extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *); - -#define switch_to(prev,next,last) \ -do { \ - last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ -} while (0) - -#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) -/* - * On the StrongARM, "swp" is terminally broken since it bypasses the - * cache totally. This means that the cache becomes inconsistent, and, - * since we use normal loads/stores as well, this is really bad. - * Typically, this causes oopsen in filp_close, but could have other, - * more disastrous effects. There are two work-arounds: - * 1. Disable interrupts and emulate the atomic swap - * 2. Clean the cache, perform atomic swap, flush the cache - * - * We choose (1) since its the "easiest" to achieve here and is not - * dependent on the processor type. - * - * NOTE that this solution won't work on an SMP system, so explcitly - * forbid it here. - */ -#define swp_is_buggy -#endif - -static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) -{ - extern void __bad_xchg(volatile void *, int); - unsigned long ret; -#ifdef swp_is_buggy - unsigned long flags; -#endif -#if __LINUX_ARM_ARCH__ >= 6 - unsigned int tmp; -#endif - - smp_mb(); - - switch (size) { -#if __LINUX_ARM_ARCH__ >= 6 - case 1: - asm volatile("@ __xchg1\n" - "1: ldrexb %0, [%3]\n" - " strexb %1, %2, [%3]\n" - " teq %1, #0\n" - " bne 1b" - : "=&r" (ret), "=&r" (tmp) - : "r" (x), "r" (ptr) - : "memory", "cc"); - break; - case 4: - asm volatile("@ __xchg4\n" - "1: ldrex %0, [%3]\n" - " strex %1, %2, [%3]\n" - " teq %1, #0\n" - " bne 1b" - : "=&r" (ret), "=&r" (tmp) - : "r" (x), "r" (ptr) - : "memory", "cc"); - break; -#elif defined(swp_is_buggy) -#ifdef CONFIG_SMP -#error SMP is not supported on this platform -#endif - case 1: - raw_local_irq_save(flags); - ret = *(volatile unsigned char *)ptr; - *(volatile unsigned char *)ptr = x; - raw_local_irq_restore(flags); - break; - - case 4: - raw_local_irq_save(flags); - ret = *(volatile unsigned long *)ptr; - *(volatile unsigned long *)ptr = x; - raw_local_irq_restore(flags); - break; -#else - case 1: - asm volatile("@ __xchg1\n" - " swpb %0, %1, [%2]" - : "=&r" (ret) - : "r" (x), "r" (ptr) - : "memory", "cc"); - break; - case 4: - asm volatile("@ __xchg4\n" - " swp %0, %1, [%2]" - : "=&r" (ret) - : "r" (x), "r" (ptr) - : "memory", "cc"); - break; -#endif - default: - __bad_xchg(ptr, size), ret = 0; - break; - } - smp_mb(); - - return ret; -} - -extern void disable_hlt(void); -extern void enable_hlt(void); - -void cpu_idle_wait(void); - -#include - -#if __LINUX_ARM_ARCH__ < 6 -/* min ARCH < ARMv6 */ - -#ifdef CONFIG_SMP -#error "SMP is not supported on this platform" -#endif - -/* - * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make - * them available. - */ -#define cmpxchg_local(ptr, o, n) \ - ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ - (unsigned long)(n), sizeof(*(ptr)))) -#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) - -#ifndef CONFIG_SMP -#include -#endif - -#else /* min ARCH >= ARMv6 */ - -extern void __bad_cmpxchg(volatile void *ptr, int size); - -/* - * cmpxchg only support 32-bits operands on ARMv6. - */ - -static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, - unsigned long new, int size) -{ - unsigned long oldval, res; - - switch (size) { -#ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ - case 1: - do { - asm volatile("@ __cmpxchg1\n" - " ldrexb %1, [%2]\n" - " mov %0, #0\n" - " teq %1, %3\n" - " strexbeq %0, %4, [%2]\n" - : "=&r" (res), "=&r" (oldval) - : "r" (ptr), "Ir" (old), "r" (new) - : "memory", "cc"); - } while (res); - break; - case 2: - do { - asm volatile("@ __cmpxchg1\n" - " ldrexh %1, [%2]\n" - " mov %0, #0\n" - " teq %1, %3\n" - " strexheq %0, %4, [%2]\n" - : "=&r" (res), "=&r" (oldval) - : "r" (ptr), "Ir" (old), "r" (new) - : "memory", "cc"); - } while (res); - break; -#endif - case 4: - do { - asm volatile("@ __cmpxchg4\n" - " ldrex %1, [%2]\n" - " mov %0, #0\n" - " teq %1, %3\n" - " strexeq %0, %4, [%2]\n" - : "=&r" (res), "=&r" (oldval) - : "r" (ptr), "Ir" (old), "r" (new) - : "memory", "cc"); - } while (res); - break; - default: - __bad_cmpxchg(ptr, size); - oldval = 0; - } - - return oldval; -} - -static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, - unsigned long new, int size) -{ - unsigned long ret; - - smp_mb(); - ret = __cmpxchg(ptr, old, new, size); - smp_mb(); - - return ret; -} - -#define cmpxchg(ptr,o,n) \ - ((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ - (unsigned long)(o), \ - (unsigned long)(n), \ - sizeof(*(ptr)))) - -static inline unsigned long __cmpxchg_local(volatile void *ptr, - unsigned long old, - unsigned long new, int size) -{ - unsigned long ret; - - switch (size) { -#ifdef CONFIG_CPU_V6 /* min ARCH == ARMv6 */ - case 1: - case 2: - ret = __cmpxchg_local_generic(ptr, old, new, size); - break; -#endif - default: - ret = __cmpxchg(ptr, old, new, size); - } - - return ret; -} - -#define cmpxchg_local(ptr,o,n) \ - ((__typeof__(*(ptr)))__cmpxchg_local((ptr), \ - (unsigned long)(o), \ - (unsigned long)(n), \ - sizeof(*(ptr)))) - -#ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ - -/* - * Note : ARMv7-M (currently unsupported by Linux) does not support - * ldrexd/strexd. If ARMv7-M is ever supported by the Linux kernel, it should - * not be allowed to use __cmpxchg64. - */ -static inline unsigned long long __cmpxchg64(volatile void *ptr, - unsigned long long old, - unsigned long long new) -{ - register unsigned long long oldval asm("r0"); - register unsigned long long __old asm("r2") = old; - register unsigned long long __new asm("r4") = new; - unsigned long res; - - do { - asm volatile( - " @ __cmpxchg8\n" - " ldrexd %1, %H1, [%2]\n" - " mov %0, #0\n" - " teq %1, %3\n" - " teqeq %H1, %H3\n" - " strexdeq %0, %4, %H4, [%2]\n" - : "=&r" (res), "=&r" (oldval) - : "r" (ptr), "Ir" (__old), "r" (__new) - : "memory", "cc"); - } while (res); - - return oldval; -} - -static inline unsigned long long __cmpxchg64_mb(volatile void *ptr, - unsigned long long old, - unsigned long long new) -{ - unsigned long long ret; - - smp_mb(); - ret = __cmpxchg64(ptr, old, new); - smp_mb(); - - return ret; -} - -#define cmpxchg64(ptr,o,n) \ - ((__typeof__(*(ptr)))__cmpxchg64_mb((ptr), \ - (unsigned long long)(o), \ - (unsigned long long)(n))) - -#define cmpxchg64_local(ptr,o,n) \ - ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ - (unsigned long long)(o), \ - (unsigned long long)(n))) - -#else /* min ARCH = ARMv6 */ - -#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) - -#endif - -#endif /* __LINUX_ARM_ARCH__ >= 6 */ - -#endif /* __ASSEMBLY__ */ - -#define arch_align_stack(x) (x) - -#endif /* __KERNEL__ */ - -#endif +/* FILE TO BE DELETED. DO NOT ADD STUFF HERE! */ +#include +#include +#include +#include +#include +#include +#include diff --git a/trunk/arch/arm/include/asm/system_info.h b/trunk/arch/arm/include/asm/system_info.h new file mode 100644 index 000000000000..dfd386d0c022 --- /dev/null +++ b/trunk/arch/arm/include/asm/system_info.h @@ -0,0 +1,27 @@ +#ifndef __ASM_ARM_SYSTEM_INFO_H +#define __ASM_ARM_SYSTEM_INFO_H + +#define CPU_ARCH_UNKNOWN 0 +#define CPU_ARCH_ARMv3 1 +#define CPU_ARCH_ARMv4 2 +#define CPU_ARCH_ARMv4T 3 +#define CPU_ARCH_ARMv5 4 +#define CPU_ARCH_ARMv5T 5 +#define CPU_ARCH_ARMv5TE 6 +#define CPU_ARCH_ARMv5TEJ 7 +#define CPU_ARCH_ARMv6 8 +#define CPU_ARCH_ARMv7 9 + +#ifndef __ASSEMBLY__ + +/* information about the system we're running on */ +extern unsigned int system_rev; +extern unsigned int system_serial_low; +extern unsigned int system_serial_high; +extern unsigned int mem_fclk_21285; + +extern int __pure cpu_architecture(void); + +#endif /* !__ASSEMBLY__ */ + +#endif /* __ASM_ARM_SYSTEM_INFO_H */ diff --git a/trunk/arch/arm/include/asm/system_misc.h b/trunk/arch/arm/include/asm/system_misc.h new file mode 100644 index 000000000000..5a85f148b607 --- /dev/null +++ b/trunk/arch/arm/include/asm/system_misc.h @@ -0,0 +1,29 @@ +#ifndef __ASM_ARM_SYSTEM_MISC_H +#define __ASM_ARM_SYSTEM_MISC_H + +#ifndef __ASSEMBLY__ + +#include +#include +#include + +extern void cpu_init(void); + +void soft_restart(unsigned long); +extern void (*arm_pm_restart)(char str, const char *cmd); +extern void (*arm_pm_idle)(void); + +#define UDBG_UNDEFINED (1 << 0) +#define UDBG_SYSCALL (1 << 1) +#define UDBG_BADABORT (1 << 2) +#define UDBG_SEGV (1 << 3) +#define UDBG_BUS (1 << 4) + +extern unsigned int user_debug; + +extern void disable_hlt(void); +extern void enable_hlt(void); + +#endif /* !__ASSEMBLY__ */ + +#endif /* __ASM_ARM_SYSTEM_MISC_H */ diff --git a/trunk/arch/arm/include/asm/uaccess.h b/trunk/arch/arm/include/asm/uaccess.h index 2958976d867b..71f6536d17ac 100644 --- a/trunk/arch/arm/include/asm/uaccess.h +++ b/trunk/arch/arm/include/asm/uaccess.h @@ -16,8 +16,8 @@ #include #include #include -#include #include +#include #define VERIFY_READ 0 #define VERIFY_WRITE 1 diff --git a/trunk/arch/arm/kernel/Makefile b/trunk/arch/arm/kernel/Makefile index 43b740d0e374..3a274878412e 100644 --- a/trunk/arch/arm/kernel/Makefile +++ b/trunk/arch/arm/kernel/Makefile @@ -23,7 +23,6 @@ obj-$(CONFIG_LEDS) += leds.o obj-$(CONFIG_OC_ETM) += etm.o obj-$(CONFIG_ISA_DMA_API) += dma.o -obj-$(CONFIG_ARCH_ACORN) += ecard.o obj-$(CONFIG_FIQ) += fiq.o fiqasm.o obj-$(CONFIG_MODULES) += armksyms.o module.o obj-$(CONFIG_ARTHUR) += arthur.o @@ -62,9 +61,6 @@ obj-$(CONFIG_SWP_EMULATE) += swp_emulate.o CFLAGS_swp_emulate.o := -Wa,-march=armv7-a obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o -obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o -AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312 - obj-$(CONFIG_CPU_XSCALE) += xscale-cp0.o obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o obj-$(CONFIG_CPU_MOHAWK) += xscale-cp0.o diff --git a/trunk/arch/arm/kernel/armksyms.c b/trunk/arch/arm/kernel/armksyms.c index 5b0bce61eb69..b57c75e0b01f 100644 --- a/trunk/arch/arm/kernel/armksyms.c +++ b/trunk/arch/arm/kernel/armksyms.c @@ -18,7 +18,6 @@ #include #include -#include #include /* diff --git a/trunk/arch/arm/kernel/elf.c b/trunk/arch/arm/kernel/elf.c index ddba41d1fcf1..d0d1e83150c9 100644 --- a/trunk/arch/arm/kernel/elf.c +++ b/trunk/arch/arm/kernel/elf.c @@ -3,6 +3,7 @@ #include #include #include +#include int elf_check_arch(const struct elf32_hdr *x) { diff --git a/trunk/arch/arm/kernel/entry-armv.S b/trunk/arch/arm/kernel/entry-armv.S index 22f0ed324f37..8ec5eed55e37 100644 --- a/trunk/arch/arm/kernel/entry-armv.S +++ b/trunk/arch/arm/kernel/entry-armv.S @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include "entry-header.S" #include diff --git a/trunk/arch/arm/kernel/fiq.c b/trunk/arch/arm/kernel/fiq.c index 4c164ece5891..c32f8456aa09 100644 --- a/trunk/arch/arm/kernel/fiq.c +++ b/trunk/arch/arm/kernel/fiq.c @@ -42,9 +42,9 @@ #include #include +#include #include #include -#include #include static unsigned long no_fiq_insn; diff --git a/trunk/arch/arm/kernel/head-nommu.S b/trunk/arch/arm/kernel/head-nommu.S index d46f25968bec..278cfc144f44 100644 --- a/trunk/arch/arm/kernel/head-nommu.S +++ b/trunk/arch/arm/kernel/head-nommu.S @@ -17,8 +17,8 @@ #include #include #include +#include #include -#include /* * Kernel startup entry point. diff --git a/trunk/arch/arm/kernel/head.S b/trunk/arch/arm/kernel/head.S index 6d5791144066..a2e9694a68ee 100644 --- a/trunk/arch/arm/kernel/head.S +++ b/trunk/arch/arm/kernel/head.S @@ -15,12 +15,12 @@ #include #include +#include #include #include #include #include #include -#include #include #ifdef CONFIG_DEBUG_LL diff --git a/trunk/arch/arm/kernel/hw_breakpoint.c b/trunk/arch/arm/kernel/hw_breakpoint.c index d6a95ef9131d..ba386bd94107 100644 --- a/trunk/arch/arm/kernel/hw_breakpoint.c +++ b/trunk/arch/arm/kernel/hw_breakpoint.c @@ -34,7 +34,6 @@ #include #include #include -#include #include /* Breakpoint currently in use for each BRP. */ diff --git a/trunk/arch/arm/kernel/irq.c b/trunk/arch/arm/kernel/irq.c index 3efd82cc95f0..6a6a097edd61 100644 --- a/trunk/arch/arm/kernel/irq.c +++ b/trunk/arch/arm/kernel/irq.c @@ -36,7 +36,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/arm/kernel/kprobes-common.c b/trunk/arch/arm/kernel/kprobes-common.c index a5394fb4e4e0..18a76282970e 100644 --- a/trunk/arch/arm/kernel/kprobes-common.c +++ b/trunk/arch/arm/kernel/kprobes-common.c @@ -13,6 +13,7 @@ #include #include +#include #include "kprobes.h" diff --git a/trunk/arch/arm/kernel/machine_kexec.c b/trunk/arch/arm/kernel/machine_kexec.c index 764bd456d84f..56995983eed8 100644 --- a/trunk/arch/arm/kernel/machine_kexec.c +++ b/trunk/arch/arm/kernel/machine_kexec.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include extern const unsigned char relocate_new_kernel[]; extern const unsigned int relocate_new_kernel_size; diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index d3eca4524533..7b9cddef6e53 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index ede6443c34d9..45956c9d0ef0 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -26,7 +26,6 @@ #include #include -#include #include #define REG_PC 15 diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index a255c39612ca..9e0fdb3a1988 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -44,12 +45,13 @@ #include #include #include -#include #include #include #include #include +#include +#include #include #include #include diff --git a/trunk/arch/arm/kernel/sleep.S b/trunk/arch/arm/kernel/sleep.S index 1f268bda4552..987dcf33415c 100644 --- a/trunk/arch/arm/kernel/sleep.S +++ b/trunk/arch/arm/kernel/sleep.S @@ -4,7 +4,6 @@ #include #include #include -#include .text /* diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index d616ed51e7a7..8f8cce2c46c4 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -246,6 +246,8 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid) store_cpu_topology(cpuid); } +static void percpu_timer_setup(void); + /* * This is the secondary CPU boot entry. We're using this CPUs * idle thread stack, but a set of temporary page tables. @@ -452,7 +454,20 @@ static void __cpuinit broadcast_timer_setup(struct clock_event_device *evt) clockevents_register_device(evt); } -void __cpuinit percpu_timer_setup(void) +static struct local_timer_ops *lt_ops; + +#ifdef CONFIG_LOCAL_TIMERS +int local_timer_register(struct local_timer_ops *ops) +{ + if (lt_ops) + return -EBUSY; + + lt_ops = ops; + return 0; +} +#endif + +static void __cpuinit percpu_timer_setup(void) { unsigned int cpu = smp_processor_id(); struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); @@ -460,7 +475,7 @@ void __cpuinit percpu_timer_setup(void) evt->cpumask = cpumask_of(cpu); evt->broadcast = smp_timer_broadcast; - if (local_timer_setup(evt)) + if (!lt_ops || lt_ops->setup(evt)) broadcast_timer_setup(evt); } @@ -475,7 +490,8 @@ static void percpu_timer_stop(void) unsigned int cpu = smp_processor_id(); struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); - local_timer_stop(evt); + if (lt_ops) + lt_ops->stop(evt); } #endif diff --git a/trunk/arch/arm/kernel/smp_tlb.c b/trunk/arch/arm/kernel/smp_tlb.c index 7dcb35285be7..02c5d2ce23bf 100644 --- a/trunk/arch/arm/kernel/smp_tlb.c +++ b/trunk/arch/arm/kernel/smp_tlb.c @@ -13,18 +13,6 @@ #include #include -static void on_each_cpu_mask(void (*func)(void *), void *info, int wait, - const struct cpumask *mask) -{ - preempt_disable(); - - smp_call_function_many(mask, func, info, wait); - if (cpumask_test_cpu(smp_processor_id(), mask)) - func(info); - - preempt_enable(); -} - /**********************************************************************/ /* @@ -87,7 +75,7 @@ void flush_tlb_all(void) void flush_tlb_mm(struct mm_struct *mm) { if (tlb_ops_need_broadcast()) - on_each_cpu_mask(ipi_flush_tlb_mm, mm, 1, mm_cpumask(mm)); + on_each_cpu_mask(mm_cpumask(mm), ipi_flush_tlb_mm, mm, 1); else local_flush_tlb_mm(mm); } @@ -98,7 +86,8 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr) struct tlb_args ta; ta.ta_vma = vma; ta.ta_start = uaddr; - on_each_cpu_mask(ipi_flush_tlb_page, &ta, 1, mm_cpumask(vma->vm_mm)); + on_each_cpu_mask(mm_cpumask(vma->vm_mm), ipi_flush_tlb_page, + &ta, 1); } else local_flush_tlb_page(vma, uaddr); } @@ -121,7 +110,8 @@ void flush_tlb_range(struct vm_area_struct *vma, ta.ta_vma = vma; ta.ta_start = start; ta.ta_end = end; - on_each_cpu_mask(ipi_flush_tlb_range, &ta, 1, mm_cpumask(vma->vm_mm)); + on_each_cpu_mask(mm_cpumask(vma->vm_mm), ipi_flush_tlb_range, + &ta, 1); } else local_flush_tlb_range(vma, start, end); } diff --git a/trunk/arch/arm/kernel/smp_twd.c b/trunk/arch/arm/kernel/smp_twd.c index 7a79b24597b2..fef42b21cecb 100644 --- a/trunk/arch/arm/kernel/smp_twd.c +++ b/trunk/arch/arm/kernel/smp_twd.c @@ -18,20 +18,23 @@ #include #include #include -#include +#include #include +#include +#include #include #include #include /* set up by the platform code */ -void __iomem *twd_base; +static void __iomem *twd_base; static struct clk *twd_clk; static unsigned long twd_timer_rate; static struct clock_event_device __percpu **twd_evt; +static int twd_ppi; static void twd_set_mode(enum clock_event_mode mode, struct clock_event_device *clk) @@ -77,7 +80,7 @@ static int twd_set_next_event(unsigned long evt, * If a local timer interrupt has occurred, acknowledge and return 1. * Otherwise, return 0. */ -int twd_timer_ack(void) +static int twd_timer_ack(void) { if (__raw_readl(twd_base + TWD_TIMER_INTSTAT)) { __raw_writel(1, twd_base + TWD_TIMER_INTSTAT); @@ -87,7 +90,7 @@ int twd_timer_ack(void) return 0; } -void twd_timer_stop(struct clock_event_device *clk) +static void twd_timer_stop(struct clock_event_device *clk) { twd_set_mode(CLOCK_EVT_MODE_UNUSED, clk); disable_percpu_irq(clk->irq); @@ -222,28 +225,10 @@ static struct clk *twd_get_clock(void) /* * Setup the local clock events for a CPU. */ -void __cpuinit twd_timer_setup(struct clock_event_device *clk) +static int __cpuinit twd_timer_setup(struct clock_event_device *clk) { struct clock_event_device **this_cpu_clk; - if (!twd_evt) { - int err; - - twd_evt = alloc_percpu(struct clock_event_device *); - if (!twd_evt) { - pr_err("twd: can't allocate memory\n"); - return; - } - - err = request_percpu_irq(clk->irq, twd_handler, - "twd", twd_evt); - if (err) { - pr_err("twd: can't register interrupt %d (%d)\n", - clk->irq, err); - return; - } - } - if (!twd_clk) twd_clk = twd_get_clock(); @@ -260,6 +245,7 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) clk->rating = 350; clk->set_mode = twd_set_mode; clk->set_next_event = twd_set_next_event; + clk->irq = twd_ppi; this_cpu_clk = __this_cpu_ptr(twd_evt); *this_cpu_clk = clk; @@ -267,4 +253,95 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) clockevents_config_and_register(clk, twd_timer_rate, 0xf, 0xffffffff); enable_percpu_irq(clk->irq, 0); + + return 0; +} + +static struct local_timer_ops twd_lt_ops __cpuinitdata = { + .setup = twd_timer_setup, + .stop = twd_timer_stop, +}; + +static int __init twd_local_timer_common_register(void) +{ + int err; + + twd_evt = alloc_percpu(struct clock_event_device *); + if (!twd_evt) { + err = -ENOMEM; + goto out_free; + } + + err = request_percpu_irq(twd_ppi, twd_handler, "twd", twd_evt); + if (err) { + pr_err("twd: can't register interrupt %d (%d)\n", twd_ppi, err); + goto out_free; + } + + err = local_timer_register(&twd_lt_ops); + if (err) + goto out_irq; + + return 0; + +out_irq: + free_percpu_irq(twd_ppi, twd_evt); +out_free: + iounmap(twd_base); + twd_base = NULL; + free_percpu(twd_evt); + + return err; } + +int __init twd_local_timer_register(struct twd_local_timer *tlt) +{ + if (twd_base || twd_evt) + return -EBUSY; + + twd_ppi = tlt->res[1].start; + + twd_base = ioremap(tlt->res[0].start, resource_size(&tlt->res[0])); + if (!twd_base) + return -ENOMEM; + + return twd_local_timer_common_register(); +} + +#ifdef CONFIG_OF +const static struct of_device_id twd_of_match[] __initconst = { + { .compatible = "arm,cortex-a9-twd-timer", }, + { .compatible = "arm,cortex-a5-twd-timer", }, + { .compatible = "arm,arm11mp-twd-timer", }, + { }, +}; + +void __init twd_local_timer_of_register(void) +{ + struct device_node *np; + int err; + + np = of_find_matching_node(NULL, twd_of_match); + if (!np) { + err = -ENODEV; + goto out; + } + + twd_ppi = irq_of_parse_and_map(np, 0); + if (!twd_ppi) { + err = -EINVAL; + goto out; + } + + twd_base = of_iomap(np, 0); + if (!twd_base) { + err = -ENOMEM; + goto out; + } + + err = twd_local_timer_common_register(); + +out: + WARN(err, "twd_local_timer_of_register failed (%d)\n", err); +} +#endif diff --git a/trunk/arch/arm/kernel/tcm.c b/trunk/arch/arm/kernel/tcm.c index 01ec453bb924..30ae6bb4a310 100644 --- a/trunk/arch/arm/kernel/tcm.c +++ b/trunk/arch/arm/kernel/tcm.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "tcm.h" static struct gen_pool *tcm_pool; diff --git a/trunk/arch/arm/kernel/thumbee.c b/trunk/arch/arm/kernel/thumbee.c index 9cb7aaca159f..aab899764053 100644 --- a/trunk/arch/arm/kernel/thumbee.c +++ b/trunk/arch/arm/kernel/thumbee.c @@ -20,6 +20,7 @@ #include #include +#include #include /* diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index f84dfe67724f..cd77743472a2 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -29,11 +29,11 @@ #include #include #include -#include #include #include #include #include +#include #include "signal.h" diff --git a/trunk/arch/arm/mach-at91/Kconfig b/trunk/arch/arm/mach-at91/Kconfig index 71feb00a1e99..45db05d8d94c 100644 --- a/trunk/arch/arm/mach-at91/Kconfig +++ b/trunk/arch/arm/mach-at91/Kconfig @@ -20,9 +20,11 @@ config HAVE_AT91_USART5 config AT91_SAM9_ALT_RESET bool + default !ARCH_AT91X40 config AT91_SAM9G45_RESET bool + default !ARCH_AT91X40 menu "Atmel AT91 System-on-Chip" @@ -45,7 +47,6 @@ config ARCH_AT91SAM9260 select HAVE_AT91_USART4 select HAVE_AT91_USART5 select HAVE_NET_MACB - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9261 bool "AT91SAM9261" @@ -53,7 +54,6 @@ config ARCH_AT91SAM9261 select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_AT91_DBGU0 - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9G10 bool "AT91SAM9G10" @@ -61,7 +61,6 @@ config ARCH_AT91SAM9G10 select GENERIC_CLOCKEVENTS select HAVE_AT91_DBGU0 select HAVE_FB_ATMEL - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9263 bool "AT91SAM9263" @@ -70,7 +69,6 @@ config ARCH_AT91SAM9263 select HAVE_FB_ATMEL select HAVE_NET_MACB select HAVE_AT91_DBGU1 - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9RL bool "AT91SAM9RL" @@ -79,7 +77,6 @@ config ARCH_AT91SAM9RL select HAVE_AT91_USART3 select HAVE_FB_ATMEL select HAVE_AT91_DBGU0 - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9G20 bool "AT91SAM9G20" @@ -90,7 +87,6 @@ config ARCH_AT91SAM9G20 select HAVE_AT91_USART4 select HAVE_AT91_USART5 select HAVE_NET_MACB - select AT91_SAM9_ALT_RESET config ARCH_AT91SAM9G45 bool "AT91SAM9G45" @@ -100,16 +96,14 @@ config ARCH_AT91SAM9G45 select HAVE_FB_ATMEL select HAVE_NET_MACB select HAVE_AT91_DBGU1 - select AT91_SAM9G45_RESET -config ARCH_AT91CAP9 - bool "AT91CAP9" +config ARCH_AT91SAM9X5 + bool "AT91SAM9x5 family" select CPU_ARM926T select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_NET_MACB - select HAVE_AT91_DBGU1 - select AT91_SAM9G45_RESET + select HAVE_AT91_DBGU0 config ARCH_AT91X40 bool "AT91x40" @@ -447,21 +441,6 @@ endif # ---------------------------------------------------------- -if ARCH_AT91CAP9 - -comment "AT91CAP9 Board Type" - -config MACH_AT91CAP9ADK - bool "Atmel AT91CAP9A-DK Evaluation Kit" - select HAVE_AT91_DATAFLASH_CARD - help - Select this if you are using Atmel's AT91CAP9A-DK Evaluation Kit. - - -endif - -# ---------------------------------------------------------- - if ARCH_AT91X40 comment "AT91X40 Board Type" @@ -544,7 +523,7 @@ config AT91_EARLY_DBGU0 depends on HAVE_AT91_DBGU0 config AT91_EARLY_DBGU1 - bool "DBGU on 9263, 9g45 and cap9" + bool "DBGU on 9263 and 9g45" depends on HAVE_AT91_DBGU1 config AT91_EARLY_USART0 diff --git a/trunk/arch/arm/mach-at91/Makefile b/trunk/arch/arm/mach-at91/Makefile index 705e1fbded39..8512e53bed93 100644 --- a/trunk/arch/arm/mach-at91/Makefile +++ b/trunk/arch/arm/mach-at91/Makefile @@ -20,7 +20,7 @@ obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_d obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o +obj-$(CONFIG_ARCH_AT91SAM9X5) += at91sam9x5.o at91sam926x_time.o sam9_smc.o obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o # AT91RM9200 board-specific support @@ -81,9 +81,6 @@ obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o # AT91SAM board with device-tree obj-$(CONFIG_MACH_AT91SAM_DT) += board-dt.o -# AT91CAP9 board-specific support -obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o - # AT91X40 board-specific support obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o diff --git a/trunk/arch/arm/mach-at91/Makefile.boot b/trunk/arch/arm/mach-at91/Makefile.boot index 8ddafadfdc7d..0da66ca4a4f8 100644 --- a/trunk/arch/arm/mach-at91/Makefile.boot +++ b/trunk/arch/arm/mach-at91/Makefile.boot @@ -3,11 +3,7 @@ # PARAMS_PHYS must be within 4MB of ZRELADDR # INITRD_PHYS must be in RAM -ifeq ($(CONFIG_ARCH_AT91CAP9),y) - zreladdr-y += 0x70008000 -params_phys-y := 0x70000100 -initrd_phys-y := 0x70410000 -else ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) +ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) zreladdr-y += 0x70008000 params_phys-y := 0x70000100 initrd_phys-y := 0x70410000 @@ -17,4 +13,10 @@ params_phys-y := 0x20000100 initrd_phys-y := 0x20410000 endif -dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb usb_a9g20.dtb +# Keep dtb files sorted alphabetically for each SoC +# sam9g20 +dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9g20.dtb +# sam9g45 +dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb +# sam9x5 +dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9g25ek.dtb diff --git a/trunk/arch/arm/mach-at91/at91cap9.c b/trunk/arch/arm/mach-at91/at91cap9.c deleted file mode 100644 index 8967d75c2ea3..000000000000 --- a/trunk/arch/arm/mach-at91/at91cap9.c +++ /dev/null @@ -1,404 +0,0 @@ -/* - * arch/arm/mach-at91/at91cap9.c - * - * Copyright (C) 2007 Stelian Pop - * Copyright (C) 2007 Lead Tech Design - * Copyright (C) 2007 Atmel Corporation. - * - * 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. - * - */ - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include "soc.h" -#include "generic.h" -#include "clock.h" -#include "sam9_smc.h" - -/* -------------------------------------------------------------------- - * Clocks - * -------------------------------------------------------------------- */ - -/* - * The peripheral clocks. - */ -static struct clk pioABCD_clk = { - .name = "pioABCD_clk", - .pmc_mask = 1 << AT91CAP9_ID_PIOABCD, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mpb0_clk = { - .name = "mpb0_clk", - .pmc_mask = 1 << AT91CAP9_ID_MPB0, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mpb1_clk = { - .name = "mpb1_clk", - .pmc_mask = 1 << AT91CAP9_ID_MPB1, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mpb2_clk = { - .name = "mpb2_clk", - .pmc_mask = 1 << AT91CAP9_ID_MPB2, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mpb3_clk = { - .name = "mpb3_clk", - .pmc_mask = 1 << AT91CAP9_ID_MPB3, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mpb4_clk = { - .name = "mpb4_clk", - .pmc_mask = 1 << AT91CAP9_ID_MPB4, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk usart0_clk = { - .name = "usart0_clk", - .pmc_mask = 1 << AT91CAP9_ID_US0, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk usart1_clk = { - .name = "usart1_clk", - .pmc_mask = 1 << AT91CAP9_ID_US1, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk usart2_clk = { - .name = "usart2_clk", - .pmc_mask = 1 << AT91CAP9_ID_US2, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mmc0_clk = { - .name = "mci0_clk", - .pmc_mask = 1 << AT91CAP9_ID_MCI0, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk mmc1_clk = { - .name = "mci1_clk", - .pmc_mask = 1 << AT91CAP9_ID_MCI1, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk can_clk = { - .name = "can_clk", - .pmc_mask = 1 << AT91CAP9_ID_CAN, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk twi_clk = { - .name = "twi_clk", - .pmc_mask = 1 << AT91CAP9_ID_TWI, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk spi0_clk = { - .name = "spi0_clk", - .pmc_mask = 1 << AT91CAP9_ID_SPI0, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk spi1_clk = { - .name = "spi1_clk", - .pmc_mask = 1 << AT91CAP9_ID_SPI1, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk ssc0_clk = { - .name = "ssc0_clk", - .pmc_mask = 1 << AT91CAP9_ID_SSC0, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk ssc1_clk = { - .name = "ssc1_clk", - .pmc_mask = 1 << AT91CAP9_ID_SSC1, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk ac97_clk = { - .name = "ac97_clk", - .pmc_mask = 1 << AT91CAP9_ID_AC97C, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk tcb_clk = { - .name = "tcb_clk", - .pmc_mask = 1 << AT91CAP9_ID_TCB, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk pwm_clk = { - .name = "pwm_clk", - .pmc_mask = 1 << AT91CAP9_ID_PWMC, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk macb_clk = { - .name = "pclk", - .pmc_mask = 1 << AT91CAP9_ID_EMAC, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk aestdes_clk = { - .name = "aestdes_clk", - .pmc_mask = 1 << AT91CAP9_ID_AESTDES, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk adc_clk = { - .name = "adc_clk", - .pmc_mask = 1 << AT91CAP9_ID_ADC, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk isi_clk = { - .name = "isi_clk", - .pmc_mask = 1 << AT91CAP9_ID_ISI, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk lcdc_clk = { - .name = "lcdc_clk", - .pmc_mask = 1 << AT91CAP9_ID_LCDC, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk dma_clk = { - .name = "dma_clk", - .pmc_mask = 1 << AT91CAP9_ID_DMA, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk udphs_clk = { - .name = "udphs_clk", - .pmc_mask = 1 << AT91CAP9_ID_UDPHS, - .type = CLK_TYPE_PERIPHERAL, -}; -static struct clk ohci_clk = { - .name = "ohci_clk", - .pmc_mask = 1 << AT91CAP9_ID_UHP, - .type = CLK_TYPE_PERIPHERAL, -}; - -static struct clk *periph_clocks[] __initdata = { - &pioABCD_clk, - &mpb0_clk, - &mpb1_clk, - &mpb2_clk, - &mpb3_clk, - &mpb4_clk, - &usart0_clk, - &usart1_clk, - &usart2_clk, - &mmc0_clk, - &mmc1_clk, - &can_clk, - &twi_clk, - &spi0_clk, - &spi1_clk, - &ssc0_clk, - &ssc1_clk, - &ac97_clk, - &tcb_clk, - &pwm_clk, - &macb_clk, - &aestdes_clk, - &adc_clk, - &isi_clk, - &lcdc_clk, - &dma_clk, - &udphs_clk, - &ohci_clk, - // irq0 .. irq1 -}; - -static struct clk_lookup periph_clocks_lookups[] = { - /* One additional fake clock for macb_hclk */ - CLKDEV_CON_ID("hclk", &macb_clk), - CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk), - CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), - CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), - CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.1", &mmc1_clk), - CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), - CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), - CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk), - CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), - CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), - /* fake hclk clock */ - CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), - CLKDEV_CON_ID("pioA", &pioABCD_clk), - CLKDEV_CON_ID("pioB", &pioABCD_clk), - CLKDEV_CON_ID("pioC", &pioABCD_clk), - CLKDEV_CON_ID("pioD", &pioABCD_clk), -}; - -static struct clk_lookup usart_clocks_lookups[] = { - CLKDEV_CON_DEV_ID("usart", "atmel_usart.0", &mck), - CLKDEV_CON_DEV_ID("usart", "atmel_usart.1", &usart0_clk), - CLKDEV_CON_DEV_ID("usart", "atmel_usart.2", &usart1_clk), - CLKDEV_CON_DEV_ID("usart", "atmel_usart.3", &usart2_clk), -}; - -/* - * The four programmable clocks. - * You must configure pin multiplexing to bring these signals out. - */ -static struct clk pck0 = { - .name = "pck0", - .pmc_mask = AT91_PMC_PCK0, - .type = CLK_TYPE_PROGRAMMABLE, - .id = 0, -}; -static struct clk pck1 = { - .name = "pck1", - .pmc_mask = AT91_PMC_PCK1, - .type = CLK_TYPE_PROGRAMMABLE, - .id = 1, -}; -static struct clk pck2 = { - .name = "pck2", - .pmc_mask = AT91_PMC_PCK2, - .type = CLK_TYPE_PROGRAMMABLE, - .id = 2, -}; -static struct clk pck3 = { - .name = "pck3", - .pmc_mask = AT91_PMC_PCK3, - .type = CLK_TYPE_PROGRAMMABLE, - .id = 3, -}; - -static void __init at91cap9_register_clocks(void) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) - clk_register(periph_clocks[i]); - - clkdev_add_table(periph_clocks_lookups, - ARRAY_SIZE(periph_clocks_lookups)); - clkdev_add_table(usart_clocks_lookups, - ARRAY_SIZE(usart_clocks_lookups)); - - clk_register(&pck0); - clk_register(&pck1); - clk_register(&pck2); - clk_register(&pck3); -} - -static struct clk_lookup console_clock_lookup; - -void __init at91cap9_set_console_clock(int id) -{ - if (id >= ARRAY_SIZE(usart_clocks_lookups)) - return; - - console_clock_lookup.con_id = "usart"; - console_clock_lookup.clk = usart_clocks_lookups[id].clk; - clkdev_add(&console_clock_lookup); -} - -/* -------------------------------------------------------------------- - * GPIO - * -------------------------------------------------------------------- */ - -static struct at91_gpio_bank at91cap9_gpio[] __initdata = { - { - .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOA, - }, { - .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOB, - }, { - .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOC, - }, { - .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOD, - } -}; - -static void at91cap9_idle(void) -{ - at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); - cpu_do_idle(); -} - -/* -------------------------------------------------------------------- - * AT91CAP9 processor initialization - * -------------------------------------------------------------------- */ - -static void __init at91cap9_map_io(void) -{ - at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE); -} - -static void __init at91cap9_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC); - at91_ioremap_rstc(AT91CAP9_BASE_RSTC); - at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT); - at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC); -} - -static void __init at91cap9_initialize(void) -{ - arm_pm_idle = at91cap9_idle; - arm_pm_restart = at91sam9g45_restart; - at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); - - /* Register GPIO subsystem */ - at91_gpio_init(at91cap9_gpio, 4); - - /* Remember the silicon revision */ - if (cpu_is_at91cap9_revB()) - system_rev = 0xB; - else if (cpu_is_at91cap9_revC()) - system_rev = 0xC; -} - -/* -------------------------------------------------------------------- - * Interrupt initialization - * -------------------------------------------------------------------- */ - -/* - * The default interrupt priority levels (0 = lowest, 7 = highest). - */ -static unsigned int at91cap9_default_irq_priority[NR_AIC_IRQS] __initdata = { - 7, /* Advanced Interrupt Controller (FIQ) */ - 7, /* System Peripherals */ - 1, /* Parallel IO Controller A, B, C and D */ - 0, /* MP Block Peripheral 0 */ - 0, /* MP Block Peripheral 1 */ - 0, /* MP Block Peripheral 2 */ - 0, /* MP Block Peripheral 3 */ - 0, /* MP Block Peripheral 4 */ - 5, /* USART 0 */ - 5, /* USART 1 */ - 5, /* USART 2 */ - 0, /* Multimedia Card Interface 0 */ - 0, /* Multimedia Card Interface 1 */ - 3, /* CAN */ - 6, /* Two-Wire Interface */ - 5, /* Serial Peripheral Interface 0 */ - 5, /* Serial Peripheral Interface 1 */ - 4, /* Serial Synchronous Controller 0 */ - 4, /* Serial Synchronous Controller 1 */ - 5, /* AC97 Controller */ - 0, /* Timer Counter 0, 1 and 2 */ - 0, /* Pulse Width Modulation Controller */ - 3, /* Ethernet */ - 0, /* Advanced Encryption Standard, Triple DES*/ - 0, /* Analog-to-Digital Converter */ - 0, /* Image Sensor Interface */ - 3, /* LCD Controller */ - 0, /* DMA Controller */ - 2, /* USB Device Port */ - 2, /* USB Host port */ - 0, /* Advanced Interrupt Controller (IRQ0) */ - 0, /* Advanced Interrupt Controller (IRQ1) */ -}; - -struct at91_init_soc __initdata at91cap9_soc = { - .map_io = at91cap9_map_io, - .default_irq_priority = at91cap9_default_irq_priority, - .ioremap_registers = at91cap9_ioremap_registers, - .register_clocks = at91cap9_register_clocks, - .init = at91cap9_initialize, -}; diff --git a/trunk/arch/arm/mach-at91/at91cap9_devices.c b/trunk/arch/arm/mach-at91/at91cap9_devices.c deleted file mode 100644 index d298fb7cb210..000000000000 --- a/trunk/arch/arm/mach-at91/at91cap9_devices.c +++ /dev/null @@ -1,1273 +0,0 @@ -/* - * arch/arm/mach-at91/at91cap9_devices.c - * - * Copyright (C) 2007 Stelian Pop - * Copyright (C) 2007 Lead Tech Design - * Copyright (C) 2007 Atmel Corporation. - * - * 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. - * - */ -#include -#include -#include - -#include -#include -#include -#include - -#include