From 6339561360a4dfd76746b5b5ff60c072a8a53299 Mon Sep 17 00:00:00 2001 From: Julian Anastasov Date: Sat, 7 Jul 2012 20:32:12 +0300 Subject: [PATCH] --- yaml --- r: 327574 b: refs/heads/master c: aaea4ed74d71dda1cf2cc19c206552d537201452 h: refs/heads/master v: v3 --- [refs] | 2 +- .../obsolete/proc-sys-vm-nr_pdflush_threads | 5 - .../ABI/stable/sysfs-bus-firewire | 11 - trunk/Documentation/ABI/testing/sysfs-bus-rbd | 10 +- .../ABI/testing/sysfs-devices-edac | 140 - .../sysfs-devices-platform-sh_mobile_lcdc_fb | 44 - .../ABI/testing/sysfs-platform-asus-wmi | 7 - .../ABI/testing/sysfs-platform-ideapad-laptop | 11 - trunk/Documentation/DMA-attributes.txt | 42 - trunk/Documentation/DocBook/filesystems.tmpl | 4 +- .../DocBook/media/v4l/biblio.xml | 2 +- .../DocBook/media/v4l/common.xml | 17 +- .../DocBook/media/v4l/compat.xml | 42 +- .../DocBook/media/v4l/controls.xml | 5 - .../DocBook/media/v4l/dev-subdev.xml | 36 +- trunk/Documentation/DocBook/media/v4l/io.xml | 19 +- .../DocBook/media/v4l/selection-api.xml | 34 +- .../DocBook/media/v4l/selections-common.xml | 164 - .../Documentation/DocBook/media/v4l/v4l2.xml | 11 - .../DocBook/media/v4l/vidioc-create-bufs.xml | 12 +- .../media/v4l/vidioc-dv-timings-cap.xml | 14 +- .../media/v4l/vidioc-enum-freq-bands.xml | 179 - .../DocBook/media/v4l/vidioc-g-frequency.xml | 13 +- .../DocBook/media/v4l/vidioc-g-selection.xml | 86 +- .../DocBook/media/v4l/vidioc-g-tuner.xml | 38 +- .../DocBook/media/v4l/vidioc-qbuf.xml | 9 +- .../DocBook/media/v4l/vidioc-querycap.xml | 13 - .../media/v4l/vidioc-s-hw-freq-seek.xml | 68 +- .../media/v4l/vidioc-subdev-g-selection.xml | 79 +- trunk/Documentation/IRQ-domain.txt | 5 - trunk/Documentation/block/queue-sysfs.txt | 7 - trunk/Documentation/cgroups/hugetlb.txt | 45 - trunk/Documentation/cgroups/memory.txt | 12 +- trunk/Documentation/device-mapper/dm-raid.txt | 26 - trunk/Documentation/device-mapper/striped.txt | 7 +- .../device-mapper/thin-provisioning.txt | 24 +- .../devicetree/bindings/arm/calxeda/l2ecc.txt | 15 - .../bindings/arm/calxeda/mem-ctrlr.txt | 14 - .../devicetree/bindings/arm/mrvl/intc.txt | 20 - .../bindings/ata/cavium-compact-flash.txt | 30 - .../devicetree/bindings/ata/marvell.txt | 16 - .../bindings/gpio/cavium-octeon-gpio.txt | 49 - .../{i2c/gpio-i2c.txt => gpio/gpio_i2c.txt} | 0 .../devicetree/bindings/gpio/mrvl-gpio.txt | 23 - .../devicetree/bindings/i2c/cavium-i2c.txt | 34 - .../devicetree/bindings/i2c/i2c-mxs.txt | 3 - .../devicetree/bindings/i2c/i2c-ocores.txt | 33 - .../devicetree/bindings/i2c/mrvl-i2c.txt | 19 +- .../devicetree/bindings/mfd/ab8500.txt | 123 - .../devicetree/bindings/mfd/max77686.txt | 59 - .../devicetree/bindings/mfd/tps65910.txt | 2 +- .../devicetree/bindings/mfd/twl6040.txt | 2 +- .../bindings/mips/cavium/bootbus.txt | 126 - .../devicetree/bindings/mips/cavium/ciu.txt | 26 - .../devicetree/bindings/mips/cavium/ciu2.txt | 27 - .../bindings/mips/cavium/dma-engine.txt | 21 - .../devicetree/bindings/mips/cavium/uctl.txt | 46 - .../devicetree/bindings/net/cavium-mdio.txt | 27 - .../devicetree/bindings/net/cavium-mix.txt | 39 - .../devicetree/bindings/net/cavium-pip.txt | 98 - .../devicetree/bindings/net/cpsw.txt | 109 - .../devicetree/bindings/net/davinci-mdio.txt | 33 - .../devicetree/bindings/pwm/lpc32xx-pwm.txt | 12 - .../devicetree/bindings/pwm/mxs-pwm.txt | 17 - .../bindings/pwm/nvidia,tegra20-pwm.txt | 18 - .../devicetree/bindings/pwm/pwm.txt | 57 - .../bindings/regulator/tps6586x.txt | 12 +- .../bindings/serial/cavium-uart.txt | 19 - .../video/backlight/pwm-backlight.txt | 28 - .../devicetree/bindings/watchdog/marvel.txt | 14 - trunk/Documentation/dontdiff | 1 + trunk/Documentation/dvb/get_dvb_firmware | 42 +- trunk/Documentation/edac.txt | 112 +- .../fault-injection/fault-injection.txt | 27 - .../fault-injection/notifier-error-inject.txt | 99 - .../feature-removal-schedule.txt | 65 +- trunk/Documentation/filesystems/Locking | 21 +- trunk/Documentation/filesystems/porting | 5 +- trunk/Documentation/filesystems/vfat.txt | 11 - trunk/Documentation/filesystems/vfs.txt | 16 +- trunk/Documentation/input/edt-ft5x06.txt | 54 - trunk/Documentation/ioctl/ioctl-number.txt | 1 - trunk/Documentation/kernel-parameters.txt | 2 +- trunk/Documentation/laptops/laptop-mode.txt | 12 +- trunk/Documentation/networking/ip-sysctl.txt | 6 + trunk/Documentation/networking/netconsole.txt | 19 +- trunk/Documentation/pinctrl.txt | 6 +- .../power/power_supply_class.txt | 10 - trunk/Documentation/printk-formats.txt | 15 - trunk/Documentation/pwm.txt | 76 - trunk/Documentation/security/Yama.txt | 14 +- .../sound/alsa/HD-Audio-Models.txt | 5 - trunk/Documentation/sysctl/fs.txt | 60 +- trunk/Documentation/sysctl/vm.txt | 44 +- trunk/Documentation/vfio.txt | 314 - .../Documentation/video4linux/CARDLIST.au0828 | 2 +- trunk/Documentation/video4linux/CARDLIST.bttv | 1 - .../video4linux/CARDLIST.cx23885 | 4 +- .../video4linux/CARDLIST.saa7134 | 1 - .../video4linux/v4l2-framework.txt | 73 +- trunk/Documentation/vm/hugetlbpage.txt | 10 +- trunk/Documentation/w1/slaves/w1_therm | 2 - trunk/MAINTAINERS | 120 +- trunk/Makefile | 28 +- trunk/arch/Kconfig | 7 - trunk/arch/alpha/Kconfig | 3 - trunk/arch/alpha/include/asm/atomic.h | 4 +- trunk/arch/alpha/include/asm/fpu.h | 2 - trunk/arch/alpha/include/asm/ptrace.h | 5 +- trunk/arch/alpha/include/asm/socket.h | 2 - trunk/arch/alpha/include/asm/uaccess.h | 34 +- trunk/arch/alpha/include/asm/unistd.h | 5 +- trunk/arch/alpha/include/asm/word-at-a-time.h | 55 - trunk/arch/alpha/kernel/alpha_ksyms.c | 3 + trunk/arch/alpha/kernel/entry.S | 161 + trunk/arch/alpha/kernel/osf_sys.c | 49 - trunk/arch/alpha/kernel/process.c | 19 - trunk/arch/alpha/kernel/smc37c669.c | 12 + trunk/arch/alpha/kernel/systbls.S | 4 +- trunk/arch/alpha/lib/Makefile | 2 + trunk/arch/alpha/lib/ev6-strncpy_from_user.S | 424 ++ trunk/arch/alpha/lib/ev67-strlen_user.S | 107 + trunk/arch/alpha/lib/strlen_user.S | 91 + trunk/arch/alpha/lib/strncpy_from_user.S | 339 + trunk/arch/alpha/mm/fault.c | 36 +- trunk/arch/alpha/oprofile/common.c | 1 - trunk/arch/arm/Kconfig | 10 +- trunk/arch/arm/boot/dts/armada-xp.dtsi | 2 +- trunk/arch/arm/boot/dts/highbank.dts | 12 - trunk/arch/arm/boot/dts/imx23.dtsi | 52 +- trunk/arch/arm/boot/dts/imx27-3ds.dts | 2 +- trunk/arch/arm/boot/dts/imx27.dtsi | 6 - trunk/arch/arm/boot/dts/imx28.dtsi | 76 +- trunk/arch/arm/boot/dts/imx51-babbage.dts | 2 +- trunk/arch/arm/boot/dts/imx51.dtsi | 4 - trunk/arch/arm/boot/dts/imx53-ard.dts | 22 +- trunk/arch/arm/boot/dts/imx53.dtsi | 7 - trunk/arch/arm/boot/dts/imx6q-sabrelite.dts | 1 - trunk/arch/arm/boot/dts/imx6q.dtsi | 7 - trunk/arch/arm/boot/dts/kirkwood-dns320.dts | 62 +- trunk/arch/arm/boot/dts/kirkwood-dns325.dts | 68 +- trunk/arch/arm/boot/dts/kirkwood-dnskw.dtsi | 69 - .../arch/arm/boot/dts/kirkwood-dreamplug.dts | 50 - .../arch/arm/boot/dts/kirkwood-goflexnet.dts | 99 - trunk/arch/arm/boot/dts/kirkwood-ib62x0.dts | 38 - trunk/arch/arm/boot/dts/kirkwood-iconnect.dts | 42 - trunk/arch/arm/boot/dts/kirkwood-lschlv2.dts | 20 - trunk/arch/arm/boot/dts/kirkwood-lsxhl.dts | 20 - trunk/arch/arm/boot/dts/kirkwood-lsxl.dtsi | 95 - .../arch/arm/boot/dts/kirkwood-ts219-6281.dts | 21 - .../arch/arm/boot/dts/kirkwood-ts219-6282.dts | 21 - trunk/arch/arm/boot/dts/kirkwood-ts219.dtsi | 78 - trunk/arch/arm/boot/dts/kirkwood.dtsi | 60 - trunk/arch/arm/boot/dts/r8a7740.dtsi | 21 - trunk/arch/arm/boot/dts/sh7377.dtsi | 21 - trunk/arch/arm/boot/dts/tegra20.dtsi | 6 - trunk/arch/arm/boot/dts/tegra30.dtsi | 6 - trunk/arch/arm/common/dmabounce.c | 1 - .../arm/configs/armadillo800eva_defconfig | 25 +- trunk/arch/arm/configs/imx_v6_v7_defconfig | 1 - trunk/arch/arm/configs/kzm9d_defconfig | 89 - trunk/arch/arm/configs/kzm9g_defconfig | 8 +- trunk/arch/arm/configs/mxs_defconfig | 1 + trunk/arch/arm/configs/omap2plus_defconfig | 2 - trunk/arch/arm/configs/tct_hammer_defconfig | 2 +- trunk/arch/arm/configs/tegra_defconfig | 1 - trunk/arch/arm/include/asm/cacheflush.h | 8 +- trunk/arch/arm/include/asm/dma-mapping.h | 24 +- trunk/arch/arm/include/asm/mutex.h | 119 +- trunk/arch/arm/include/asm/pgtable.h | 40 +- trunk/arch/arm/include/asm/sched_clock.h | 2 - trunk/arch/arm/include/asm/setup.h | 4 +- trunk/arch/arm/include/asm/unistd.h | 1 + trunk/arch/arm/kernel/entry-armv.S | 111 +- trunk/arch/arm/kernel/entry-common.S | 24 +- trunk/arch/arm/kernel/ftrace.c | 17 +- trunk/arch/arm/kernel/process.c | 2 - trunk/arch/arm/kernel/ptrace.c | 1 - trunk/arch/arm/kernel/sched_clock.c | 24 - trunk/arch/arm/kernel/setup.c | 6 +- trunk/arch/arm/kernel/signal.c | 114 +- trunk/arch/arm/kernel/signal.h | 2 + trunk/arch/arm/kernel/smp.c | 3 +- trunk/arch/arm/kernel/topology.c | 2 +- trunk/arch/arm/kernel/traps.c | 10 + trunk/arch/arm/lib/Makefile | 23 +- trunk/arch/arm/lib/io-acorn.S | 3 +- trunk/arch/arm/lib/io-readsw-armv3.S | 106 - trunk/arch/arm/lib/io-writesw-armv3.S | 126 - trunk/arch/arm/lib/uaccess.S | 564 -- .../arch/arm/mach-davinci/board-neuros-osd2.c | 39 + trunk/arch/arm/mach-davinci/devices-da8xx.c | 1 - trunk/arch/arm/mach-dove/irq.c | 58 +- trunk/arch/arm/mach-exynos/clock-exynos4.c | 41 +- trunk/arch/arm/mach-exynos/clock-exynos4.h | 3 - trunk/arch/arm/mach-exynos/clock-exynos4210.c | 37 - trunk/arch/arm/mach-exynos/clock-exynos4212.c | 41 +- trunk/arch/arm/mach-exynos/mach-nuri.c | 4 + trunk/arch/arm/mach-exynos/mach-origen.c | 1 + trunk/arch/arm/mach-exynos/pm_domains.c | 2 +- trunk/arch/arm/mach-imx/clk-imx27.c | 8 +- trunk/arch/arm/mach-imx/clk-imx31.c | 2 +- trunk/arch/arm/mach-imx/clk-imx51-imx53.c | 1 - trunk/arch/arm/mach-integrator/core.c | 1 - .../arch/arm/mach-integrator/integrator_ap.c | 2 +- trunk/arch/arm/mach-kirkwood/Kconfig | 29 - trunk/arch/arm/mach-kirkwood/Makefile | 3 - trunk/arch/arm/mach-kirkwood/Makefile.boot | 4 - trunk/arch/arm/mach-kirkwood/board-dnskw.c | 143 + .../arch/arm/mach-kirkwood/board-dreamplug.c | 80 + trunk/arch/arm/mach-kirkwood/board-dt.c | 29 +- .../arch/arm/mach-kirkwood/board-goflexnet.c | 71 - trunk/arch/arm/mach-kirkwood/board-ib62x0.c | 72 + trunk/arch/arm/mach-kirkwood/board-iconnect.c | 56 + trunk/arch/arm/mach-kirkwood/board-lsxl.c | 135 - trunk/arch/arm/mach-kirkwood/board-ts219.c | 82 - trunk/arch/arm/mach-kirkwood/common.c | 2 - trunk/arch/arm/mach-kirkwood/common.h | 17 - trunk/arch/arm/mach-kirkwood/irq.c | 38 +- trunk/arch/arm/mach-mmp/gplugd.c | 1 - trunk/arch/arm/mach-mv78xx0/irq.c | 22 +- trunk/arch/arm/mach-mxs/Kconfig | 6 + trunk/arch/arm/mach-mxs/Makefile | 3 +- trunk/arch/arm/mach-netx/fb.c | 23 + trunk/arch/arm/mach-omap1/board-h2-mmc.c | 1 + trunk/arch/arm/mach-omap1/board-h3-mmc.c | 1 + trunk/arch/arm/mach-omap1/board-nokia770.c | 1 + trunk/arch/arm/mach-omap1/board-palmz71.c | 3 +- trunk/arch/arm/mach-omap2/Kconfig | 1 - trunk/arch/arm/mach-omap2/board-n8x0.c | 1 + trunk/arch/arm/mach-omap2/cpuidle44xx.c | 145 +- trunk/arch/arm/mach-omap2/display.c | 25 +- trunk/arch/arm/mach-omap2/hsmmc.c | 1 + trunk/arch/arm/mach-omap2/timer.c | 4 +- trunk/arch/arm/mach-orion5x/irq.c | 22 +- trunk/arch/arm/mach-prima2/timer.c | 6 +- trunk/arch/arm/mach-pxa/eseries.h | 14 + trunk/arch/arm/mach-pxa/hx4700.c | 56 +- trunk/arch/arm/mach-pxa/lubbock.c | 2 +- trunk/arch/arm/mach-pxa/magician.c | 5 +- trunk/arch/arm/mach-pxa/raumfeld.c | 2 +- trunk/arch/arm/mach-pxa/trizeps4.c | 4 +- trunk/arch/arm/mach-s3c24xx/Kconfig | 4 +- .../arm/mach-s3c64xx/include/mach/pm-core.h | 4 - trunk/arch/arm/mach-sa1100/leds-hackkit.c | 1 - trunk/arch/arm/mach-shmobile/Kconfig | 13 - trunk/arch/arm/mach-shmobile/Makefile | 2 - trunk/arch/arm/mach-shmobile/board-ag5evm.c | 82 +- trunk/arch/arm/mach-shmobile/board-ap4evb.c | 62 +- .../arm/mach-shmobile/board-armadillo800eva.c | 455 +- trunk/arch/arm/mach-shmobile/board-bonito.c | 10 - trunk/arch/arm/mach-shmobile/board-g4evm.c | 52 +- trunk/arch/arm/mach-shmobile/board-kota2.c | 30 - trunk/arch/arm/mach-shmobile/board-kzm9d.c | 10 - trunk/arch/arm/mach-shmobile/board-kzm9g.c | 320 - trunk/arch/arm/mach-shmobile/board-mackerel.c | 83 +- trunk/arch/arm/mach-shmobile/board-marzen.c | 10 - trunk/arch/arm/mach-shmobile/clock-r8a7740.c | 150 +- trunk/arch/arm/mach-shmobile/clock-r8a7779.c | 2 +- trunk/arch/arm/mach-shmobile/clock-sh7367.c | 2 +- trunk/arch/arm/mach-shmobile/clock-sh7372.c | 2 +- trunk/arch/arm/mach-shmobile/clock-sh7377.c | 2 +- trunk/arch/arm/mach-shmobile/clock-sh73a0.c | 12 +- .../arm/mach-shmobile/include/mach/common.h | 1 - .../mach-shmobile/include/mach/dma-register.h | 84 - .../arm/mach-shmobile/include/mach/gpio.h | 32 - .../mach-shmobile/include/mach/pm-rmobile.h | 44 - .../arm/mach-shmobile/include/mach/r8a7740.h | 33 +- .../arm/mach-shmobile/include/mach/sh7372.h | 45 +- .../arm/mach-shmobile/include/mach/sh73a0.h | 7 - trunk/arch/arm/mach-shmobile/intc-r8a7740.c | 13 +- trunk/arch/arm/mach-shmobile/pfc-r8a7740.c | 24 +- trunk/arch/arm/mach-shmobile/pm-r8a7740.c | 54 - trunk/arch/arm/mach-shmobile/pm-rmobile.c | 167 - trunk/arch/arm/mach-shmobile/pm-sh7372.c | 297 +- trunk/arch/arm/mach-shmobile/setup-r8a7740.c | 360 - trunk/arch/arm/mach-shmobile/setup-sh7372.c | 209 +- trunk/arch/arm/mach-shmobile/setup-sh7377.c | 47 - trunk/arch/arm/mach-shmobile/setup-sh73a0.c | 152 +- trunk/arch/arm/mach-spear3xx/spear300.c | 26 + trunk/arch/arm/mach-spear3xx/spear310.c | 26 + trunk/arch/arm/mach-spear3xx/spear320.c | 26 + trunk/arch/arm/mach-spear3xx/spear3xx.c | 3 +- trunk/arch/arm/mach-spear6xx/spear6xx.c | 51 +- trunk/arch/arm/mach-tegra/board-dt-tegra20.c | 3 +- trunk/arch/arm/mach-tegra/board-dt-tegra30.c | 3 - .../arch/arm/mach-tegra/board-harmony-power.c | 32 +- trunk/arch/arm/mach-ux500/board-mop500.c | 32 +- trunk/arch/arm/mach-ux500/cpu-db8500.c | 7 +- trunk/arch/arm/mach-ux500/devices-common.h | 24 +- .../arch/arm/mach-ux500/include/mach/setup.h | 3 +- trunk/arch/arm/mach-vt8500/Makefile | 2 + trunk/arch/arm/mach-vt8500/pwm.c | 265 + trunk/arch/arm/mm/dma-mapping.c | 571 +- trunk/arch/arm/mm/flush.c | 2 + trunk/arch/arm/mm/mm.h | 3 - trunk/arch/arm/mm/tlb-v7.S | 12 - trunk/arch/arm/plat-mxc/Kconfig | 6 + trunk/arch/arm/plat-mxc/Makefile | 1 + trunk/arch/arm/plat-mxc/include/mach/i2c.h | 2 +- .../pwm/pwm-imx.c => arch/arm/plat-mxc/pwm.c} | 204 +- trunk/arch/arm/plat-mxc/tzic.c | 1 - .../arm/plat-nomadik/include/plat/i2c.h} | 6 +- trunk/arch/arm/plat-omap/include/plat/mmc.h | 2 + trunk/arch/arm/plat-orion/common.c | 1 - trunk/arch/arm/plat-orion/gpio.c | 166 +- trunk/arch/arm/plat-orion/include/plat/gpio.h | 16 +- trunk/arch/arm/plat-orion/include/plat/irq.h | 3 +- trunk/arch/arm/plat-orion/irq.c | 40 - trunk/arch/arm/plat-pxa/Makefile | 1 + trunk/arch/arm/plat-pxa/pwm.c | 304 + trunk/arch/arm/plat-samsung/Kconfig | 3 +- trunk/arch/arm/plat-samsung/Makefile | 4 + .../arm/plat-samsung/pwm.c} | 234 +- .../arch/arm/plat-spear/include/plat/pl080.h | 6 +- trunk/arch/arm/plat-spear/pl080.c | 10 +- trunk/arch/arm/vfp/entry.S | 16 +- trunk/arch/arm/vfp/vfphw.S | 26 +- trunk/arch/arm/vfp/vfpmodule.c | 10 +- trunk/arch/avr32/Kconfig | 1 - trunk/arch/avr32/boards/atstk1000/atstk1002.c | 2 +- trunk/arch/avr32/include/asm/unistd.h | 1 + trunk/arch/avr32/mm/fault.c | 33 +- trunk/arch/blackfin/Kconfig | 11 +- trunk/arch/blackfin/include/asm/unistd.h | 1 + trunk/arch/blackfin/kernel/Makefile | 1 + trunk/arch/blackfin/kernel/pwm.c | 100 + trunk/arch/blackfin/kernel/setup.c | 1 + trunk/arch/c6x/Kconfig | 1 - trunk/arch/c6x/include/asm/cache.h | 16 +- trunk/arch/cris/Kconfig | 1 - trunk/arch/cris/include/asm/unistd.h | 1 + trunk/arch/frv/Kconfig | 1 - trunk/arch/frv/include/asm/cpumask.h | 6 + trunk/arch/frv/include/asm/unistd.h | 1 + trunk/arch/frv/kernel/kernel_thread.S | 2 +- trunk/arch/h8300/Kconfig | 1 - trunk/arch/h8300/include/asm/unistd.h | 1 + trunk/arch/hexagon/include/asm/Kbuild | 2 + trunk/arch/ia64/Kconfig | 3 +- trunk/arch/ia64/configs/generic_defconfig | 1 + trunk/arch/ia64/configs/gensparse_defconfig | 1 + trunk/arch/ia64/include/asm/atomic.h | 4 +- trunk/arch/ia64/include/asm/machvec.h | 2 +- trunk/arch/ia64/include/asm/machvec_dig.h | 2 +- trunk/arch/ia64/include/asm/machvec_dig_vtd.h | 2 +- trunk/arch/ia64/include/asm/machvec_hpsim.h | 2 +- trunk/arch/ia64/include/asm/machvec_hpzx1.h | 2 +- .../ia64/include/asm/machvec_hpzx1_swiotlb.h | 2 +- trunk/arch/ia64/include/asm/machvec_sn2.h | 2 +- trunk/arch/ia64/include/asm/machvec_uv.h | 2 +- trunk/arch/ia64/include/asm/machvec_xen.h | 2 +- trunk/arch/ia64/include/asm/processor.h | 2 +- trunk/arch/ia64/kernel/acpi.c | 5 +- trunk/arch/ia64/kernel/irq_ia64.c | 1 + trunk/arch/ia64/kernel/perfmon.c | 1 + trunk/arch/ia64/kvm/Kconfig | 1 - trunk/arch/ia64/pci/fixup.c | 4 +- trunk/arch/m32r/Kconfig | 1 - trunk/arch/m32r/include/asm/unistd.h | 1 + trunk/arch/m68k/Kconfig | 14 +- trunk/arch/m68k/Kconfig.cpu | 19 +- trunk/arch/m68k/apollo/config.c | 16 +- trunk/arch/m68k/include/asm/Kbuild | 25 - trunk/arch/m68k/include/asm/MC68332.h | 152 + trunk/arch/m68k/include/asm/apollodma.h | 248 + trunk/arch/m68k/include/asm/apollohw.h | 2 +- trunk/arch/m68k/include/asm/bitsperlong.h | 1 + trunk/arch/m68k/include/asm/cputime.h | 6 + trunk/arch/m68k/include/asm/delay.h | 2 +- trunk/arch/m68k/include/asm/device.h | 7 + .../arch/m68k/include/asm/emergency-restart.h | 6 + trunk/arch/m68k/include/asm/errno.h | 6 + trunk/arch/m68k/include/asm/futex.h | 6 + trunk/arch/m68k/include/asm/ioctl.h | 1 + trunk/arch/m68k/include/asm/ipcbuf.h | 1 + trunk/arch/m68k/include/asm/irq_regs.h | 1 + trunk/arch/m68k/include/asm/kdebug.h | 1 + trunk/arch/m68k/include/asm/kmap_types.h | 6 + trunk/arch/m68k/include/asm/kvm_para.h | 1 + trunk/arch/m68k/include/asm/local.h | 6 + trunk/arch/m68k/include/asm/local64.h | 1 + trunk/arch/m68k/include/asm/mac_mouse.h | 23 + trunk/arch/m68k/include/asm/mcfmbus.h | 77 + trunk/arch/m68k/include/asm/mman.h | 1 + trunk/arch/m68k/include/asm/mutex.h | 9 + trunk/arch/m68k/include/asm/percpu.h | 6 + trunk/arch/m68k/include/asm/resource.h | 6 + trunk/arch/m68k/include/asm/sbus.h | 45 + trunk/arch/m68k/include/asm/scatterlist.h | 6 + trunk/arch/m68k/include/asm/sections.h | 8 + trunk/arch/m68k/include/asm/shm.h | 31 + trunk/arch/m68k/include/asm/siginfo.h | 6 + trunk/arch/m68k/include/asm/statfs.h | 6 + trunk/arch/m68k/include/asm/topology.h | 6 + trunk/arch/m68k/include/asm/types.h | 22 + trunk/arch/m68k/include/asm/unaligned.h | 4 +- trunk/arch/m68k/include/asm/unistd.h | 1 + trunk/arch/m68k/include/asm/xor.h | 1 + trunk/arch/m68k/kernel/setup_no.c | 11 +- trunk/arch/m68k/kernel/sys_m68k.c | 8 +- trunk/arch/m68k/kernel/vmlinux-nommu.lds | 2 + trunk/arch/m68k/kernel/vmlinux-std.lds | 2 + trunk/arch/m68k/kernel/vmlinux-sun3.lds | 2 + trunk/arch/m68k/lib/muldi3.c | 2 +- trunk/arch/m68k/mm/init_mm.c | 2 +- trunk/arch/m68k/mm/init_no.c | 2 +- trunk/arch/m68k/platform/68328/head-de2.S | 8 +- trunk/arch/m68k/platform/68328/head-pilot.S | 10 +- trunk/arch/m68k/platform/68328/head-ram.S | 4 +- trunk/arch/m68k/platform/68328/head-rom.S | 6 +- trunk/arch/m68k/platform/68360/head-ram.S | 6 +- trunk/arch/m68k/platform/68360/head-rom.S | 8 +- trunk/arch/m68k/platform/coldfire/head.S | 10 +- trunk/arch/m68k/sun3/prom/init.c | 48 +- trunk/arch/microblaze/Kconfig | 1 - trunk/arch/microblaze/include/asm/sections.h | 4 + trunk/arch/microblaze/include/asm/unistd.h | 1 + .../arch/microblaze/kernel/microblaze_ksyms.c | 3 + trunk/arch/microblaze/kernel/setup.c | 4 +- trunk/arch/microblaze/kernel/vmlinux.lds.S | 1 + trunk/arch/mips/Kbuild.platforms | 1 - trunk/arch/mips/Kconfig | 42 +- trunk/arch/mips/alchemy/board-mtx1.c | 4 +- trunk/arch/mips/alchemy/common/platform.c | 10 +- trunk/arch/mips/alchemy/devboards/Makefile | 2 +- trunk/arch/mips/alchemy/devboards/bcsr.c | 5 +- trunk/arch/mips/alchemy/devboards/pb1100.c | 4 +- trunk/arch/mips/alchemy/devboards/pb1500.c | 4 +- trunk/arch/mips/alchemy/devboards/platform.c | 30 - trunk/arch/mips/alchemy/devboards/prom.c | 69 + trunk/arch/mips/bcm63xx/Kconfig | 4 - trunk/arch/mips/bcm63xx/Makefile | 3 +- .../arch/mips/bcm63xx/boards/board_bcm963xx.c | 107 +- trunk/arch/mips/bcm63xx/clk.c | 26 +- trunk/arch/mips/bcm63xx/cpu.c | 63 +- trunk/arch/mips/bcm63xx/dev-dsp.c | 2 +- trunk/arch/mips/bcm63xx/dev-flash.c | 123 - trunk/arch/mips/bcm63xx/dev-rng.c | 40 - trunk/arch/mips/bcm63xx/dev-spi.c | 119 - trunk/arch/mips/bcm63xx/dev-wdt.c | 2 +- trunk/arch/mips/bcm63xx/irq.c | 21 - trunk/arch/mips/bcm63xx/prom.c | 4 +- trunk/arch/mips/bcm63xx/setup.c | 13 +- trunk/arch/mips/boot/compressed/Makefile | 4 - trunk/arch/mips/boot/compressed/uart-16550.c | 5 - trunk/arch/mips/cavium-octeon/.gitignore | 2 - trunk/arch/mips/cavium-octeon/Makefile | 16 - .../mips/cavium-octeon/executive/cvmx-fpa.c | 183 + .../cavium-octeon/executive/cvmx-helper-fpa.c | 243 + trunk/arch/mips/cavium-octeon/octeon-irq.c | 399 +- trunk/arch/mips/cavium-octeon/octeon-memcpy.S | 16 +- .../arch/mips/cavium-octeon/octeon-platform.c | 699 +- trunk/arch/mips/cavium-octeon/octeon_3xxx.dts | 571 -- trunk/arch/mips/cavium-octeon/octeon_68xx.dts | 625 -- trunk/arch/mips/cavium-octeon/serial.c | 134 +- trunk/arch/mips/cavium-octeon/setup.c | 45 - trunk/arch/mips/configs/ls1b_defconfig | 109 - trunk/arch/mips/configs/nlm_xlr_defconfig | 4 - trunk/arch/mips/dec/prom/memory.c | 2 +- trunk/arch/mips/include/asm/clock.h | 11 + trunk/arch/mips/include/asm/cpu.h | 3 +- .../include/asm/mach-bcm63xx/bcm63xx_cpu.h | 150 +- .../asm/mach-bcm63xx/bcm63xx_dev_flash.h | 12 - .../asm/mach-bcm63xx/bcm63xx_dev_spi.h | 89 - .../include/asm/mach-bcm63xx/bcm63xx_gpio.h | 2 - .../include/asm/mach-bcm63xx/bcm63xx_io.h | 8 - .../include/asm/mach-bcm63xx/bcm63xx_regs.h | 286 +- .../mips/include/asm/mach-bcm63xx/ioremap.h | 1 - .../mips/include/asm/mach-cavium-octeon/irq.h | 45 +- .../include/asm/mach-jz4740/jz4740_nand.h | 4 - .../mips/include/asm/mach-loongson/loongson.h | 4 +- .../mips/include/asm/mach-loongson1/irq.h | 73 - .../include/asm/mach-loongson1/loongson1.h | 44 - .../include/asm/mach-loongson1/platform.h | 23 - .../mips/include/asm/mach-loongson1/prom.h | 24 - .../include/asm/mach-loongson1/regs-clk.h | 33 - .../include/asm/mach-loongson1/regs-wdt.h | 22 - .../mips/include/asm/mach-loongson1/war.h | 25 - .../asm/mach-netlogic/cpu-feature-overrides.h | 1 + .../include/asm/mach-tx49xx/mangle-port.h | 2 +- trunk/arch/mips/include/asm/mipsmtregs.h | 13 - trunk/arch/mips/include/asm/module.h | 2 - .../include/asm/netlogic/xlp-hal/cpucontrol.h | 4 +- .../mips/include/asm/netlogic/xlp-hal/iomap.h | 5 +- .../include/asm/netlogic/xlp-hal/pcibus.h | 76 - .../mips/include/asm/netlogic/xlp-hal/pic.h | 4 - .../mips/include/asm/netlogic/xlp-hal/usb.h | 64 - .../mips/include/asm/netlogic/xlp-hal/xlp.h | 17 +- .../mips/include/asm/netlogic/xlr/bridge.h | 104 - .../mips/include/asm/netlogic/xlr/flash.h | 55 - .../arch/mips/include/asm/netlogic/xlr/gpio.h | 59 +- .../mips/include/asm/octeon/cvmx-helper-fpa.h | 64 + .../mips/include/asm/octeon/cvmx-helper.h | 2 + trunk/arch/mips/include/asm/octeon/octeon.h | 5 + trunk/arch/mips/include/asm/prom.h | 3 + trunk/arch/mips/include/asm/smtc.h | 6 - trunk/arch/mips/include/asm/uaccess.h | 6 +- trunk/arch/mips/include/asm/uasm.h | 100 +- trunk/arch/mips/include/asm/unistd.h | 1 + trunk/arch/mips/jz4740/board-qi_lb60.c | 1 - trunk/arch/mips/jz4740/platform.c | 20 +- trunk/arch/mips/jz4740/reset.c | 49 +- trunk/arch/mips/kernel/cpu-probe.c | 299 +- trunk/arch/mips/kernel/cpufreq/Makefile | 2 +- .../cpufreq/loongson2_clock.c} | 46 +- .../mips/kernel/cpufreq/loongson2_cpufreq.c | 21 +- trunk/arch/mips/kernel/perf_event_mipsxx.c | 5 - trunk/arch/mips/kernel/prom.c | 29 + trunk/arch/mips/kernel/smp.c | 4 +- trunk/arch/mips/kernel/smtc.c | 76 +- trunk/arch/mips/kernel/traps.c | 1 - trunk/arch/mips/lantiq/clk.c | 5 - trunk/arch/mips/lantiq/prom.c | 22 - trunk/arch/mips/lantiq/xway/sysctrl.c | 49 +- trunk/arch/mips/lib/Makefile | 2 +- trunk/arch/mips/lib/memcpy-inatomic.S | 451 ++ trunk/arch/mips/lib/memcpy.S | 11 - trunk/arch/mips/loongson/Kconfig | 1 - trunk/arch/mips/loongson/lemote-2f/Makefile | 2 +- trunk/arch/mips/loongson1/Kconfig | 22 - trunk/arch/mips/loongson1/Makefile | 11 - trunk/arch/mips/loongson1/Platform | 7 - trunk/arch/mips/loongson1/common/Makefile | 5 - trunk/arch/mips/loongson1/common/clock.c | 181 - trunk/arch/mips/loongson1/common/irq.c | 147 - trunk/arch/mips/loongson1/common/platform.c | 124 - trunk/arch/mips/loongson1/common/prom.c | 87 - trunk/arch/mips/loongson1/common/reset.c | 45 - trunk/arch/mips/loongson1/common/setup.c | 29 - trunk/arch/mips/loongson1/ls1b/Makefile | 5 - trunk/arch/mips/loongson1/ls1b/board.c | 33 - trunk/arch/mips/mm/uasm.c | 62 +- trunk/arch/mips/netlogic/common/earlycons.c | 2 +- trunk/arch/mips/netlogic/common/smpboot.S | 157 +- trunk/arch/mips/netlogic/xlp/Makefile | 2 - trunk/arch/mips/netlogic/xlp/nlm_hal.c | 52 - trunk/arch/mips/netlogic/xlp/of.c | 34 - trunk/arch/mips/netlogic/xlp/platform.c | 2 +- trunk/arch/mips/netlogic/xlp/setup.c | 16 - trunk/arch/mips/netlogic/xlp/usb-init.c | 124 - trunk/arch/mips/netlogic/xlr/Makefile | 2 +- trunk/arch/mips/netlogic/xlr/platform-flash.c | 220 - trunk/arch/mips/netlogic/xlr/platform.c | 140 - trunk/arch/mips/netlogic/xlr/setup.c | 2 +- trunk/arch/mips/oprofile/common.c | 1 - trunk/arch/mips/oprofile/op_model_mipsxx.c | 10 +- trunk/arch/mips/pci/Makefile | 1 - trunk/arch/mips/pci/fixup-cobalt.c | 8 +- trunk/arch/mips/pci/fixup-malta.c | 14 - trunk/arch/mips/pci/fixup-rc32434.c | 2 +- trunk/arch/mips/pci/ops-bcm63xx.c | 63 +- trunk/arch/mips/pci/pci-bcm63xx.c | 133 +- trunk/arch/mips/pci/pci-bcm63xx.h | 5 - trunk/arch/mips/pci/pci-xlp.c | 248 - trunk/arch/mips/pci/pci-xlr.c | 4 + trunk/arch/mips/pnx833x/stb22x/board.c | 4 +- trunk/arch/mips/sgi-ip27/ip27-memory.c | 1 - trunk/arch/mips/txx9/Kconfig | 1 - trunk/arch/mips/txx9/generic/pci.c | 6 +- trunk/arch/mips/txx9/generic/setup.c | 12 +- trunk/arch/mips/txx9/generic/setup_tx4939.c | 2 +- trunk/arch/mips/txx9/rbtx4939/setup.c | 11 +- trunk/arch/mn10300/Kconfig | 1 - trunk/arch/mn10300/include/asm/ipc.h | 1 + trunk/arch/mn10300/include/asm/unistd.h | 1 + trunk/arch/openrisc/include/asm/Kbuild | 2 + trunk/arch/powerpc/Kconfig | 2 - .../arch/powerpc/boot/dts/p2020rdb-pc_32b.dts | 4 +- .../arch/powerpc/boot/dts/p2020rdb-pc_36b.dts | 4 +- trunk/arch/powerpc/boot/dts/p3041ds.dts | 2 +- trunk/arch/powerpc/configs/chroma_defconfig | 4 +- trunk/arch/powerpc/include/asm/dma-mapping.h | 8 +- trunk/arch/powerpc/include/asm/unistd.h | 1 + trunk/arch/powerpc/kernel/dma-iommu.c | 1 - trunk/arch/powerpc/kernel/dma-swiotlb.c | 1 - trunk/arch/powerpc/kernel/dma.c | 36 +- trunk/arch/powerpc/kernel/vio.c | 1 - trunk/arch/powerpc/kvm/book3s_rmhandlers.S | 1 + trunk/arch/powerpc/platforms/85xx/p1022_ds.c | 122 +- .../arch/powerpc/platforms/cell/spufs/inode.c | 77 +- .../powerpc/platforms/cell/spufs/syscalls.c | 2 +- .../arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h | 4 +- trunk/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c | 39 +- trunk/arch/powerpc/sysdev/xics/icp-hv.c | 2 +- trunk/arch/powerpc/sysdev/xics/icp-native.c | 2 +- trunk/arch/powerpc/sysdev/xics/xics-common.c | 3 + trunk/arch/s390/Kconfig | 4 - trunk/arch/s390/defconfig | 7 +- trunk/arch/s390/include/asm/mmu_context.h | 16 +- trunk/arch/s390/include/asm/processor.h | 2 - trunk/arch/s390/include/asm/setup.h | 2 +- trunk/arch/s390/include/asm/sparsemem.h | 2 + trunk/arch/s390/include/asm/syscall.h | 10 - trunk/arch/s390/include/asm/unistd.h | 1 + trunk/arch/s390/kernel/compat_linux.c | 2 + trunk/arch/s390/kernel/compat_wrapper.S | 4 +- trunk/arch/s390/kernel/debug.c | 70 +- trunk/arch/s390/kernel/dis.c | 4 +- trunk/arch/s390/kernel/early.c | 1 + trunk/arch/s390/kernel/ipl.c | 12 +- trunk/arch/s390/kernel/ptrace.c | 7 +- trunk/arch/s390/kernel/setup.c | 12 +- trunk/arch/s390/kernel/sys_s390.c | 9 +- trunk/arch/s390/kernel/traps.c | 16 +- trunk/arch/s390/kernel/vdso.c | 9 +- trunk/arch/s390/kernel/vmlinux.lds.S | 2 +- trunk/arch/s390/mm/fault.c | 35 +- trunk/arch/s390/mm/mmap.c | 12 +- trunk/arch/s390/mm/pgtable.c | 7 +- trunk/arch/s390/oprofile/backtrace.c | 2 +- trunk/arch/sh/Kconfig | 2 - trunk/arch/sh/boards/Kconfig | 13 - trunk/arch/sh/boards/board-apsh4a3a.c | 10 - trunk/arch/sh/boards/board-apsh4ad0a.c | 10 - trunk/arch/sh/boards/board-magicpanelr2.c | 10 - trunk/arch/sh/boards/board-polaris.c | 10 - trunk/arch/sh/boards/board-sh2007.c | 12 - trunk/arch/sh/boards/board-sh7757lcr.c | 14 - trunk/arch/sh/boards/mach-ap325rxa/setup.c | 21 - trunk/arch/sh/boards/mach-ecovec24/setup.c | 125 +- trunk/arch/sh/boards/mach-kfr2r09/setup.c | 12 - trunk/arch/sh/boards/mach-migor/setup.c | 13 - trunk/arch/sh/boards/mach-rsk/setup.c | 10 - trunk/arch/sh/boards/mach-sdk7786/setup.c | 10 - trunk/arch/sh/boards/mach-se/7724/setup.c | 15 - trunk/arch/sh/configs/apsh4ad0a_defconfig | 2 +- trunk/arch/sh/configs/sdk7786_defconfig | 4 +- trunk/arch/sh/configs/se7206_defconfig | 2 +- trunk/arch/sh/configs/shx3_defconfig | 2 +- trunk/arch/sh/configs/urquell_defconfig | 4 +- trunk/arch/sh/drivers/dma/dma-sh.c | 2 +- trunk/arch/sh/include/asm/sections.h | 1 + trunk/arch/sh/include/asm/unistd.h | 1 + trunk/arch/sh/include/cpu-sh2a/cpu/sh7269.h | 36 +- trunk/arch/sh/include/cpu-sh4/cpu/sh7757.h | 2 - trunk/arch/sh/kernel/cpu/sh2a/pinmux-sh7269.c | 195 +- trunk/arch/sh/kernel/cpu/sh4a/clock-sh7724.c | 4 +- trunk/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 1 - trunk/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | 14 - trunk/arch/sh/kernel/setup.c | 2 +- trunk/arch/sh/kernel/sh_ksyms_32.c | 1 + trunk/arch/sh/kernel/vmlinux.lds.S | 1 + trunk/arch/sh/lib/mcount.S | 8 +- trunk/arch/sh/mm/fault.c | 8 +- trunk/arch/sparc/Kconfig | 1 - trunk/arch/sparc/include/asm/unistd.h | 1 + trunk/arch/sparc/kernel/ldc.c | 6 +- trunk/arch/sparc/kernel/sys_sparc_64.c | 12 +- trunk/arch/sparc/mm/init_64.c | 28 +- trunk/arch/tile/configs/tilegx_defconfig | 4 +- trunk/arch/tile/configs/tilepro_defconfig | 4 +- trunk/arch/tile/include/asm/Kbuild | 1 + trunk/arch/um/defconfig | 10 +- trunk/arch/um/drivers/chan_kern.c | 4 +- trunk/arch/um/drivers/line.c | 231 +- trunk/arch/um/drivers/line.h | 12 +- trunk/arch/um/drivers/mconsole_kern.c | 3 +- trunk/arch/um/drivers/port_kern.c | 6 +- trunk/arch/um/drivers/random.c | 3 +- trunk/arch/um/drivers/ssl.c | 42 +- trunk/arch/um/drivers/stdio_console.c | 21 +- trunk/arch/um/drivers/ubd_kern.c | 2 +- trunk/arch/um/drivers/xterm_kern.c | 3 +- trunk/arch/um/include/asm/ptrace-generic.h | 2 - trunk/arch/um/include/shared/as-layout.h | 3 +- trunk/arch/um/include/shared/irq_user.h | 3 +- trunk/arch/um/include/shared/kern_util.h | 13 +- trunk/arch/um/kernel/irq.c | 2 +- trunk/arch/um/kernel/process.c | 13 +- trunk/arch/um/kernel/ptrace.c | 71 +- trunk/arch/um/kernel/sigio.c | 3 +- trunk/arch/um/kernel/skas/syscall.c | 6 +- trunk/arch/um/kernel/time.c | 2 +- trunk/arch/um/kernel/trap.c | 39 +- trunk/arch/um/os-Linux/internal.h | 2 +- trunk/arch/um/os-Linux/signal.c | 26 +- trunk/arch/um/os-Linux/skas/process.c | 16 +- trunk/arch/um/os-Linux/time.c | 2 +- trunk/arch/x86/Kconfig | 4 +- trunk/arch/x86/Makefile | 4 - trunk/arch/x86/boot/Makefile | 2 +- trunk/arch/x86/include/asm/mce.h | 8 - trunk/arch/x86/include/asm/olpc.h | 19 + trunk/arch/x86/include/asm/perf_event.h | 13 +- trunk/arch/x86/include/asm/unistd.h | 1 + trunk/arch/x86/kernel/acpi/sleep.c | 4 + trunk/arch/x86/kernel/acpi/sleep.h | 2 + trunk/arch/x86/kernel/acpi/wakeup_32.S | 4 +- trunk/arch/x86/kernel/acpi/wakeup_64.S | 4 +- trunk/arch/x86/kernel/alternative.c | 2 +- trunk/arch/x86/kernel/apic/io_apic.c | 14 +- trunk/arch/x86/kernel/cpu/common.c | 2 - .../arch/x86/kernel/cpu/mcheck/mce-severity.c | 7 + trunk/arch/x86/kernel/cpu/mcheck/mce.c | 43 +- trunk/arch/x86/kernel/cpu/perf_event.c | 89 +- trunk/arch/x86/kernel/cpu/perf_event.h | 22 +- .../arch/x86/kernel/cpu/perf_event_amd_ibs.c | 4 +- trunk/arch/x86/kernel/cpu/perf_event_intel.c | 102 +- .../arch/x86/kernel/cpu/perf_event_intel_ds.c | 7 +- .../x86/kernel/cpu/perf_event_intel_uncore.c | 1549 +--- .../x86/kernel/cpu/perf_event_intel_uncore.h | 235 +- trunk/arch/x86/kernel/e820.c | 2 +- trunk/arch/x86/kernel/irq.c | 1 - trunk/arch/x86/kernel/kdebugfs.c | 6 +- trunk/arch/x86/kvm/i8259.c | 17 - trunk/arch/x86/kvm/vmx.c | 20 +- trunk/arch/x86/kvm/x86.c | 4 - trunk/arch/x86/mm/hugetlbpage.c | 21 +- trunk/arch/x86/mm/pageattr.c | 10 +- trunk/arch/x86/mm/srat.c | 15 +- trunk/arch/x86/platform/efi/efi.c | 30 +- trunk/arch/x86/platform/olpc/olpc-xo1-pm.c | 16 +- trunk/arch/x86/platform/olpc/olpc-xo1-sci.c | 1 - trunk/arch/x86/platform/olpc/olpc-xo15-sci.c | 1 - trunk/arch/x86/platform/olpc/olpc.c | 190 +- trunk/arch/x86/realmode/rm/Makefile | 2 +- trunk/arch/x86/syscalls/syscall_64.tbl | 8 +- trunk/arch/x86/um/asm/ptrace.h | 6 +- trunk/arch/x86/xen/p2m.c | 5 - trunk/arch/xtensa/Kconfig | 1 - trunk/arch/xtensa/include/asm/cpumask.h | 16 + trunk/arch/xtensa/include/asm/rmap.h | 16 + trunk/arch/xtensa/kernel/syscall.c | 2 +- trunk/arch/xtensa/mm/fault.c | 29 +- trunk/block/blk-cgroup.c | 139 +- trunk/block/blk-cgroup.h | 128 +- trunk/block/blk-core.c | 253 +- trunk/block/blk-ioc.c | 1 - trunk/block/blk-settings.c | 3 +- trunk/block/blk-sysfs.c | 34 +- trunk/block/blk-throttle.c | 3 + trunk/block/blk.h | 4 +- trunk/block/bsg-lib.c | 53 + trunk/block/genhd.c | 20 +- trunk/block/ioctl.c | 59 +- trunk/block/partition-generic.c | 4 +- trunk/drivers/Kconfig | 4 - trunk/drivers/Makefile | 2 - trunk/drivers/acpi/ac.c | 4 - trunk/drivers/acpi/acpica/achware.h | 12 +- trunk/drivers/acpi/acpica/hwesleep.c | 19 +- trunk/drivers/acpi/acpica/hwsleep.c | 20 +- trunk/drivers/acpi/acpica/hwxfsleep.c | 22 +- trunk/drivers/acpi/battery.c | 2 - trunk/drivers/acpi/button.c | 4 - trunk/drivers/acpi/fan.c | 4 - trunk/drivers/acpi/numa.c | 12 +- trunk/drivers/acpi/pci_root.c | 11 +- trunk/drivers/acpi/power.c | 4 - trunk/drivers/acpi/processor_driver.c | 2 +- trunk/drivers/acpi/sbs.c | 2 - trunk/drivers/acpi/sleep.c | 75 +- trunk/drivers/acpi/sysfs.c | 4 +- trunk/drivers/acpi/thermal.c | 4 - trunk/drivers/acpi/video_detect.c | 60 +- trunk/drivers/ata/pata_arasan_cf.c | 14 +- trunk/drivers/ata/sata_mv.c | 42 +- trunk/drivers/atm/iphase.c | 2 +- trunk/drivers/base/Kconfig | 1 - trunk/drivers/base/core.c | 9 +- trunk/drivers/base/devtmpfs.c | 9 +- trunk/drivers/base/dma-mapping.c | 49 - trunk/drivers/base/power/clock_ops.c | 3 +- trunk/drivers/base/power/common.c | 4 +- trunk/drivers/base/power/runtime.c | 13 +- trunk/drivers/bcma/driver_chipcommon_pmu.c | 4 +- trunk/drivers/bcma/driver_mips.c | 6 +- trunk/drivers/bcma/host_pci.c | 12 +- trunk/drivers/bcma/host_soc.c | 2 +- trunk/drivers/bcma/scan.c | 15 +- trunk/drivers/bcma/sprom.c | 4 +- trunk/drivers/block/cciss_scsi.c | 11 +- trunk/drivers/block/drbd/drbd_actlog.c | 8 +- trunk/drivers/block/drbd/drbd_bitmap.c | 4 +- trunk/drivers/block/drbd/drbd_int.h | 44 +- trunk/drivers/block/drbd/drbd_main.c | 69 +- trunk/drivers/block/drbd/drbd_nl.c | 36 +- trunk/drivers/block/drbd/drbd_proc.c | 3 - trunk/drivers/block/drbd/drbd_receiver.c | 38 +- trunk/drivers/block/drbd/drbd_req.c | 9 +- trunk/drivers/block/drbd/drbd_worker.c | 12 +- trunk/drivers/block/floppy.c | 24 +- trunk/drivers/block/nbd.c | 8 +- trunk/drivers/block/rbd.c | 816 +- trunk/drivers/block/rbd_types.h | 1 + trunk/drivers/block/umem.c | 37 +- trunk/drivers/block/virtio_blk.c | 115 +- trunk/drivers/block/xen-blkfront.c | 5 +- trunk/drivers/bluetooth/ath3k.c | 2 - trunk/drivers/bluetooth/bcm203x.c | 8 +- trunk/drivers/bluetooth/bfusb.c | 12 +- trunk/drivers/bluetooth/bluecard_cs.c | 5 +- trunk/drivers/bluetooth/bpa10x.c | 8 +- trunk/drivers/bluetooth/bt3c_cs.c | 5 +- trunk/drivers/bluetooth/btmrvl_sdio.c | 15 +- trunk/drivers/bluetooth/btsdio.c | 8 +- trunk/drivers/bluetooth/btuart_cs.c | 5 +- trunk/drivers/bluetooth/btusb.c | 15 +- trunk/drivers/bluetooth/btwilink.c | 8 +- trunk/drivers/bluetooth/dtl1_cs.c | 3 +- trunk/drivers/char/agp/intel-agp.h | 39 +- trunk/drivers/char/agp/intel-gtt.c | 60 +- trunk/drivers/char/hw_random/Kconfig | 14 - trunk/drivers/char/hw_random/Makefile | 1 - trunk/drivers/char/hw_random/bcm63xx-rng.c | 175 - trunk/drivers/char/hw_random/omap-rng.c | 2 +- trunk/drivers/char/hw_random/virtio-rng.c | 37 +- trunk/drivers/char/mspec.c | 2 +- trunk/drivers/char/random.c | 355 +- trunk/drivers/char/tpm/tpm_tis.c | 2 - trunk/drivers/clk/Kconfig | 1 + trunk/drivers/clk/clk.c | 3 - trunk/drivers/clocksource/cs5535-clockevt.c | 4 +- trunk/drivers/cpufreq/exynos5250-cpufreq.c | 55 +- trunk/drivers/cpufreq/pcc-cpufreq.c | 1 - trunk/drivers/cpuidle/coupled.c | 14 +- trunk/drivers/crypto/n2_core.c | 3 +- trunk/drivers/dma/Kconfig | 11 - trunk/drivers/dma/Makefile | 2 - trunk/drivers/dma/amba-pl08x.c | 941 ++- trunk/drivers/dma/imx-dma.c | 36 +- trunk/drivers/dma/omap-dma.c | 669 -- trunk/drivers/dma/sa11x0-dma.c | 388 +- trunk/drivers/dma/sh/shdma-base.c | 9 - trunk/drivers/dma/sh/shdma.c | 12 - trunk/drivers/dma/tegra20-apb-dma.c | 18 +- trunk/drivers/dma/virt-dma.c | 123 - trunk/drivers/dma/virt-dma.h | 152 - trunk/drivers/edac/Kconfig | 24 +- trunk/drivers/edac/Makefile | 3 - trunk/drivers/edac/amd64_edac.c | 376 +- trunk/drivers/edac/amd64_edac.h | 29 +- trunk/drivers/edac/amd64_edac_dbg.c | 89 +- trunk/drivers/edac/amd64_edac_inj.c | 134 +- trunk/drivers/edac/amd76x_edac.c | 34 +- trunk/drivers/edac/cell_edac.c | 28 +- trunk/drivers/edac/cpc925_edac.c | 96 +- trunk/drivers/edac/e752x_edac.c | 92 +- trunk/drivers/edac/e7xxx_edac.c | 89 +- trunk/drivers/edac/edac_core.h | 39 +- trunk/drivers/edac/edac_device.c | 47 +- trunk/drivers/edac/edac_device_sysfs.c | 71 +- trunk/drivers/edac/edac_mc.c | 395 +- trunk/drivers/edac/edac_mc_sysfs.c | 1355 ++-- trunk/drivers/edac/edac_module.c | 20 +- trunk/drivers/edac/edac_module.h | 26 +- trunk/drivers/edac/edac_pci.c | 26 +- trunk/drivers/edac/edac_pci_sysfs.c | 49 +- trunk/drivers/edac/highbank_l2_edac.c | 149 - trunk/drivers/edac/highbank_mc_edac.c | 264 - trunk/drivers/edac/i3000_edac.c | 47 +- trunk/drivers/edac/i3200_edac.c | 48 +- trunk/drivers/edac/i5000_edac.c | 207 +- trunk/drivers/edac/i5100_edac.c | 14 +- trunk/drivers/edac/i5400_edac.c | 201 +- trunk/drivers/edac/i7300_edac.c | 173 +- trunk/drivers/edac/i7core_edac.c | 520 +- trunk/drivers/edac/i82443bxgx_edac.c | 51 +- trunk/drivers/edac/i82860_edac.c | 45 +- trunk/drivers/edac/i82875p_edac.c | 53 +- trunk/drivers/edac/i82975x_edac.c | 55 +- trunk/drivers/edac/mpc85xx_edac.c | 131 +- trunk/drivers/edac/mv64x60_edac.c | 40 +- trunk/drivers/edac/pasemi_edac.c | 22 +- trunk/drivers/edac/ppc4xx_edac.c | 16 +- trunk/drivers/edac/r82600_edac.c | 48 +- trunk/drivers/edac/sb_edac.c | 257 +- trunk/drivers/edac/tile_edac.c | 12 +- trunk/drivers/edac/x38_edac.c | 48 +- trunk/drivers/extcon/Kconfig | 2 +- trunk/drivers/extcon/extcon-max8997.c | 29 +- trunk/drivers/extcon/extcon_gpio.c | 3 +- trunk/drivers/firewire/core-device.c | 9 - trunk/drivers/firewire/core-iso.c | 2 +- trunk/drivers/firewire/core-transaction.c | 23 +- trunk/drivers/firewire/ohci.c | 30 +- trunk/drivers/firmware/dmi_scan.c | 3 - trunk/drivers/firmware/memmap.c | 8 +- trunk/drivers/firmware/pcdp.c | 4 +- trunk/drivers/gpio/Kconfig | 7 - trunk/drivers/gpio/Makefile | 1 - trunk/drivers/gpio/gpio-em.c | 2 +- trunk/drivers/gpio/gpio-langwell.c | 7 +- trunk/drivers/gpio/gpio-msic.c | 2 +- trunk/drivers/gpio/gpio-mxc.c | 5 +- trunk/drivers/gpio/gpio-pxa.c | 30 +- trunk/drivers/gpio/gpio-samsung.c | 14 +- trunk/drivers/gpio/gpio-sch.c | 3 +- trunk/drivers/gpio/gpio-tps6586x.c | 158 - trunk/drivers/gpu/drm/Kconfig | 1 - trunk/drivers/gpu/drm/drm_edid_load.c | 8 +- .../gpu/drm/exynos/exynos_drm_connector.c | 3 +- .../drivers/gpu/drm/exynos/exynos_drm_core.c | 5 + .../drivers/gpu/drm/exynos/exynos_drm_crtc.c | 294 +- .../drivers/gpu/drm/exynos/exynos_drm_crtc.h | 31 + .../gpu/drm/exynos/exynos_drm_dmabuf.c | 33 +- trunk/drivers/gpu/drm/exynos/exynos_drm_drv.c | 9 +- trunk/drivers/gpu/drm/exynos/exynos_drm_drv.h | 4 - .../gpu/drm/exynos/exynos_drm_encoder.c | 123 +- .../gpu/drm/exynos/exynos_drm_encoder.h | 12 +- .../drivers/gpu/drm/exynos/exynos_drm_fimd.c | 40 +- trunk/drivers/gpu/drm/exynos/exynos_drm_gem.c | 49 +- trunk/drivers/gpu/drm/exynos/exynos_drm_gem.h | 3 +- .../drivers/gpu/drm/exynos/exynos_drm_plane.c | 246 +- .../drivers/gpu/drm/exynos/exynos_drm_plane.h | 12 +- .../drivers/gpu/drm/exynos/exynos_drm_vidi.c | 53 +- trunk/drivers/gpu/drm/exynos/exynos_hdmi.c | 36 +- trunk/drivers/gpu/drm/exynos/exynos_mixer.c | 48 +- trunk/drivers/gpu/drm/i915/i915_drv.c | 31 +- trunk/drivers/gpu/drm/i915/i915_gem_context.c | 1 + .../gpu/drm/i915/i915_gem_execbuffer.c | 20 +- trunk/drivers/gpu/drm/i915/i915_gem_gtt.c | 3 +- trunk/drivers/gpu/drm/i915/i915_sysfs.c | 12 - trunk/drivers/gpu/drm/i915/intel_display.c | 12 +- trunk/drivers/gpu/drm/i915/intel_dp.c | 14 +- trunk/drivers/gpu/drm/i915/intel_drv.h | 20 +- trunk/drivers/gpu/drm/i915/intel_i2c.c | 10 +- trunk/drivers/gpu/drm/i915/intel_panel.c | 15 +- trunk/drivers/gpu/drm/i915/intel_pm.c | 6 +- trunk/drivers/gpu/drm/i915/intel_ringbuffer.c | 48 +- trunk/drivers/gpu/drm/i915/intel_sdvo.c | 5 +- trunk/drivers/gpu/drm/mgag200/mgag200_mode.c | 12 +- trunk/drivers/gpu/drm/nouveau/nouveau_acpi.c | 6 + trunk/drivers/gpu/drm/nouveau/nouveau_i2c.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_state.c | 1 + trunk/drivers/gpu/drm/nouveau/nv84_fifo.c | 9 - trunk/drivers/gpu/drm/nouveau/nvc0_pm.c | 2 +- trunk/drivers/gpu/drm/nouveau/nvd0_display.c | 2 +- trunk/drivers/gpu/drm/nouveau/nve0_fifo.c | 37 +- trunk/drivers/gpu/drm/radeon/atombios_crtc.c | 22 +- trunk/drivers/gpu/drm/radeon/evergreen.c | 71 +- trunk/drivers/gpu/drm/radeon/evergreen_cs.c | 13 +- trunk/drivers/gpu/drm/radeon/evergreend.h | 2 - trunk/drivers/gpu/drm/radeon/ni.c | 14 +- trunk/drivers/gpu/drm/radeon/r600.c | 20 - trunk/drivers/gpu/drm/radeon/r600_cs.c | 65 +- trunk/drivers/gpu/drm/radeon/r600d.h | 3 - trunk/drivers/gpu/drm/radeon/radeon.h | 12 +- trunk/drivers/gpu/drm/radeon/radeon_asic.h | 10 +- .../drivers/gpu/drm/radeon/radeon_atombios.c | 49 +- trunk/drivers/gpu/drm/radeon/radeon_combios.c | 57 +- trunk/drivers/gpu/drm/radeon/radeon_cs.c | 32 +- trunk/drivers/gpu/drm/radeon/radeon_cursor.c | 6 +- trunk/drivers/gpu/drm/radeon/radeon_device.c | 1 - trunk/drivers/gpu/drm/radeon/radeon_drv.c | 5 +- trunk/drivers/gpu/drm/radeon/radeon_gart.c | 26 +- trunk/drivers/gpu/drm/radeon/radeon_gem.c | 13 +- trunk/drivers/gpu/drm/radeon/radeon_kms.c | 35 +- .../gpu/drm/radeon/radeon_legacy_crtc.c | 4 - trunk/drivers/gpu/drm/radeon/radeon_mode.h | 1 - trunk/drivers/gpu/drm/radeon/radeon_object.c | 6 +- trunk/drivers/gpu/drm/radeon/rv515.c | 13 + trunk/drivers/gpu/drm/radeon/si.c | 35 +- trunk/drivers/gpu/drm/radeon/sid.h | 3 - trunk/drivers/gpu/drm/udl/Kconfig | 1 - trunk/drivers/gpu/drm/udl/udl_gem.c | 2 +- trunk/drivers/gpu/vga/vga_switcheroo.c | 61 +- trunk/drivers/hid/hid-core.c | 1 - trunk/drivers/hid/hid-ids.h | 1 - trunk/drivers/hv/vmbus_drv.c | 3 +- trunk/drivers/hwmon/acpi_power_meter.c | 4 - trunk/drivers/hwmon/applesmc.c | 70 +- trunk/drivers/hwmon/coretemp.c | 4 +- trunk/drivers/hwmon/jc42.c | 26 +- trunk/drivers/hwmon/via-cputemp.c | 2 +- trunk/drivers/hwmon/w83627hf.c | 2 +- trunk/drivers/i2c/busses/Kconfig | 7 +- trunk/drivers/i2c/busses/i2c-at91.c | 13 +- trunk/drivers/i2c/busses/i2c-bfin-twi.c | 147 +- trunk/drivers/i2c/busses/i2c-imx.c | 75 +- trunk/drivers/i2c/busses/i2c-mv64xxx.c | 133 +- trunk/drivers/i2c/busses/i2c-mxs.c | 68 +- trunk/drivers/i2c/busses/i2c-nomadik.c | 189 +- trunk/drivers/i2c/busses/i2c-ocores.c | 113 +- trunk/drivers/i2c/busses/i2c-octeon.c | 92 +- trunk/drivers/i2c/busses/i2c-omap.c | 155 +- trunk/drivers/i2c/busses/i2c-pmcmsp.c | 3 +- trunk/drivers/i2c/busses/i2c-pnx.c | 19 +- trunk/drivers/i2c/busses/i2c-puv3.c | 15 +- trunk/drivers/i2c/busses/i2c-pxa.c | 7 + trunk/drivers/i2c/busses/i2c-s3c2410.c | 6 +- trunk/drivers/i2c/busses/i2c-stu300.c | 102 +- trunk/drivers/i2c/busses/i2c-tegra.c | 122 +- trunk/drivers/i2c/i2c-core.c | 44 +- trunk/drivers/idle/intel_idle.c | 3 +- trunk/drivers/iio/frequency/adf4350.c | 24 +- trunk/drivers/iio/light/adjd_s311.c | 7 +- trunk/drivers/iio/light/lm3533-als.c | 4 +- trunk/drivers/infiniband/core/cma.c | 5 +- trunk/drivers/infiniband/core/ucma.c | 21 +- .../drivers/infiniband/hw/amso1100/c2_rnic.c | 2 +- trunk/drivers/infiniband/hw/cxgb3/iwch_cm.c | 2 +- trunk/drivers/infiniband/hw/mlx4/mad.c | 16 +- trunk/drivers/infiniband/hw/mlx4/main.c | 5 +- trunk/drivers/infiniband/hw/mlx4/qp.c | 6 +- .../infiniband/hw/ocrdma/ocrdma_main.c | 16 +- .../infiniband/hw/ocrdma/ocrdma_verbs.c | 4 +- trunk/drivers/infiniband/hw/qib/qib.h | 10 +- trunk/drivers/infiniband/hw/qib/qib_iba7322.c | 4 +- trunk/drivers/infiniband/hw/qib/qib_sd7220.c | 2 +- trunk/drivers/infiniband/ulp/ipoib/ipoib.h | 56 +- trunk/drivers/infiniband/ulp/ipoib/ipoib_cm.c | 19 +- .../drivers/infiniband/ulp/ipoib/ipoib_main.c | 646 +- .../infiniband/ulp/ipoib/ipoib_multicast.c | 57 +- trunk/drivers/infiniband/ulp/srp/ib_srp.c | 87 +- trunk/drivers/infiniband/ulp/srpt/ib_srpt.c | 2 +- trunk/drivers/input/misc/88pm80x_onkey.c | 168 - trunk/drivers/input/misc/Kconfig | 10 - trunk/drivers/input/misc/Makefile | 1 - trunk/drivers/input/misc/ab8500-ponkey.c | 4 +- trunk/drivers/input/mouse/synaptics.c | 22 - trunk/drivers/input/serio/hp_sdc.c | 2 +- trunk/drivers/input/tablet/wacom_wac.c | 21 +- trunk/drivers/input/tablet/wacom_wac.h | 3 +- trunk/drivers/input/touchscreen/Kconfig | 13 - trunk/drivers/input/touchscreen/Makefile | 1 - trunk/drivers/input/touchscreen/edt-ft5x06.c | 898 --- trunk/drivers/input/touchscreen/eeti_ts.c | 21 +- trunk/drivers/iommu/amd_iommu.c | 25 +- trunk/drivers/iommu/amd_iommu_init.c | 8 +- trunk/drivers/iommu/exynos-iommu.c | 6 +- trunk/drivers/iommu/intel-iommu.c | 26 +- trunk/drivers/iommu/intel_irq_remapping.c | 18 +- trunk/drivers/iommu/tegra-smmu.c | 17 +- trunk/drivers/isdn/hardware/mISDN/avmfritz.c | 7 +- trunk/drivers/isdn/isdnloop/isdnloop.c | 12 + trunk/drivers/isdn/mISDN/layer2.c | 2 +- trunk/drivers/leds/led-triggers.c | 2 +- trunk/drivers/leds/leds-lp8788.c | 2 +- trunk/drivers/leds/leds-renesas-tpu.c | 2 +- trunk/drivers/md/Kconfig | 14 +- trunk/drivers/md/bitmap.c | 2 +- trunk/drivers/md/dm-crypt.c | 219 +- trunk/drivers/md/dm-delay.c | 2 +- trunk/drivers/md/dm-exception-store.c | 13 +- trunk/drivers/md/dm-flakey.c | 2 +- trunk/drivers/md/dm-ioctl.c | 5 +- trunk/drivers/md/dm-linear.c | 2 +- trunk/drivers/md/dm-log.c | 13 +- trunk/drivers/md/dm-mpath.c | 49 +- trunk/drivers/md/dm-raid.c | 147 +- trunk/drivers/md/dm-raid1.c | 10 +- trunk/drivers/md/dm-snap.c | 34 +- trunk/drivers/md/dm-stripe.c | 87 +- trunk/drivers/md/dm-table.c | 3 - trunk/drivers/md/dm-thin-metadata.c | 769 +- trunk/drivers/md/dm-thin-metadata.h | 25 +- trunk/drivers/md/dm-thin.c | 542 +- trunk/drivers/md/dm-verity.c | 2 +- trunk/drivers/md/dm.c | 40 +- trunk/drivers/md/dm.h | 5 - trunk/drivers/md/md.c | 76 +- trunk/drivers/md/md.h | 11 +- trunk/drivers/md/persistent-data/Makefile | 1 + .../md/persistent-data/dm-block-manager.c | 105 +- .../md/persistent-data/dm-block-manager.h | 21 +- .../md/persistent-data/dm-space-map-checker.c | 446 ++ .../md/persistent-data/dm-space-map-checker.h | 26 + .../md/persistent-data/dm-space-map-common.c | 12 +- .../md/persistent-data/dm-space-map-common.h | 1 - .../md/persistent-data/dm-space-map-disk.c | 34 +- .../persistent-data/dm-transaction-manager.c | 91 +- .../persistent-data/dm-transaction-manager.h | 11 +- trunk/drivers/md/raid1.c | 224 +- trunk/drivers/md/raid1.h | 30 +- trunk/drivers/md/raid10.c | 125 +- trunk/drivers/md/raid10.h | 25 +- trunk/drivers/md/raid5.c | 317 +- trunk/drivers/md/raid5.h | 3 - trunk/drivers/media/Kconfig | 114 +- trunk/drivers/media/common/tuners/Kconfig | 64 +- .../media/common/tuners/tuner-xc2028.c | 249 +- trunk/drivers/media/common/tuners/xc5000.c | 14 +- .../media/dvb/ddbridge/ddbridge-core.c | 1 - .../drivers/media/dvb/dvb-core/dvb_frontend.h | 1 - trunk/drivers/media/dvb/dvb-usb/Kconfig | 3 - trunk/drivers/media/dvb/dvb-usb/az6007.c | 6 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 3 - trunk/drivers/media/dvb/dvb-usb/rtl28xxu.c | 516 +- trunk/drivers/media/dvb/frontends/Kconfig | 8 - trunk/drivers/media/dvb/frontends/Makefile | 1 - trunk/drivers/media/dvb/frontends/a8293.c | 37 +- trunk/drivers/media/dvb/frontends/dib8000.c | 4 +- trunk/drivers/media/dvb/frontends/drxk.h | 11 +- trunk/drivers/media/dvb/frontends/drxk_hard.c | 350 +- trunk/drivers/media/dvb/frontends/drxk_hard.h | 17 +- trunk/drivers/media/dvb/frontends/lgs8gxx.c | 5 +- trunk/drivers/media/dvb/frontends/rtl2832.c | 789 -- trunk/drivers/media/dvb/frontends/rtl2832.h | 74 - .../media/dvb/frontends/rtl2832_priv.h | 260 - trunk/drivers/media/dvb/frontends/s5h1420.c | 20 + .../drivers/media/dvb/frontends/stb0899_drv.c | 22 +- trunk/drivers/media/dvb/frontends/stv0367.c | 5 +- trunk/drivers/media/dvb/frontends/stv090x.c | 4 +- trunk/drivers/media/dvb/frontends/tda10071.c | 351 +- .../media/dvb/frontends/tda10071_priv.h | 15 +- trunk/drivers/media/dvb/ngene/ngene-cards.c | 1 - trunk/drivers/media/dvb/siano/smscoreapi.c | 39 +- trunk/drivers/media/dvb/siano/smsusb.c | 2 +- trunk/drivers/media/radio/Kconfig | 34 - trunk/drivers/media/radio/Makefile | 4 - trunk/drivers/media/radio/lm7000.h | 43 - trunk/drivers/media/radio/radio-aimslab.c | 66 +- trunk/drivers/media/radio/radio-cadet.c | 388 +- trunk/drivers/media/radio/radio-mr800.c | 5 +- trunk/drivers/media/radio/radio-sf16fmi.c | 61 +- trunk/drivers/media/radio/radio-shark.c | 381 - trunk/drivers/media/radio/radio-shark2.c | 355 - trunk/drivers/media/radio/radio-tea5777.c | 491 -- trunk/drivers/media/radio/radio-tea5777.h | 87 - trunk/drivers/media/radio/radio-wl1273.c | 3 +- .../media/radio/si470x/radio-si470x-common.c | 292 +- .../media/radio/si470x/radio-si470x-i2c.c | 11 +- .../media/radio/si470x/radio-si470x-usb.c | 49 +- .../drivers/media/radio/si470x/radio-si470x.h | 7 +- trunk/drivers/media/radio/wl128x/fmdrv_rx.c | 2 +- trunk/drivers/media/radio/wl128x/fmdrv_v4l2.c | 4 +- trunk/drivers/media/rc/Kconfig | 61 +- trunk/drivers/media/rc/Makefile | 1 - trunk/drivers/media/rc/ati_remote.c | 133 +- trunk/drivers/media/rc/ene_ir.c | 3 +- trunk/drivers/media/rc/fintek-cir.c | 32 +- trunk/drivers/media/rc/gpio-ir-recv.c | 26 +- trunk/drivers/media/rc/iguanair.c | 639 -- trunk/drivers/media/rc/mceusb.c | 20 +- trunk/drivers/media/rc/nuvoton-cir.c | 145 +- trunk/drivers/media/rc/rc-main.c | 5 +- trunk/drivers/media/video/Kconfig | 85 +- trunk/drivers/media/video/Makefile | 1 - trunk/drivers/media/video/adv7180.c | 235 +- trunk/drivers/media/video/adv7393.c | 487 -- trunk/drivers/media/video/adv7393_regs.h | 188 - trunk/drivers/media/video/bt8xx/bttv-cards.c | 11 +- trunk/drivers/media/video/bt8xx/bttv-driver.c | 6 + trunk/drivers/media/video/bt8xx/bttv.h | 2 +- trunk/drivers/media/video/cpia2/cpia2_v4l.c | 2 +- trunk/drivers/media/video/cs8420.h | 50 + trunk/drivers/media/video/cx18/cx18-ioctl.c | 18 + trunk/drivers/media/video/cx18/cx18-ioctl.h | 2 + trunk/drivers/media/video/cx18/cx18-streams.c | 4 +- .../media/video/cx231xx/cx231xx-avcore.c | 56 +- .../media/video/cx231xx/cx231xx-cards.c | 17 +- .../drivers/media/video/cx231xx/cx231xx-i2c.c | 8 +- trunk/drivers/media/video/cx231xx/cx231xx.h | 2 + .../drivers/media/video/cx23885/cx23885-i2c.c | 10 +- trunk/drivers/media/video/cx23885/cx23885.h | 2 + .../drivers/media/video/cx25821/cx25821-i2c.c | 10 +- .../video/cx25821/cx25821-medusa-video.c | 2 +- trunk/drivers/media/video/cx25821/cx25821.h | 2 + trunk/drivers/media/video/cx88/cx88-alsa.c | 31 +- .../drivers/media/video/cx88/cx88-blackbird.c | 234 +- trunk/drivers/media/video/cx88/cx88-cards.c | 20 - trunk/drivers/media/video/cx88/cx88-core.c | 7 +- trunk/drivers/media/video/cx88/cx88-video.c | 901 ++- trunk/drivers/media/video/cx88/cx88.h | 68 +- trunk/drivers/media/video/davinci/Kconfig | 30 +- trunk/drivers/media/video/davinci/Makefile | 8 +- .../media/video/davinci/vpbe_display.c | 4 +- trunk/drivers/media/video/davinci/vpif.c | 45 +- trunk/drivers/media/video/davinci/vpif.h | 45 - .../media/video/davinci/vpif_capture.c | 694 +- .../media/video/davinci/vpif_capture.h | 16 +- .../media/video/davinci/vpif_display.c | 684 +- .../media/video/davinci/vpif_display.h | 23 +- .../drivers/media/video/em28xx/em28xx-audio.c | 27 +- .../drivers/media/video/em28xx/em28xx-cards.c | 7 +- .../drivers/media/video/em28xx/em28xx-core.c | 33 +- trunk/drivers/media/video/em28xx/em28xx-dvb.c | 95 +- trunk/drivers/media/video/em28xx/em28xx-i2c.c | 1 - .../drivers/media/video/em28xx/em28xx-input.c | 2 +- trunk/drivers/media/video/em28xx/em28xx-reg.h | 51 +- trunk/drivers/media/video/gspca/benq.c | 7 +- trunk/drivers/media/video/gspca/conex.c | 208 +- trunk/drivers/media/video/gspca/cpia1.c | 486 +- trunk/drivers/media/video/gspca/etoms.c | 221 +- trunk/drivers/media/video/gspca/finepix.c | 1 - trunk/drivers/media/video/gspca/gl860/gl860.c | 1 - trunk/drivers/media/video/gspca/gspca.c | 50 +- trunk/drivers/media/video/gspca/jeilinj.c | 219 +- trunk/drivers/media/video/gspca/jl2005bcd.c | 5 +- trunk/drivers/media/video/gspca/kinect.c | 10 +- trunk/drivers/media/video/gspca/konica.c | 289 +- .../media/video/gspca/m5602/m5602_core.c | 1 - trunk/drivers/media/video/gspca/mars.c | 48 +- trunk/drivers/media/video/gspca/mr97310a.c | 439 +- trunk/drivers/media/video/gspca/nw80x.c | 203 +- trunk/drivers/media/video/gspca/ov519.c | 600 +- trunk/drivers/media/video/gspca/ov534.c | 570 +- trunk/drivers/media/video/gspca/ov534_9.c | 294 +- trunk/drivers/media/video/gspca/pac207.c | 1 - trunk/drivers/media/video/gspca/pac7302.c | 372 +- trunk/drivers/media/video/gspca/pac7311.c | 1 - trunk/drivers/media/video/gspca/se401.c | 184 +- trunk/drivers/media/video/gspca/sn9c2028.c | 7 +- trunk/drivers/media/video/gspca/sonixb.c | 622 +- trunk/drivers/media/video/gspca/sonixj.c | 1 - trunk/drivers/media/video/gspca/spca1528.c | 271 +- trunk/drivers/media/video/gspca/spca500.c | 201 +- trunk/drivers/media/video/gspca/spca501.c | 257 +- trunk/drivers/media/video/gspca/spca505.c | 77 +- trunk/drivers/media/video/gspca/spca506.c | 211 +- trunk/drivers/media/video/gspca/spca508.c | 71 +- trunk/drivers/media/video/gspca/spca561.c | 393 +- trunk/drivers/media/video/gspca/sq905.c | 1 - trunk/drivers/media/video/gspca/sq905c.c | 1 - trunk/drivers/media/video/gspca/sq930x.c | 110 +- trunk/drivers/media/video/gspca/stk014.c | 188 +- trunk/drivers/media/video/gspca/stv0680.c | 7 +- trunk/drivers/media/video/gspca/sunplus.c | 237 +- trunk/drivers/media/video/gspca/t613.c | 824 +- trunk/drivers/media/video/gspca/topro.c | 459 +- trunk/drivers/media/video/gspca/tv8532.c | 125 +- trunk/drivers/media/video/gspca/vc032x.c | 694 +- trunk/drivers/media/video/gspca/vicam.c | 68 +- trunk/drivers/media/video/gspca/w996Xcf.c | 15 +- trunk/drivers/media/video/gspca/xirlink_cit.c | 473 +- trunk/drivers/media/video/ibmmpeg2.h | 94 + trunk/drivers/media/video/ivtv/ivtv-ioctl.c | 12 + trunk/drivers/media/video/ivtv/ivtv-ioctl.h | 1 + trunk/drivers/media/video/ivtv/ivtv-streams.c | 4 +- trunk/drivers/media/video/m5mols/Kconfig | 1 - .../media/video/m5mols/m5mols_controls.c | 4 +- trunk/drivers/media/video/mem2mem_testdev.c | 332 +- trunk/drivers/media/video/mt9m001.c | 2 +- trunk/drivers/media/video/mt9m032.c | 13 +- trunk/drivers/media/video/mt9m111.c | 1 + trunk/drivers/media/video/mt9p031.c | 5 +- trunk/drivers/media/video/mt9t001.c | 13 +- trunk/drivers/media/video/mt9v022.c | 2 +- trunk/drivers/media/video/mx1_camera.c | 4 +- trunk/drivers/media/video/mx2_camera.c | 47 +- trunk/drivers/media/video/mx2_emmaprp.c | 10 +- trunk/drivers/media/video/mx3_camera.c | 22 +- trunk/drivers/media/video/omap3isp/ispccdc.c | 8 +- .../drivers/media/video/omap3isp/isppreview.c | 8 +- .../drivers/media/video/omap3isp/ispresizer.c | 6 +- trunk/drivers/media/video/ov2640.c | 6 +- trunk/drivers/media/video/ov772x.c | 8 +- trunk/drivers/media/video/ov9640.c | 1 - trunk/drivers/media/video/pms.c | 1 + trunk/drivers/media/video/pvrusb2/Kconfig | 1 + .../media/video/pvrusb2/pvrusb2-v4l2.c | 12 +- trunk/drivers/media/video/pwc/pwc-if.c | 171 +- trunk/drivers/media/video/pwc/pwc-v4l.c | 165 +- trunk/drivers/media/video/pwc/pwc.h | 3 + trunk/drivers/media/video/s2255drv.c | 1 - .../media/video/s5p-fimc/fimc-capture.c | 112 +- .../drivers/media/video/s5p-fimc/fimc-core.c | 2 +- .../drivers/media/video/s5p-fimc/fimc-core.h | 3 + .../media/video/s5p-fimc/fimc-lite-reg.c | 2 +- .../drivers/media/video/s5p-fimc/fimc-lite.c | 15 +- trunk/drivers/media/video/s5p-fimc/fimc-m2m.c | 52 +- .../media/video/s5p-fimc/fimc-mdevice.c | 7 +- trunk/drivers/media/video/s5p-fimc/fimc-reg.c | 20 +- trunk/drivers/media/video/s5p-g2d/g2d.c | 9 +- .../drivers/media/video/s5p-jpeg/jpeg-core.c | 38 +- .../drivers/media/video/s5p-mfc/s5p_mfc_dec.c | 10 +- .../drivers/media/video/s5p-mfc/s5p_mfc_enc.c | 11 +- .../drivers/media/video/s5p-tv/mixer_video.c | 8 +- .../drivers/media/video/s5p-tv/sii9234_drv.c | 12 +- trunk/drivers/media/video/saa7121.h | 132 + .../drivers/media/video/saa7134/saa7134-dvb.c | 82 +- trunk/drivers/media/video/saa7146.h | 112 + trunk/drivers/media/video/saa7146reg.h | 283 + .../drivers/media/video/saa7164/saa7164-api.c | 14 + .../drivers/media/video/saa7164/saa7164-i2c.c | 20 +- trunk/drivers/media/video/saa7164/saa7164.h | 2 + trunk/drivers/media/video/smiapp/Kconfig | 1 - .../drivers/media/video/smiapp/smiapp-core.c | 41 +- trunk/drivers/media/video/sn9c102/sn9c102.h | 2 +- trunk/drivers/media/video/soc_camera.c | 12 +- trunk/drivers/media/video/soc_mediabus.c | 6 - trunk/drivers/media/video/tlg2300/pd-main.c | 4 +- trunk/drivers/media/video/tuner-core.c | 15 +- trunk/drivers/media/video/tvaudio.c | 291 +- trunk/drivers/media/video/tvp5150.c | 97 +- trunk/drivers/media/video/tw9910.c | 8 +- trunk/drivers/media/video/uvc/Kconfig | 1 - trunk/drivers/media/video/uvc/uvc_ctrl.c | 5 +- trunk/drivers/media/video/uvc/uvc_queue.c | 1 - trunk/drivers/media/video/uvc/uvc_v4l2.c | 2 +- trunk/drivers/media/video/uvc/uvc_video.c | 8 +- .../drivers/media/video/v4l2-compat-ioctl32.c | 10 +- trunk/drivers/media/video/v4l2-ctrls.c | 3 +- trunk/drivers/media/video/v4l2-dev.c | 70 +- trunk/drivers/media/video/v4l2-ioctl.c | 3543 +++++---- trunk/drivers/media/video/v4l2-mem2mem.c | 18 +- trunk/drivers/media/video/v4l2-subdev.c | 4 +- trunk/drivers/media/video/via-camera.c | 2 +- trunk/drivers/media/video/videobuf-core.c | 16 + .../drivers/media/video/videobuf-dma-contig.c | 57 +- trunk/drivers/media/video/videobuf2-core.c | 417 +- trunk/drivers/media/video/vivi.c | 220 +- trunk/drivers/media/video/zr364xx.c | 484 +- trunk/drivers/message/i2o/i2o_config.c | 7 - trunk/drivers/message/i2o/i2o_proc.c | 37 +- trunk/drivers/mfd/88pm800.c | 596 -- trunk/drivers/mfd/88pm805.c | 301 - trunk/drivers/mfd/88pm80x.c | 145 - trunk/drivers/mfd/88pm860x-core.c | 23 - trunk/drivers/mfd/Kconfig | 102 +- trunk/drivers/mfd/Makefile | 15 +- trunk/drivers/mfd/ab3100-core.c | 23 +- trunk/drivers/mfd/ab8500-core.c | 242 +- trunk/drivers/mfd/ab8500-debugfs.c | 12 +- trunk/drivers/mfd/ab8500-gpadc.c | 9 +- trunk/drivers/mfd/ab8500-sysctrl.c | 6 + trunk/drivers/mfd/adp5520.c | 2 +- trunk/drivers/mfd/anatop-mfd.c | 2 +- trunk/drivers/mfd/arizona-core.c | 566 -- trunk/drivers/mfd/arizona-i2c.c | 97 - trunk/drivers/mfd/arizona-irq.c | 275 - trunk/drivers/mfd/arizona-spi.c | 97 - trunk/drivers/mfd/arizona.h | 40 - trunk/drivers/mfd/asic3.c | 1 - trunk/drivers/mfd/da9052-core.c | 1 + trunk/drivers/mfd/db8500-prcmu.c | 92 +- trunk/drivers/mfd/dbx500-prcmu-regs.h | 1 - trunk/drivers/mfd/ezx-pcap.c | 2 +- trunk/drivers/mfd/max77686-irq.c | 319 - trunk/drivers/mfd/max77686.c | 187 - trunk/drivers/mfd/max77693.c | 11 +- trunk/drivers/mfd/max8925-core.c | 8 +- trunk/drivers/mfd/max8997-irq.c | 62 +- trunk/drivers/mfd/max8997.c | 9 +- trunk/drivers/mfd/mc13xxx-core.c | 4 + trunk/drivers/mfd/mc13xxx-i2c.c | 12 +- trunk/drivers/mfd/mc13xxx-spi.c | 15 +- trunk/drivers/mfd/mfd-core.c | 30 +- trunk/drivers/mfd/pcf50633-core.c | 9 +- trunk/drivers/mfd/s5m-core.c | 206 + trunk/drivers/mfd/s5m-irq.c | 495 ++ trunk/drivers/mfd/sec-core.c | 216 - trunk/drivers/mfd/sec-irq.c | 317 - trunk/drivers/mfd/tc3589x.c | 9 +- trunk/drivers/mfd/timberdale.c | 2 +- trunk/drivers/mfd/tps65010.c | 3 +- trunk/drivers/mfd/tps65090.c | 4 +- trunk/drivers/mfd/tps6586x.c | 296 +- trunk/drivers/mfd/tps65910.c | 23 +- trunk/drivers/mfd/twl-core.c | 12 +- trunk/drivers/mfd/twl6040-core.c | 24 +- trunk/drivers/mfd/wm5102-tables.c | 2399 ------ trunk/drivers/mfd/wm5110-tables.c | 2281 ------ trunk/drivers/mfd/wm831x-otp.c | 8 - trunk/drivers/mfd/wm8350-core.c | 354 +- trunk/drivers/mfd/wm8350-i2c.c | 5 + trunk/drivers/mfd/wm8350-irq.c | 8 +- trunk/drivers/mfd/wm8350-regmap.c | 3222 +++++++- trunk/drivers/mfd/wm8994-core.c | 17 +- trunk/drivers/mfd/wm8994-irq.c | 10 +- trunk/drivers/misc/Kconfig | 1 - trunk/drivers/misc/ab8500-pwm.c | 6 + trunk/drivers/misc/lkdtm.c | 2 - trunk/drivers/misc/mei/interrupt.c | 2 +- trunk/drivers/misc/mei/main.c | 27 - trunk/drivers/misc/sgi-xp/xpc_uv.c | 84 +- trunk/drivers/misc/ti-st/st_core.c | 5 - trunk/drivers/misc/ti-st/st_ll.c | 2 +- trunk/drivers/mmc/host/omap.c | 368 +- trunk/drivers/mmc/host/omap_hsmmc.c | 204 +- trunk/drivers/mtd/maps/uclinux.c | 5 +- trunk/drivers/mtd/nand/Kconfig | 2 +- trunk/drivers/mtd/nand/jz4740_nand.c | 228 +- trunk/drivers/mtd/nand/omap2.c | 105 +- trunk/drivers/net/appletalk/cops.c | 4 +- trunk/drivers/net/appletalk/ltpc.c | 4 +- trunk/drivers/net/bonding/bond_main.c | 32 +- trunk/drivers/net/can/c_can/c_can_platform.c | 8 + trunk/drivers/net/cris/eth_v10.c | 2 +- .../net/ethernet/broadcom/bnx2x/bnx2x.h | 2 +- .../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 75 +- .../net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 1 - trunk/drivers/net/ethernet/broadcom/tg3.c | 71 +- trunk/drivers/net/ethernet/broadcom/tg3.h | 8 +- .../drivers/net/ethernet/chelsio/cxgb4/sge.c | 2 +- .../net/ethernet/chelsio/cxgb4vf/sge.c | 2 +- .../net/ethernet/emulex/benet/be_main.c | 2 +- .../ethernet/freescale/fs_enet/mii-bitbang.c | 4 +- .../net/ethernet/freescale/fs_enet/mii-fec.c | 8 +- .../net/ethernet/intel/e1000/e1000_ethtool.c | 39 - .../net/ethernet/intel/e1000/e1000_main.c | 4 - .../drivers/net/ethernet/intel/e1000e/82571.c | 10 +- .../net/ethernet/intel/e1000e/ethtool.c | 41 +- .../net/ethernet/intel/e1000e/netdev.c | 36 +- trunk/drivers/net/ethernet/intel/e1000e/phy.c | 31 +- .../net/ethernet/intel/igb/e1000_82575.c | 16 +- .../net/ethernet/intel/igb/e1000_phy.c | 29 +- .../net/ethernet/intel/igb/e1000_phy.h | 5 +- .../net/ethernet/intel/igb/e1000_regs.h | 8 +- .../net/ethernet/intel/igb/igb_ethtool.c | 70 +- .../drivers/net/ethernet/intel/igb/igb_main.c | 25 +- .../drivers/net/ethernet/intel/ixgbe/ixgbe.h | 25 +- .../net/ethernet/intel/ixgbe/ixgbe_82599.c | 3 +- .../net/ethernet/intel/ixgbe/ixgbe_main.c | 501 +- .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 1 + .../net/ethernet/mellanox/mlx4/en_rx.c | 4 +- .../net/ethernet/mellanox/mlx4/en_tx.c | 17 +- .../drivers/net/ethernet/mellanox/mlx4/icm.c | 9 +- .../drivers/net/ethernet/mellanox/mlx4/icm.h | 2 +- .../drivers/net/ethernet/mellanox/mlx4/main.c | 3 + .../drivers/net/ethernet/mellanox/mlx4/mcg.c | 4 +- .../drivers/net/ethernet/mellanox/mlx4/mlx4.h | 4 +- .../net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + trunk/drivers/net/ethernet/mellanox/mlx4/mr.c | 27 +- .../net/ethernet/mellanox/mlx4/profile.c | 4 +- .../net/ethernet/mellanox/mlx4/sense.c | 14 + trunk/drivers/net/ethernet/nxp/lpc_eth.c | 13 + .../drivers/net/ethernet/octeon/octeon_mgmt.c | 312 +- .../net/ethernet/qlogic/qlge/qlge_main.c | 1 - trunk/drivers/net/ethernet/renesas/Kconfig | 4 +- trunk/drivers/net/ethernet/renesas/sh_eth.c | 11 +- trunk/drivers/net/ethernet/seeq/seeq8005.c | 4 +- trunk/drivers/net/ethernet/sfc/efx.c | 6 - trunk/drivers/net/ethernet/sfc/efx.h | 14 +- trunk/drivers/net/ethernet/sfc/ethtool.c | 16 +- trunk/drivers/net/ethernet/sfc/tx.c | 19 - .../net/ethernet/stmicro/stmmac/stmmac.h | 42 + .../net/ethernet/stmicro/stmmac/stmmac_main.c | 33 +- .../ethernet/stmicro/stmmac/stmmac_platform.c | 2 +- trunk/drivers/net/ethernet/ti/Kconfig | 4 +- trunk/drivers/net/ethernet/ti/cpsw.c | 174 +- trunk/drivers/net/ethernet/ti/davinci_cpdma.c | 3 +- trunk/drivers/net/ethernet/ti/davinci_mdio.c | 41 +- .../drivers/net/ethernet/xscale/ixp4xx_eth.c | 1 - trunk/drivers/net/hyperv/netvsc.c | 7 + trunk/drivers/net/hyperv/netvsc_drv.c | 2 +- trunk/drivers/net/hyperv/rndis_filter.c | 19 +- trunk/drivers/net/irda/bfin_sir.c | 8 +- trunk/drivers/net/irda/ks959-sir.c | 1 - trunk/drivers/net/irda/ksdazzle-sir.c | 1 - trunk/drivers/net/loopback.c | 1 - trunk/drivers/net/macvtap.c | 3 +- trunk/drivers/net/netconsole.c | 6 + trunk/drivers/net/phy/mdio-mux-gpio.c | 1 + trunk/drivers/net/phy/mdio-mux.c | 2 +- trunk/drivers/net/phy/mdio-octeon.c | 92 +- trunk/drivers/net/ppp/ppp_generic.c | 58 +- trunk/drivers/net/ppp/pptp.c | 4 +- trunk/drivers/net/team/Kconfig | 4 +- trunk/drivers/net/team/team.c | 305 +- trunk/drivers/net/team/team_mode_broadcast.c | 8 +- trunk/drivers/net/team/team_mode_roundrobin.c | 8 +- trunk/drivers/net/tun.c | 7 +- trunk/drivers/net/usb/cdc-phonet.c | 3 +- trunk/drivers/net/usb/cdc_ncm.c | 20 - trunk/drivers/net/usb/kaweth.c | 2 +- trunk/drivers/net/usb/qmi_wwan.c | 251 +- trunk/drivers/net/usb/sierra_net.c | 52 +- trunk/drivers/net/veth.c | 3 - trunk/drivers/net/virtio_net.c | 2 +- trunk/drivers/net/vmxnet3/vmxnet3_drv.c | 2 +- trunk/drivers/net/wan/dscc4.c | 5 +- trunk/drivers/net/wimax/i2400m/fw.c | 4 +- trunk/drivers/net/wireless/at76c50x-usb.c | 2 +- trunk/drivers/net/wireless/ath/ath5k/ath5k.h | 2 +- trunk/drivers/net/wireless/ath/ath5k/base.c | 11 +- .../net/wireless/ath/ath5k/mac80211-ops.c | 9 +- trunk/drivers/net/wireless/ath/ath5k/phy.c | 43 +- .../net/wireless/ath/ath9k/ar9003_eeprom.c | 149 +- trunk/drivers/net/wireless/ath/ath9k/hw.c | 1 - trunk/drivers/net/wireless/ath/ath9k/hw.h | 1 - trunk/drivers/net/wireless/ath/ath9k/mac.c | 18 +- trunk/drivers/net/wireless/ath/ath9k/mac.h | 1 - trunk/drivers/net/wireless/ath/ath9k/main.c | 4 +- trunk/drivers/net/wireless/ath/ath9k/pci.c | 2 - trunk/drivers/net/wireless/ath/ath9k/rc.c | 812 +- trunk/drivers/net/wireless/ath/ath9k/rc.h | 4 + trunk/drivers/net/wireless/ath/ath9k/recv.c | 2 +- trunk/drivers/net/wireless/ath/carl9170/fw.c | 1 - trunk/drivers/net/wireless/ath/carl9170/mac.c | 2 +- .../drivers/net/wireless/ath/carl9170/main.c | 4 +- trunk/drivers/net/wireless/ath/carl9170/rx.c | 1 - trunk/drivers/net/wireless/b43/Makefile | 1 - trunk/drivers/net/wireless/b43/b43.h | 10 +- trunk/drivers/net/wireless/b43/main.c | 72 +- trunk/drivers/net/wireless/b43/phy_common.c | 17 +- trunk/drivers/net/wireless/b43/phy_common.h | 6 - trunk/drivers/net/wireless/b43/phy_n.c | 668 +- trunk/drivers/net/wireless/b43/phy_n.h | 1 - trunk/drivers/net/wireless/b43/radio_2057.c | 141 - trunk/drivers/net/wireless/b43/radio_2057.h | 430 -- trunk/drivers/net/wireless/b43/tables_nphy.c | 75 - trunk/drivers/net/wireless/b43/tables_nphy.h | 10 - trunk/drivers/net/wireless/b43legacy/main.c | 2 +- .../wireless/brcm80211/brcmfmac/dhd_linux.c | 2 +- .../net/wireless/brcm80211/brcmsmac/channel.c | 5 +- .../wireless/brcm80211/brcmsmac/mac80211_if.c | 7 +- .../net/wireless/brcm80211/brcmsmac/main.c | 13 +- .../wireless/brcm80211/include/brcmu_wifi.h | 5 + trunk/drivers/net/wireless/iwlegacy/common.c | 15 +- trunk/drivers/net/wireless/iwlegacy/common.h | 2 + trunk/drivers/net/wireless/iwlwifi/dvm/rs.c | 13 +- trunk/drivers/net/wireless/libertas/cfg.c | 1 - trunk/drivers/net/wireless/libertas/if_sdio.c | 1 - trunk/drivers/net/wireless/libertas/if_usb.c | 1 - trunk/drivers/net/wireless/libertas/main.c | 5 +- trunk/drivers/net/wireless/mac80211_hwsim.c | 5 + trunk/drivers/net/wireless/mwifiex/11n.c | 26 - trunk/drivers/net/wireless/mwifiex/11n.h | 15 - trunk/drivers/net/wireless/mwifiex/11n_aggr.c | 14 +- .../net/wireless/mwifiex/11n_rxreorder.c | 66 +- .../net/wireless/mwifiex/11n_rxreorder.h | 5 - trunk/drivers/net/wireless/mwifiex/Makefile | 2 - trunk/drivers/net/wireless/mwifiex/cfg80211.c | 17 +- trunk/drivers/net/wireless/mwifiex/cmdevt.c | 5 +- trunk/drivers/net/wireless/mwifiex/decl.h | 3 - trunk/drivers/net/wireless/mwifiex/fw.h | 42 +- trunk/drivers/net/wireless/mwifiex/init.c | 107 +- trunk/drivers/net/wireless/mwifiex/ioctl.h | 5 +- trunk/drivers/net/wireless/mwifiex/main.c | 3 - trunk/drivers/net/wireless/mwifiex/main.h | 38 +- trunk/drivers/net/wireless/mwifiex/scan.c | 6 +- trunk/drivers/net/wireless/mwifiex/sta_cmd.c | 55 +- .../drivers/net/wireless/mwifiex/sta_event.c | 64 +- .../drivers/net/wireless/mwifiex/sta_ioctl.c | 12 +- trunk/drivers/net/wireless/mwifiex/sta_rx.c | 38 +- trunk/drivers/net/wireless/mwifiex/txrx.c | 5 - trunk/drivers/net/wireless/mwifiex/uap_cmd.c | 1 - .../drivers/net/wireless/mwifiex/uap_event.c | 290 - trunk/drivers/net/wireless/mwifiex/uap_txrx.c | 255 - trunk/drivers/net/wireless/mwifiex/wmm.c | 59 +- trunk/drivers/net/wireless/p54/eeprom.c | 108 +- trunk/drivers/net/wireless/p54/eeprom.h | 12 - trunk/drivers/net/wireless/p54/p54pci.c | 88 +- trunk/drivers/net/wireless/p54/p54pci.h | 1 - trunk/drivers/net/wireless/p54/p54usb.c | 2 +- trunk/drivers/net/wireless/rndis_wlan.c | 6 +- trunk/drivers/net/wireless/rt2x00/rt2800lib.c | 68 - trunk/drivers/net/wireless/rt2x00/rt2800pci.c | 71 + trunk/drivers/net/wireless/rt2x00/rt61pci.c | 3 +- .../net/wireless/rtl818x/rtl8187/dev.c | 2 +- trunk/drivers/net/xen-netfront.c | 2 +- trunk/drivers/of/base.c | 27 - trunk/drivers/pci/pci-acpi.c | 4 +- trunk/drivers/pci/pci-driver.c | 7 - trunk/drivers/pinctrl/core.c | 13 +- trunk/drivers/pinctrl/pinctrl-imx23.c | 2 +- trunk/drivers/pinctrl/pinctrl-imx28.c | 2 +- trunk/drivers/pinctrl/pinctrl-imx51.c | 2 +- .../drivers/pinctrl/pinctrl-nomadik-db8500.c | 7 +- trunk/drivers/pinctrl/pinctrl-nomadik.c | 3 +- trunk/drivers/pinctrl/pinctrl-sirf.c | 1 + trunk/drivers/pinctrl/pinctrl-u300.c | 8 +- trunk/drivers/platform/Makefile | 1 - trunk/drivers/platform/olpc/Makefile | 4 - trunk/drivers/platform/olpc/olpc-ec.c | 336 - trunk/drivers/platform/x86/Kconfig | 6 +- trunk/drivers/platform/x86/acer-wmi.c | 153 +- trunk/drivers/platform/x86/apple-gmux.c | 428 +- trunk/drivers/platform/x86/asus-nb-wmi.c | 108 +- trunk/drivers/platform/x86/asus-wmi.c | 44 +- trunk/drivers/platform/x86/asus-wmi.h | 2 - trunk/drivers/platform/x86/classmate-laptop.c | 421 +- trunk/drivers/platform/x86/dell-laptop.c | 54 - trunk/drivers/platform/x86/eeepc-wmi.c | 25 +- trunk/drivers/platform/x86/fujitsu-tablet.c | 2 - trunk/drivers/platform/x86/hdaps.c | 2 - trunk/drivers/platform/x86/hp_accel.c | 2 +- trunk/drivers/platform/x86/ideapad-laptop.c | 110 +- trunk/drivers/platform/x86/msi-laptop.c | 4 - trunk/drivers/platform/x86/panasonic-laptop.c | 4 - trunk/drivers/platform/x86/samsung-laptop.c | 41 +- trunk/drivers/platform/x86/sony-laptop.c | 12 +- trunk/drivers/platform/x86/thinkpad_acpi.c | 14 +- trunk/drivers/platform/x86/toshiba_acpi.c | 2 - .../drivers/platform/x86/toshiba_bluetooth.c | 4 - trunk/drivers/platform/x86/xo1-rfkill.c | 3 +- trunk/drivers/platform/x86/xo15-ebook.c | 2 - trunk/drivers/power/Kconfig | 1 - trunk/drivers/power/bq27x00_battery.c | 155 +- trunk/drivers/power/charger-manager.c | 152 +- trunk/drivers/power/ds2781_battery.c | 2 +- trunk/drivers/power/gpio-charger.c | 2 +- trunk/drivers/power/lp8727_charger.c | 2 +- trunk/drivers/power/max17042_battery.c | 8 - trunk/drivers/power/olpc_battery.c | 63 +- trunk/drivers/power/pda_power.c | 10 +- trunk/drivers/power/power_supply_core.c | 65 - trunk/drivers/power/power_supply_sysfs.c | 8 - trunk/drivers/power/sbs-battery.c | 2 +- trunk/drivers/power/smb347-charger.c | 123 +- trunk/drivers/power/test_power.c | 75 - trunk/drivers/power/twl4030_charger.c | 80 +- trunk/drivers/pps/pps.c | 4 +- trunk/drivers/pwm/Kconfig | 108 - trunk/drivers/pwm/Makefile | 11 - trunk/drivers/pwm/core.c | 713 -- trunk/drivers/pwm/pwm-bfin.c | 162 - trunk/drivers/pwm/pwm-lpc32xx.c | 148 - trunk/drivers/pwm/pwm-mxs.c | 203 - trunk/drivers/pwm/pwm-pxa.c | 218 - trunk/drivers/pwm/pwm-tegra.c | 261 - trunk/drivers/pwm/pwm-tiecap.c | 232 - trunk/drivers/pwm/pwm-tiehrpwm.c | 411 - trunk/drivers/pwm/pwm-vt8500.c | 177 - trunk/drivers/rapidio/devices/tsi721.c | 12 +- trunk/drivers/regulator/Kconfig | 2 +- trunk/drivers/regulator/ab3100.c | 1 - trunk/drivers/regulator/ab8500.c | 6 + trunk/drivers/regulator/anatop-regulator.c | 5 +- trunk/drivers/regulator/core.c | 2 +- trunk/drivers/regulator/db8500-prcmu.c | 6 + trunk/drivers/regulator/gpio-regulator.c | 38 +- trunk/drivers/regulator/palmas-regulator.c | 23 +- trunk/drivers/regulator/s5m8767.c | 78 +- trunk/drivers/regulator/tps6586x-regulator.c | 8 +- trunk/drivers/regulator/twl-regulator.c | 5 +- trunk/drivers/rtc/Kconfig | 11 - trunk/drivers/rtc/Makefile | 1 - trunk/drivers/rtc/interface.c | 2 - trunk/drivers/rtc/rtc-88pm80x.c | 369 - trunk/drivers/rtc/rtc-ab8500.c | 42 +- trunk/drivers/rtc/rtc-cmos.c | 1 + trunk/drivers/rtc/rtc-coh901331.c | 61 +- trunk/drivers/rtc/rtc-da9052.c | 5 +- trunk/drivers/rtc/rtc-max8925.c | 13 +- trunk/drivers/rtc/rtc-mc13xxx.c | 6 +- trunk/drivers/rtc/rtc-pcf2123.c | 2 - trunk/drivers/rtc/rtc-pcf8563.c | 11 - trunk/drivers/rtc/rtc-pl031.c | 95 +- trunk/drivers/rtc/rtc-r9701.c | 6 +- trunk/drivers/rtc/rtc-rs5c348.c | 7 +- trunk/drivers/rtc/rtc-s3c.c | 4 +- trunk/drivers/rtc/rtc-wm831x.c | 24 +- trunk/drivers/s390/char/sclp_sdias.c | 2 - trunk/drivers/scsi/scsi_transport_fc.c | 38 + trunk/drivers/scsi/scsi_transport_iscsi.c | 2 +- trunk/drivers/sh/intc/Kconfig | 4 - trunk/drivers/sh/intc/Makefile | 2 +- trunk/drivers/sh/intc/core.c | 38 +- trunk/drivers/sh/intc/internals.h | 5 - trunk/drivers/sh/intc/irqdomain.c | 68 - trunk/drivers/sh/pfc/pinctrl.c | 34 +- trunk/drivers/spi/Kconfig | 9 - trunk/drivers/spi/Makefile | 1 - trunk/drivers/spi/spi-bcm63xx.c | 4 +- trunk/drivers/spi/spi-coldfire-qspi.c | 5 +- trunk/drivers/spi/spi-falcon.c | 469 -- trunk/drivers/spi/spi-omap2-mcspi.c | 235 +- trunk/drivers/spi/spi-pl022.c | 1 + trunk/drivers/spi/spi-s3c64xx.c | 14 +- trunk/drivers/ssb/driver_mipscore.c | 28 +- trunk/drivers/staging/bcm/Misc.c | 31 +- trunk/drivers/staging/comedi/drivers.c | 2 +- .../staging/comedi/drivers/adv_pci1710.c | 3 + .../staging/comedi/drivers/adv_pci1723.c | 2 + .../staging/comedi/drivers/adv_pci_dio.c | 2 + .../staging/comedi/drivers/daqboard2000.c | 17 +- trunk/drivers/staging/comedi/drivers/dt3000.c | 6 +- trunk/drivers/staging/comedi/drivers/rtd520.c | 26 +- trunk/drivers/staging/comedi/drivers/usbdux.c | 4 +- .../staging/comedi/drivers/usbduxfast.c | 4 +- .../staging/comedi/drivers/usbduxsigma.c | 4 +- trunk/drivers/staging/csr/Kconfig | 2 +- trunk/drivers/staging/gdm72xx/sdio_boot.c | 7 +- trunk/drivers/staging/gdm72xx/usb_boot.c | 22 +- trunk/drivers/staging/iio/adc/ad7192.c | 48 +- trunk/drivers/staging/iio/adc/ad7298_ring.c | 2 +- trunk/drivers/staging/iio/adc/ad7780.c | 10 +- trunk/drivers/staging/iio/adc/ad7793.c | 99 +- .../staging/media/dt3155v4l/dt3155v4l.c | 15 +- .../staging/media/easycap/easycap_main.c | 1 - trunk/drivers/staging/media/lirc/lirc_bt829.c | 2 +- trunk/drivers/staging/media/lirc/lirc_sir.c | 60 +- trunk/drivers/staging/media/solo6x10/TODO | 2 +- trunk/drivers/staging/media/solo6x10/core.c | 13 +- trunk/drivers/staging/media/solo6x10/i2c.c | 2 +- trunk/drivers/staging/octeon/ethernet-mdio.c | 28 +- trunk/drivers/staging/octeon/ethernet.c | 153 +- .../drivers/staging/octeon/octeon-ethernet.h | 3 - trunk/drivers/staging/olpc_dcon/olpc_dcon.c | 1 - trunk/drivers/staging/vt6656/main_usb.c | 2 +- trunk/drivers/staging/winbond/wbusb.c | 2 +- trunk/drivers/target/target_core_file.c | 32 +- trunk/drivers/thermal/thermal_sys.c | 2 +- trunk/drivers/tty/serial/Kconfig | 10 +- trunk/drivers/tty/serial/ifx6x60.c | 2 +- trunk/drivers/tty/serial/mxs-auart.c | 14 +- trunk/drivers/tty/serial/pmac_zilog.c | 12 +- trunk/drivers/tty/serial/sh-sci.c | 5 +- trunk/drivers/tty/serial/uartlite.c | 3 +- trunk/drivers/usb/Kconfig | 2 +- trunk/drivers/usb/chipidea/Kconfig | 9 +- trunk/drivers/usb/class/cdc-acm.c | 3 +- trunk/drivers/usb/core/hub.c | 9 - trunk/drivers/usb/early/ehci-dbgp.c | 2 +- trunk/drivers/usb/gadget/f_phonet.c | 2 +- trunk/drivers/usb/gadget/goku_udc.c | 2 +- trunk/drivers/usb/gadget/m66592-udc.c | 9 +- trunk/drivers/usb/gadget/m66592-udc.h | 5 + trunk/drivers/usb/gadget/pxa25x_udc.c | 12 +- trunk/drivers/usb/gadget/r8a66597-udc.c | 11 +- trunk/drivers/usb/gadget/r8a66597-udc.h | 5 + trunk/drivers/usb/gadget/storage_common.c | 12 +- trunk/drivers/usb/gadget/u_ether.c | 6 - trunk/drivers/usb/gadget/u_uac1.c | 6 +- trunk/drivers/usb/host/ehci-omap.c | 175 +- trunk/drivers/usb/host/ehci-sead3.c | 2 +- trunk/drivers/usb/host/ehci-tegra.c | 3 +- trunk/drivers/usb/host/isp1362-hcd.c | 8 +- trunk/drivers/usb/host/ohci-omap.c | 2 + trunk/drivers/usb/host/pci-quirks.c | 7 - trunk/drivers/usb/host/pci-quirks.h | 1 - trunk/drivers/usb/host/r8a66597-hcd.c | 12 + trunk/drivers/usb/host/r8a66597.h | 5 + trunk/drivers/usb/host/xhci-pci.c | 10 - trunk/drivers/usb/host/xhci-ring.c | 40 +- trunk/drivers/usb/host/xhci.c | 8 +- trunk/drivers/usb/host/xhci.h | 3 - trunk/drivers/usb/misc/emi62.c | 2 +- trunk/drivers/usb/musb/Kconfig | 4 +- trunk/drivers/usb/musb/musb_core.h | 8 + trunk/drivers/usb/musb/musb_dsps.c | 19 +- trunk/drivers/usb/otg/isp1301_omap.c | 1 + trunk/drivers/usb/renesas_usbhs/common.c | 6 +- trunk/drivers/usb/renesas_usbhs/mod_host.c | 8 - trunk/drivers/usb/serial/bus.c | 15 +- trunk/drivers/usb/serial/ftdi_sio.c | 1 - trunk/drivers/usb/serial/ftdi_sio_ids.h | 7 - trunk/drivers/usb/serial/ipw.c | 3 +- trunk/drivers/usb/serial/mos7840.c | 16 +- trunk/drivers/usb/serial/option.c | 285 +- trunk/drivers/usb/serial/qcserial.c | 47 +- trunk/drivers/usb/serial/usb-wwan.h | 3 +- trunk/drivers/usb/serial/usb_wwan.c | 68 +- trunk/drivers/vfio/Kconfig | 16 - trunk/drivers/vfio/Makefile | 3 - trunk/drivers/vfio/pci/Kconfig | 8 - trunk/drivers/vfio/pci/Makefile | 4 - trunk/drivers/vfio/pci/vfio_pci.c | 579 -- trunk/drivers/vfio/pci/vfio_pci_config.c | 1540 ---- trunk/drivers/vfio/pci/vfio_pci_intrs.c | 740 -- trunk/drivers/vfio/pci/vfio_pci_private.h | 91 - trunk/drivers/vfio/pci/vfio_pci_rdwr.c | 269 - trunk/drivers/vfio/vfio.c | 1420 ---- trunk/drivers/vfio/vfio_iommu_type1.c | 753 -- trunk/drivers/vhost/Kconfig | 3 - trunk/drivers/vhost/Kconfig.tcm | 6 - trunk/drivers/vhost/Makefile | 2 - trunk/drivers/vhost/tcm_vhost.c | 1628 ---- trunk/drivers/vhost/tcm_vhost.h | 101 - trunk/drivers/video/aty/aty128fb.c | 180 +- trunk/drivers/video/backlight/Kconfig | 2 +- trunk/drivers/video/backlight/atmel-pwm-bl.c | 19 +- trunk/drivers/video/backlight/corgi_lcd.c | 19 +- trunk/drivers/video/backlight/l4f00242t03.c | 29 +- trunk/drivers/video/backlight/lm3533_bl.c | 8 +- trunk/drivers/video/backlight/lms283gf05.c | 24 +- trunk/drivers/video/backlight/lp855x_bl.c | 10 +- trunk/drivers/video/backlight/ot200_bl.c | 21 +- trunk/drivers/video/backlight/pwm_bl.c | 159 +- trunk/drivers/video/backlight/tosa_bl.c | 8 +- trunk/drivers/video/backlight/tosa_lcd.c | 7 +- trunk/drivers/video/console/fbcon.c | 6 +- trunk/drivers/video/da8xx-fb.c | 78 +- trunk/drivers/video/epson1355fb.c | 8 +- trunk/drivers/video/exynos/exynos_dp_core.c | 23 +- trunk/drivers/video/exynos/exynos_dp_core.h | 4 + trunk/drivers/video/exynos/exynos_dp_reg.c | 4 +- trunk/drivers/video/exynos/exynos_mipi_dsi.c | 2 +- trunk/drivers/video/exynos/s6e8ax0.h | 21 + trunk/drivers/video/fb_defio.c | 2 - trunk/drivers/video/fb_draw.h | 7 +- trunk/drivers/video/grvga.c | 47 +- trunk/drivers/video/mx3fb.c | 55 +- .../video/omap2/displays/panel-acx565akm.c | 10 +- .../video/omap2/displays/panel-generic-dpi.c | 179 +- .../omap2/displays/panel-lgphilips-lb035q02.c | 8 +- .../drivers/video/omap2/displays/panel-n8x0.c | 1 + .../omap2/displays/panel-nec-nl8048hl11-01b.c | 9 +- .../video/omap2/displays/panel-picodlp.c | 9 +- .../omap2/displays/panel-sharp-ls037v7dw01.c | 9 +- .../drivers/video/omap2/displays/panel-taal.c | 1 + .../video/omap2/displays/panel-tfp410.c | 7 +- .../omap2/displays/panel-tpo-td043mtea1.c | 8 +- trunk/drivers/video/omap2/dss/Kconfig | 4 +- trunk/drivers/video/omap2/dss/apply.c | 91 +- trunk/drivers/video/omap2/dss/dispc.c | 494 +- trunk/drivers/video/omap2/dss/dispc.h | 28 - trunk/drivers/video/omap2/dss/display.c | 40 +- trunk/drivers/video/omap2/dss/dpi.c | 64 +- trunk/drivers/video/omap2/dss/dsi.c | 152 +- trunk/drivers/video/omap2/dss/dss.c | 19 +- trunk/drivers/video/omap2/dss/dss.h | 54 +- trunk/drivers/video/omap2/dss/dss_features.h | 5 +- trunk/drivers/video/omap2/dss/hdmi.c | 246 +- trunk/drivers/video/omap2/dss/hdmi_panel.c | 9 +- trunk/drivers/video/omap2/dss/manager.c | 51 +- trunk/drivers/video/omap2/dss/overlay.c | 33 +- trunk/drivers/video/omap2/dss/rfbi.c | 40 +- trunk/drivers/video/omap2/dss/sdi.c | 42 +- trunk/drivers/video/omap2/dss/ti_hdmi.h | 21 +- .../drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 26 +- trunk/drivers/video/omap2/dss/venc.c | 8 +- .../drivers/video/omap2/omapfb/omapfb-main.c | 51 +- trunk/drivers/video/s3fb.c | 31 +- trunk/drivers/video/sh_mipi_dsi.c | 7 +- trunk/drivers/video/sh_mobile_lcdcfb.c | 1117 +-- trunk/drivers/video/sh_mobile_lcdcfb.h | 5 +- trunk/drivers/video/sh_mobile_meram.c | 235 +- trunk/drivers/video/smscufx.c | 2 +- trunk/drivers/video/w100fb.c | 12 - trunk/drivers/w1/slaves/w1_therm.c | 9 - trunk/drivers/w1/w1_family.h | 1 - trunk/drivers/watchdog/orion_wdt.c | 8 - trunk/drivers/zorro/zorro.c | 2 + trunk/firmware/Makefile | 1 + trunk/firmware/cxgb3/t3fw-7.10.0.bin.ihex | 1935 +++++ trunk/fs/9p/vfs_file.c | 3 - trunk/fs/affs/bitmap.c | 28 +- trunk/fs/autofs4/expire.c | 36 +- trunk/fs/bio.c | 2 +- trunk/fs/btrfs/ctree.h | 13 - trunk/fs/btrfs/disk-io.c | 5 +- trunk/fs/btrfs/file.c | 3 +- trunk/fs/btrfs/inode.c | 9 +- trunk/fs/btrfs/ioctl.c | 10 +- trunk/fs/btrfs/ordered-data.c | 2 +- trunk/fs/btrfs/relocation.c | 2 +- trunk/fs/btrfs/super.c | 45 +- trunk/fs/btrfs/transaction.c | 7 - trunk/fs/btrfs/volumes.c | 4 + trunk/fs/buffer.c | 28 +- trunk/fs/cachefiles/rdwr.c | 2 +- trunk/fs/ceph/addr.c | 3 - trunk/fs/ceph/dir.c | 45 +- trunk/fs/ceph/file.c | 62 +- trunk/fs/ceph/mds_client.c | 23 +- trunk/fs/ceph/snap.c | 18 +- trunk/fs/ceph/super.c | 1 - trunk/fs/ceph/super.h | 10 +- trunk/fs/ceph/xattr.c | 1 - trunk/fs/cifs/cifsglob.h | 10 - trunk/fs/cifs/cifsproto.h | 11 +- trunk/fs/cifs/cifssmb.c | 31 +- trunk/fs/cifs/inode.c | 302 +- trunk/fs/cifs/smb1ops.c | 24 - trunk/fs/cifs/smb2inode.c | 39 - trunk/fs/cifs/smb2ops.c | 3 - trunk/fs/cifs/smb2proto.h | 8 - trunk/fs/compat.c | 10 +- trunk/fs/ecryptfs/ecryptfs_kernel.h | 24 +- trunk/fs/ecryptfs/file.c | 90 +- trunk/fs/ecryptfs/inode.c | 95 +- trunk/fs/ecryptfs/main.c | 22 - trunk/fs/ecryptfs/messaging.c | 136 +- trunk/fs/ecryptfs/miscdev.c | 98 +- trunk/fs/ecryptfs/mmap.c | 39 +- trunk/fs/exec.c | 61 +- trunk/fs/exofs/inode.c | 27 +- trunk/fs/exofs/ore.c | 14 +- trunk/fs/exofs/super.c | 11 + trunk/fs/ext2/balloc.c | 14 +- trunk/fs/ext2/ialloc.c | 1 - trunk/fs/ext2/inode.c | 5 +- trunk/fs/ext2/super.c | 33 - trunk/fs/ext3/balloc.c | 2 +- trunk/fs/ext3/bitmap.c | 12 +- trunk/fs/ext3/inode.c | 8 + trunk/fs/ext3/super.c | 11 + trunk/fs/ext4/balloc.c | 62 +- trunk/fs/ext4/bitmap.c | 10 +- trunk/fs/ext4/extents.c | 1 - trunk/fs/ext4/inode.c | 25 +- trunk/fs/ext4/mmp.c | 6 - trunk/fs/ext4/super.c | 48 +- trunk/fs/fat/dir.c | 255 +- trunk/fs/fat/fat.h | 15 - trunk/fs/fat/file.c | 15 +- trunk/fs/fat/inode.c | 12 +- trunk/fs/fat/namei_msdos.c | 11 +- trunk/fs/fat/namei_vfat.c | 11 +- trunk/fs/fcntl.c | 29 - trunk/fs/file_table.c | 4 +- trunk/fs/fs-writeback.c | 9 +- trunk/fs/fuse/dir.c | 3 - trunk/fs/fuse/file.c | 19 +- trunk/fs/fuse/fuse_i.h | 3 - trunk/fs/fuse/inode.c | 32 +- trunk/fs/gfs2/file.c | 18 +- trunk/fs/gfs2/meta_io.c | 2 +- trunk/fs/gfs2/trans.c | 4 - trunk/fs/hfs/mdb.c | 4 +- trunk/fs/hfsplus/super.c | 2 +- trunk/fs/hugetlbfs/inode.c | 4 +- trunk/fs/inode.c | 12 +- trunk/fs/internal.h | 4 - trunk/fs/jbd/journal.c | 4 +- trunk/fs/jbd2/journal.c | 7 +- trunk/fs/lockd/clntproc.c | 14 +- trunk/fs/lockd/grace.c | 16 +- trunk/fs/lockd/host.c | 92 +- trunk/fs/lockd/netns.h | 7 - trunk/fs/lockd/svc.c | 43 +- trunk/fs/lockd/svc4proc.c | 14 +- trunk/fs/lockd/svclock.c | 17 +- trunk/fs/lockd/svcproc.c | 16 +- trunk/fs/lockd/svcsubs.c | 19 +- trunk/fs/locks.c | 34 +- trunk/fs/minix/itree_v2.c | 3 +- trunk/fs/namei.c | 321 +- trunk/fs/namespace.c | 97 +- trunk/fs/nfs/Kconfig | 23 +- trunk/fs/nfs/Makefile | 24 +- trunk/fs/nfs/blocklayout/blocklayout.c | 39 +- trunk/fs/nfs/callback.c | 28 +- trunk/fs/nfs/callback.h | 2 +- trunk/fs/nfs/callback_xdr.c | 4 +- trunk/fs/nfs/client.c | 874 ++- trunk/fs/nfs/delegation.c | 7 +- trunk/fs/nfs/delegation.h | 21 +- trunk/fs/nfs/dir.c | 127 +- trunk/fs/nfs/direct.c | 90 +- trunk/fs/nfs/dns_resolve.c | 4 - trunk/fs/nfs/file.c | 238 +- trunk/fs/nfs/getroot.c | 50 + trunk/fs/nfs/idmap.c | 29 +- trunk/fs/nfs/inode.c | 110 +- trunk/fs/nfs/internal.h | 126 +- trunk/fs/nfs/namespace.c | 17 +- trunk/fs/nfs/netns.h | 2 +- trunk/fs/nfs/nfs.h | 29 - trunk/fs/nfs/nfs2super.c | 31 - trunk/fs/nfs/nfs2xdr.c | 28 +- trunk/fs/nfs/nfs3client.c | 65 - trunk/fs/nfs/nfs3proc.c | 49 - trunk/fs/nfs/nfs3super.c | 31 - trunk/fs/nfs/nfs3xdr.c | 43 +- trunk/fs/nfs/nfs4_fs.h | 34 +- trunk/fs/nfs/nfs4client.c | 656 -- trunk/fs/nfs/nfs4file.c | 126 - trunk/fs/nfs/nfs4filelayout.c | 10 +- trunk/fs/nfs/nfs4filelayoutdev.c | 2 +- trunk/fs/nfs/nfs4getroot.c | 49 - trunk/fs/nfs/nfs4proc.c | 312 +- trunk/fs/nfs/nfs4state.c | 114 +- trunk/fs/nfs/nfs4super.c | 372 - trunk/fs/nfs/nfs4sysctl.c | 68 - trunk/fs/nfs/nfs4xdr.c | 90 +- trunk/fs/nfs/pagelist.c | 8 +- trunk/fs/nfs/pnfs.c | 57 +- trunk/fs/nfs/pnfs.h | 31 +- trunk/fs/nfs/proc.c | 41 - trunk/fs/nfs/read.c | 27 +- trunk/fs/nfs/super.c | 594 +- trunk/fs/nfs/sysctl.c | 26 + trunk/fs/nfs/unlink.c | 2 +- trunk/fs/nfs/write.c | 142 +- trunk/fs/nfsd/export.c | 10 +- trunk/fs/nfsd/netns.h | 4 - trunk/fs/nfsd/nfs4callback.c | 1 + trunk/fs/nfsd/nfs4idmap.c | 4 +- trunk/fs/nfsd/nfs4proc.c | 18 +- trunk/fs/nfsd/nfs4recover.c | 9 +- trunk/fs/nfsd/nfs4state.c | 201 +- trunk/fs/nfsd/nfs4xdr.c | 2 +- trunk/fs/nfsd/nfsctl.c | 8 +- trunk/fs/nfsd/nfsd.h | 13 - trunk/fs/nfsd/nfsfh.c | 1 - trunk/fs/nfsd/nfsproc.c | 9 +- trunk/fs/nfsd/nfssvc.c | 24 +- trunk/fs/nfsd/state.h | 5 +- trunk/fs/nfsd/vfs.c | 89 +- trunk/fs/nfsd/vfs.h | 11 +- trunk/fs/nilfs2/alloc.h | 14 +- trunk/fs/nilfs2/bmap.h | 7 - trunk/fs/nilfs2/btnode.h | 8 +- trunk/fs/nilfs2/cpfile.c | 10 +- trunk/fs/nilfs2/dat.c | 6 - trunk/fs/nilfs2/export.h | 8 - trunk/fs/nilfs2/file.c | 18 +- trunk/fs/nilfs2/ifile.c | 6 +- trunk/fs/nilfs2/inode.c | 7 - trunk/fs/nilfs2/ioctl.c | 6 +- trunk/fs/nilfs2/mdt.h | 7 - trunk/fs/nilfs2/nilfs.h | 17 +- trunk/fs/nilfs2/segment.c | 5 +- trunk/fs/nilfs2/sufile.c | 8 +- trunk/fs/nilfs2/super.c | 10 +- trunk/fs/nilfs2/the_nilfs.c | 1 - trunk/fs/nilfs2/the_nilfs.h | 8 +- trunk/fs/ntfs/file.c | 3 +- trunk/fs/ntfs/super.c | 17 + trunk/fs/ocfs2/file.c | 11 +- trunk/fs/ocfs2/ioctl.c | 14 +- trunk/fs/ocfs2/journal.c | 7 +- trunk/fs/ocfs2/localalloc.c | 8 +- trunk/fs/ocfs2/mmap.c | 2 - trunk/fs/ocfs2/refcounttree.c | 11 +- trunk/fs/open.c | 24 +- trunk/fs/pipe.c | 75 +- trunk/fs/proc/base.c | 22 +- trunk/fs/qnx4/bitmap.c | 24 +- trunk/fs/splice.c | 3 - trunk/fs/super.c | 296 +- trunk/fs/sysfs/bin.c | 2 - trunk/fs/ubifs/file.c | 10 +- trunk/fs/ubifs/super.c | 2 +- trunk/fs/xattr.c | 16 +- trunk/fs/xfs/xfs_alloc_btree.h | 14 + trunk/fs/xfs/xfs_aops.c | 97 +- trunk/fs/xfs/xfs_aops.h | 14 +- trunk/fs/xfs/xfs_attr.c | 78 +- trunk/fs/xfs/xfs_attr_leaf.c | 255 +- trunk/fs/xfs/xfs_attr_leaf.h | 21 +- trunk/fs/xfs/xfs_bmap.c | 2 +- trunk/fs/xfs/xfs_buf.c | 240 +- trunk/fs/xfs/xfs_buf.h | 116 +- trunk/fs/xfs/xfs_buf_item.c | 345 +- trunk/fs/xfs/xfs_buf_item.h | 38 +- trunk/fs/xfs/xfs_da_btree.c | 823 +- trunk/fs/xfs/xfs_da_btree.h | 38 +- trunk/fs/xfs/xfs_dinode.h | 2 +- trunk/fs/xfs/xfs_dir2.c | 4 +- trunk/fs/xfs/xfs_dir2_block.c | 118 +- trunk/fs/xfs/xfs_dir2_data.c | 50 +- trunk/fs/xfs/xfs_dir2_leaf.c | 621 +- trunk/fs/xfs/xfs_dir2_node.c | 236 +- trunk/fs/xfs/xfs_dir2_priv.h | 46 +- trunk/fs/xfs/xfs_dir2_sf.c | 4 +- trunk/fs/xfs/xfs_file.c | 29 +- trunk/fs/xfs/xfs_ialloc.c | 446 +- trunk/fs/xfs/xfs_ialloc.h | 2 + trunk/fs/xfs/xfs_iget.c | 15 + trunk/fs/xfs/xfs_inode.c | 208 +- trunk/fs/xfs/xfs_inode.h | 13 +- trunk/fs/xfs/xfs_ioctl.c | 55 +- trunk/fs/xfs/xfs_ioctl32.c | 12 - trunk/fs/xfs/xfs_iomap.c | 10 +- trunk/fs/xfs/xfs_iops.c | 45 - trunk/fs/xfs/xfs_itable.c | 2 +- trunk/fs/xfs/xfs_log.c | 223 +- trunk/fs/xfs/xfs_log_priv.h | 18 +- trunk/fs/xfs/xfs_log_recover.c | 142 +- trunk/fs/xfs/xfs_mount.c | 13 +- trunk/fs/xfs/xfs_mount.h | 6 + trunk/fs/xfs/xfs_qm.c | 2 +- trunk/fs/xfs/xfs_super.c | 88 +- trunk/fs/xfs/xfs_sync.c | 15 +- trunk/fs/xfs/xfs_trace.h | 2 +- trunk/fs/xfs/xfs_trans.c | 17 +- trunk/fs/xfs/xfs_trans.h | 52 +- trunk/fs/xfs/xfs_trans_ail.c | 35 +- trunk/fs/xfs/xfs_trans_buf.c | 68 +- trunk/fs/xfs/xfs_trans_priv.h | 1 - trunk/fs/xfs/xfs_types.h | 14 - trunk/fs/xfs/xfs_utils.c | 17 +- trunk/fs/xfs/xfs_vnodeops.c | 285 +- trunk/include/acpi/acpixf.h | 4 +- trunk/include/acpi/actypes.h | 2 +- trunk/include/asm-generic/dma-coherent.h | 1 - .../include/asm-generic/dma-mapping-common.h | 55 - trunk/include/asm-generic/fcntl.h | 4 - trunk/include/asm-generic/mutex-xchg.h | 11 +- trunk/include/drm/drm_pciids.h | 3 - trunk/include/drm/exynos_drm.h | 9 + trunk/include/drm/radeon_drm.h | 2 - trunk/include/linux/Kbuild | 3 - trunk/include/linux/acpi.h | 12 +- trunk/include/linux/aio.h | 38 +- trunk/include/linux/amba/pl08x.h | 156 +- trunk/include/linux/audit.h | 4 - trunk/include/linux/backing-dev.h | 8 +- .../linux/bcma/bcma_driver_chipcommon.h | 91 - trunk/include/linux/bcma/bcma_regs.h | 2 - trunk/include/linux/blk_types.h | 2 - trunk/include/linux/blkdev.h | 61 +- trunk/include/linux/blkpg.h | 1 - trunk/include/linux/bsg-lib.h | 1 + trunk/include/linux/can.h | 25 +- trunk/include/linux/ceph/ceph_features.h | 27 - trunk/include/linux/ceph/ceph_fs.h | 14 + trunk/include/linux/ceph/decode.h | 49 +- trunk/include/linux/ceph/libceph.h | 10 +- trunk/include/linux/ceph/messenger.h | 60 +- trunk/include/linux/ceph/mon_client.h | 2 +- trunk/include/linux/ceph/msgpool.h | 3 +- trunk/include/linux/cgroup_subsys.h | 8 +- trunk/include/linux/clk.h | 168 +- trunk/include/linux/compaction.h | 8 +- trunk/include/linux/compat.h | 4 +- trunk/include/linux/crush/crush.h | 8 - trunk/include/linux/device-mapper.h | 29 +- trunk/include/linux/dm-ioctl.h | 6 +- trunk/include/linux/dma-attrs.h | 2 - trunk/include/linux/dma-mapping.h | 3 - trunk/include/linux/edac.h | 208 +- trunk/include/linux/efi.h | 2 - trunk/include/linux/ethtool.h | 17 +- trunk/include/linux/firewire.h | 4 +- trunk/include/linux/flex_proportions.h | 101 - trunk/include/linux/fs.h | 171 +- trunk/include/linux/ftrace_event.h | 5 +- trunk/include/linux/fuse.h | 19 +- trunk/include/linux/genhd.h | 57 - trunk/include/linux/gfp.h | 13 +- trunk/include/linux/hardirq.h | 2 +- trunk/include/linux/hash.h | 10 - trunk/include/linux/highmem.h | 7 - trunk/include/linux/hugetlb.h | 50 +- trunk/include/linux/hugetlb_cgroup.h | 126 - trunk/include/linux/i2c-ocores.h | 3 +- trunk/include/linux/i2c.h | 3 - trunk/include/linux/i2c/twl.h | 2 - trunk/include/linux/if_arp.h | 1 - trunk/include/linux/if_team.h | 41 +- trunk/include/linux/if_tunnel.h | 3 - trunk/include/linux/iio/frequency/adf4350.h | 2 - trunk/include/linux/inetdevice.h | 11 +- trunk/include/linux/input/edt-ft5x06.h | 24 - trunk/include/linux/input/eeti_ts.h | 1 - trunk/include/linux/interrupt.h | 2 + trunk/include/linux/iommu.h | 2 - trunk/include/linux/ip6_tunnel.h | 17 - trunk/include/linux/ipv6.h | 1 - trunk/include/linux/irq.h | 1 - trunk/include/linux/irqdesc.h | 1 + trunk/include/linux/irqdomain.h | 28 +- trunk/include/linux/jbd2.h | 1 - trunk/include/linux/jiffies.h | 35 +- trunk/include/linux/kdb.h | 2 + trunk/include/linux/kern_levels.h | 25 - trunk/include/linux/key-type.h | 1 - trunk/include/linux/libfdt.h | 8 - trunk/include/linux/libfdt_env.h | 13 - trunk/include/linux/lockd/lockd.h | 6 +- .../linux/{platform_data => }/lp855x.h | 6 + .../linux/{platform_data => }/lp8727.h | 0 trunk/include/linux/memcontrol.h | 34 +- trunk/include/linux/mempolicy.h | 2 +- trunk/include/linux/mempool.h | 3 +- trunk/include/linux/mfd/88pm80x.h | 369 - trunk/include/linux/mfd/88pm860x.h | 1 - trunk/include/linux/mfd/abx500/ab8500.h | 5 - trunk/include/linux/mfd/arizona/core.h | 114 - trunk/include/linux/mfd/arizona/pdata.h | 119 - trunk/include/linux/mfd/arizona/registers.h | 6594 ----------------- trunk/include/linux/mfd/core.h | 5 - trunk/include/linux/mfd/db8500-prcmu.h | 7 +- trunk/include/linux/mfd/dbx500-prcmu.h | 7 +- trunk/include/linux/mfd/ezx-pcap.h | 1 - trunk/include/linux/mfd/max77686-private.h | 246 - trunk/include/linux/mfd/max77686.h | 114 - trunk/include/linux/mfd/max77693-private.h | 1 + trunk/include/linux/mfd/max8997-private.h | 4 +- trunk/include/linux/mfd/max8997.h | 1 + trunk/include/linux/mfd/s5m87xx/s5m-core.h | 379 + trunk/include/linux/mfd/s5m87xx/s5m-pmic.h | 129 + .../mfd/{samsung/rtc.h => s5m87xx/s5m-rtc.h} | 69 +- trunk/include/linux/mfd/samsung/core.h | 159 - trunk/include/linux/mfd/samsung/irq.h | 152 - trunk/include/linux/mfd/samsung/s2mps11.h | 196 - trunk/include/linux/mfd/samsung/s5m8763.h | 96 - trunk/include/linux/mfd/samsung/s5m8767.h | 188 - trunk/include/linux/mfd/tps65910.h | 1 - trunk/include/linux/mfd/twl6040.h | 6 +- trunk/include/linux/mfd/wm8350/core.h | 26 +- trunk/include/linux/mfd/wm8994/pdata.h | 1 - trunk/include/linux/migrate.h | 4 +- trunk/include/linux/mm.h | 32 - trunk/include/linux/mm_types.h | 20 +- trunk/include/linux/mmzone.h | 26 +- trunk/include/linux/namei.h | 1 - trunk/include/linux/netdevice.h | 12 +- .../linux/netfilter/nf_conntrack_sip.h | 2 +- trunk/include/linux/netpoll.h | 42 +- trunk/include/linux/nfs_fs.h | 18 +- trunk/include/linux/nfs_fs_sb.h | 10 +- trunk/include/linux/nfs_idmap.h | 2 +- trunk/include/linux/nfs_page.h | 2 +- trunk/include/linux/nfs_xdr.h | 25 +- trunk/include/linux/nfsd/nfsfh.h | 1 - trunk/include/linux/nilfs2_fs.h | 63 +- trunk/include/linux/of.h | 38 +- trunk/include/linux/olpc-ec.h | 41 - trunk/include/linux/omap-dma.h | 22 - trunk/include/linux/oom.h | 21 - trunk/include/linux/packet_diag.h | 72 - trunk/include/linux/page-flags.h | 29 - trunk/include/linux/page-isolation.h | 13 +- trunk/include/linux/page_cgroup.h | 10 +- trunk/include/linux/pagemap.h | 5 - trunk/include/linux/perf_event.h | 3 +- trunk/include/linux/pinctrl/consumer.h | 1 - trunk/include/linux/pipe_fs_i.h | 2 - trunk/include/linux/platform_data/mv_usb.h | 9 + trunk/include/linux/power/charger-manager.h | 67 +- trunk/include/linux/power_supply.h | 13 - trunk/include/linux/printk.h | 41 +- trunk/include/linux/pwm.h | 117 - trunk/include/linux/pwm_backlight.h | 1 - trunk/include/linux/random.h | 6 +- trunk/include/linux/scatterlist.h | 4 - trunk/include/linux/sched.h | 14 +- trunk/include/linux/security.h | 2 + trunk/include/linux/shdma-base.h | 2 - trunk/include/linux/shm.h | 6 +- trunk/include/linux/shrinker.h | 1 + trunk/include/linux/skbuff.h | 89 +- trunk/include/linux/slab.h | 24 - trunk/include/linux/slab_def.h | 12 +- trunk/include/linux/slub_def.h | 3 +- trunk/include/linux/snmp.h | 12 +- .../include/linux/ssb/ssb_driver_chipcommon.h | 4 +- trunk/include/linux/string.h | 5 +- trunk/include/linux/sunrpc/auth.h | 2 - trunk/include/linux/sunrpc/cache.h | 34 +- trunk/include/linux/sunrpc/gss_api.h | 3 +- trunk/include/linux/sunrpc/svc.h | 2 - trunk/include/linux/sunrpc/xdr.h | 6 +- trunk/include/linux/sunrpc/xprt.h | 3 - trunk/include/linux/swap.h | 14 +- trunk/include/linux/thermal.h | 2 +- trunk/include/linux/timex.h | 2 +- trunk/include/linux/tipc_config.h | 8 +- trunk/include/linux/topology.h | 1 - trunk/include/linux/uvcvideo.h | 3 +- trunk/include/linux/v4l2-common.h | 71 - trunk/include/linux/v4l2-subdev.h | 20 +- trunk/include/linux/vfio.h | 445 -- trunk/include/linux/videodev2.h | 79 +- trunk/include/linux/virtio_blk.h | 10 +- trunk/include/linux/virtio_ids.h | 2 +- trunk/include/linux/vm_event_item.h | 1 - trunk/include/linux/vmalloc.h | 9 +- trunk/include/linux/vmstat.h | 5 + trunk/include/linux/writeback.h | 6 + trunk/include/media/adv7393.h | 28 - trunk/include/media/davinci/vpif_types.h | 2 - trunk/include/media/gpio-ir-recv.h | 6 +- trunk/include/media/mt9t001.h | 1 - trunk/include/media/v4l2-chip-ident.h | 3 - trunk/include/media/v4l2-dev.h | 3 - trunk/include/media/v4l2-ioctl.h | 27 +- trunk/include/media/videobuf-core.h | 2 + trunk/include/media/videobuf2-core.h | 54 - trunk/include/media/videobuf2-dma-contig.h | 6 +- trunk/include/net/arp.h | 3 +- trunk/include/net/bluetooth/bluetooth.h | 10 - trunk/include/net/bluetooth/hci.h | 11 - trunk/include/net/bluetooth/hci_core.h | 22 +- trunk/include/net/bluetooth/l2cap.h | 17 +- trunk/include/net/bluetooth/smp.h | 8 +- trunk/include/net/cfg80211.h | 2 - trunk/include/net/codel.h | 8 +- trunk/include/net/dst.h | 12 +- trunk/include/net/inet_connection_sock.h | 1 - trunk/include/net/ip.h | 2 +- trunk/include/net/ip6_tunnel.h | 41 +- trunk/include/net/ip_fib.h | 6 +- trunk/include/net/ipv6.h | 1 - trunk/include/net/llc.h | 2 +- trunk/include/net/ndisc.h | 3 +- trunk/include/net/neighbour.h | 14 +- trunk/include/net/net_namespace.h | 12 - trunk/include/net/netlink.h | 98 - trunk/include/net/netns/ipv4.h | 2 + trunk/include/net/netns/sctp.h | 131 - trunk/include/net/route.h | 3 - trunk/include/net/scm.h | 4 +- trunk/include/net/sctp/sctp.h | 69 +- trunk/include/net/sctp/sm.h | 8 +- trunk/include/net/sctp/structs.h | 154 +- trunk/include/net/snmp.h | 10 +- trunk/include/net/sock.h | 42 +- trunk/include/net/tcp.h | 1 - trunk/include/net/xfrm.h | 8 +- trunk/include/ras/ras_event.h | 102 - trunk/include/sound/es1688.h | 1 - trunk/include/sound/pcm.h | 3 +- trunk/include/sound/tea575x-tuner.h | 5 - trunk/include/trace/events/gfpflags.h | 1 - trunk/include/trace/events/random.h | 134 - trunk/include/trace/events/sched.h | 4 - trunk/include/trace/ftrace.h | 6 +- trunk/include/video/da8xx-fb.h | 3 - trunk/include/video/omapdss.h | 51 +- trunk/include/video/sh_mobile_lcdc.h | 7 - trunk/include/video/sh_mobile_meram.h | 71 +- trunk/init/Kconfig | 29 +- trunk/init/main.c | 10 +- trunk/ipc/compat.c | 18 +- trunk/ipc/shm.c | 9 +- trunk/ipc/syscall.c | 2 +- trunk/ipc/util.c | 4 +- trunk/ipc/util.h | 2 +- trunk/kernel/audit.c | 21 - trunk/kernel/audit_tree.c | 19 +- trunk/kernel/cpu.c | 2 +- trunk/kernel/debug/kdb/kdb_debugger.c | 4 - trunk/kernel/debug/kdb/kdb_io.c | 11 + trunk/kernel/debug/kdb/kdb_main.c | 15 +- trunk/kernel/events/callchain.c | 9 +- trunk/kernel/events/core.c | 30 +- trunk/kernel/events/internal.h | 3 +- trunk/kernel/events/uprobes.c | 213 +- trunk/kernel/fork.c | 46 +- trunk/kernel/futex.c | 17 +- trunk/kernel/irq/handle.c | 7 +- trunk/kernel/irq/irqdomain.c | 362 +- trunk/kernel/irq/manage.c | 32 +- trunk/kernel/kexec.c | 2 +- trunk/kernel/kmod.c | 37 +- trunk/kernel/panic.c | 8 - trunk/kernel/printk.c | 34 +- trunk/kernel/resource.c | 24 +- trunk/kernel/sched/core.c | 41 +- trunk/kernel/sched/cpupri.c | 10 +- trunk/kernel/sched/fair.c | 40 +- trunk/kernel/sched/rt.c | 13 - trunk/kernel/sched/sched.h | 8 +- trunk/kernel/sched/stop_task.c | 22 +- trunk/kernel/softirq.c | 9 - trunk/kernel/sys.c | 57 +- trunk/kernel/sysctl.c | 69 +- trunk/kernel/sysctl_binary.c | 2 +- trunk/kernel/task_work.c | 1 - trunk/kernel/taskstats.c | 5 - trunk/kernel/time/jiffies.c | 2 +- trunk/kernel/time/ntp.c | 2 +- trunk/kernel/time/timekeeping.c | 407 +- trunk/kernel/timer.c | 9 + trunk/kernel/trace/trace_event_perf.c | 2 +- trunk/kernel/trace/trace_kprobe.c | 6 +- trunk/kernel/trace/trace_syscalls.c | 4 +- trunk/kernel/trace/trace_uprobe.c | 2 +- trunk/lib/Kconfig | 9 - trunk/lib/Kconfig.debug | 91 +- trunk/lib/Makefile | 14 +- trunk/lib/atomic64_test.c | 5 +- trunk/lib/cpu-notifier-error-inject.c | 63 +- trunk/lib/crc32.c | 2 - trunk/lib/fdt.c | 2 - trunk/lib/fdt_ro.c | 2 - trunk/lib/fdt_rw.c | 2 - trunk/lib/fdt_strerror.c | 2 - trunk/lib/fdt_sw.c | 2 - trunk/lib/fdt_wip.c | 2 - trunk/lib/flex_proportions.c | 272 - trunk/lib/memory-notifier-error-inject.c | 48 - trunk/lib/memweight.c | 38 - trunk/lib/notifier-error-inject.c | 112 - trunk/lib/notifier-error-inject.h | 24 - .../pSeries-reconfig-notifier-error-inject.c | 51 - trunk/lib/percpu_counter.c | 14 +- trunk/lib/pm-notifier-error-inject.c | 49 - trunk/lib/scatterlist.c | 72 +- trunk/lib/spinlock_debug.c | 2 +- trunk/lib/vsprintf.c | 83 +- trunk/mm/Kconfig | 5 - trunk/mm/Makefile | 7 +- trunk/mm/backing-dev.c | 78 +- trunk/mm/compaction.c | 167 +- trunk/mm/fadvise.c | 18 +- trunk/mm/filemap.c | 31 +- trunk/mm/filemap_xip.c | 6 +- trunk/mm/highmem.c | 12 - trunk/mm/hugetlb.c | 195 +- trunk/mm/hugetlb_cgroup.c | 418 -- trunk/mm/hwpoison-inject.c | 2 +- trunk/mm/internal.h | 9 - trunk/mm/memblock.c | 35 +- trunk/mm/memcontrol.c | 390 +- trunk/mm/memory-failure.c | 21 +- trunk/mm/memory.c | 23 +- trunk/mm/memory_hotplug.c | 20 +- trunk/mm/mempolicy.c | 8 +- trunk/mm/mempool.c | 12 +- trunk/mm/migrate.c | 81 +- trunk/mm/mmap.c | 13 +- trunk/mm/mmu_notifier.c | 45 +- trunk/mm/mmzone.c | 2 +- trunk/mm/mremap.c | 2 + trunk/mm/oom_kill.c | 223 +- trunk/mm/page-writeback.c | 108 +- trunk/mm/page_alloc.c | 336 +- trunk/mm/page_cgroup.c | 2 +- trunk/mm/page_io.c | 145 - trunk/mm/page_isolation.c | 93 - trunk/mm/shmem.c | 6 +- trunk/mm/slab.c | 622 +- trunk/mm/slab.h | 33 - trunk/mm/slab_common.c | 120 - trunk/mm/slob.c | 152 +- trunk/mm/slub.c | 464 +- trunk/mm/sparse.c | 29 +- trunk/mm/swap.c | 52 - trunk/mm/swap_state.c | 7 +- trunk/mm/swapfile.c | 145 +- trunk/mm/vmalloc.c | 44 +- trunk/mm/vmscan.c | 175 +- trunk/mm/vmstat.c | 1 - trunk/net/8021q/vlan_dev.c | 52 +- trunk/net/atm/common.c | 1 - trunk/net/atm/pvc.c | 1 - trunk/net/batman-adv/gateway_client.c | 6 +- trunk/net/batman-adv/translation-table.c | 1 - trunk/net/bluetooth/a2mp.c | 16 +- trunk/net/bluetooth/af_bluetooth.c | 141 - trunk/net/bluetooth/bnep/sock.c | 22 +- trunk/net/bluetooth/cmtp/sock.c | 23 +- trunk/net/bluetooth/hci_core.c | 6 +- trunk/net/bluetooth/hci_event.c | 121 +- trunk/net/bluetooth/hci_sock.c | 15 +- trunk/net/bluetooth/hidp/sock.c | 22 +- trunk/net/bluetooth/l2cap_core.c | 33 +- trunk/net/bluetooth/l2cap_sock.c | 25 +- trunk/net/bluetooth/mgmt.c | 34 +- trunk/net/bluetooth/rfcomm/sock.c | 16 +- trunk/net/bluetooth/rfcomm/tty.c | 2 +- trunk/net/bluetooth/sco.c | 35 +- trunk/net/bluetooth/smp.c | 5 +- trunk/net/bridge/br_device.c | 30 +- trunk/net/bridge/br_fdb.c | 2 +- trunk/net/bridge/br_forward.c | 2 +- trunk/net/bridge/br_if.c | 6 +- trunk/net/bridge/br_private.h | 4 +- trunk/net/bridge/br_stp_timer.c | 2 +- trunk/net/bridge/br_sysfs_if.c | 6 +- trunk/net/caif/caif_socket.c | 2 +- trunk/net/caif/chnl_net.c | 4 - trunk/net/ceph/ceph_common.c | 25 +- trunk/net/ceph/crush/mapper.c | 13 +- trunk/net/ceph/crypto.c | 1 - trunk/net/ceph/crypto.h | 3 +- trunk/net/ceph/messenger.c | 925 +-- trunk/net/ceph/mon_client.c | 76 +- trunk/net/ceph/msgpool.c | 7 +- trunk/net/ceph/osd_client.c | 77 +- trunk/net/ceph/osdmap.c | 59 +- trunk/net/core/dev.c | 113 +- trunk/net/core/dst.c | 10 +- trunk/net/core/filter.c | 8 - trunk/net/core/netpoll.c | 109 +- trunk/net/core/netprio_cgroup.c | 30 +- trunk/net/core/rtnetlink.c | 31 +- trunk/net/core/scm.c | 4 - trunk/net/core/skbuff.c | 124 +- trunk/net/core/sock.c | 60 +- trunk/net/dccp/ccid.h | 4 +- trunk/net/dccp/ccids/ccid3.c | 1 - trunk/net/decnet/dn_route.c | 6 +- trunk/net/ipv4/Makefile | 2 +- trunk/net/ipv4/af_inet.c | 4 +- trunk/net/ipv4/devinet.c | 39 +- trunk/net/ipv4/fib_frontend.c | 3 +- trunk/net/ipv4/fib_semantics.c | 42 +- trunk/net/ipv4/fib_trie.c | 68 +- trunk/net/ipv4/igmp.c | 7 +- trunk/net/ipv4/inet_connection_sock.c | 7 +- trunk/net/ipv4/ip_input.c | 2 + trunk/net/ipv4/ip_output.c | 10 +- trunk/net/ipv4/ipmr.c | 2 +- trunk/net/ipv4/netfilter/ipt_rpfilter.c | 2 +- trunk/net/ipv4/netfilter/nf_nat_sip.c | 9 +- trunk/net/ipv4/route.c | 205 +- trunk/net/ipv4/sysctl_net_ipv4.c | 15 +- trunk/net/ipv4/tcp.c | 9 +- trunk/net/ipv4/tcp_cong.c | 3 +- trunk/net/ipv4/tcp_input.c | 38 +- trunk/net/ipv4/tcp_ipv4.c | 54 +- trunk/net/ipv4/tcp_metrics.c | 12 - trunk/net/ipv4/tcp_minisocks.c | 2 + trunk/net/ipv4/tcp_output.c | 49 +- trunk/net/ipv4/tcp_timer.c | 6 +- trunk/net/ipv4/udp.c | 2 +- trunk/net/ipv4/xfrm4_policy.c | 1 - trunk/net/ipv6/Kconfig | 16 - trunk/net/ipv6/Makefile | 1 - trunk/net/ipv6/addrconf.c | 4 +- trunk/net/ipv6/ip6_gre.c | 1790 ----- trunk/net/ipv6/ip6_input.c | 2 + trunk/net/ipv6/ip6_tunnel.c | 91 +- trunk/net/ipv6/proc.c | 4 +- trunk/net/ipv6/route.c | 10 +- trunk/net/ipv6/tcp_ipv6.c | 48 +- trunk/net/ipv6/xfrm6_policy.c | 8 - trunk/net/key/af_key.c | 4 +- trunk/net/l2tp/l2tp_ip6.c | 1 - trunk/net/llc/af_llc.c | 8 +- trunk/net/llc/llc_input.c | 21 +- trunk/net/llc/llc_station.c | 29 +- trunk/net/mac80211/mesh.c | 24 +- trunk/net/mac80211/mesh.h | 2 +- trunk/net/mac80211/mesh_plink.c | 44 +- trunk/net/mac80211/mlme.c | 2 - trunk/net/mac80211/scan.c | 3 +- trunk/net/netfilter/ipvs/Kconfig | 3 +- trunk/net/netfilter/ipvs/ip_vs_ctl.c | 1 - trunk/net/netfilter/nf_conntrack_expect.c | 29 +- trunk/net/netfilter/nf_conntrack_netlink.c | 7 +- trunk/net/netfilter/nf_conntrack_sip.c | 92 +- trunk/net/netlink/af_netlink.c | 2 +- trunk/net/openvswitch/actions.c | 3 + trunk/net/packet/Kconfig | 8 - trunk/net/packet/Makefile | 2 - trunk/net/packet/af_packet.c | 134 +- trunk/net/packet/diag.c | 242 - trunk/net/packet/internal.h | 121 - trunk/net/sched/act_gact.c | 14 +- trunk/net/sched/act_ipt.c | 7 +- trunk/net/sched/act_mirred.c | 11 +- trunk/net/sched/act_pedit.c | 5 +- trunk/net/sched/act_simple.c | 5 +- trunk/net/sched/sch_generic.c | 18 + trunk/net/sched/sch_qfq.c | 95 +- trunk/net/sctp/associola.c | 25 +- trunk/net/sctp/auth.c | 20 +- trunk/net/sctp/bind_addr.c | 20 +- trunk/net/sctp/chunk.c | 2 +- trunk/net/sctp/endpointola.c | 25 +- trunk/net/sctp/input.c | 115 +- trunk/net/sctp/ipv6.c | 36 +- trunk/net/sctp/objcnt.c | 8 +- trunk/net/sctp/output.c | 2 +- trunk/net/sctp/outqueue.c | 18 +- trunk/net/sctp/primitive.c | 4 +- trunk/net/sctp/proc.c | 55 +- trunk/net/sctp/protocol.c | 454 +- trunk/net/sctp/sm_make_chunk.c | 61 +- trunk/net/sctp/sm_sideeffect.c | 26 +- trunk/net/sctp/sm_statefuns.c | 725 +- trunk/net/sctp/sm_statetable.c | 17 +- trunk/net/sctp/socket.c | 119 +- trunk/net/sctp/sysctl.c | 198 +- trunk/net/sctp/transport.c | 23 +- trunk/net/sctp/ulpevent.c | 3 +- trunk/net/sctp/ulpqueue.c | 18 +- trunk/net/socket.c | 1 - trunk/net/sunrpc/Kconfig | 5 - trunk/net/sunrpc/auth.c | 54 - trunk/net/sunrpc/auth_gss/auth_gss.c | 1 - trunk/net/sunrpc/auth_gss/gss_mech_switch.c | 20 +- trunk/net/sunrpc/cache.c | 5 +- trunk/net/sunrpc/clnt.c | 12 +- trunk/net/sunrpc/rpcb_clnt.c | 4 +- trunk/net/sunrpc/sched.c | 14 +- trunk/net/sunrpc/xdr.c | 127 +- trunk/net/sunrpc/xprtrdma/transport.c | 3 +- trunk/net/sunrpc/xprtsock.c | 53 - trunk/net/tipc/bearer.c | 21 +- trunk/net/tipc/config.c | 48 +- trunk/net/tipc/core.c | 22 +- trunk/net/tipc/core.h | 18 +- trunk/net/tipc/eth_media.c | 29 +- trunk/net/tipc/handler.c | 2 +- trunk/net/tipc/link.c | 4 +- trunk/net/tipc/name_table.c | 14 +- trunk/net/tipc/net.c | 3 +- trunk/net/tipc/net.h | 2 +- trunk/net/tipc/subscr.c | 4 +- trunk/net/unix/af_unix.c | 97 +- trunk/net/wireless/core.c | 5 - trunk/net/wireless/core.h | 1 - trunk/net/wireless/reg.c | 19 +- trunk/net/wireless/util.c | 2 +- trunk/net/xfrm/xfrm_policy.c | 41 +- trunk/net/xfrm/xfrm_state.c | 23 +- trunk/net/xfrm/xfrm_user.c | 9 +- trunk/scripts/checkpatch.pl | 72 +- .../coccinelle/iterators/use_after_iter.cocci | 147 - .../coccinelle/misc/irqf_oneshot.cocci | 65 - trunk/scripts/config | 62 +- trunk/scripts/decodecode | 2 +- trunk/scripts/kconfig/.gitignore | 1 + trunk/scripts/kconfig/Makefile | 41 +- trunk/scripts/kconfig/confdata.c | 61 +- .../kconfig/lxdialog/check-lxdialog.sh | 8 +- trunk/scripts/kconfig/lxdialog/textbox.c | 3 - trunk/scripts/kconfig/mconf.c | 6 +- trunk/scripts/kconfig/nconf.c | 10 +- trunk/scripts/kconfig/nconf.gui.c | 8 +- trunk/scripts/kconfig/streamline_config.pl | 175 +- trunk/scripts/kernel-doc | 1 - trunk/scripts/link-vmlinux.sh | 4 +- trunk/scripts/package/builddeb | 7 +- trunk/scripts/sortextable.c | 1 - trunk/scripts/tags.sh | 6 +- trunk/security/selinux/avc.c | 2 +- trunk/security/selinux/hooks.c | 16 +- trunk/security/smack/smackfs.c | 8 +- trunk/security/yama/yama_lsm.c | 43 +- trunk/sound/arm/pxa2xx-ac97.c | 4 +- trunk/sound/atmel/abdac.c | 3 +- trunk/sound/atmel/ac97c.c | 14 +- trunk/sound/core/misc.c | 13 +- trunk/sound/core/sgbuf.c | 2 +- trunk/sound/drivers/aloop.c | 2 +- trunk/sound/drivers/dummy.c | 2 +- trunk/sound/drivers/mpu401/mpu401_uart.c | 1 - trunk/sound/drivers/pcsp/pcsp.c | 4 +- trunk/sound/i2c/other/tea575x-tuner.c | 45 +- trunk/sound/isa/als100.c | 2 +- trunk/sound/isa/es1688/es1688_lib.c | 34 +- trunk/sound/oss/sb_audio.c | 4 +- trunk/sound/pci/cs46xx/cs46xx_lib.c | 2 +- trunk/sound/pci/ctxfi/ctatc.c | 4 +- trunk/sound/pci/emu10k1/memory.c | 5 +- trunk/sound/pci/hda/hda_auto_parser.c | 5 +- trunk/sound/pci/hda/hda_beep.c | 29 +- trunk/sound/pci/hda/hda_codec.c | 73 +- trunk/sound/pci/hda/hda_codec.h | 1 - trunk/sound/pci/hda/hda_intel.c | 9 - trunk/sound/pci/hda/hda_proc.c | 2 +- trunk/sound/pci/hda/patch_ca0132.c | 174 +- trunk/sound/pci/hda/patch_conexant.c | 6 + trunk/sound/pci/hda/patch_hdmi.c | 12 +- trunk/sound/pci/hda/patch_realtek.c | 30 +- trunk/sound/pci/hda/patch_sigmatel.c | 31 +- trunk/sound/pci/hda/patch_via.c | 15 +- trunk/sound/pci/lx6464es/lx6464es.c | 2 - trunk/sound/pci/rme9652/hdspm.c | 2 +- trunk/sound/pci/sis7019.c | 5 +- trunk/sound/ppc/powermac.c | 2 +- trunk/sound/ppc/snd_ps3.c | 1 - trunk/sound/soc/blackfin/bf6xx-sport.c | 7 - trunk/sound/soc/codecs/ab8500-codec.c | 4 - trunk/sound/soc/codecs/ad1980.c | 1 - trunk/sound/soc/codecs/mc13783.c | 2 - trunk/sound/soc/codecs/sgtl5000.c | 3 +- trunk/sound/soc/codecs/stac9766.c | 1 - trunk/sound/soc/codecs/twl6040.c | 2 +- trunk/sound/soc/codecs/wm5102.c | 25 +- trunk/sound/soc/codecs/wm5110.c | 12 - trunk/sound/soc/codecs/wm8962.c | 18 +- trunk/sound/soc/codecs/wm8994.c | 17 +- trunk/sound/soc/codecs/wm9712.c | 22 +- trunk/sound/soc/codecs/wm9713.c | 1 - trunk/sound/soc/davinci/davinci-mcasp.c | 10 +- trunk/sound/soc/fsl/imx-ssi.c | 5 +- trunk/sound/soc/mxs/Kconfig | 2 +- trunk/sound/soc/mxs/mxs-saif.c | 24 - trunk/sound/soc/omap/mcbsp.c | 2 +- trunk/sound/soc/omap/omap-mcbsp.c | 1 - trunk/sound/soc/omap/omap-pcm.c | 1 - trunk/sound/soc/samsung/pcm.c | 2 +- trunk/sound/soc/soc-core.c | 12 +- trunk/sound/soc/soc-jack.c | 2 +- trunk/sound/soc/tegra/tegra_alc5632.c | 2 +- trunk/sound/soc/tegra/tegra_wm8903.c | 10 +- trunk/sound/soc/ux500/ux500_msp_dai.c | 2 +- trunk/sound/soc/ux500/ux500_msp_i2s.c | 2 +- trunk/sound/soc/ux500/ux500_msp_i2s.h | 2 +- trunk/sound/sound_firmware.c | 8 +- trunk/sound/usb/clock.c | 3 +- trunk/sound/usb/endpoint.c | 4 + trunk/sound/usb/pcm.c | 3 - trunk/tools/lib/traceevent/.gitignore | 1 - trunk/tools/lib/traceevent/Makefile | 14 +- trunk/tools/perf/Makefile | 11 +- trunk/tools/perf/builtin-record.c | 4 +- trunk/tools/perf/builtin-report.c | 5 +- trunk/tools/perf/builtin-test.c | 23 +- trunk/tools/perf/builtin-top.c | 25 +- trunk/tools/perf/ui/browsers/hists.c | 4 +- trunk/tools/perf/util/annotate.c | 15 +- trunk/tools/perf/util/dso-test-data.c | 153 - trunk/tools/perf/util/event.h | 3 + trunk/tools/perf/util/evlist.c | 9 +- trunk/tools/perf/util/evlist.h | 3 - trunk/tools/perf/util/evsel.c | 15 +- trunk/tools/perf/util/evsel.h | 10 +- trunk/tools/perf/util/header.c | 15 - trunk/tools/perf/util/hist.c | 7 +- trunk/tools/perf/util/intlist.c | 101 - trunk/tools/perf/util/intlist.h | 75 - trunk/tools/perf/util/map.c | 41 +- trunk/tools/perf/util/map.h | 1 - trunk/tools/perf/util/parse-events-test.c | 12 +- trunk/tools/perf/util/parse-events.c | 2 - trunk/tools/perf/util/parse-options.c | 3 - trunk/tools/perf/util/python.c | 6 +- trunk/tools/perf/util/rblist.c | 107 - trunk/tools/perf/util/rblist.h | 47 - trunk/tools/perf/util/session.c | 51 +- trunk/tools/perf/util/session.h | 24 +- trunk/tools/perf/util/strlist.c | 130 +- trunk/tools/perf/util/strlist.h | 11 +- trunk/tools/perf/util/symbol.c | 457 +- trunk/tools/perf/util/symbol.h | 54 +- trunk/tools/perf/util/target.c | 11 +- .../tools/testing/fault-injection/failcmd.sh | 219 - trunk/tools/testing/ktest/ktest.pl | 167 +- trunk/tools/testing/ktest/sample.conf | 52 - trunk/tools/testing/selftests/Makefile | 2 +- .../testing/selftests/cpu-hotplug/Makefile | 6 - .../selftests/cpu-hotplug/on-off-test.sh | 221 - .../testing/selftests/memory-hotplug/Makefile | 6 - .../selftests/memory-hotplug/on-off-test.sh | 230 - trunk/tools/vm/slabinfo.c | 14 +- 2692 files changed, 55124 insertions(+), 110067 deletions(-) delete mode 100644 trunk/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads delete mode 100644 trunk/Documentation/ABI/testing/sysfs-devices-edac delete mode 100644 trunk/Documentation/ABI/testing/sysfs-devices-platform-sh_mobile_lcdc_fb delete mode 100644 trunk/Documentation/DocBook/media/v4l/selections-common.xml delete mode 100644 trunk/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml delete mode 100644 trunk/Documentation/cgroups/hugetlb.txt delete mode 100644 trunk/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt delete mode 100644 trunk/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt delete mode 100644 trunk/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt delete mode 100644 trunk/Documentation/devicetree/bindings/ata/marvell.txt delete mode 100644 trunk/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt rename trunk/Documentation/devicetree/bindings/{i2c/gpio-i2c.txt => gpio/gpio_i2c.txt} (100%) delete mode 100644 trunk/Documentation/devicetree/bindings/i2c/cavium-i2c.txt delete mode 100644 trunk/Documentation/devicetree/bindings/i2c/i2c-ocores.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mfd/ab8500.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mfd/max77686.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mips/cavium/bootbus.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mips/cavium/ciu.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mips/cavium/ciu2.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt delete mode 100644 trunk/Documentation/devicetree/bindings/mips/cavium/uctl.txt delete mode 100644 trunk/Documentation/devicetree/bindings/net/cavium-mdio.txt delete mode 100644 trunk/Documentation/devicetree/bindings/net/cavium-mix.txt delete mode 100644 trunk/Documentation/devicetree/bindings/net/cavium-pip.txt delete mode 100644 trunk/Documentation/devicetree/bindings/net/cpsw.txt delete mode 100644 trunk/Documentation/devicetree/bindings/net/davinci-mdio.txt delete mode 100644 trunk/Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt delete mode 100644 trunk/Documentation/devicetree/bindings/pwm/mxs-pwm.txt delete mode 100644 trunk/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt delete mode 100644 trunk/Documentation/devicetree/bindings/pwm/pwm.txt delete mode 100644 trunk/Documentation/devicetree/bindings/serial/cavium-uart.txt delete mode 100644 trunk/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt delete mode 100644 trunk/Documentation/devicetree/bindings/watchdog/marvel.txt delete mode 100644 trunk/Documentation/fault-injection/notifier-error-inject.txt delete mode 100644 trunk/Documentation/input/edt-ft5x06.txt delete mode 100644 trunk/Documentation/pwm.txt delete mode 100644 trunk/Documentation/vfio.txt delete mode 100644 trunk/arch/alpha/include/asm/word-at-a-time.h create mode 100644 trunk/arch/alpha/lib/ev6-strncpy_from_user.S create mode 100644 trunk/arch/alpha/lib/ev67-strlen_user.S create mode 100644 trunk/arch/alpha/lib/strlen_user.S create mode 100644 trunk/arch/alpha/lib/strncpy_from_user.S delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-dnskw.dtsi delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-goflexnet.dts delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-lschlv2.dts delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-lsxhl.dts delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-lsxl.dtsi delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-ts219-6281.dts delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-ts219-6282.dts delete mode 100644 trunk/arch/arm/boot/dts/kirkwood-ts219.dtsi delete mode 100644 trunk/arch/arm/boot/dts/r8a7740.dtsi delete mode 100644 trunk/arch/arm/boot/dts/sh7377.dtsi delete mode 100644 trunk/arch/arm/configs/kzm9d_defconfig delete mode 100644 trunk/arch/arm/lib/io-readsw-armv3.S delete mode 100644 trunk/arch/arm/lib/io-writesw-armv3.S delete mode 100644 trunk/arch/arm/lib/uaccess.S delete mode 100644 trunk/arch/arm/mach-kirkwood/board-goflexnet.c delete mode 100644 trunk/arch/arm/mach-kirkwood/board-lsxl.c delete mode 100644 trunk/arch/arm/mach-kirkwood/board-ts219.c create mode 100644 trunk/arch/arm/mach-pxa/eseries.h delete mode 100644 trunk/arch/arm/mach-shmobile/include/mach/dma-register.h delete mode 100644 trunk/arch/arm/mach-shmobile/include/mach/pm-rmobile.h delete mode 100644 trunk/arch/arm/mach-shmobile/pm-r8a7740.c delete mode 100644 trunk/arch/arm/mach-shmobile/pm-rmobile.c create mode 100644 trunk/arch/arm/mach-vt8500/pwm.c rename trunk/{drivers/pwm/pwm-imx.c => arch/arm/plat-mxc/pwm.c} (50%) rename trunk/{include/linux/platform_data/i2c-nomadik.h => arch/arm/plat-nomadik/include/plat/i2c.h} (91%) create mode 100644 trunk/arch/arm/plat-pxa/pwm.c rename trunk/{drivers/pwm/pwm-samsung.c => arch/arm/plat-samsung/pwm.c} (56%) create mode 100644 trunk/arch/blackfin/kernel/pwm.c create mode 100644 trunk/arch/frv/include/asm/cpumask.h create mode 100644 trunk/arch/m68k/include/asm/MC68332.h create mode 100644 trunk/arch/m68k/include/asm/apollodma.h create mode 100644 trunk/arch/m68k/include/asm/bitsperlong.h create mode 100644 trunk/arch/m68k/include/asm/cputime.h create mode 100644 trunk/arch/m68k/include/asm/device.h create mode 100644 trunk/arch/m68k/include/asm/emergency-restart.h create mode 100644 trunk/arch/m68k/include/asm/errno.h create mode 100644 trunk/arch/m68k/include/asm/futex.h create mode 100644 trunk/arch/m68k/include/asm/ioctl.h create mode 100644 trunk/arch/m68k/include/asm/ipcbuf.h create mode 100644 trunk/arch/m68k/include/asm/irq_regs.h create mode 100644 trunk/arch/m68k/include/asm/kdebug.h create mode 100644 trunk/arch/m68k/include/asm/kmap_types.h create mode 100644 trunk/arch/m68k/include/asm/kvm_para.h create mode 100644 trunk/arch/m68k/include/asm/local.h create mode 100644 trunk/arch/m68k/include/asm/local64.h create mode 100644 trunk/arch/m68k/include/asm/mac_mouse.h create mode 100644 trunk/arch/m68k/include/asm/mcfmbus.h create mode 100644 trunk/arch/m68k/include/asm/mman.h create mode 100644 trunk/arch/m68k/include/asm/mutex.h create mode 100644 trunk/arch/m68k/include/asm/percpu.h create mode 100644 trunk/arch/m68k/include/asm/resource.h create mode 100644 trunk/arch/m68k/include/asm/sbus.h create mode 100644 trunk/arch/m68k/include/asm/scatterlist.h create mode 100644 trunk/arch/m68k/include/asm/sections.h create mode 100644 trunk/arch/m68k/include/asm/shm.h create mode 100644 trunk/arch/m68k/include/asm/siginfo.h create mode 100644 trunk/arch/m68k/include/asm/statfs.h create mode 100644 trunk/arch/m68k/include/asm/topology.h create mode 100644 trunk/arch/m68k/include/asm/types.h create mode 100644 trunk/arch/m68k/include/asm/xor.h create mode 100644 trunk/arch/mips/alchemy/devboards/prom.c delete mode 100644 trunk/arch/mips/bcm63xx/dev-flash.c delete mode 100644 trunk/arch/mips/bcm63xx/dev-rng.c delete mode 100644 trunk/arch/mips/bcm63xx/dev-spi.c delete mode 100644 trunk/arch/mips/cavium-octeon/.gitignore create mode 100644 trunk/arch/mips/cavium-octeon/executive/cvmx-fpa.c create mode 100644 trunk/arch/mips/cavium-octeon/executive/cvmx-helper-fpa.c delete mode 100644 trunk/arch/mips/cavium-octeon/octeon_3xxx.dts delete mode 100644 trunk/arch/mips/cavium-octeon/octeon_68xx.dts delete mode 100644 trunk/arch/mips/configs/ls1b_defconfig delete mode 100644 trunk/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h delete mode 100644 trunk/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/irq.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/loongson1.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/platform.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/prom.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/regs-clk.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/regs-wdt.h delete mode 100644 trunk/arch/mips/include/asm/mach-loongson1/war.h delete mode 100644 trunk/arch/mips/include/asm/netlogic/xlp-hal/pcibus.h delete mode 100644 trunk/arch/mips/include/asm/netlogic/xlp-hal/usb.h delete mode 100644 trunk/arch/mips/include/asm/netlogic/xlr/bridge.h delete mode 100644 trunk/arch/mips/include/asm/netlogic/xlr/flash.h create mode 100644 trunk/arch/mips/include/asm/octeon/cvmx-helper-fpa.h rename trunk/arch/mips/{loongson/lemote-2f/clock.c => kernel/cpufreq/loongson2_clock.c} (76%) create mode 100644 trunk/arch/mips/lib/memcpy-inatomic.S delete mode 100644 trunk/arch/mips/loongson1/Kconfig delete mode 100644 trunk/arch/mips/loongson1/Makefile delete mode 100644 trunk/arch/mips/loongson1/Platform delete mode 100644 trunk/arch/mips/loongson1/common/Makefile delete mode 100644 trunk/arch/mips/loongson1/common/clock.c delete mode 100644 trunk/arch/mips/loongson1/common/irq.c delete mode 100644 trunk/arch/mips/loongson1/common/platform.c delete mode 100644 trunk/arch/mips/loongson1/common/prom.c delete mode 100644 trunk/arch/mips/loongson1/common/reset.c delete mode 100644 trunk/arch/mips/loongson1/common/setup.c delete mode 100644 trunk/arch/mips/loongson1/ls1b/Makefile delete mode 100644 trunk/arch/mips/loongson1/ls1b/board.c delete mode 100644 trunk/arch/mips/netlogic/xlp/of.c delete mode 100644 trunk/arch/mips/netlogic/xlp/usb-init.c delete mode 100644 trunk/arch/mips/netlogic/xlr/platform-flash.c delete mode 100644 trunk/arch/mips/pci/pci-xlp.c create mode 100644 trunk/arch/mn10300/include/asm/ipc.h create mode 100644 trunk/arch/xtensa/include/asm/cpumask.h create mode 100644 trunk/arch/xtensa/include/asm/rmap.h delete mode 100644 trunk/drivers/char/hw_random/bcm63xx-rng.c delete mode 100644 trunk/drivers/dma/omap-dma.c delete mode 100644 trunk/drivers/dma/virt-dma.c delete mode 100644 trunk/drivers/dma/virt-dma.h delete mode 100644 trunk/drivers/edac/highbank_l2_edac.c delete mode 100644 trunk/drivers/edac/highbank_mc_edac.c delete mode 100644 trunk/drivers/gpio/gpio-tps6586x.c delete mode 100644 trunk/drivers/input/misc/88pm80x_onkey.c delete mode 100644 trunk/drivers/input/touchscreen/edt-ft5x06.c create mode 100644 trunk/drivers/md/persistent-data/dm-space-map-checker.c create mode 100644 trunk/drivers/md/persistent-data/dm-space-map-checker.h delete mode 100644 trunk/drivers/media/dvb/frontends/rtl2832.c delete mode 100644 trunk/drivers/media/dvb/frontends/rtl2832.h delete mode 100644 trunk/drivers/media/dvb/frontends/rtl2832_priv.h delete mode 100644 trunk/drivers/media/radio/lm7000.h delete mode 100644 trunk/drivers/media/radio/radio-shark.c delete mode 100644 trunk/drivers/media/radio/radio-shark2.c delete mode 100644 trunk/drivers/media/radio/radio-tea5777.c delete mode 100644 trunk/drivers/media/radio/radio-tea5777.h delete mode 100644 trunk/drivers/media/rc/iguanair.c delete mode 100644 trunk/drivers/media/video/adv7393.c delete mode 100644 trunk/drivers/media/video/adv7393_regs.h create mode 100644 trunk/drivers/media/video/cs8420.h create mode 100644 trunk/drivers/media/video/ibmmpeg2.h create mode 100644 trunk/drivers/media/video/saa7121.h create mode 100644 trunk/drivers/media/video/saa7146.h create mode 100644 trunk/drivers/media/video/saa7146reg.h delete mode 100644 trunk/drivers/mfd/88pm800.c delete mode 100644 trunk/drivers/mfd/88pm805.c delete mode 100644 trunk/drivers/mfd/88pm80x.c delete mode 100644 trunk/drivers/mfd/arizona-core.c delete mode 100644 trunk/drivers/mfd/arizona-i2c.c delete mode 100644 trunk/drivers/mfd/arizona-irq.c delete mode 100644 trunk/drivers/mfd/arizona-spi.c delete mode 100644 trunk/drivers/mfd/arizona.h delete mode 100644 trunk/drivers/mfd/max77686-irq.c delete mode 100644 trunk/drivers/mfd/max77686.c create mode 100644 trunk/drivers/mfd/s5m-core.c create mode 100644 trunk/drivers/mfd/s5m-irq.c delete mode 100644 trunk/drivers/mfd/sec-core.c delete mode 100644 trunk/drivers/mfd/sec-irq.c delete mode 100644 trunk/drivers/mfd/wm5102-tables.c delete mode 100644 trunk/drivers/mfd/wm5110-tables.c delete mode 100644 trunk/drivers/net/wireless/b43/radio_2057.c delete mode 100644 trunk/drivers/net/wireless/b43/radio_2057.h delete mode 100644 trunk/drivers/net/wireless/mwifiex/uap_event.c delete mode 100644 trunk/drivers/net/wireless/mwifiex/uap_txrx.c delete mode 100644 trunk/drivers/platform/olpc/Makefile delete mode 100644 trunk/drivers/platform/olpc/olpc-ec.c delete mode 100644 trunk/drivers/pwm/Kconfig delete mode 100644 trunk/drivers/pwm/Makefile delete mode 100644 trunk/drivers/pwm/core.c delete mode 100644 trunk/drivers/pwm/pwm-bfin.c delete mode 100644 trunk/drivers/pwm/pwm-lpc32xx.c delete mode 100644 trunk/drivers/pwm/pwm-mxs.c delete mode 100644 trunk/drivers/pwm/pwm-pxa.c delete mode 100644 trunk/drivers/pwm/pwm-tegra.c delete mode 100644 trunk/drivers/pwm/pwm-tiecap.c delete mode 100644 trunk/drivers/pwm/pwm-tiehrpwm.c delete mode 100644 trunk/drivers/pwm/pwm-vt8500.c delete mode 100644 trunk/drivers/rtc/rtc-88pm80x.c delete mode 100644 trunk/drivers/sh/intc/irqdomain.c delete mode 100644 trunk/drivers/spi/spi-falcon.c delete mode 100644 trunk/drivers/vfio/Kconfig delete mode 100644 trunk/drivers/vfio/Makefile delete mode 100644 trunk/drivers/vfio/pci/Kconfig delete mode 100644 trunk/drivers/vfio/pci/Makefile delete mode 100644 trunk/drivers/vfio/pci/vfio_pci.c delete mode 100644 trunk/drivers/vfio/pci/vfio_pci_config.c delete mode 100644 trunk/drivers/vfio/pci/vfio_pci_intrs.c delete mode 100644 trunk/drivers/vfio/pci/vfio_pci_private.h delete mode 100644 trunk/drivers/vfio/pci/vfio_pci_rdwr.c delete mode 100644 trunk/drivers/vfio/vfio.c delete mode 100644 trunk/drivers/vfio/vfio_iommu_type1.c delete mode 100644 trunk/drivers/vhost/Kconfig.tcm delete mode 100644 trunk/drivers/vhost/tcm_vhost.c delete mode 100644 trunk/drivers/vhost/tcm_vhost.h create mode 100644 trunk/drivers/video/exynos/s6e8ax0.h create mode 100644 trunk/firmware/cxgb3/t3fw-7.10.0.bin.ihex delete mode 100644 trunk/fs/nfs/nfs.h delete mode 100644 trunk/fs/nfs/nfs2super.c delete mode 100644 trunk/fs/nfs/nfs3client.c delete mode 100644 trunk/fs/nfs/nfs3super.c delete mode 100644 trunk/fs/nfs/nfs4client.c delete mode 100644 trunk/fs/nfs/nfs4file.c delete mode 100644 trunk/fs/nfs/nfs4getroot.c delete mode 100644 trunk/fs/nfs/nfs4super.c delete mode 100644 trunk/fs/nfs/nfs4sysctl.c delete mode 100644 trunk/include/linux/ceph/ceph_features.h delete mode 100644 trunk/include/linux/flex_proportions.h delete mode 100644 trunk/include/linux/hugetlb_cgroup.h delete mode 100644 trunk/include/linux/input/edt-ft5x06.h delete mode 100644 trunk/include/linux/kern_levels.h delete mode 100644 trunk/include/linux/libfdt.h delete mode 100644 trunk/include/linux/libfdt_env.h rename trunk/include/linux/{platform_data => }/lp855x.h (96%) rename trunk/include/linux/{platform_data => }/lp8727.h (100%) delete mode 100644 trunk/include/linux/mfd/88pm80x.h delete mode 100644 trunk/include/linux/mfd/arizona/core.h delete mode 100644 trunk/include/linux/mfd/arizona/pdata.h delete mode 100644 trunk/include/linux/mfd/arizona/registers.h delete mode 100644 trunk/include/linux/mfd/max77686-private.h delete mode 100644 trunk/include/linux/mfd/max77686.h create mode 100644 trunk/include/linux/mfd/s5m87xx/s5m-core.h create mode 100644 trunk/include/linux/mfd/s5m87xx/s5m-pmic.h rename trunk/include/linux/mfd/{samsung/rtc.h => s5m87xx/s5m-rtc.h} (59%) delete mode 100644 trunk/include/linux/mfd/samsung/core.h delete mode 100644 trunk/include/linux/mfd/samsung/irq.h delete mode 100644 trunk/include/linux/mfd/samsung/s2mps11.h delete mode 100644 trunk/include/linux/mfd/samsung/s5m8763.h delete mode 100644 trunk/include/linux/mfd/samsung/s5m8767.h delete mode 100644 trunk/include/linux/olpc-ec.h delete mode 100644 trunk/include/linux/omap-dma.h delete mode 100644 trunk/include/linux/packet_diag.h delete mode 100644 trunk/include/linux/v4l2-common.h delete mode 100644 trunk/include/linux/vfio.h delete mode 100644 trunk/include/media/adv7393.h delete mode 100644 trunk/include/net/netns/sctp.h delete mode 100644 trunk/include/ras/ras_event.h delete mode 100644 trunk/include/trace/events/random.h delete mode 100644 trunk/lib/fdt.c delete mode 100644 trunk/lib/fdt_ro.c delete mode 100644 trunk/lib/fdt_rw.c delete mode 100644 trunk/lib/fdt_strerror.c delete mode 100644 trunk/lib/fdt_sw.c delete mode 100644 trunk/lib/fdt_wip.c delete mode 100644 trunk/lib/flex_proportions.c delete mode 100644 trunk/lib/memory-notifier-error-inject.c delete mode 100644 trunk/lib/memweight.c delete mode 100644 trunk/lib/notifier-error-inject.c delete mode 100644 trunk/lib/notifier-error-inject.h delete mode 100644 trunk/lib/pSeries-reconfig-notifier-error-inject.c delete mode 100644 trunk/lib/pm-notifier-error-inject.c delete mode 100644 trunk/mm/hugetlb_cgroup.c delete mode 100644 trunk/mm/slab.h delete mode 100644 trunk/mm/slab_common.c delete mode 100644 trunk/net/ipv6/ip6_gre.c delete mode 100644 trunk/net/packet/diag.c delete mode 100644 trunk/net/packet/internal.h delete mode 100644 trunk/scripts/coccinelle/iterators/use_after_iter.cocci delete mode 100644 trunk/scripts/coccinelle/misc/irqf_oneshot.cocci delete mode 100644 trunk/tools/lib/traceevent/.gitignore delete mode 100644 trunk/tools/perf/util/dso-test-data.c delete mode 100644 trunk/tools/perf/util/intlist.c delete mode 100644 trunk/tools/perf/util/intlist.h delete mode 100644 trunk/tools/perf/util/rblist.c delete mode 100644 trunk/tools/perf/util/rblist.h delete mode 100644 trunk/tools/testing/fault-injection/failcmd.sh delete mode 100644 trunk/tools/testing/selftests/cpu-hotplug/Makefile delete mode 100644 trunk/tools/testing/selftests/cpu-hotplug/on-off-test.sh delete mode 100644 trunk/tools/testing/selftests/memory-hotplug/Makefile delete mode 100644 trunk/tools/testing/selftests/memory-hotplug/on-off-test.sh diff --git a/[refs] b/[refs] index b6ae8b9267ee..bef3b0f5a40d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bba6ec7e4963e30366359686f34e5bdb00b1a066 +refs/heads/master: aaea4ed74d71dda1cf2cc19c206552d537201452 diff --git a/trunk/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads b/trunk/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads deleted file mode 100644 index b0b0eeb20fe3..000000000000 --- a/trunk/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads +++ /dev/null @@ -1,5 +0,0 @@ -What: /proc/sys/vm/nr_pdflush_threads -Date: June 2012 -Contact: Wanpeng Li -Description: Since pdflush is replaced by per-BDI flusher, the interface of old pdflush - exported in /proc/sys/vm/ should be removed. diff --git a/trunk/Documentation/ABI/stable/sysfs-bus-firewire b/trunk/Documentation/ABI/stable/sysfs-bus-firewire index 41e5a0cd1e3e..3d484e5dc846 100644 --- a/trunk/Documentation/ABI/stable/sysfs-bus-firewire +++ b/trunk/Documentation/ABI/stable/sysfs-bus-firewire @@ -39,17 +39,6 @@ Users: udev rules to set ownership and access permissions or ACLs of /dev/fw[0-9]+ character device files -What: /sys/bus/firewire/devices/fw[0-9]+/is_local -Date: July 2012 -KernelVersion: 3.6 -Contact: linux1394-devel@lists.sourceforge.net -Description: - IEEE 1394 node device attribute. - Read-only and immutable. -Values: 1: The sysfs entry represents a local node (a controller card). - 0: The sysfs entry represents a remote node. - - What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/ Date: May 2007 KernelVersion: 2.6.22 diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-rbd b/trunk/Documentation/ABI/testing/sysfs-bus-rbd index 3c17b62899f6..bcd88eb7ebcd 100644 --- a/trunk/Documentation/ABI/testing/sysfs-bus-rbd +++ b/trunk/Documentation/ABI/testing/sysfs-bus-rbd @@ -35,14 +35,8 @@ name pool - The name of the storage pool where this rbd image resides. - An rbd image name is unique within its pool. - -pool_id - - The unique identifier for the rbd image's pool. This is - a permanent attribute of the pool. A pool's id will never - change. + The pool where this rbd image resides. The pool-name pair is unique + per rados system. size diff --git a/trunk/Documentation/ABI/testing/sysfs-devices-edac b/trunk/Documentation/ABI/testing/sysfs-devices-edac deleted file mode 100644 index 30ee78aaed75..000000000000 --- a/trunk/Documentation/ABI/testing/sysfs-devices-edac +++ /dev/null @@ -1,140 +0,0 @@ -What: /sys/devices/system/edac/mc/mc*/reset_counters -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This write-only control file will zero all the statistical - counters for UE and CE errors on the given memory controller. - Zeroing the counters will also reset the timer indicating how - long since the last counter were reset. This is useful for - computing errors/time. Since the counters are always reset - at driver initialization time, no module/kernel parameter - is available. - -What: /sys/devices/system/edac/mc/mc*/seconds_since_reset -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays how many seconds have elapsed - since the last counter reset. This can be used with the error - counters to measure error rates. - -What: /sys/devices/system/edac/mc/mc*/mc_name -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays the type of memory controller - that is being utilized. - -What: /sys/devices/system/edac/mc/mc*/size_mb -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays, in count of megabytes, of memory - that this memory controller manages. - -What: /sys/devices/system/edac/mc/mc*/ue_count -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays the total count of uncorrectable - errors that have occurred on this memory controller. If - panic_on_ue is set, this counter will not have a chance to - increment, since EDAC will panic the system - -What: /sys/devices/system/edac/mc/mc*/ue_noinfo_count -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays the number of UEs that have - occurred on this memory controller with no information as to - which DIMM slot is having errors. - -What: /sys/devices/system/edac/mc/mc*/ce_count -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays the total count of correctable - errors that have occurred on this memory controller. This - count is very important to examine. CEs provide early - indications that a DIMM is beginning to fail. This count - field should be monitored for non-zero values and report - such information to the system administrator. - -What: /sys/devices/system/edac/mc/mc*/ce_noinfo_count -Date: January 2006 -Contact: linux-edac@vger.kernel.org -Description: This attribute file displays the number of CEs that - have occurred on this memory controller wherewith no - information as to which DIMM slot is having errors. Memory is - handicapped, but operational, yet no information is available - to indicate which slot the failing memory is in. This count - field should be also be monitored for non-zero values. - -What: /sys/devices/system/edac/mc/mc*/sdram_scrub_rate -Date: February 2007 -Contact: linux-edac@vger.kernel.org -Description: Read/Write attribute file that controls memory scrubbing. - The scrubbing rate used by the memory controller is set by - writing a minimum bandwidth in bytes/sec to the attribute file. - The rate will be translated to an internal value that gives at - least the specified rate. - Reading the file will return the actual scrubbing rate employed. - If configuration fails or memory scrubbing is not implemented, - the value of the attribute file will be -1. - -What: /sys/devices/system/edac/mc/mc*/max_location -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file displays the information about the last - available memory slot in this memory controller. It is used by - userspace tools in order to display the memory filling layout. - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/size -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file will display the size of dimm or rank. - For dimm*/size, this is the size, in MB of the DIMM memory - stick. For rank*/size, this is the size, in MB for one rank - of the DIMM memory stick. On single rank memories (1R), this - is also the total size of the dimm. On dual rank (2R) memories, - this is half the size of the total DIMM memories. - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_dev_type -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file will display what type of DRAM device is - being utilized on this DIMM (x1, x2, x4, x8, ...). - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_edac_mode -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file will display what type of Error detection - and correction is being utilized. For example: S4ECD4ED would - mean a Chipkill with x4 DRAM. - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_label -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This control file allows this DIMM to have a label assigned - to it. With this label in the module, when errors occur - the output can provide the DIMM label in the system log. - This becomes vital for panic events to isolate the - cause of the UE event. - DIMM Labels must be assigned after booting, with information - that correctly identifies the physical slot with its - silk screen label. This information is currently very - motherboard specific and determination of this information - must occur in userland at this time. - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_location -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file will display the location (csrow/channel, - branch/channel/slot or channel/slot) of the dimm or rank. - -What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_mem_type -Date: April 2012 -Contact: Mauro Carvalho Chehab - linux-edac@vger.kernel.org -Description: This attribute file will display what type of memory is - currently on this csrow. Normally, either buffered or - unbuffered memory (for example, Unbuffered-DDR3). diff --git a/trunk/Documentation/ABI/testing/sysfs-devices-platform-sh_mobile_lcdc_fb b/trunk/Documentation/ABI/testing/sysfs-devices-platform-sh_mobile_lcdc_fb deleted file mode 100644 index 2107082426da..000000000000 --- a/trunk/Documentation/ABI/testing/sysfs-devices-platform-sh_mobile_lcdc_fb +++ /dev/null @@ -1,44 +0,0 @@ -What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_alpha -Date: May 2012 -Contact: Laurent Pinchart -Description: - This file is only available on fb[0-9] devices corresponding - to overlay planes. - - Stores the alpha blending value for the overlay. Values range - from 0 (transparent) to 255 (opaque). The value is ignored if - the mode is not set to Alpha Blending. - -What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_mode -Date: May 2012 -Contact: Laurent Pinchart -Description: - This file is only available on fb[0-9] devices corresponding - to overlay planes. - - Selects the composition mode for the overlay. Possible values - are - - 0 - Alpha Blending - 1 - ROP3 - -What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_position -Date: May 2012 -Contact: Laurent Pinchart -Description: - This file is only available on fb[0-9] devices corresponding - to overlay planes. - - Stores the x,y overlay position on the display in pixels. The - position format is `[0-9]+,[0-9]+'. - -What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_rop3 -Date: May 2012 -Contact: Laurent Pinchart -Description: - This file is only available on fb[0-9] devices corresponding - to overlay planes. - - Stores the raster operation (ROP3) for the overlay. Values - range from 0 to 255. The value is ignored if the mode is not - set to ROP3. diff --git a/trunk/Documentation/ABI/testing/sysfs-platform-asus-wmi b/trunk/Documentation/ABI/testing/sysfs-platform-asus-wmi index 019e1e29370e..2e7df91620de 100644 --- a/trunk/Documentation/ABI/testing/sysfs-platform-asus-wmi +++ b/trunk/Documentation/ABI/testing/sysfs-platform-asus-wmi @@ -29,10 +29,3 @@ KernelVersion: 2.6.39 Contact: "Corentin Chary" Description: Control the card touchpad. 1 means on, 0 means off. - -What: /sys/devices/platform//lid_resume -Date: May 2012 -KernelVersion: 3.5 -Contact: "AceLan Kao" -Description: - Resume on lid open. 1 means on, 0 means off. diff --git a/trunk/Documentation/ABI/testing/sysfs-platform-ideapad-laptop b/trunk/Documentation/ABI/testing/sysfs-platform-ideapad-laptop index b31e782bd985..814b01354c41 100644 --- a/trunk/Documentation/ABI/testing/sysfs-platform-ideapad-laptop +++ b/trunk/Documentation/ABI/testing/sysfs-platform-ideapad-laptop @@ -5,15 +5,4 @@ Contact: "Ike Panhc " Description: Control the power of camera module. 1 means on, 0 means off. -What: /sys/devices/platform/ideapad/fan_mode -Date: June 2012 -KernelVersion: 3.6 -Contact: "Maxim Mikityanskiy " -Description: - Change fan mode - There are four available modes: - * 0 -> Super Silent Mode - * 1 -> Standard Mode - * 2 -> Dust Cleaning - * 4 -> Efficient Thermal Dissipation Mode diff --git a/trunk/Documentation/DMA-attributes.txt b/trunk/Documentation/DMA-attributes.txt index f50309081ac7..5c72eed89563 100644 --- a/trunk/Documentation/DMA-attributes.txt +++ b/trunk/Documentation/DMA-attributes.txt @@ -49,45 +49,3 @@ DMA_ATTR_NON_CONSISTENT lets the platform to choose to return either consistent or non-consistent memory as it sees fit. By using this API, you are guaranteeing to the platform that you have all the correct and necessary sync points for this memory in the driver. - -DMA_ATTR_NO_KERNEL_MAPPING --------------------------- - -DMA_ATTR_NO_KERNEL_MAPPING lets the platform to avoid creating a kernel -virtual mapping for the allocated buffer. On some architectures creating -such mapping is non-trivial task and consumes very limited resources -(like kernel virtual address space or dma consistent address space). -Buffers allocated with this attribute can be only passed to user space -by calling dma_mmap_attrs(). By using this API, you are guaranteeing -that you won't dereference the pointer returned by dma_alloc_attr(). You -can threat it as a cookie that must be passed to dma_mmap_attrs() and -dma_free_attrs(). Make sure that both of these also get this attribute -set on each call. - -Since it is optional for platforms to implement -DMA_ATTR_NO_KERNEL_MAPPING, those that do not will simply ignore the -attribute and exhibit default behavior. - -DMA_ATTR_SKIP_CPU_SYNC ----------------------- - -By default dma_map_{single,page,sg} functions family transfer a given -buffer from CPU domain to device domain. Some advanced use cases might -require sharing a buffer between more than one device. This requires -having a mapping created separately for each device and is usually -performed by calling dma_map_{single,page,sg} function more than once -for the given buffer with device pointer to each device taking part in -the buffer sharing. The first call transfers a buffer from 'CPU' domain -to 'device' domain, what synchronizes CPU caches for the given region -(usually it means that the cache has been flushed or invalidated -depending on the dma direction). However, next calls to -dma_map_{single,page,sg}() for other devices will perform exactly the -same sychronization operation on the CPU cache. CPU cache sychronization -might be a time consuming operation, especially if the buffers are -large, so it is highly recommended to avoid it if possible. -DMA_ATTR_SKIP_CPU_SYNC allows platform code to skip synchronization of -the CPU cache for the given buffer assuming that it has been already -transferred to 'device' domain. This attribute can be also used for -dma_unmap_{single,page,sg} functions family to force buffer to stay in -device domain after releasing a mapping for it. Use this attribute with -care! diff --git a/trunk/Documentation/DocBook/filesystems.tmpl b/trunk/Documentation/DocBook/filesystems.tmpl index 25b58efd955d..3fca32c41927 100644 --- a/trunk/Documentation/DocBook/filesystems.tmpl +++ b/trunk/Documentation/DocBook/filesystems.tmpl @@ -224,8 +224,8 @@ all your transactions. -Then at umount time , in your put_super() you can then call journal_destroy() -to clean up your in-core journal object. +Then at umount time , in your put_super() (2.4) or write_super() (2.5) +you can then call journal_destroy() to clean up your in-core journal object. diff --git a/trunk/Documentation/DocBook/media/v4l/biblio.xml b/trunk/Documentation/DocBook/media/v4l/biblio.xml index 1078e45f189f..7c49facecd25 100644 --- a/trunk/Documentation/DocBook/media/v4l/biblio.xml +++ b/trunk/Documentation/DocBook/media/v4l/biblio.xml @@ -194,7 +194,7 @@ in the frequency range from 87,5 to 108,0 MHz National Radio Systems Committee (http://www.nrscstandards.org) - NRSC-4: United States RBDS Standard + NTSC-4: United States RBDS Standard diff --git a/trunk/Documentation/DocBook/media/v4l/common.xml b/trunk/Documentation/DocBook/media/v4l/common.xml index b91d25313b63..4101aeb56540 100644 --- a/trunk/Documentation/DocBook/media/v4l/common.xml +++ b/trunk/Documentation/DocBook/media/v4l/common.xml @@ -464,14 +464,14 @@ The type field of the respective tuner field contains the index number of the tuner. - Radio input devices have exactly one tuner with index zero, no + Radio devices have exactly one tuner with index zero, no video inputs. To query and change tuner properties applications use the &VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The &v4l2-tuner; returned by VIDIOC_G_TUNER also contains signal status information applicable when the tuner of the -current video or radio input is queried. Note that +current video input, or a radio tuner is queried. Note that VIDIOC_S_TUNER does not switch the current tuner, when there is more than one at all. The tuner is solely determined by the current video input. Drivers must support both ioctls and set the @@ -491,17 +491,8 @@ the modulator. The type field of the respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is set to V4L2_OUTPUT_TYPE_MODULATOR and its modulator field contains the index number -of the modulator. - - Radio output devices have exactly one modulator with index -zero, no video outputs. - - A video or radio device cannot support both a tuner and a -modulator. Two separate device nodes will have to be used for such -hardware, one that supports the tuner functionality and one that supports -the modulator functionality. The reason is a limitation with the -&VIDIOC-S-FREQUENCY; ioctl where you cannot specify whether the frequency -is for a tuner or a modulator. +of the modulator. This specification does not define radio output +devices. To query and change modulator properties applications use the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that diff --git a/trunk/Documentation/DocBook/media/v4l/compat.xml b/trunk/Documentation/DocBook/media/v4l/compat.xml index faa0fd14666a..ea42ef824948 100644 --- a/trunk/Documentation/DocBook/media/v4l/compat.xml +++ b/trunk/Documentation/DocBook/media/v4l/compat.xml @@ -2377,11 +2377,10 @@ that used it. It was originally scheduled for removal in 2.6.35. V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to userspace. - Add selection API for extended control over cropping - and composing. Does not affect the compatibility of current - drivers and applications. See selection API for - details. + Add selection API for extended control over cropping and +composing. Does not affect the compatibility of current drivers and +applications. See selection API for +details. @@ -2459,36 +2458,6 @@ that used it. It was originally scheduled for removal in 2.6.35. -
- V4L2 in Linux 3.6 - - - Replaced input in - v4l2_buffer by - reserved2 and removed - V4L2_BUF_FLAG_INPUT. - - -
- -
- V4L2 in Linux 3.6 - - - Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE capabilities. - - -
- -
- V4L2 in Linux 3.6 - - - Added support for frequency band enumerations: &VIDIOC-ENUM-FREQ-BANDS;. - - -
-
Relation of V4L2 to other Linux multimedia APIs @@ -2618,9 +2587,6 @@ ioctls. V4L2_CID_AUTO_FOCUS_AREA control. - - Support for frequency band enumeration: &VIDIOC-ENUM-FREQ-BANDS; ioctl. -
diff --git a/trunk/Documentation/DocBook/media/v4l/controls.xml b/trunk/Documentation/DocBook/media/v4l/controls.xml index b0964fb4e834..cda0dfb6769a 100644 --- a/trunk/Documentation/DocBook/media/v4l/controls.xml +++ b/trunk/Documentation/DocBook/media/v4l/controls.xml @@ -372,11 +372,6 @@ minimum value disables backlight compensation. Cr component, bits [15:8] as Cb component and bits [31:16] must be zero. - - V4L2_CID_AUTOBRIGHTNESS - boolean - Enable Automatic Brightness. - V4L2_CID_ROTATE integer diff --git a/trunk/Documentation/DocBook/media/v4l/dev-subdev.xml b/trunk/Documentation/DocBook/media/v4l/dev-subdev.xml index a3d9dd093268..4afcbbec5eda 100644 --- a/trunk/Documentation/DocBook/media/v4l/dev-subdev.xml +++ b/trunk/Documentation/DocBook/media/v4l/dev-subdev.xml @@ -276,7 +276,7 @@
-
+
Selections: cropping, scaling and composition Many sub-devices support cropping frames on their input or output @@ -290,8 +290,8 @@ size. Both the coordinates and sizes are expressed in pixels. As for pad formats, drivers store try and active - rectangles for the selection targets . + rectangles for the selection targets of ACTUAL type . On sink pads, cropping is applied relative to the current pad format. The pad format represents the image size as @@ -308,7 +308,7 @@ Scaling support is optional. When supported by a subdev, the crop rectangle on the subdev's sink pad is scaled to the size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL - using V4L2_SEL_TGT_COMPOSE + using V4L2_SUBDEV_SEL_COMPOSE_ACTUAL selection target on the same pad. If the subdev supports scaling but not composing, the top and left values are not used and must always be set to zero. @@ -323,32 +323,32 @@ The drivers should always use the closest possible rectangle the user requests on all selection targets, unless specifically told otherwise. - V4L2_SEL_FLAG_GE and - V4L2_SEL_FLAG_LE flags may be + V4L2_SUBDEV_SEL_FLAG_SIZE_GE and + V4L2_SUBDEV_SEL_FLAG_SIZE_LE flags may be used to round the image size either up or down. + linkend="v4l2-subdev-selection-flags">
Types of selection targets
- Actual targets + ACTUAL targets - Actual targets (without a postfix) reflect the actual - hardware configuration at any point of time. There is a BOUNDS - target corresponding to every actual target. + ACTUAL targets reflect the actual hardware configuration + at any point of time. There is a BOUNDS target + corresponding to every ACTUAL.
BOUNDS targets - BOUNDS targets is the smallest rectangle that contains all - valid actual rectangles. It may not be possible to set the actual - rectangle as large as the BOUNDS rectangle, however. This may be - because e.g. a sensor's pixel array is not rectangular but - cross-shaped or round. The maximum size may also be smaller than the - BOUNDS rectangle. + BOUNDS targets is the smallest rectangle that contains + all valid ACTUAL rectangles. It may not be possible to set the + ACTUAL rectangle as large as the BOUNDS rectangle, however. + This may be because e.g. a sensor's pixel array is not + rectangular but cross-shaped or round. The maximum size may + also be smaller than the BOUNDS rectangle.
@@ -362,7 +362,7 @@ performed by the user: the changes made will be propagated to any subsequent stages. If this behaviour is not desired, the user must set - V4L2_SEL_FLAG_KEEP_CONFIG flag. This + V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG flag. This flag causes no propagation of the changes are allowed in any circumstances. This may also cause the accessed rectangle to be adjusted by the driver, depending on the properties of the diff --git a/trunk/Documentation/DocBook/media/v4l/io.xml b/trunk/Documentation/DocBook/media/v4l/io.xml index 1885cc0755cb..fd6aca2922b6 100644 --- a/trunk/Documentation/DocBook/media/v4l/io.xml +++ b/trunk/Documentation/DocBook/media/v4l/io.xml @@ -683,12 +683,14 @@ memory, set by the application. See for details. __u32 - reserved2 + input - A place holder for future extensions and custom -(driver defined) buffer types -V4L2_BUF_TYPE_PRIVATE and higher. Applications -should set this to 0. + Some video capture drivers support rapid and +synchronous video input changes, a function useful for example in +video surveillance applications. For this purpose applications set the +V4L2_BUF_FLAG_INPUT flag, and this field to the +number of a video input as in &v4l2-input; field +index. __u32 @@ -919,6 +921,13 @@ previous key frame. The timecode field is valid. Drivers set or clear this flag when the VIDIOC_DQBUF ioctl is called. + + + V4L2_BUF_FLAG_INPUT + 0x0200 + The input field is valid. +Applications set or clear this flag before calling the +VIDIOC_QBUF ioctl. V4L2_BUF_FLAG_PREPARED diff --git a/trunk/Documentation/DocBook/media/v4l/selection-api.xml b/trunk/Documentation/DocBook/media/v4l/selection-api.xml index e7ed5077834d..b299e4779354 100644 --- a/trunk/Documentation/DocBook/media/v4l/selection-api.xml +++ b/trunk/Documentation/DocBook/media/v4l/selection-api.xml @@ -53,10 +53,10 @@ cropping and composing rectangles have the same size. -
+For complete list of the available selection targets see table - See for more - information. +
@@ -74,7 +74,7 @@ cropping/composing rectangles may have to be aligned, and both the source and the sink may have arbitrary upper and lower size limits. Therefore, as usual, drivers are expected to adjust the requested parameters and return the actual values selected. An application can control the rounding behaviour using constraint flags . +linkend="v4l2-sel-flags"> constraint flags .
@@ -91,7 +91,7 @@ top/left corner at position (0,0) . The rectangle's coordinates are expressed in pixels. The top left corner, width and height of the source rectangle, that is -the area actually sampled, is given by the V4L2_SEL_TGT_CROP +the area actually sampled, is given by the V4L2_SEL_TGT_CROP_ACTIVE target. It uses the same coordinate system as V4L2_SEL_TGT_CROP_BOUNDS . The active cropping area must lie completely inside the capture boundaries. The driver may further adjust the @@ -111,13 +111,13 @@ height are equal to the image size set by VIDIOC_S_FMT . The part of a buffer into which the image is inserted by the hardware is -controlled by the V4L2_SEL_TGT_COMPOSE target. +controlled by the V4L2_SEL_TGT_COMPOSE_ACTIVE target. The rectangle's coordinates are also expressed in the same coordinate system as the bounds rectangle. The composing rectangle must lie completely inside bounds rectangle. The driver must adjust the composing rectangle to fit to the bounding limits. Moreover, the driver can perform other adjustments according to hardware limitations. The application can control rounding behaviour using - constraint flags . + constraint flags . For capture devices the default composing rectangle is queried using V4L2_SEL_TGT_COMPOSE_DEFAULT . It is usually equal to the @@ -125,7 +125,7 @@ bounding rectangle. The part of a buffer that is modified by the hardware is given by V4L2_SEL_TGT_COMPOSE_PADDED . It contains all pixels -defined using V4L2_SEL_TGT_COMPOSE plus all +defined using V4L2_SEL_TGT_COMPOSE_ACTIVE plus all padding data modified by hardware during insertion process. All pixels outside this rectangle must not be changed by the hardware. The content of pixels that lie inside the padded area but outside active area is @@ -153,7 +153,7 @@ specified using VIDIOC_S_FMT ioctl. The top left corner, width and height of the source rectangle, that is the area from which image date are processed by the hardware, is given by the - V4L2_SEL_TGT_CROP . Its coordinates are expressed + V4L2_SEL_TGT_CROP_ACTIVE . Its coordinates are expressed in in the same coordinate system as the bounds rectangle. The active cropping area must lie completely inside the crop boundaries and the driver may further adjust the requested size and/or position according to hardware @@ -165,7 +165,7 @@ bounding rectangle. The part of a video signal or graphics display where the image is inserted by the hardware is controlled by -V4L2_SEL_TGT_COMPOSE target. The rectangle's coordinates +V4L2_SEL_TGT_COMPOSE_ACTIVE target. The rectangle's coordinates are expressed in pixels. The composing rectangle must lie completely inside the bounds rectangle. The driver must adjust the area to fit to the bounding limits. Moreover, the driver can perform other adjustments according to @@ -184,7 +184,7 @@ such a padded area is driver-dependent feature not covered by this document. Driver developers are encouraged to keep padded rectangle equal to active one. The padded target is accessed by the V4L2_SEL_TGT_COMPOSE_PADDED identifier. It must contain all pixels from the -V4L2_SEL_TGT_COMPOSE target. +V4L2_SEL_TGT_COMPOSE_ACTIVE target.
@@ -193,8 +193,8 @@ V4L2_SEL_TGT_COMPOSE target. Scaling control An application can detect if scaling is performed by comparing the width -and the height of rectangles obtained using V4L2_SEL_TGT_CROP - and V4L2_SEL_TGT_COMPOSE targets. If +and the height of rectangles obtained using V4L2_SEL_TGT_CROP_ACTIVE + and V4L2_SEL_TGT_COMPOSE_ACTIVE targets. If these are not equal then the scaling is applied. The application can compute the scaling ratios using these values. @@ -252,7 +252,7 @@ area) ret = ioctl(fd, &VIDIOC-G-SELECTION;, &sel); if (ret) exit(-1); - sel.target = V4L2_SEL_TGT_CROP; + sel.target = V4L2_SEL_TGT_CROP_ACTIVE; ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel); if (ret) exit(-1); @@ -281,7 +281,7 @@ area) r.left = sel.r.width / 4; r.top = sel.r.height / 4; sel.r = r; - sel.target = V4L2_SEL_TGT_COMPOSE; + sel.target = V4L2_SEL_TGT_COMPOSE_ACTIVE; sel.flags = V4L2_SEL_FLAG_LE; ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel); if (ret) @@ -298,11 +298,11 @@ V4L2_BUF_TYPE_VIDEO_OUTPUT for other devices &v4l2-selection; compose = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT, - .target = V4L2_SEL_TGT_COMPOSE, + .target = V4L2_SEL_TGT_COMPOSE_ACTIVE, }; &v4l2-selection; crop = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT, - .target = V4L2_SEL_TGT_CROP, + .target = V4L2_SEL_TGT_CROP_ACTIVE, }; double hscale, vscale; diff --git a/trunk/Documentation/DocBook/media/v4l/selections-common.xml b/trunk/Documentation/DocBook/media/v4l/selections-common.xml deleted file mode 100644 index 7502f784b8cc..000000000000 --- a/trunk/Documentation/DocBook/media/v4l/selections-common.xml +++ /dev/null @@ -1,164 +0,0 @@ -
- - Common selection definitions - - While the V4L2 selection - API and V4L2 subdev - selection APIs are very similar, there's one fundamental - difference between the two. On sub-device API, the selection - rectangle refers to the media bus format, and is bound to a - sub-device's pad. On the V4L2 interface the selection rectangles - refer to the in-memory pixel format. - - This section defines the common definitions of the - selection interfaces on the two APIs. - -
- - Selection targets - - The precise meaning of the selection targets may be - dependent on which of the two interfaces they are used. - - - Selection target definitions - - - - - - - &cs-def; - - - Target name - id - Definition - Valid for V4L2 - Valid for V4L2 subdev - - - - - V4L2_SEL_TGT_CROP - 0x0000 - Crop rectangle. Defines the cropped area. - Yes - Yes - - - V4L2_SEL_TGT_CROP_DEFAULT - 0x0001 - Suggested cropping rectangle that covers the "whole picture". - Yes - No - - - V4L2_SEL_TGT_CROP_BOUNDS - 0x0002 - Bounds of the crop rectangle. All valid crop - rectangles fit inside the crop bounds rectangle. - - Yes - Yes - - - V4L2_SEL_TGT_COMPOSE - 0x0100 - Compose rectangle. Used to configure scaling - and composition. - Yes - Yes - - - V4L2_SEL_TGT_COMPOSE_DEFAULT - 0x0101 - Suggested composition rectangle that covers the "whole picture". - Yes - No - - - V4L2_SEL_TGT_COMPOSE_BOUNDS - 0x0102 - Bounds of the compose rectangle. All valid compose - rectangles fit inside the compose bounds rectangle. - Yes - Yes - - - V4L2_SEL_TGT_COMPOSE_PADDED - 0x0103 - The active area and all padding pixels that are inserted or - modified by hardware. - Yes - No - - - -
- -
- -
- - Selection flags - - - Selection flag definitions - - - - - - - &cs-def; - - - Flag name - id - Definition - Valid for V4L2 - Valid for V4L2 subdev - - - - - V4L2_SEL_FLAG_GE - (1 << 0) - Suggest the driver it should choose greater or - equal rectangle (in size) than was requested. Albeit the - driver may choose a lesser size, it will only do so due to - hardware limitations. Without this flag (and - V4L2_SEL_FLAG_LE) the - behaviour is to choose the closest possible - rectangle. - Yes - Yes - - - V4L2_SEL_FLAG_LE - (1 << 1) - Suggest the driver it - should choose lesser or equal rectangle (in size) than was - requested. Albeit the driver may choose a greater size, it - will only do so due to hardware limitations. - Yes - Yes - - - V4L2_SEL_FLAG_KEEP_CONFIG - (1 << 2) - The configuration must not be propagated to any - further processing steps. If this flag is not given, the - configuration is propagated inside the subdevice to all - further processing steps. - No - Yes - - - -
- -
- -
diff --git a/trunk/Documentation/DocBook/media/v4l/v4l2.xml b/trunk/Documentation/DocBook/media/v4l/v4l2.xml index eee6908c749f..008c2d73a484 100644 --- a/trunk/Documentation/DocBook/media/v4l/v4l2.xml +++ b/trunk/Documentation/DocBook/media/v4l/v4l2.xml @@ -140,11 +140,6 @@ structs, ioctls) must be noted in more detail in the history chapter applications. --> - 3.6 - 2012-07-02 - hv - Added VIDIOC_ENUM_FREQ_BANDS. - 3.5 2012-05-07 sa, sn @@ -539,7 +534,6 @@ and discussions on the V4L mailing list. &sub-enum-fmt; &sub-enum-framesizes; &sub-enum-frameintervals; - &sub-enum-freq-bands; &sub-enuminput; &sub-enumoutput; &sub-enumstd; @@ -595,11 +589,6 @@ and discussions on the V4L mailing list. &sub-write; - - Common definitions for V4L2 and V4L2 subdev interfaces - &sub-selections-common; - - Video For Linux Two Header File &sub-videodev2-h; diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml index a8cda1acacd9..a2474ecb574a 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml @@ -64,7 +64,7 @@ different sizes. To allocate device buffers applications initialize relevant fields of the v4l2_create_buffers structure. They set the type field in the -&v4l2-format; structure, embedded in this +v4l2_format structure, embedded in this structure, to the respective stream or buffer type. count must be set to the number of required buffers. memory specifies the required I/O method. The @@ -97,13 +97,7 @@ information. __u32 count - The number of buffers requested or granted. If count == 0, then - VIDIOC_CREATE_BUFS will set index - to the current number of created buffers, and it will check the validity of - memory and format.type. - If those are invalid -1 is returned and errno is set to &EINVAL;, - otherwise VIDIOC_CREATE_BUFS returns 0. It will - never set errno to &EBUSY; in this particular case. + The number of buffers requested or granted. __u32 @@ -114,7 +108,7 @@ information. /> - &v4l2-format; + struct v4l2_format format Filled in by the application, preserved by the driver. diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml index cd7720d404ea..6673ce582050 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml @@ -54,9 +54,15 @@ interface and may change in the future. - To query the capabilities of the DV receiver/transmitter applications can call -this ioctl and the driver will fill in the structure. Note that drivers may return -different values after switching the video input or output. + To query the available timings, applications initialize the +index field and zero the reserved array of &v4l2-dv-timings-cap; +and call the VIDIOC_DV_TIMINGS_CAP ioctl with a pointer to this +structure. Drivers fill the rest of the structure or return an +&EINVAL; when the index is out of bounds. To enumerate all supported DV timings, +applications shall begin at index zero, incrementing by one until the +driver returns EINVAL. Note that drivers may enumerate a +different set of DV timings after switching the video input or +output. struct <structname>v4l2_bt_timings_cap</structname> @@ -109,7 +115,7 @@ different values after switching the video input or output. __u32 reserved[16] - Reserved for future extensions. Drivers must set the array to zero. + diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml deleted file mode 100644 index 6541ba0175ed..000000000000 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml +++ /dev/null @@ -1,179 +0,0 @@ - - - ioctl VIDIOC_ENUM_FREQ_BANDS - &manvol; - - - - VIDIOC_ENUM_FREQ_BANDS - Enumerate supported frequency bands - - - - - - int ioctl - int fd - int request - struct v4l2_frequency_band -*argp - - - - - - Arguments - - - - fd - - &fd; - - - - request - - VIDIOC_ENUM_FREQ_BANDS - - - - argp - - - - - - - - - Description - - - Experimental - This is an experimental - interface and may change in the future. - - - Enumerates the frequency bands that a tuner or modulator supports. -To do this applications initialize the tuner, -type and index fields, -and zero out the reserved array of a &v4l2-frequency-band; and -call the VIDIOC_ENUM_FREQ_BANDS ioctl with a pointer -to this structure. - - This ioctl is supported if the V4L2_TUNER_CAP_FREQ_BANDS capability - of the corresponding tuner/modulator is set. - -
- struct <structname>v4l2_frequency_band</structname> - - &cs-str; - - - __u32 - tuner - The tuner or modulator index number. This is the -same value as in the &v4l2-input; tuner -field and the &v4l2-tuner; index field, or -the &v4l2-output; modulator field and the -&v4l2-modulator; index field. - - - __u32 - type - The tuner type. This is the same value as in the -&v4l2-tuner; type field. The type must be set -to V4L2_TUNER_RADIO for /dev/radioX -device nodes, and to V4L2_TUNER_ANALOG_TV -for all others. Set this field to V4L2_TUNER_RADIO for -modulators (currently only radio modulators are supported). -See - - - __u32 - index - Identifies the frequency band, set by the application. - - - __u32 - capability - The tuner/modulator capability flags for -this frequency band, see . The V4L2_TUNER_CAP_LOW -capability must be the same for all frequency bands of the selected tuner/modulator. -So either all bands have that capability set, or none of them have that capability. - - - __u32 - rangelow - The lowest tunable frequency in -units of 62.5 kHz, or if the capability -flag V4L2_TUNER_CAP_LOW is set, in units of 62.5 -Hz, for this frequency band. - - - __u32 - rangehigh - The highest tunable frequency in -units of 62.5 kHz, or if the capability -flag V4L2_TUNER_CAP_LOW is set, in units of 62.5 -Hz, for this frequency band. - - - __u32 - modulation - The supported modulation systems of this frequency band. - See . Note that currently only one - modulation system per frequency band is supported. More work will need to - be done if multiple modulation systems are possible. Contact the - linux-media mailing list (&v4l-ml;) if you need that functionality. - - - __u32 - reserved[9] - Reserved for future extensions. Applications and drivers - must set the array to zero. - - - -
- - - Band Modulation Systems - - &cs-def; - - - V4L2_BAND_MODULATION_VSB - 0x02 - Vestigial Sideband modulation, used for analog TV. - - - V4L2_BAND_MODULATION_FM - 0x04 - Frequency Modulation, commonly used for analog radio. - - - V4L2_BAND_MODULATION_AM - 0x08 - Amplitude Modulation, commonly used for analog radio. - - - -
- - - - &return-value; - - - - EINVAL - - The tuner or index -is out of bounds or the type field is wrong. - - - - - diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml index c7a1c462e724..69c178a4d205 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml @@ -98,12 +98,11 @@ the &v4l2-output; modulator field and the __u32 type The tuner type. This is the same value as in the -&v4l2-tuner; type field. The type must be set +&v4l2-tuner; type field. See The type must be set to V4L2_TUNER_RADIO for /dev/radioX device nodes, and to V4L2_TUNER_ANALOG_TV -for all others. Set this field to V4L2_TUNER_RADIO for -modulators (currently only radio modulators are supported). -See +for all others. The field is not applicable to modulators, &ie; ignored +by drivers. See __u32 @@ -136,12 +135,6 @@ bounds or the value in the type field is wrong. - - EBUSY - - A hardware seek is in progress. - - diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-g-selection.xml index f76d8a6d9b92..bb04eff75f45 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-g-selection.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-g-selection.xml @@ -65,9 +65,9 @@ Do not use multiplanar buffers. Use V4L2_BUF_TYPE_VIDEO_CAPTURE . Use V4L2_BUF_TYPE_VIDEO_OUTPUT instead of V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE . The next step is setting the value of &v4l2-selection; target field -to V4L2_SEL_TGT_CROP ( -V4L2_SEL_TGT_COMPOSE ). Please refer to table or for additional +to V4L2_SEL_TGT_CROP_ACTIVE ( +V4L2_SEL_TGT_COMPOSE_ACTIVE ). Please refer to table or for additional targets. The flags and reserved fields of &v4l2-selection; are ignored and they must be filled with zeros. The driver fills the rest of the structure or @@ -86,9 +86,9 @@ use multiplanar buffers. Use V4L2_BUF_TYPE_VIDEO_CAPTURE . Use V4L2_BUF_TYPE_VIDEO_OUTPUT instead of V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE . The next step is setting the value of &v4l2-selection; target to -V4L2_SEL_TGT_CROP ( -V4L2_SEL_TGT_COMPOSE ). Please refer to table or for additional +V4L2_SEL_TGT_CROP_ACTIVE ( +V4L2_SEL_TGT_COMPOSE_ACTIVE ). Please refer to table or for additional targets. The &v4l2-rect; r rectangle need to be set to the desired active area. Field &v4l2-selection; reserved is ignored and must be filled with zeros. The driver may adjust @@ -154,8 +154,74 @@ exist no rectangle that satisfies the constraints. - Selection targets and flags are documented in . + + + Selection targets. + + &cs-def; + + + V4L2_SEL_TGT_CROP_ACTIVE + 0x0000 + The area that is currently cropped by hardware. + + + V4L2_SEL_TGT_CROP_DEFAULT + 0x0001 + Suggested cropping rectangle that covers the "whole picture". + + + V4L2_SEL_TGT_CROP_BOUNDS + 0x0002 + Limits for the cropping rectangle. + + + V4L2_SEL_TGT_COMPOSE_ACTIVE + 0x0100 + The area to which data is composed by hardware. + + + V4L2_SEL_TGT_COMPOSE_DEFAULT + 0x0101 + Suggested composing rectangle that covers the "whole picture". + + + V4L2_SEL_TGT_COMPOSE_BOUNDS + 0x0102 + Limits for the composing rectangle. + + + V4L2_SEL_TGT_COMPOSE_PADDED + 0x0103 + The active area and all padding pixels that are inserted or modified by hardware. + + + +
+
+ + + + Selection constraint flags + + &cs-def; + + + V4L2_SEL_FLAG_GE + 0x00000001 + Indicates that the adjusted rectangle must contain the original + &v4l2-selection; r rectangle. + + + V4L2_SEL_FLAG_LE + 0x00000002 + Indicates that the adjusted rectangle must be inside the original + &v4l2-rect; r rectangle. + + + +
+
@@ -186,14 +252,14 @@ exist no rectangle that satisfies the constraints. __u32 target - Used to select between cropping + Used to select between cropping and composing rectangles. __u32 flags Flags controlling the selection rectangle adjustments, refer to - selection flags. + selection flags. &v4l2-rect; diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml index 701138f1209d..62a1aa200a36 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml @@ -119,14 +119,10 @@ field is not quite clear.--> . Audio flags indicate the ability to decode audio subprograms. They will not change, for example with the current video standard.When -the structure refers to a radio tuner the -V4L2_TUNER_CAP_LANG1, -V4L2_TUNER_CAP_LANG2 and -V4L2_TUNER_CAP_NORM flags can't be used. -If multiple frequency bands are supported, then -capability is the union of all -capability fields of each &v4l2-frequency-band;. - +the structure refers to a radio tuner only the +V4L2_TUNER_CAP_LOW, +V4L2_TUNER_CAP_STEREO and +V4L2_TUNER_CAP_RDS flags can be set. __u32 @@ -134,9 +130,7 @@ the structure refers to a radio tuner the The lowest tunable frequency in units of 62.5 kHz, or if the capability flag V4L2_TUNER_CAP_LOW is set, in units of 62.5 -Hz. If multiple frequency bands are supported, then -rangelow is the lowest frequency -of all the frequency bands. +Hz. __u32 @@ -144,9 +138,7 @@ of all the frequency bands. The highest tunable frequency in units of 62.5 kHz, or if the capability flag V4L2_TUNER_CAP_LOW is set, in units of 62.5 -Hz. If multiple frequency bands are supported, then -rangehigh is the highest frequency -of all the frequency bands. +Hz. __u32 @@ -283,18 +275,6 @@ can or must be switched. (B/G PAL tuners for example are typically not see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only V4L2_TUNER_ANALOG_TV tuners can have this capability. - - V4L2_TUNER_CAP_HWSEEK_BOUNDED - 0x0004 - If set, then this tuner supports the hardware seek functionality - where the seek stops when it reaches the end of the frequency range. - - - V4L2_TUNER_CAP_HWSEEK_WRAP - 0x0008 - If set, then this tuner supports the hardware seek functionality - where the seek wraps around when it reaches the end of the frequency range. - V4L2_TUNER_CAP_STEREO 0x0010 @@ -348,12 +328,6 @@ radio tuners. 0x0200 The RDS data is parsed by the hardware and set via controls. - - V4L2_TUNER_CAP_FREQ_BANDS - 0x0400 - The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate - the available frequency bands. - diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml index 77ff5be0809d..9caa49af580f 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml @@ -71,9 +71,12 @@ initialize the bytesused, field and timestamp fields, see for details. -Applications must also set flags to 0. -The reserved2 and -reserved fields must be set to 0. When using +Applications must also set flags to 0. If a driver +supports capturing from specific video inputs and you want to specify a video +input, then flags should be set to +V4L2_BUF_FLAG_INPUT and the field +input must be initialized to the desired input. +The reserved field must be set to 0. When using the multi-planar API, the m.planes field must contain a userspace pointer to a filled-in array of &v4l2-plane; and the length diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-querycap.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-querycap.xml index f33dd746b66b..4643505cd4ca 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-querycap.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-querycap.xml @@ -191,19 +191,6 @@ linkend="output">Video Output interface. multi-planar API through the Video Output interface. - - V4L2_CAP_VIDEO_M2M - 0x00004000 - The device supports the single-planar API through the - Video Memory-To-Memory interface. - - - V4L2_CAP_VIDEO_M2M_MPLANE - 0x00008000 - The device supports the - multi-planar API through the - Video Memory-To-Memory interface. - V4L2_CAP_VIDEO_OVERLAY 0x00000004 diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml index 3dd1bec6d3c7..407dfceb71f0 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml @@ -52,26 +52,11 @@ Start a hardware frequency seek from the current frequency. To do this applications initialize the tuner, type, seek_upward, -wrap_around, spacing, -rangelow and rangehigh -fields, and zero out the reserved array of a -&v4l2-hw-freq-seek; and call the VIDIOC_S_HW_FREQ_SEEK -ioctl with a pointer to this structure. - - The rangelow and -rangehigh fields can be set to a non-zero value to -tell the driver to search a specific band. If the &v4l2-tuner; -capability field has the -V4L2_TUNER_CAP_HWSEEK_PROG_LIM flag set, these values -must fall within one of the bands returned by &VIDIOC-ENUM-FREQ-BANDS;. If -the V4L2_TUNER_CAP_HWSEEK_PROG_LIM flag is not set, -then these values must exactly match those of one of the bands returned by -&VIDIOC-ENUM-FREQ-BANDS;. If the current frequency of the tuner does not fall -within the selected band it will be clamped to fit in the band before the -seek is started. - - If an error is returned, then the original frequency will - be restored. +spacing and +wrap_around fields, and zero out the +reserved array of a &v4l2-hw-freq-seek; and +call the VIDIOC_S_HW_FREQ_SEEK ioctl with a pointer +to this structure. This ioctl is supported if the V4L2_CAP_HW_FREQ_SEEK capability is set. @@ -102,10 +87,7 @@ field and the &v4l2-tuner; index field. __u32 wrap_around - If non-zero, wrap around when at the end of the frequency range, else stop seeking. - The &v4l2-tuner; capability field will tell you what the - hardware supports. - + If non-zero, wrap around when at the end of the frequency range, else stop seeking. __u32 @@ -114,27 +96,7 @@ field and the &v4l2-tuner; index field. __u32 - rangelow - If non-zero, the lowest tunable frequency of the band to -search in units of 62.5 kHz, or if the &v4l2-tuner; -capability field has the -V4L2_TUNER_CAP_LOW flag set, in units of 62.5 Hz. -If rangelow is zero a reasonable default value -is used. - - - __u32 - rangehigh - If non-zero, the highest tunable frequency of the band to -search in units of 62.5 kHz, or if the &v4l2-tuner; -capability field has the -V4L2_TUNER_CAP_LOW flag set, in units of 62.5 Hz. -If rangehigh is zero a reasonable default value -is used. - - - __u32 - reserved[5] + reserved[7] Reserved for future extensions. Applications must set the array to zero. @@ -151,22 +113,14 @@ is used. EINVAL The tuner index is out of -bounds, the wrap_around value is not supported or -one of the values in the type, -rangelow or rangehigh -fields is wrong. - - - - ENODATA - - The hardware seek found no channels. +bounds, the wrap_around value is not supported or the value in the type field is +wrong. - EBUSY + EAGAIN - Another hardware seek is already in progress. + The ioctl timed-out. Try again. diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml index f33cc814a01d..208e9f0da3f3 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml @@ -72,10 +72,10 @@
Types of selection targets - There are two types of selection targets: actual and bounds. The - actual targets are the targets which configure the hardware. The BOUNDS - target will return a rectangle that contain all possible actual - rectangles. + There are two types of selection targets: actual and bounds. + The ACTUAL targets are the targets which configure the hardware. + The BOUNDS target will return a rectangle that contain all + possible ACTUAL rectangles.
@@ -87,8 +87,71 @@ EINVAL.
- Selection targets and flags are documented in . + + V4L2 subdev selection targets + + &cs-def; + + + V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL + 0x0000 + Actual crop. Defines the cropping + performed by the processing step. + + + V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS + 0x0002 + Bounds of the crop rectangle. + + + V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL + 0x0100 + Actual compose rectangle. Used to configure scaling + on sink pads and composition on source pads. + + + V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS + 0x0102 + Bounds of the compose rectangle. + + + +
+ + + V4L2 subdev selection flags + + &cs-def; + + + V4L2_SUBDEV_SEL_FLAG_SIZE_GE + (1 << 0) Suggest the driver it + should choose greater or equal rectangle (in size) than + was requested. Albeit the driver may choose a lesser size, + it will only do so due to hardware limitations. Without + this flag (and + V4L2_SUBDEV_SEL_FLAG_SIZE_LE) the + behaviour is to choose the closest possible + rectangle. + + + V4L2_SUBDEV_SEL_FLAG_SIZE_LE + (1 << 1) Suggest the driver it + should choose lesser or equal rectangle (in size) than was + requested. Albeit the driver may choose a greater size, it + will only do so due to hardware limitations. + + + V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG + (1 << 2) + The configuration should not be propagated to any + further processing steps. If this flag is not given, the + configuration is propagated inside the subdevice to all + further processing steps. + + + +
struct <structname>v4l2_subdev_selection</structname> @@ -110,13 +173,13 @@ __u32targetTarget selection rectangle. See - . + .. __u32 flags Flags. See - . + . &v4l2-rect; diff --git a/trunk/Documentation/IRQ-domain.txt b/trunk/Documentation/IRQ-domain.txt index 1401cece745a..27dcaabfb4db 100644 --- a/trunk/Documentation/IRQ-domain.txt +++ b/trunk/Documentation/IRQ-domain.txt @@ -93,7 +93,6 @@ Linux IRQ number into the hardware. Most drivers cannot use this mapping. ==== Legacy ==== -irq_domain_add_simple() irq_domain_add_legacy() irq_domain_add_legacy_isa() @@ -116,7 +115,3 @@ The legacy map should only be used if fixed IRQ mappings must be supported. For example, ISA controllers would use the legacy map for mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ numbers. - -Most users of legacy mappings should use irq_domain_add_simple() which -will use a legacy domain only if an IRQ range is supplied by the -system and will otherwise use a linear domain mapping. diff --git a/trunk/Documentation/block/queue-sysfs.txt b/trunk/Documentation/block/queue-sysfs.txt index 6518a55273e7..d8147b336c35 100644 --- a/trunk/Documentation/block/queue-sysfs.txt +++ b/trunk/Documentation/block/queue-sysfs.txt @@ -38,13 +38,6 @@ read or write requests. Note that the total allocated number may be twice this amount, since it applies only to reads or writes (not the accumulated sum). -To avoid priority inversion through request starvation, a request -queue maintains a separate request pool per each cgroup when -CONFIG_BLK_CGROUP is enabled, and this parameter applies to each such -per-block-cgroup request pool. IOW, if there are N block cgroups, -each request queue may have upto N request pools, each independently -regulated by nr_requests. - read_ahead_kb (RW) ------------------ Maximum number of kilobytes to read-ahead for filesystems on this block diff --git a/trunk/Documentation/cgroups/hugetlb.txt b/trunk/Documentation/cgroups/hugetlb.txt deleted file mode 100644 index a9faaca1f029..000000000000 --- a/trunk/Documentation/cgroups/hugetlb.txt +++ /dev/null @@ -1,45 +0,0 @@ -HugeTLB Controller -------------------- - -The HugeTLB controller allows to limit the HugeTLB usage per control group and -enforces the controller limit during page fault. Since HugeTLB doesn't -support page reclaim, enforcing the limit at page fault time implies that, -the application will get SIGBUS signal if it tries to access HugeTLB pages -beyond its limit. This requires the application to know beforehand how much -HugeTLB pages it would require for its use. - -HugeTLB controller can be created by first mounting the cgroup filesystem. - -# mount -t cgroup -o hugetlb none /sys/fs/cgroup - -With the above step, the initial or the parent HugeTLB group becomes -visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in -the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup. - -New groups can be created under the parent group /sys/fs/cgroup. - -# cd /sys/fs/cgroup -# mkdir g1 -# echo $$ > g1/tasks - -The above steps create a new group g1 and move the current shell -process (bash) into it. - -Brief summary of control files - - hugetlb..limit_in_bytes # set/show limit of "hugepagesize" hugetlb usage - hugetlb..max_usage_in_bytes # show max "hugepagesize" hugetlb usage recorded - hugetlb..usage_in_bytes # show current res_counter usage for "hugepagesize" hugetlb - hugetlb..failcnt # show the number of allocation failure due to HugeTLB limit - -For a system supporting two hugepage size (16M and 16G) the control -files include: - -hugetlb.16GB.limit_in_bytes -hugetlb.16GB.max_usage_in_bytes -hugetlb.16GB.usage_in_bytes -hugetlb.16GB.failcnt -hugetlb.16MB.limit_in_bytes -hugetlb.16MB.max_usage_in_bytes -hugetlb.16MB.usage_in_bytes -hugetlb.16MB.failcnt diff --git a/trunk/Documentation/cgroups/memory.txt b/trunk/Documentation/cgroups/memory.txt index 4372e6b8a353..dd88540bb995 100644 --- a/trunk/Documentation/cgroups/memory.txt +++ b/trunk/Documentation/cgroups/memory.txt @@ -73,8 +73,6 @@ Brief summary of control files. memory.kmem.tcp.limit_in_bytes # set/show hard limit for tcp buf memory memory.kmem.tcp.usage_in_bytes # show current tcp buf memory allocation - memory.kmem.tcp.failcnt # show the number of tcp buf memory usage hits limits - memory.kmem.tcp.max_usage_in_bytes # show max tcp buf memory usage recorded 1. History @@ -189,12 +187,12 @@ the cgroup that brought it in -- this will happen on memory pressure). But see section 8.2: when moving a task to another cgroup, its pages may be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. -Exception: If CONFIG_CGROUP_CGROUP_MEMCG_SWAP is not used. +Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used. When you do swapoff and make swapped-out pages of shmem(tmpfs) to be backed into memory in force, charges for pages are accounted against the caller of swapoff rather than the users of shmem. -2.4 Swap Extension (CONFIG_MEMCG_SWAP) +2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP) Swap Extension allows you to record charge for swap. A swapped-in page is charged back to original page allocator if possible. @@ -261,7 +259,7 @@ When oom event notifier is registered, event will be delivered. per-zone-per-cgroup LRU (cgroup's private LRU) is just guarded by zone->lru_lock, it has no lock of its own. -2.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM) +2.7 Kernel Memory Extension (CONFIG_CGROUP_MEM_RES_CTLR_KMEM) With the Kernel memory extension, the Memory Controller is able to limit the amount of kernel memory used by the system. Kernel memory is fundamentally @@ -288,8 +286,8 @@ per cgroup, instead of globally. a. Enable CONFIG_CGROUPS b. Enable CONFIG_RESOURCE_COUNTERS -c. Enable CONFIG_MEMCG -d. Enable CONFIG_MEMCG_SWAP (to use swap extension) +c. Enable CONFIG_CGROUP_MEM_RES_CTLR +d. Enable CONFIG_CGROUP_MEM_RES_CTLR_SWAP (to use swap extension) 1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?) # mount -t tmpfs none /sys/fs/cgroup diff --git a/trunk/Documentation/device-mapper/dm-raid.txt b/trunk/Documentation/device-mapper/dm-raid.txt index 1c1844957166..946c73342cde 100644 --- a/trunk/Documentation/device-mapper/dm-raid.txt +++ b/trunk/Documentation/device-mapper/dm-raid.txt @@ -27,10 +27,6 @@ The target is named "raid" and it accepts the following parameters: - rotating parity N (right-to-left) with data restart raid6_nc RAID6 N continue - rotating parity N (right-to-left) with data continuation - raid10 Various RAID10 inspired algorithms chosen by additional params - - RAID10: Striped Mirrors (aka 'Striping on top of mirrors') - - RAID1E: Integrated Adjacent Stripe Mirroring - - and other similar RAID10 variants Reference: Chapter 4 of http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf @@ -63,28 +59,6 @@ The target is named "raid" and it accepts the following parameters: logical size of the array. The bitmap records the device synchronisation state for each region. - [raid10_copies <# copies>] - [raid10_format near] - These two options are used to alter the default layout of - a RAID10 configuration. The number of copies is can be - specified, but the default is 2. There are other variations - to how the copies are laid down - the default and only current - option is "near". Near copies are what most people think of - with respect to mirroring. If these options are left - unspecified, or 'raid10_copies 2' and/or 'raid10_format near' - are given, then the layouts for 2, 3 and 4 devices are: - 2 drives 3 drives 4 drives - -------- ---------- -------------- - A1 A1 A1 A1 A2 A1 A1 A2 A2 - A2 A2 A2 A3 A3 A3 A3 A4 A4 - A3 A3 A4 A4 A5 A5 A5 A6 A6 - A4 A4 A5 A6 A6 A7 A7 A8 A8 - .. .. .. .. .. .. .. .. .. - The 2-device layout is equivalent 2-way RAID1. The 4-device - layout is what a traditional RAID10 would look like. The - 3-device layout is what might be called a 'RAID1E - Integrated - Adjacent Stripe Mirroring'. - <#raid_devs>: The number of devices composing the array. Each device consists of two entries. The first is the device containing the metadata (if any); the second is the one containing the diff --git a/trunk/Documentation/device-mapper/striped.txt b/trunk/Documentation/device-mapper/striped.txt index 45f3b91ea4c3..f34d3236b9da 100644 --- a/trunk/Documentation/device-mapper/striped.txt +++ b/trunk/Documentation/device-mapper/striped.txt @@ -9,14 +9,15 @@ devices in parallel. Parameters: [ ]+ : Number of underlying devices. - : Size of each chunk of data. Must be at least as - large as the system's PAGE_SIZE. + : Size of each chunk of data. Must be a power-of-2 and at + least as large as the system's PAGE_SIZE. : Full pathname to the underlying block-device, or a "major:minor" device-number. : Starting sector within the device. One or more underlying devices can be specified. The striped device size must -be a multiple of the chunk size multiplied by the number of underlying devices. +be a multiple of the chunk size and a multiple of the number of underlying +devices. Example scripts diff --git a/trunk/Documentation/device-mapper/thin-provisioning.txt b/trunk/Documentation/device-mapper/thin-provisioning.txt index 30b8b83bd333..f5cfc62b7ad3 100644 --- a/trunk/Documentation/device-mapper/thin-provisioning.txt +++ b/trunk/Documentation/device-mapper/thin-provisioning.txt @@ -231,9 +231,6 @@ i) Constructor no_discard_passdown: Don't pass discards down to the underlying data device, but just remove the mapping. - read_only: Don't allow any changes to be made to the pool - metadata. - Data block size must be between 64KB (128 sectors) and 1GB (2097152 sectors) inclusive. @@ -242,7 +239,7 @@ ii) Status / / - [no_]discard_passdown ro|rw + transaction id: A 64-bit number used by userspace to help synchronise with metadata @@ -260,21 +257,6 @@ ii) Status held root. This feature is not yet implemented so '-' is always returned. - discard_passdown|no_discard_passdown - Whether or not discards are actually being passed down to the - underlying device. When this is enabled when loading the table, - it can get disabled if the underlying device doesn't support it. - - ro|rw - If the pool encounters certain types of device failures it will - drop into a read-only metadata mode in which no changes to - the pool metadata (like allocating new blocks) are permitted. - - In serious cases where even a read-only mode is deemed unsafe - no further I/O will be permitted and the status will just - contain the string 'Fail'. The userspace recovery tools - should then be used. - iii) Messages create_thin @@ -347,7 +329,3 @@ regain some space then send the 'trim' message to the pool. ii) Status - - If the pool has encountered device errors and failed, the status - will just contain the string 'Fail'. The userspace recovery - tools should then be used. diff --git a/trunk/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt b/trunk/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt deleted file mode 100644 index 94e642a33db0..000000000000 --- a/trunk/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt +++ /dev/null @@ -1,15 +0,0 @@ -Calxeda Highbank L2 cache ECC - -Properties: -- compatible : Should be "calxeda,hb-sregs-l2-ecc" -- reg : Address and size for ECC error interrupt clear registers. -- interrupts : Should be single bit error interrupt, then double bit error - interrupt. - -Example: - - sregs@fff3c200 { - compatible = "calxeda,hb-sregs-l2-ecc"; - reg = <0xfff3c200 0x100>; - interrupts = <0 71 4 0 72 4>; - }; diff --git a/trunk/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt b/trunk/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt deleted file mode 100644 index f770ac0893d4..000000000000 --- a/trunk/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt +++ /dev/null @@ -1,14 +0,0 @@ -Calxeda DDR memory controller - -Properties: -- compatible : Should be "calxeda,hb-ddr-ctrl" -- reg : Address and size for DDR controller registers. -- interrupts : Interrupt for DDR controller. - -Example: - - memory-controller@fff00000 { - compatible = "calxeda,hb-ddr-ctrl"; - reg = <0xfff00000 0x1000>; - interrupts = <0 91 4>; - }; diff --git a/trunk/Documentation/devicetree/bindings/arm/mrvl/intc.txt b/trunk/Documentation/devicetree/bindings/arm/mrvl/intc.txt index 8b53273cb22f..80b9a94d9a23 100644 --- a/trunk/Documentation/devicetree/bindings/arm/mrvl/intc.txt +++ b/trunk/Documentation/devicetree/bindings/arm/mrvl/intc.txt @@ -38,23 +38,3 @@ Example: reg-names = "mux status", "mux mask"; mrvl,intc-nr-irqs = <2>; }; - -* Marvell Orion Interrupt controller - -Required properties -- compatible : Should be "marvell,orion-intc". -- #interrupt-cells: Specifies the number of cells needed to encode an - interrupt source. Supported value is <1>. -- interrupt-controller : Declare this node to be an interrupt controller. -- reg : Interrupt mask address. A list of 4 byte ranges, one per controller. - One entry in the list represents 32 interrupts. - -Example: - - intc: interrupt-controller { - compatible = "marvell,orion-intc", "marvell,intc"; - interrupt-controller; - #interrupt-cells = <1>; - reg = <0xfed20204 0x04>, - <0xfed20214 0x04>; - }; diff --git a/trunk/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt b/trunk/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt deleted file mode 100644 index 93986a5a8018..000000000000 --- a/trunk/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt +++ /dev/null @@ -1,30 +0,0 @@ -* Compact Flash - -The Cavium Compact Flash device is connected to the Octeon Boot Bus, -and is thus a child of the Boot Bus device. It can read and write -industry standard compact flash devices. - -Properties: -- compatible: "cavium,ebt3000-compact-flash"; - - Compatibility with many Cavium evaluation boards. - -- reg: The base address of the the CF chip select banks. Depending on - the device configuration, there may be one or two banks. - -- cavium,bus-width: The width of the connection to the CF devices. Valid - values are 8 and 16. - -- cavium,true-ide: Optional, if present the CF connection is in True IDE mode. - -- cavium,dma-engine-handle: Optional, a phandle for the DMA Engine connected - to this device. - -Example: - compact-flash@5,0 { - compatible = "cavium,ebt3000-compact-flash"; - reg = <5 0 0x10000>, <6 0 0x10000>; - cavium,bus-width = <16>; - cavium,true-ide; - cavium,dma-engine-handle = <&dma0>; - }; diff --git a/trunk/Documentation/devicetree/bindings/ata/marvell.txt b/trunk/Documentation/devicetree/bindings/ata/marvell.txt deleted file mode 100644 index b5cdd20cde9c..000000000000 --- a/trunk/Documentation/devicetree/bindings/ata/marvell.txt +++ /dev/null @@ -1,16 +0,0 @@ -* Marvell Orion SATA - -Required Properties: -- compatibility : "marvell,orion-sata" -- reg : Address range of controller -- interrupts : Interrupt controller is using -- nr-ports : Number of SATA ports in use. - -Example: - - sata@80000 { - compatible = "marvell,orion-sata"; - reg = <0x80000 0x5000>; - interrupts = <21>; - nr-ports = <2>; - } diff --git a/trunk/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt b/trunk/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt deleted file mode 100644 index 9d6dcd3fe7f9..000000000000 --- a/trunk/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt +++ /dev/null @@ -1,49 +0,0 @@ -* General Purpose Input Output (GPIO) bus. - -Properties: -- compatible: "cavium,octeon-3860-gpio" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the GPIO unit's register bank. - -- gpio-controller: This is a GPIO controller. - -- #gpio-cells: Must be <2>. The first cell is the GPIO pin. - -- interrupt-controller: The GPIO controller is also an interrupt - controller, many of its pins may be configured as an interrupt - source. - -- #interrupt-cells: Must be <2>. The first cell is the GPIO pin - connected to the interrupt source. The second cell is the interrupt - triggering protocol and may have one of four values: - 1 - edge triggered on the rising edge. - 2 - edge triggered on the falling edge - 4 - level triggered active high. - 8 - level triggered active low. - -- interrupts: Interrupt routing for each pin. - -Example: - - gpio-controller@1070000000800 { - #gpio-cells = <2>; - compatible = "cavium,octeon-3860-gpio"; - reg = <0x10700 0x00000800 0x0 0x100>; - gpio-controller; - /* Interrupts are specified by two parts: - * 1) GPIO pin number (0..15) - * 2) Triggering (1 - edge rising - * 2 - edge falling - * 4 - level active high - * 8 - level active low) - */ - interrupt-controller; - #interrupt-cells = <2>; - /* The GPIO pin connect to 16 consecutive CUI bits */ - interrupts = <0 16>, <0 17>, <0 18>, <0 19>, - <0 20>, <0 21>, <0 22>, <0 23>, - <0 24>, <0 25>, <0 26>, <0 27>, - <0 28>, <0 29>, <0 30>, <0 31>; - }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/gpio-i2c.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt similarity index 100% rename from trunk/Documentation/devicetree/bindings/i2c/gpio-i2c.txt rename to trunk/Documentation/devicetree/bindings/gpio/gpio_i2c.txt diff --git a/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt index e13787498bcf..05428f39d9ac 100644 --- a/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt +++ b/trunk/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt @@ -27,26 +27,3 @@ Example: interrupt-controller; #interrupt-cells = <1>; }; - -* Marvell Orion GPIO Controller - -Required properties: -- compatible : Should be "marvell,orion-gpio" -- reg : Address and length of the register set for controller. -- gpio-controller : So we know this is a gpio controller. -- ngpio : How many gpios this controller has. -- interrupts : Up to 4 Interrupts for the controller. - -Optional properties: -- mask-offset : For SMP Orions, offset for Nth CPU - -Example: - - gpio0: gpio@10100 { - compatible = "marvell,orion-gpio"; - #gpio-cells = <2>; - gpio-controller; - reg = <0x10100 0x40>; - ngpio = <32>; - interrupts = <35>, <36>, <37>, <38>; - }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/cavium-i2c.txt b/trunk/Documentation/devicetree/bindings/i2c/cavium-i2c.txt deleted file mode 100644 index dced82ebe31d..000000000000 --- a/trunk/Documentation/devicetree/bindings/i2c/cavium-i2c.txt +++ /dev/null @@ -1,34 +0,0 @@ -* Two Wire Serial Interface (TWSI) / I2C - -- compatible: "cavium,octeon-3860-twsi" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the TWSI/I2C bus controller register bank. - -- #address-cells: Must be <1>. - -- #size-cells: Must be <0>. I2C addresses have no size component. - -- interrupts: A single interrupt specifier. - -- clock-frequency: The I2C bus clock rate in Hz. - -Example: - twsi0: i2c@1180000001000 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "cavium,octeon-3860-twsi"; - reg = <0x11800 0x00001000 0x0 0x200>; - interrupts = <0 45>; - clock-frequency = <100000>; - - rtc@68 { - compatible = "dallas,ds1337"; - reg = <0x68>; - }; - tmp@4c { - compatible = "ti,tmp421"; - reg = <0x4c>; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/i2c-mxs.txt b/trunk/Documentation/devicetree/bindings/i2c/i2c-mxs.txt index 30ac3a0557f7..1bfc02de1b0c 100644 --- a/trunk/Documentation/devicetree/bindings/i2c/i2c-mxs.txt +++ b/trunk/Documentation/devicetree/bindings/i2c/i2c-mxs.txt @@ -4,8 +4,6 @@ Required properties: - compatible: Should be "fsl,-i2c" - reg: Should contain registers location and length - interrupts: Should contain ERROR and DMA interrupts -- clock-frequency: Desired I2C bus clock frequency in Hz. - Only 100000Hz and 400000Hz modes are supported. Examples: @@ -15,5 +13,4 @@ i2c0: i2c@80058000 { compatible = "fsl,imx28-i2c"; reg = <0x80058000 2000>; interrupts = <111 68>; - clock-frequency = <100000>; }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/trunk/Documentation/devicetree/bindings/i2c/i2c-ocores.txt deleted file mode 100644 index c15781f4dc8c..000000000000 --- a/trunk/Documentation/devicetree/bindings/i2c/i2c-ocores.txt +++ /dev/null @@ -1,33 +0,0 @@ -Device tree configuration for i2c-ocores - -Required properties: -- compatible : "opencores,i2c-ocores" -- reg : bus address start and address range size of device -- interrupts : interrupt number -- clock-frequency : frequency of bus clock in Hz -- #address-cells : should be <1> -- #size-cells : should be <0> - -Optional properties: -- reg-shift : device register offsets are shifted by this value -- reg-io-width : io register width in bytes (1, 2 or 4) -- regstep : deprecated, use reg-shift above - -Example: - - i2c0: ocores@a0000000 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "opencores,i2c-ocores"; - reg = <0xa0000000 0x8>; - interrupts = <10>; - clock-frequency = <20000000>; - - reg-shift = <0>; /* 8 bit registers */ - reg-io-width = <1>; /* 8 bit read/write */ - - dummy@60 { - compatible = "dummy"; - reg = <0x60>; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt index 0f7945019f6f..b891ee218354 100644 --- a/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt +++ b/trunk/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt @@ -1,4 +1,4 @@ -* Marvell MMP I2C controller +* I2C Required properties : @@ -32,20 +32,3 @@ Examples: interrupts = <58>; }; -* Marvell MV64XXX I2C controller - -Required properties : - - - reg : Offset and length of the register set for the device - - compatible : Should be "marvell,mv64xxx-i2c" - - interrupts : The interrupt number - - clock-frequency : Desired I2C bus clock frequency in Hz. - -Examples: - - i2c@11000 { - compatible = "marvell,mv64xxx-i2c"; - reg = <0x11000 0x20>; - interrupts = <29>; - clock-frequency = <100000>; - }; diff --git a/trunk/Documentation/devicetree/bindings/mfd/ab8500.txt b/trunk/Documentation/devicetree/bindings/mfd/ab8500.txt deleted file mode 100644 index 69e757a657a0..000000000000 --- a/trunk/Documentation/devicetree/bindings/mfd/ab8500.txt +++ /dev/null @@ -1,123 +0,0 @@ -* AB8500 Multi-Functional Device (MFD) - -Required parent device properties: -- compatible : contains "stericsson,ab8500"; -- interrupts : contains the IRQ line for the AB8500 -- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain) -- #interrupt-cells : should be 2, for 2-cell format - - The first cell is the AB8500 local IRQ number - - The second cell is used to specify optional parameters - - 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 - -Optional parent device properties: -- reg : contains the PRCMU mailbox address for the AB8500 i2c port - -The AB8500 consists of a large and varied group of sub-devices: - -Device IRQ Names Supply Names Description ------- --------- ------------ ----------- -ab8500-bm : : : Battery Manager -ab8500-btemp : : : Battery Temperature -ab8500-charger : : : Battery Charger -ab8500-fg : : : Fuel Gauge -ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter - SW_CONV_END : : -ab8500-gpio : : : GPIO Controller -ab8500-ponkey : ONKEY_DBF : : Power-on Key - ONKEY_DBR : : -ab8500-pwm : : : Pulse Width Modulator -ab8500-regulator : : : Regulators -ab8500-rtc : 60S : : Real Time Clock - : ALARM : : -ab8500-sysctrl : : : System Control -ab8500-usb : ID_WAKEUP_R : vddulpivio18 : Universal Serial Bus - : ID_WAKEUP_F : v-ape : - : VBUS_DET_F : musb_1v8 : - : VBUS_DET_R : : - : USB_LINK_STATUS : : - : USB_ADP_PROBE_PLUG : : - : USB_ADP_PROBE_UNPLUG : : - -Required child device properties: -- compatible : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey| - pwm|regulator|rtc|sysctrl|usb]"; - -Optional child device properties: -- interrupts : contains the device IRQ(s) using the 2-cell format (see above) -- interrupt-names : contains names of IRQ resource in the order in which they were - supplied in the interrupts property -- -supply : contains a phandle to the regulator supply node in Device Tree - -ab8500@5 { - compatible = "stericsson,ab8500"; - reg = <5>; /* mailbox 5 is i2c */ - interrupts = <0 40 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - - ab8500-rtc { - compatible = "stericsson,ab8500-rtc"; - interrupts = <17 0x4 - 18 0x4>; - interrupt-names = "60S", "ALARM"; - }; - - ab8500-gpadc { - compatible = "stericsson,ab8500-gpadc"; - interrupts = <32 0x4 - 39 0x4>; - interrupt-names = "HW_CONV_END", "SW_CONV_END"; - vddadc-supply = <&ab8500_ldo_tvout_reg>; - }; - - ab8500-usb { - compatible = "stericsson,ab8500-usb"; - interrupts = < 90 0x4 - 96 0x4 - 14 0x4 - 15 0x4 - 79 0x4 - 74 0x4 - 75 0x4>; - interrupt-names = "ID_WAKEUP_R", - "ID_WAKEUP_F", - "VBUS_DET_F", - "VBUS_DET_R", - "USB_LINK_STATUS", - "USB_ADP_PROBE_PLUG", - "USB_ADP_PROBE_UNPLUG"; - vddulpivio18-supply = <&ab8500_ldo_initcore_reg>; - v-ape-supply = <&db8500_vape_reg>; - musb_1v8-supply = <&db8500_vsmps2_reg>; - }; - - ab8500-ponkey { - compatible = "stericsson,ab8500-ponkey"; - interrupts = <6 0x4 - 7 0x4>; - interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; - }; - - ab8500-sysctrl { - compatible = "stericsson,ab8500-sysctrl"; - }; - - ab8500-pwm { - compatible = "stericsson,ab8500-pwm"; - }; - - ab8500-regulators { - compatible = "stericsson,ab8500-regulator"; - - ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { - /* - * See: Documentation/devicetree/bindings/regulator/regulator.txt - * for more information on regulators - */ - }; - }; -}; diff --git a/trunk/Documentation/devicetree/bindings/mfd/max77686.txt b/trunk/Documentation/devicetree/bindings/mfd/max77686.txt deleted file mode 100644 index c6a3469d3436..000000000000 --- a/trunk/Documentation/devicetree/bindings/mfd/max77686.txt +++ /dev/null @@ -1,59 +0,0 @@ -Maxim MAX77686 multi-function device - -MAX77686 is a Mulitifunction device with PMIC, RTC and Charger on chip. It is -interfaced to host controller using i2c interface. PMIC and Charger submodules -are addressed using same i2c slave address whereas RTC submodule uses -different i2c slave address,presently for which we are statically creating i2c -client while probing.This document describes the binding for mfd device and -PMIC submodule. - -Required properties: -- compatible : Must be "maxim,max77686"; -- reg : Specifies the i2c slave address of PMIC block. -- interrupts : This i2c device has an IRQ line connected to the main SoC. -- interrupt-parent : The parent interrupt controller. - -Optional node: -- voltage-regulators : The regulators of max77686 have to be instantiated - under subnode named "voltage-regulators" using the following format. - - regulator_name { - regulator-compatible = LDOn/BUCKn - standard regulator constraints.... - }; - refer Documentation/devicetree/bindings/regulator/regulator.txt - - The regulator-compatible property of regulator should initialized with string -to get matched with their hardware counterparts as follow: - - -LDOn : for LDOs, where n can lie in range 1 to 26. - example: LDO1, LDO2, LDO26. - -BUCKn : for BUCKs, where n can lie in range 1 to 9. - example: BUCK1, BUCK5, BUCK9. - -Example: - - max77686@09 { - compatible = "maxim,max77686"; - interrupt-parent = <&wakeup_eint>; - interrupts = <26 0>; - reg = <0x09>; - - voltage-regulators { - ldo11_reg { - regulator-compatible = "LDO11"; - regulator-name = "vdd_ldo11"; - regulator-min-microvolt = <1900000>; - regulator-max-microvolt = <1900000>; - regulator-always-on; - }; - - buck1_reg { - regulator-compatible = "BUCK1"; - regulator-name = "vdd_mif"; - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <1300000>; - regulator-always-on; - regulator-boot-on; - }; - } diff --git a/trunk/Documentation/devicetree/bindings/mfd/tps65910.txt b/trunk/Documentation/devicetree/bindings/mfd/tps65910.txt index db03599ae4dc..d2802d4717bc 100644 --- a/trunk/Documentation/devicetree/bindings/mfd/tps65910.txt +++ b/trunk/Documentation/devicetree/bindings/mfd/tps65910.txt @@ -81,7 +81,7 @@ Example: ti,vmbch-threshold = 0; ti,vmbch2-threshold = 0; - ti,en-ck32k-xtal; + ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>; vcc1-supply = <®_parent>; diff --git a/trunk/Documentation/devicetree/bindings/mfd/twl6040.txt b/trunk/Documentation/devicetree/bindings/mfd/twl6040.txt index c855240f3a0e..bc67c6f424aa 100644 --- a/trunk/Documentation/devicetree/bindings/mfd/twl6040.txt +++ b/trunk/Documentation/devicetree/bindings/mfd/twl6040.txt @@ -6,7 +6,7 @@ They are connected ot the host processor via i2c for commands, McPDM for audio data and commands. Required properties: -- compatible : "ti,twl6040" for twl6040, "ti,twl6041" for twl6041 +- compatible : Must be "ti,twl6040"; - reg: must be 0x4b for i2c address - interrupts: twl6040 has one interrupt line connecteded to the main SoC - interrupt-parent: The parent interrupt controller diff --git a/trunk/Documentation/devicetree/bindings/mips/cavium/bootbus.txt b/trunk/Documentation/devicetree/bindings/mips/cavium/bootbus.txt deleted file mode 100644 index 6581478225a2..000000000000 --- a/trunk/Documentation/devicetree/bindings/mips/cavium/bootbus.txt +++ /dev/null @@ -1,126 +0,0 @@ -* Boot Bus - -The Octeon Boot Bus is a configurable parallel bus with 8 chip -selects. Each chip select is independently configurable. - -Properties: -- compatible: "cavium,octeon-3860-bootbus" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the Boot Bus' register bank. - -- #address-cells: Must be <2>. The first cell is the chip select - within the bootbus. The second cell is the offset from the chip select. - -- #size-cells: Must be <1>. - -- ranges: There must be one one triplet of (child-bus-address, - parent-bus-address, length) for each active chip select. If the - length element for any triplet is zero, the chip select is disabled, - making it inactive. - -The configuration parameters for each chip select are stored in child -nodes. - -Configuration Properties: -- compatible: "cavium,octeon-3860-bootbus-config" - -- cavium,cs-index: A single cell indicating the chip select that - corresponds to this configuration. - -- cavium,t-adr: A cell specifying the ADR timing (in nS). - -- cavium,t-ce: A cell specifying the CE timing (in nS). - -- cavium,t-oe: A cell specifying the OE timing (in nS). - -- cavium,t-we: A cell specifying the WE timing (in nS). - -- cavium,t-rd-hld: A cell specifying the RD_HLD timing (in nS). - -- cavium,t-wr-hld: A cell specifying the WR_HLD timing (in nS). - -- cavium,t-pause: A cell specifying the PAUSE timing (in nS). - -- cavium,t-wait: A cell specifying the WAIT timing (in nS). - -- cavium,t-page: A cell specifying the PAGE timing (in nS). - -- cavium,t-rd-dly: A cell specifying the RD_DLY timing (in nS). - -- cavium,pages: A cell specifying the PAGES parameter (0 = 8 bytes, 1 - = 2 bytes, 2 = 4 bytes, 3 = 8 bytes). - -- cavium,wait-mode: Optional. If present, wait mode (WAITM) is selected. - -- cavium,page-mode: Optional. If present, page mode (PAGEM) is selected. - -- cavium,bus-width: A cell specifying the WIDTH parameter (in bits) of - the bus for this chip select. - -- cavium,ale-mode: Optional. If present, ALE mode is selected. - -- cavium,sam-mode: Optional. If present, SAM mode is selected. - -- cavium,or-mode: Optional. If present, OR mode is selected. - -Example: - bootbus: bootbus@1180000000000 { - compatible = "cavium,octeon-3860-bootbus"; - reg = <0x11800 0x00000000 0x0 0x200>; - /* The chip select number and offset */ - #address-cells = <2>; - /* The size of the chip select region */ - #size-cells = <1>; - ranges = <0 0 0x0 0x1f400000 0xc00000>, - <1 0 0x10000 0x30000000 0>, - <2 0 0x10000 0x40000000 0>, - <3 0 0x10000 0x50000000 0>, - <4 0 0x0 0x1d020000 0x10000>, - <5 0 0x0 0x1d040000 0x10000>, - <6 0 0x0 0x1d050000 0x10000>, - <7 0 0x10000 0x90000000 0>; - - cavium,cs-config@0 { - compatible = "cavium,octeon-3860-bootbus-config"; - cavium,cs-index = <0>; - cavium,t-adr = <20>; - cavium,t-ce = <60>; - cavium,t-oe = <60>; - cavium,t-we = <45>; - cavium,t-rd-hld = <35>; - cavium,t-wr-hld = <45>; - cavium,t-pause = <0>; - cavium,t-wait = <0>; - cavium,t-page = <35>; - cavium,t-rd-dly = <0>; - - cavium,pages = <0>; - cavium,bus-width = <8>; - }; - . - . - . - cavium,cs-config@6 { - compatible = "cavium,octeon-3860-bootbus-config"; - cavium,cs-index = <6>; - cavium,t-adr = <5>; - cavium,t-ce = <300>; - cavium,t-oe = <270>; - cavium,t-we = <150>; - cavium,t-rd-hld = <100>; - cavium,t-wr-hld = <70>; - cavium,t-pause = <0>; - cavium,t-wait = <0>; - cavium,t-page = <320>; - cavium,t-rd-dly = <0>; - - cavium,pages = <0>; - cavium,wait-mode; - cavium,bus-width = <16>; - }; - . - . - . - }; diff --git a/trunk/Documentation/devicetree/bindings/mips/cavium/ciu.txt b/trunk/Documentation/devicetree/bindings/mips/cavium/ciu.txt deleted file mode 100644 index 2c2d0746b43d..000000000000 --- a/trunk/Documentation/devicetree/bindings/mips/cavium/ciu.txt +++ /dev/null @@ -1,26 +0,0 @@ -* Central Interrupt Unit - -Properties: -- compatible: "cavium,octeon-3860-ciu" - - Compatibility with all cn3XXX, cn5XXX and cn63XX SOCs. - -- interrupt-controller: This is an interrupt controller. - -- reg: The base address of the CIU's register bank. - -- #interrupt-cells: Must be <2>. The first cell is the bank within - the CIU and may have a value of 0 or 1. The second cell is the bit - within the bank and may have a value between 0 and 63. - -Example: - interrupt-controller@1070000000000 { - compatible = "cavium,octeon-3860-ciu"; - interrupt-controller; - /* Interrupts are specified by two parts: - * 1) Controller register (0 or 1) - * 2) Bit within the register (0..63) - */ - #interrupt-cells = <2>; - reg = <0x10700 0x00000000 0x0 0x7000>; - }; diff --git a/trunk/Documentation/devicetree/bindings/mips/cavium/ciu2.txt b/trunk/Documentation/devicetree/bindings/mips/cavium/ciu2.txt deleted file mode 100644 index 0ec7ba8bbbcb..000000000000 --- a/trunk/Documentation/devicetree/bindings/mips/cavium/ciu2.txt +++ /dev/null @@ -1,27 +0,0 @@ -* Central Interrupt Unit - -Properties: -- compatible: "cavium,octeon-6880-ciu2" - - Compatibility with 68XX SOCs. - -- interrupt-controller: This is an interrupt controller. - -- reg: The base address of the CIU's register bank. - -- #interrupt-cells: Must be <2>. The first cell is the bank within - the CIU and may have a value between 0 and 63. The second cell is - the bit within the bank and may also have a value between 0 and 63. - -Example: - interrupt-controller@1070100000000 { - compatible = "cavium,octeon-6880-ciu2"; - interrupt-controller; - /* Interrupts are specified by two parts: - * 1) Controller register (0..63) - * 2) Bit within the register (0..63) - */ - #address-cells = <0>; - #interrupt-cells = <2>; - reg = <0x10701 0x00000000 0x0 0x4000000>; - }; diff --git a/trunk/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt b/trunk/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt deleted file mode 100644 index cb4291e3b1d1..000000000000 --- a/trunk/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt +++ /dev/null @@ -1,21 +0,0 @@ -* DMA Engine. - -The Octeon DMA Engine transfers between the Boot Bus and main memory. -The DMA Engine will be refered to by phandle by any device that is -connected to it. - -Properties: -- compatible: "cavium,octeon-5750-bootbus-dma" - - Compatibility with all cn52XX, cn56XX and cn6XXX SOCs. - -- reg: The base address of the DMA Engine's register bank. - -- interrupts: A single interrupt specifier. - -Example: - dma0: dma-engine@1180000000100 { - compatible = "cavium,octeon-5750-bootbus-dma"; - reg = <0x11800 0x00000100 0x0 0x8>; - interrupts = <0 63>; - }; diff --git a/trunk/Documentation/devicetree/bindings/mips/cavium/uctl.txt b/trunk/Documentation/devicetree/bindings/mips/cavium/uctl.txt deleted file mode 100644 index aa66b9b8d801..000000000000 --- a/trunk/Documentation/devicetree/bindings/mips/cavium/uctl.txt +++ /dev/null @@ -1,46 +0,0 @@ -* UCTL USB controller glue - -Properties: -- compatible: "cavium,octeon-6335-uctl" - - Compatibility with all cn6XXX SOCs. - -- reg: The base address of the UCTL register bank. - -- #address-cells: Must be <2>. - -- #size-cells: Must be <2>. - -- ranges: Empty to signify direct mapping of the children. - -- refclk-frequency: A single cell containing the reference clock - frequency in Hz. - -- refclk-type: A string describing the reference clock connection - either "crystal" or "external". - -Example: - uctl@118006f000000 { - compatible = "cavium,octeon-6335-uctl"; - reg = <0x11800 0x6f000000 0x0 0x100>; - ranges; /* Direct mapping */ - #address-cells = <2>; - #size-cells = <2>; - /* 12MHz, 24MHz and 48MHz allowed */ - refclk-frequency = <24000000>; - /* Either "crystal" or "external" */ - refclk-type = "crystal"; - - ehci@16f0000000000 { - compatible = "cavium,octeon-6335-ehci","usb-ehci"; - reg = <0x16f00 0x00000000 0x0 0x100>; - interrupts = <0 56>; - big-endian-regs; - }; - ohci@16f0000000400 { - compatible = "cavium,octeon-6335-ohci","usb-ohci"; - reg = <0x16f00 0x00000400 0x0 0x100>; - interrupts = <0 56>; - big-endian-regs; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/net/cavium-mdio.txt b/trunk/Documentation/devicetree/bindings/net/cavium-mdio.txt deleted file mode 100644 index 04cb7491d232..000000000000 --- a/trunk/Documentation/devicetree/bindings/net/cavium-mdio.txt +++ /dev/null @@ -1,27 +0,0 @@ -* System Management Interface (SMI) / MDIO - -Properties: -- compatible: "cavium,octeon-3860-mdio" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the MDIO bus controller register bank. - -- #address-cells: Must be <1>. - -- #size-cells: Must be <0>. MDIO addresses have no size component. - -Typically an MDIO bus might have several children. - -Example: - mdio@1180000001800 { - compatible = "cavium,octeon-3860-mdio"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x11800 0x00001800 0x0 0x40>; - - ethernet-phy@0 { - ... - reg = <0>; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/net/cavium-mix.txt b/trunk/Documentation/devicetree/bindings/net/cavium-mix.txt deleted file mode 100644 index 5da628db68bf..000000000000 --- a/trunk/Documentation/devicetree/bindings/net/cavium-mix.txt +++ /dev/null @@ -1,39 +0,0 @@ -* MIX Ethernet controller. - -Properties: -- compatible: "cavium,octeon-5750-mix" - - Compatibility with all cn5XXX and cn6XXX SOCs populated with MIX - devices. - -- reg: The base addresses of four separate register banks. The first - bank contains the MIX registers. The second bank the corresponding - AGL registers. The third bank are the AGL registers shared by all - MIX devices present. The fourth bank is the AGL_PRT_CTL shared by - all MIX devices present. - -- cell-index: A single cell specifying which portion of the shared - register banks corresponds to this MIX device. - -- interrupts: Two interrupt specifiers. The first is the MIX - interrupt routing and the second the routing for the AGL interrupts. - -- mac-address: Optional, the MAC address to assign to the device. - -- local-mac-address: Optional, the MAC address to assign to the device - if mac-address is not specified. - -- phy-handle: Optional, a phandle for the PHY device connected to this device. - -Example: - ethernet@1070000100800 { - compatible = "cavium,octeon-5750-mix"; - reg = <0x10700 0x00100800 0x0 0x100>, /* MIX */ - <0x11800 0xE0000800 0x0 0x300>, /* AGL */ - <0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED */ - <0x11800 0xE0002008 0x0 0x8>; /* AGL_PRT_CTL */ - cell-index = <1>; - interrupts = <1 18>, < 1 46>; - local-mac-address = [ 00 0f b7 10 63 54 ]; - phy-handle = <&phy1>; - }; diff --git a/trunk/Documentation/devicetree/bindings/net/cavium-pip.txt b/trunk/Documentation/devicetree/bindings/net/cavium-pip.txt deleted file mode 100644 index d4c53ba04b3b..000000000000 --- a/trunk/Documentation/devicetree/bindings/net/cavium-pip.txt +++ /dev/null @@ -1,98 +0,0 @@ -* PIP Ethernet nexus. - -The PIP Ethernet nexus can control several data packet input/output -devices. The devices have a two level grouping scheme. There may be -several interfaces, and each interface may have several ports. These -ports might be an individual Ethernet PHY. - - -Properties for the PIP nexus: -- compatible: "cavium,octeon-3860-pip" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the PIP's register bank. - -- #address-cells: Must be <1>. - -- #size-cells: Must be <0>. - -Properties for PIP interfaces which is a child the PIP nexus: -- compatible: "cavium,octeon-3860-pip-interface" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The interface number. - -- #address-cells: Must be <1>. - -- #size-cells: Must be <0>. - -Properties for PIP port which is a child the PIP interface: -- compatible: "cavium,octeon-3860-pip-port" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The port number within the interface group. - -- mac-address: Optional, the MAC address to assign to the device. - -- local-mac-address: Optional, the MAC address to assign to the device - if mac-address is not specified. - -- phy-handle: Optional, a phandle for the PHY device connected to this device. - -Example: - - pip@11800a0000000 { - compatible = "cavium,octeon-3860-pip"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x11800 0xa0000000 0x0 0x2000>; - - interface@0 { - compatible = "cavium,octeon-3860-pip-interface"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0>; /* interface */ - - ethernet@0 { - compatible = "cavium,octeon-3860-pip-port"; - reg = <0x0>; /* Port */ - local-mac-address = [ 00 0f b7 10 63 60 ]; - phy-handle = <&phy2>; - }; - ethernet@1 { - compatible = "cavium,octeon-3860-pip-port"; - reg = <0x1>; /* Port */ - local-mac-address = [ 00 0f b7 10 63 61 ]; - phy-handle = <&phy3>; - }; - ethernet@2 { - compatible = "cavium,octeon-3860-pip-port"; - reg = <0x2>; /* Port */ - local-mac-address = [ 00 0f b7 10 63 62 ]; - phy-handle = <&phy4>; - }; - ethernet@3 { - compatible = "cavium,octeon-3860-pip-port"; - reg = <0x3>; /* Port */ - local-mac-address = [ 00 0f b7 10 63 63 ]; - phy-handle = <&phy5>; - }; - }; - - interface@1 { - compatible = "cavium,octeon-3860-pip-interface"; - #address-cells = <1>; - #size-cells = <0>; - reg = <1>; /* interface */ - - ethernet@0 { - compatible = "cavium,octeon-3860-pip-port"; - reg = <0x0>; /* Port */ - local-mac-address = [ 00 0f b7 10 63 64 ]; - phy-handle = <&phy6>; - }; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/net/cpsw.txt b/trunk/Documentation/devicetree/bindings/net/cpsw.txt deleted file mode 100644 index dcaabe9fe869..000000000000 --- a/trunk/Documentation/devicetree/bindings/net/cpsw.txt +++ /dev/null @@ -1,109 +0,0 @@ -TI SoC Ethernet Switch Controller Device Tree Bindings ------------------------------------------------------- - -Required properties: -- compatible : Should be "ti,cpsw" -- reg : physical base address and size of the cpsw - registers map -- interrupts : property with a value describing the interrupt - number -- interrupt-parent : The parent interrupt controller -- cpdma_channels : Specifies number of channels in CPDMA -- host_port_no : Specifies host port shift -- cpdma_reg_ofs : Specifies CPDMA submodule register offset -- cpdma_sram_ofs : Specifies CPDMA SRAM offset -- ale_reg_ofs : Specifies ALE submodule register offset -- ale_entries : Specifies No of entries ALE can hold -- host_port_reg_ofs : Specifies host port register offset -- hw_stats_reg_ofs : Specifies hardware statistics register offset -- bd_ram_ofs : Specifies internal desciptor RAM offset -- bd_ram_size : Specifies internal descriptor RAM size -- rx_descs : Specifies number of Rx descriptors -- mac_control : Specifies Default MAC control register content - for the specific platform -- slaves : Specifies number for slaves -- slave_reg_ofs : Specifies slave register offset -- sliver_reg_ofs : Specifies slave sliver register offset -- phy_id : Specifies slave phy id -- mac-address : Specifies slave MAC address - -Optional properties: -- ti,hwmods : Must be "cpgmac0" -- no_bd_ram : Must be 0 or 1 - -Note: "ti,hwmods" field is used to fetch the base address and irq -resources from TI, omap hwmod data base during device registration. -Future plan is to migrate hwmod data base contents into device tree -blob so that, all the required data will be used from device tree dts -file. - -Examples: - - mac: ethernet@4A100000 { - compatible = "ti,cpsw"; - reg = <0x4A100000 0x1000>; - interrupts = <55 0x4>; - interrupt-parent = <&intc>; - cpdma_channels = <8>; - host_port_no = <0>; - cpdma_reg_ofs = <0x800>; - cpdma_sram_ofs = <0xa00>; - ale_reg_ofs = <0xd00>; - ale_entries = <1024>; - host_port_reg_ofs = <0x108>; - hw_stats_reg_ofs = <0x900>; - bd_ram_ofs = <0x2000>; - bd_ram_size = <0x2000>; - no_bd_ram = <0>; - rx_descs = <64>; - mac_control = <0x20>; - slaves = <2>; - cpsw_emac0: slave@0 { - slave_reg_ofs = <0x208>; - sliver_reg_ofs = <0xd80>; - phy_id = "davinci_mdio.16:00"; - /* Filled in by U-Boot */ - mac-address = [ 00 00 00 00 00 00 ]; - }; - cpsw_emac1: slave@1 { - slave_reg_ofs = <0x308>; - sliver_reg_ofs = <0xdc0>; - phy_id = "davinci_mdio.16:01"; - /* Filled in by U-Boot */ - mac-address = [ 00 00 00 00 00 00 ]; - }; - }; - -(or) - mac: ethernet@4A100000 { - compatible = "ti,cpsw"; - ti,hwmods = "cpgmac0"; - cpdma_channels = <8>; - host_port_no = <0>; - cpdma_reg_ofs = <0x800>; - cpdma_sram_ofs = <0xa00>; - ale_reg_ofs = <0xd00>; - ale_entries = <1024>; - host_port_reg_ofs = <0x108>; - hw_stats_reg_ofs = <0x900>; - bd_ram_ofs = <0x2000>; - bd_ram_size = <0x2000>; - no_bd_ram = <0>; - rx_descs = <64>; - mac_control = <0x20>; - slaves = <2>; - cpsw_emac0: slave@0 { - slave_reg_ofs = <0x208>; - sliver_reg_ofs = <0xd80>; - phy_id = "davinci_mdio.16:00"; - /* Filled in by U-Boot */ - mac-address = [ 00 00 00 00 00 00 ]; - }; - cpsw_emac1: slave@1 { - slave_reg_ofs = <0x308>; - sliver_reg_ofs = <0xdc0>; - phy_id = "davinci_mdio.16:01"; - /* Filled in by U-Boot */ - mac-address = [ 00 00 00 00 00 00 ]; - }; - }; diff --git a/trunk/Documentation/devicetree/bindings/net/davinci-mdio.txt b/trunk/Documentation/devicetree/bindings/net/davinci-mdio.txt deleted file mode 100644 index 72efaaf764f7..000000000000 --- a/trunk/Documentation/devicetree/bindings/net/davinci-mdio.txt +++ /dev/null @@ -1,33 +0,0 @@ -TI SoC Davinci MDIO Controller Device Tree Bindings ---------------------------------------------------- - -Required properties: -- compatible : Should be "ti,davinci_mdio" -- reg : physical base address and size of the davinci mdio - registers map -- bus_freq : Mdio Bus frequency - -Optional properties: -- ti,hwmods : Must be "davinci_mdio" - -Note: "ti,hwmods" field is used to fetch the base address and irq -resources from TI, omap hwmod data base during device registration. -Future plan is to migrate hwmod data base contents into device tree -blob so that, all the required data will be used from device tree dts -file. - -Examples: - - mdio: davinci_mdio@4A101000 { - compatible = "ti,cpsw"; - reg = <0x4A101000 0x1000>; - bus_freq = <1000000>; - }; - -(or) - - mdio: davinci_mdio@4A101000 { - compatible = "ti,cpsw"; - ti,hwmods = "davinci_mdio"; - bus_freq = <1000000>; - }; diff --git a/trunk/Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt b/trunk/Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt deleted file mode 100644 index cfe1db3bb6e9..000000000000 --- a/trunk/Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt +++ /dev/null @@ -1,12 +0,0 @@ -LPC32XX PWM controller - -Required properties: -- compatible: should be "nxp,lpc3220-pwm" -- reg: physical base address and length of the controller's registers - -Examples: - -pwm@0x4005C000 { - compatible = "nxp,lpc3220-pwm"; - reg = <0x4005C000 0x8>; -}; diff --git a/trunk/Documentation/devicetree/bindings/pwm/mxs-pwm.txt b/trunk/Documentation/devicetree/bindings/pwm/mxs-pwm.txt deleted file mode 100644 index b16f4a57d111..000000000000 --- a/trunk/Documentation/devicetree/bindings/pwm/mxs-pwm.txt +++ /dev/null @@ -1,17 +0,0 @@ -Freescale MXS PWM controller - -Required properties: -- compatible: should be "fsl,imx23-pwm" -- reg: physical base address and length of the controller's registers -- #pwm-cells: should be 2. The first cell specifies the per-chip index - of the PWM to use and the second cell is the duty cycle in nanoseconds. -- fsl,pwm-number: the number of PWM devices - -Example: - -pwm: pwm@80064000 { - compatible = "fsl,imx28-pwm", "fsl,imx23-pwm"; - reg = <0x80064000 2000>; - #pwm-cells = <2>; - fsl,pwm-number = <8>; -}; diff --git a/trunk/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/trunk/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt deleted file mode 100644 index bbbeedb4ec05..000000000000 --- a/trunk/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ /dev/null @@ -1,18 +0,0 @@ -Tegra SoC PWFM controller - -Required properties: -- compatible: should be one of: - - "nvidia,tegra20-pwm" - - "nvidia,tegra30-pwm" -- reg: physical base address and length of the controller's registers -- #pwm-cells: On Tegra the number of cells used to specify a PWM is 2. The - first cell specifies the per-chip index of the PWM to use and the second - cell is the duty cycle in nanoseconds. - -Example: - - pwm: pwm@7000a000 { - compatible = "nvidia,tegra20-pwm"; - reg = <0x7000a000 0x100>; - #pwm-cells = <2>; - }; diff --git a/trunk/Documentation/devicetree/bindings/pwm/pwm.txt b/trunk/Documentation/devicetree/bindings/pwm/pwm.txt deleted file mode 100644 index 73ec962bfe8c..000000000000 --- a/trunk/Documentation/devicetree/bindings/pwm/pwm.txt +++ /dev/null @@ -1,57 +0,0 @@ -Specifying PWM information for devices -====================================== - -1) PWM user nodes ------------------ - -PWM users should specify a list of PWM devices that they want to use -with a property containing a 'pwm-list': - - pwm-list ::= [pwm-list] - single-pwm ::= - pwm-phandle : phandle to PWM controller node - pwm-specifier : array of #pwm-cells specifying the given PWM - (controller specific) - -PWM properties should be named "pwms". The exact meaning of each pwms -property must be documented in the device tree binding for each device. -An optional property "pwm-names" may contain a list of strings to label -each of the PWM devices listed in the "pwms" property. If no "pwm-names" -property is given, the name of the user node will be used as fallback. - -Drivers for devices that use more than a single PWM device can use the -"pwm-names" property to map the name of the PWM device requested by the -pwm_get() call to an index into the list given by the "pwms" property. - -The following example could be used to describe a PWM-based backlight -device: - - pwm: pwm { - #pwm-cells = <2>; - }; - - [...] - - bl: backlight { - pwms = <&pwm 0 5000000>; - pwm-names = "backlight"; - }; - -pwm-specifier typically encodes the chip-relative PWM number and the PWM -period in nanoseconds. Note that in the example above, specifying the -"pwm-names" is redundant because the name "backlight" would be used as -fallback anyway. - -2) PWM controller nodes ------------------------ - -PWM controller nodes must specify the number of cells used for the -specifier using the '#pwm-cells' property. - -An example PWM controller might look like this: - - pwm: pwm@7000a000 { - compatible = "nvidia,tegra20-pwm"; - reg = <0x7000a000 0x100>; - #pwm-cells = <2>; - }; diff --git a/trunk/Documentation/devicetree/bindings/regulator/tps6586x.txt b/trunk/Documentation/devicetree/bindings/regulator/tps6586x.txt index da80c2ae0915..d156e1b5db12 100644 --- a/trunk/Documentation/devicetree/bindings/regulator/tps6586x.txt +++ b/trunk/Documentation/devicetree/bindings/regulator/tps6586x.txt @@ -9,9 +9,9 @@ Required properties: - regulators: list of regulators provided by this controller, must have property "regulator-compatible" to match their hardware counterparts: sm[0-2], ldo[0-9] and ldo_rtc -- vin-sm0-supply: The input supply for the SM0. -- vin-sm1-supply: The input supply for the SM1. -- vin-sm2-supply: The input supply for the SM2. +- sm0-supply: The input supply for the SM0. +- sm1-supply: The input supply for the SM1. +- sm2-supply: The input supply for the SM2. - vinldo01-supply: The input supply for the LDO1 and LDO2 - vinldo23-supply: The input supply for the LDO2 and LDO3 - vinldo4-supply: The input supply for the LDO4 @@ -30,9 +30,9 @@ Example: #gpio-cells = <2>; gpio-controller; - vin-sm0-supply = <&some_reg>; - vin-sm1-supply = <&some_reg>; - vin-sm2-supply = <&some_reg>; + sm0-supply = <&some_reg>; + sm1-supply = <&some_reg>; + sm2-supply = <&some_reg>; vinldo01-supply = <...>; vinldo23-supply = <...>; vinldo4-supply = <...>; diff --git a/trunk/Documentation/devicetree/bindings/serial/cavium-uart.txt b/trunk/Documentation/devicetree/bindings/serial/cavium-uart.txt deleted file mode 100644 index 87a6c375cd44..000000000000 --- a/trunk/Documentation/devicetree/bindings/serial/cavium-uart.txt +++ /dev/null @@ -1,19 +0,0 @@ -* Universal Asynchronous Receiver/Transmitter (UART) - -- compatible: "cavium,octeon-3860-uart" - - Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs. - -- reg: The base address of the UART register bank. - -- interrupts: A single interrupt specifier. - -- current-speed: Optional, the current bit rate in bits per second. - -Example: - uart1: serial@1180000000c00 { - compatible = "cavium,octeon-3860-uart","ns16550"; - reg = <0x11800 0x00000c00 0x0 0x400>; - current-speed = <115200>; - interrupts = <0 35>; - }; diff --git a/trunk/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt b/trunk/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt deleted file mode 100644 index 1e4fc727f3b1..000000000000 --- a/trunk/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt +++ /dev/null @@ -1,28 +0,0 @@ -pwm-backlight bindings - -Required properties: - - compatible: "pwm-backlight" - - pwms: OF device-tree PWM specification (see PWM binding[0]) - - brightness-levels: Array of distinct brightness levels. Typically these - are in the range from 0 to 255, but any range starting at 0 will do. - The actual brightness level (PWM duty cycle) will be interpolated - from these values. 0 means a 0% duty cycle (darkest/off), while the - last value in the array represents a 100% duty cycle (brightest). - - default-brightness-level: the default brightness level (index into the - array defined by the "brightness-levels" property) - -Optional properties: - - pwm-names: a list of names for the PWM devices specified in the - "pwms" property (see PWM binding[0]) - -[0]: Documentation/devicetree/bindings/pwm/pwm.txt - -Example: - - backlight { - compatible = "pwm-backlight"; - pwms = <&pwm 0 5000000>; - - brightness-levels = <0 4 8 16 32 64 128 255>; - default-brightness-level = <6>; - }; diff --git a/trunk/Documentation/devicetree/bindings/watchdog/marvel.txt b/trunk/Documentation/devicetree/bindings/watchdog/marvel.txt deleted file mode 100644 index 0b2503ab0a05..000000000000 --- a/trunk/Documentation/devicetree/bindings/watchdog/marvel.txt +++ /dev/null @@ -1,14 +0,0 @@ -* Marvell Orion Watchdog Time - -Required Properties: - -- Compatibility : "marvell,orion-wdt" -- reg : Address of the timer registers - -Example: - - wdt@20300 { - compatible = "marvell,orion-wdt"; - reg = <0x20300 0x28>; - status = "okay"; - }; diff --git a/trunk/Documentation/dontdiff b/trunk/Documentation/dontdiff index 39462cf35cd4..b4a898f43c37 100644 --- a/trunk/Documentation/dontdiff +++ b/trunk/Documentation/dontdiff @@ -150,6 +150,7 @@ keywords.c ksym.c* ksym.h* kxgettext +lkc_defs.h lex.c lex.*.c linux diff --git a/trunk/Documentation/dvb/get_dvb_firmware b/trunk/Documentation/dvb/get_dvb_firmware index 12d3952e83d5..fbb241174486 100755 --- a/trunk/Documentation/dvb/get_dvb_firmware +++ b/trunk/Documentation/dvb/get_dvb_firmware @@ -29,7 +29,7 @@ use IO::Handle; "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137", - "drxk_pctv", "drxk_terratec_htc_stick", "sms1xxx_hcw"); + "drxk_pctv"); # Check args syntax() if (scalar(@ARGV) != 1); @@ -676,24 +676,6 @@ sub drxk_terratec_h5 { "$fwfile" } -sub drxk_terratec_htc_stick { - my $url = "http://ftp.terratec.de/Receiver/Cinergy_HTC_Stick/Updates/"; - my $zipfile = "Cinergy_HTC_Stick_Drv_5.09.1202.00_XP_Vista_7.exe"; - my $hash = "6722a2442a05423b781721fbc069ed5e"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 0); - my $drvfile = "Cinergy HTC Stick/BDA Driver 5.09.1202.00/Windows 32 Bit/emOEM.sys"; - my $fwfile = "dvb-usb-terratec-htc-stick-drxk.fw"; - - checkstandard(); - - wgetfile($zipfile, $url . $zipfile); - verify($zipfile, $hash); - unzip($zipfile, $tmpdir); - extract("$tmpdir/$drvfile", 0x4e5c0, 42692, "$fwfile"); - - "$fwfile" -} - sub it9135 { my $sourcefile = "dvb-usb-it9135.zip"; my $url = "http://www.ite.com.tw/uploads/firmware/v3.6.0.0/$sourcefile"; @@ -766,28 +748,6 @@ sub drxk_pctv { "$fwfile"; } -sub sms1xxx_hcw { - my $url = "http://steventoth.net/linux/sms1xxx/"; - my %files = ( - 'sms1xxx-hcw-55xxx-dvbt-01.fw' => "afb6f9fb9a71d64392e8564ef9577e5a", - 'sms1xxx-hcw-55xxx-dvbt-02.fw' => "b44807098ba26e52cbedeadc052ba58f", - 'sms1xxx-hcw-55xxx-isdbt-02.fw' => "dae934eeea85225acbd63ce6cfe1c9e4", - ); - - checkstandard(); - - my $allfiles; - foreach my $fwfile (keys %files) { - wgetfile($fwfile, "$url/$fwfile"); - verify($fwfile, $files{$fwfile}); - $allfiles .= " $fwfile"; - } - - $allfiles =~ s/^\s//; - - $allfiles; -} - # --------------------------------------------------------------- # Utilities diff --git a/trunk/Documentation/edac.txt b/trunk/Documentation/edac.txt index 56c7e936430f..03df2b020332 100644 --- a/trunk/Documentation/edac.txt +++ b/trunk/Documentation/edac.txt @@ -232,20 +232,116 @@ EDAC control and attribute files. In 'mcX' directories are EDAC control and attribute files for -this 'X' instance of the memory controllers. +this 'X' instance of the memory controllers: + + +Counter reset control file: + + 'reset_counters' + + This write-only control file will zero all the statistical counters + for UE and CE errors. Zeroing the counters will also reset the timer + indicating how long since the last counter zero. This is useful + for computing errors/time. Since the counters are always reset at + driver initialization time, no module/kernel parameter is available. + + RUN TIME: echo "anything" >/sys/devices/system/edac/mc/mc0/counter_reset + + This resets the counters on memory controller 0 + + +Seconds since last counter reset control file: + + 'seconds_since_reset' + + This attribute file displays how many seconds have elapsed since the + last counter reset. This can be used with the error counters to + measure error rates. + + + +Memory Controller name attribute file: + + 'mc_name' + + This attribute file displays the type of memory controller + that is being utilized. + + +Total memory managed by this memory controller attribute file: + + 'size_mb' + + This attribute file displays, in count of megabytes, of memory + that this instance of memory controller manages. + + +Total Uncorrectable Errors count attribute file: + + 'ue_count' + + This attribute file displays the total count of uncorrectable + errors that have occurred on this memory controller. If panic_on_ue + is set this counter will not have a chance to increment, + since EDAC will panic the system. + + +Total UE count that had no information attribute fileY: + + 'ue_noinfo_count' + + This attribute file displays the number of UEs that have occurred + with no information as to which DIMM slot is having errors. + + +Total Correctable Errors count attribute file: + + 'ce_count' + + This attribute file displays the total count of correctable + errors that have occurred on this memory controller. This + count is very important to examine. CEs provide early + indications that a DIMM is beginning to fail. This count + field should be monitored for non-zero values and report + such information to the system administrator. + + +Total Correctable Errors count attribute file: + + 'ce_noinfo_count' + + This attribute file displays the number of CEs that + have occurred wherewith no information as to which DIMM slot + is having errors. Memory is handicapped, but operational, + yet no information is available to indicate which slot + the failing memory is in. This count field should be also + be monitored for non-zero values. + +Device Symlink: + + 'device' + + Symlink to the memory controller device. + +Sdram memory scrubbing rate: + + 'sdram_scrub_rate' + + Read/Write attribute file that controls memory scrubbing. The scrubbing + rate is set by writing a minimum bandwidth in bytes/sec to the attribute + file. The rate will be translated to an internal value that gives at + least the specified rate. + + Reading the file will return the actual scrubbing rate employed. + + If configuration fails or memory scrubbing is not implemented, accessing + that attribute will fail. -For a description of the sysfs API, please see: - Documentation/ABI/testing/sysfs/devices-edac ============================================================================ 'csrowX' DIRECTORIES -When CONFIG_EDAC_LEGACY_SYSFS is enabled, the sysfs will contain the -csrowX directories. As this API doesn't work properly for Rambus, FB-DIMMs -and modern Intel Memory Controllers, this is being deprecated in favor -of dimmX directories. - In the 'csrowX' directories are EDAC control and attribute files for this 'X' instance of csrow: diff --git a/trunk/Documentation/fault-injection/fault-injection.txt b/trunk/Documentation/fault-injection/fault-injection.txt index 4cf1a2a6bd72..ba4be8b77093 100644 --- a/trunk/Documentation/fault-injection/fault-injection.txt +++ b/trunk/Documentation/fault-injection/fault-injection.txt @@ -240,30 +240,3 @@ trap "echo 0 > /sys/kernel/debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT echo "Injecting errors into the module $module... (interrupt to stop)" sleep 1000000 -Tool to run command with failslab or fail_page_alloc ----------------------------------------------------- -In order to make it easier to accomplish the tasks mentioned above, we can use -tools/testing/fault-injection/failcmd.sh. Please run a command -"./tools/testing/fault-injection/failcmd.sh --help" for more information and -see the following examples. - -Examples: - -Run a command "make -C tools/testing/selftests/ run_tests" with injecting slab -allocation failure. - - # ./tools/testing/fault-injection/failcmd.sh \ - -- make -C tools/testing/selftests/ run_tests - -Same as above except to specify 100 times failures at most instead of one time -at most by default. - - # ./tools/testing/fault-injection/failcmd.sh --times=100 \ - -- make -C tools/testing/selftests/ run_tests - -Same as above except to inject page allocation failure instead of slab -allocation failure. - - # env FAILCMD_TYPE=fail_page_alloc \ - ./tools/testing/fault-injection/failcmd.sh --times=100 \ - -- make -C tools/testing/selftests/ run_tests diff --git a/trunk/Documentation/fault-injection/notifier-error-inject.txt b/trunk/Documentation/fault-injection/notifier-error-inject.txt deleted file mode 100644 index c83526c364e5..000000000000 --- a/trunk/Documentation/fault-injection/notifier-error-inject.txt +++ /dev/null @@ -1,99 +0,0 @@ -Notifier error injection -======================== - -Notifier error injection provides the ability to inject artifical errors to -specified notifier chain callbacks. It is useful to test the error handling of -notifier call chain failures which is rarely executed. There are kernel -modules that can be used to test the following notifiers. - - * CPU notifier - * PM notifier - * Memory hotplug notifier - * powerpc pSeries reconfig notifier - -CPU notifier error injection module ------------------------------------ -This feature can be used to test the error handling of the CPU notifiers by -injecting artifical errors to CPU notifier chain callbacks. - -If the notifier call chain should be failed with some events notified, write -the error code to debugfs interface -/sys/kernel/debug/notifier-error-inject/cpu/actions//error - -Possible CPU notifier events to be failed are: - - * CPU_UP_PREPARE - * CPU_UP_PREPARE_FROZEN - * CPU_DOWN_PREPARE - * CPU_DOWN_PREPARE_FROZEN - -Example1: Inject CPU offline error (-1 == -EPERM) - - # cd /sys/kernel/debug/notifier-error-inject/cpu - # echo -1 > actions/CPU_DOWN_PREPARE/error - # echo 0 > /sys/devices/system/cpu/cpu1/online - bash: echo: write error: Operation not permitted - -Example2: inject CPU online error (-2 == -ENOENT) - - # echo -2 > actions/CPU_UP_PREPARE/error - # echo 1 > /sys/devices/system/cpu/cpu1/online - bash: echo: write error: No such file or directory - -PM notifier error injection module ----------------------------------- -This feature is controlled through debugfs interface -/sys/kernel/debug/notifier-error-inject/pm/actions//error - -Possible PM notifier events to be failed are: - - * PM_HIBERNATION_PREPARE - * PM_SUSPEND_PREPARE - * PM_RESTORE_PREPARE - -Example: Inject PM suspend error (-12 = -ENOMEM) - - # cd /sys/kernel/debug/notifier-error-inject/pm/ - # echo -12 > actions/PM_SUSPEND_PREPARE/error - # echo mem > /sys/power/state - bash: echo: write error: Cannot allocate memory - -Memory hotplug notifier error injection module ----------------------------------------------- -This feature is controlled through debugfs interface -/sys/kernel/debug/notifier-error-inject/memory/actions//error - -Possible memory notifier events to be failed are: - - * MEM_GOING_ONLINE - * MEM_GOING_OFFLINE - -Example: Inject memory hotplug offline error (-12 == -ENOMEM) - - # cd /sys/kernel/debug/notifier-error-inject/memory - # echo -12 > actions/MEM_GOING_OFFLINE/error - # echo offline > /sys/devices/system/memory/memoryXXX/state - bash: echo: write error: Cannot allocate memory - -powerpc pSeries reconfig notifier error injection module --------------------------------------------------------- -This feature is controlled through debugfs interface -/sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions//error - -Possible pSeries reconfig notifier events to be failed are: - - * PSERIES_RECONFIG_ADD - * PSERIES_RECONFIG_REMOVE - * PSERIES_DRCONF_MEM_ADD - * PSERIES_DRCONF_MEM_REMOVE - -For more usage examples ------------------------ -There are tools/testing/selftests using the notifier error injection features -for CPU and memory notifiers. - - * tools/testing/selftests/cpu-hotplug/on-off-test.sh - * tools/testing/selftests/memory-hotplug/on-off-test.sh - -These scripts first do simple online and offline tests and then do fault -injection tests if notifier error injection module is available. diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index afaff312bf41..76112dac7659 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -13,14 +13,6 @@ Who: Jim Cromie , Jason Baron --------------------------- -What: /proc/sys/vm/nr_pdflush_threads -When: 2012 -Why: Since pdflush is deprecated, the interface exported in /proc/sys/vm/ - should be removed. -Who: Wanpeng Li - ---------------------------- - What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle When: 2012 Why: This optional sub-feature of APM is of dubious reliability, @@ -78,6 +70,20 @@ Who: Luis R. Rodriguez --------------------------- +What: IRQF_SAMPLE_RANDOM +Check: IRQF_SAMPLE_RANDOM +When: July 2009 + +Why: Many of IRQF_SAMPLE_RANDOM users are technically bogus as entropy + sources in the kernel's current entropy model. To resolve this, every + input point to the kernel's entropy pool needs to better document the + type of entropy source it actually is. This will be replaced with + additional add_*_randomness functions in drivers/char/random.c + +Who: Robin Getz & Matt Mackall + +--------------------------- + What: The ieee80211_regdom module parameter When: March 2010 / desktop catchup @@ -594,46 +600,3 @@ When: June 2013 Why: Unsupported/unmaintained/unused since 2.6 ---------------------------- - -What: V4L2 selections API target rectangle and flags unification, the - following definitions will be removed: V4L2_SEL_TGT_CROP_ACTIVE, - V4L2_SEL_TGT_COMPOSE_ACTIVE, V4L2_SUBDEV_SEL_*, V4L2_SUBDEV_SEL_FLAG_* - in favor of common V4L2_SEL_TGT_* and V4L2_SEL_FLAG_* definitions. - For more details see include/linux/v4l2-common.h. -When: 3.8 -Why: The regular V4L2 selections and the subdev selection API originally - defined distinct names for the target rectangles and flags - V4L2_SEL_* - and V4L2_SUBDEV_SEL_*. Although, it turned out that the meaning of these - target rectangles is virtually identical and the APIs were consolidated - to use single set of names - V4L2_SEL_*. This didn't involve any ABI - changes. Alias definitions were created for the original ones to avoid - any instabilities in the user space interface. After few cycles these - backward compatibility definitions will be removed. -Who: Sylwester Nawrocki - ----------------------------- - -What: Using V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT flags - to indicate a V4L2 memory-to-memory device capability -When: 3.8 -Why: New drivers should use new V4L2_CAP_VIDEO_M2M capability flag - to indicate a V4L2 video memory-to-memory (M2M) device and - applications can now identify a M2M video device by checking - for V4L2_CAP_VIDEO_M2M, with VIDIOC_QUERYCAP ioctl. Using ORed - V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT flags for M2M - devices is ambiguous and may lead, for example, to identifying - a M2M device as a video capture or output device. -Who: Sylwester Nawrocki - ----------------------------- - -What: OMAP private DMA implementation -When: 2013 -Why: We have a DMA engine implementation; all users should be updated - to use this rather than persisting with the old APIs. The old APIs - block merging the old DMA engine implementation into the DMA - engine driver. -Who: Russell King , - Santosh Shilimkar - ----------------------------- diff --git a/trunk/Documentation/filesystems/Locking b/trunk/Documentation/filesystems/Locking index e540a24e5d06..e0cce2a5f820 100644 --- a/trunk/Documentation/filesystems/Locking +++ b/trunk/Documentation/filesystems/Locking @@ -114,6 +114,7 @@ prototypes: int (*drop_inode) (struct inode *); void (*evict_inode) (struct inode *); void (*put_super) (struct super_block *); + void (*write_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); int (*freeze_fs) (struct super_block *); int (*unfreeze_fs) (struct super_block *); @@ -135,9 +136,10 @@ write_inode: drop_inode: !!!inode->i_lock!!! evict_inode: put_super: write +write_super: read sync_fs: read -freeze_fs: write -unfreeze_fs: write +freeze_fs: read +unfreeze_fs: read statfs: maybe(read) (see below) remount_fs: write umount_begin: no @@ -204,8 +206,6 @@ prototypes: int (*launder_page)(struct page *); int (*is_partially_uptodate)(struct page *, read_descriptor_t *, unsigned long); int (*error_remove_page)(struct address_space *, struct page *); - int (*swap_activate)(struct file *); - int (*swap_deactivate)(struct file *); locking rules: All except set_page_dirty and freepage may block @@ -229,8 +229,6 @@ migratepage: yes (both) launder_page: yes is_partially_uptodate: yes error_remove_page: yes -swap_activate: no -swap_deactivate: no ->write_begin(), ->write_end(), ->sync_page() and ->readpage() may be called from the request handler (/dev/loop). @@ -332,15 +330,6 @@ cleaned, or an error value if not. Note that in order to prevent the page getting mapped back in and redirtied, it needs to be kept locked across the entire operation. - ->swap_activate will be called with a non-zero argument on -files backing (non block device backed) swapfiles. A return value -of zero indicates success, in which case this file can be used for -backing swapspace. The swapspace operations will be proxied to the -address space operations. - - ->swap_deactivate() will be called in the sys_swapoff() -path after ->swap_activate() returned success. - ----------------------- file_lock_operations ------------------------------ prototypes: void (*fl_copy_lock)(struct file_lock *, struct file_lock *); @@ -357,6 +346,7 @@ prototypes: int (*lm_compare_owner)(struct file_lock *, struct file_lock *); void (*lm_notify)(struct file_lock *); /* unblock callback */ int (*lm_grant)(struct file_lock *, struct file_lock *, int); + void (*lm_release_private)(struct file_lock *); void (*lm_break)(struct file_lock *); /* break_lease callback */ int (*lm_change)(struct file_lock **, int); @@ -365,6 +355,7 @@ locking rules: lm_compare_owner: yes no lm_notify: yes no lm_grant: no no +lm_release_private: maybe no lm_break: yes no lm_change yes no diff --git a/trunk/Documentation/filesystems/porting b/trunk/Documentation/filesystems/porting index 0742feebc6e2..2bef2b3843d1 100644 --- a/trunk/Documentation/filesystems/porting +++ b/trunk/Documentation/filesystems/porting @@ -94,8 +94,9 @@ protected. --- [mandatory] -BKL is also moved from around sb operations. BKL should have been shifted into -individual fs sb_op functions. If you don't need it, remove it. +BKL is also moved from around sb operations. ->write_super() Is now called +without BKL held. BKL should have been shifted into individual fs sb_op +functions. If you don't need it, remove it. --- [informational] diff --git a/trunk/Documentation/filesystems/vfat.txt b/trunk/Documentation/filesystems/vfat.txt index de1e6c4dccff..ead764b2728f 100644 --- a/trunk/Documentation/filesystems/vfat.txt +++ b/trunk/Documentation/filesystems/vfat.txt @@ -137,17 +137,6 @@ errors=panic|continue|remount-ro without doing anything or remount the partition in read-only mode (default behavior). -discard -- If set, issues discard/TRIM commands to the block - device when blocks are freed. This is useful for SSD devices - and sparse/thinly-provisoned LUNs. - -nfs -- This option maintains an index (cache) of directory - inodes by i_logstart which is used by the nfs-related code to - improve look-ups. - - Enable this only if you want to export the FAT filesystem - over NFS - : 0,1,yes,no,true,false TODO diff --git a/trunk/Documentation/filesystems/vfs.txt b/trunk/Documentation/filesystems/vfs.txt index 2ee133e030c3..aa754e01464e 100644 --- a/trunk/Documentation/filesystems/vfs.txt +++ b/trunk/Documentation/filesystems/vfs.txt @@ -216,6 +216,7 @@ struct super_operations { void (*drop_inode) (struct inode *); void (*delete_inode) (struct inode *); void (*put_super) (struct super_block *); + void (*write_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); int (*freeze_fs) (struct super_block *); int (*unfreeze_fs) (struct super_block *); @@ -272,6 +273,9 @@ or bottom half). put_super: called when the VFS wishes to free the superblock (i.e. unmount). This is called with the superblock lock held + write_super: called when the VFS superblock needs to be written to + disc. This method is optional + sync_fs: called when VFS is writing out all dirty data associated with a superblock. The second parameter indicates whether the method should wait until the write out has been completed. Optional. @@ -588,8 +592,6 @@ struct address_space_operations { int (*migratepage) (struct page *, struct page *); int (*launder_page) (struct page *); int (*error_remove_page) (struct mapping *mapping, struct page *page); - int (*swap_activate)(struct file *); - int (*swap_deactivate)(struct file *); }; writepage: called by the VM to write a dirty page to backing store. @@ -758,16 +760,6 @@ struct address_space_operations { Setting this implies you deal with pages going away under you, unless you have them locked or reference counts increased. - swap_activate: Called when swapon is used on a file to allocate - space if necessary and pin the block lookup information in - memory. A return value of zero indicates success, - in which case this file can be used to back swapspace. The - swapspace operations will be proxied to this address space's - ->swap_{out,in} methods. - - swap_deactivate: Called during swapoff on files where swap_activate - was successful. - The File Object =============== diff --git a/trunk/Documentation/input/edt-ft5x06.txt b/trunk/Documentation/input/edt-ft5x06.txt deleted file mode 100644 index 2032f0b7a8fa..000000000000 --- a/trunk/Documentation/input/edt-ft5x06.txt +++ /dev/null @@ -1,54 +0,0 @@ -EDT ft5x06 based Polytouch devices ----------------------------------- - -The edt-ft5x06 driver is useful for the EDT "Polytouch" family of capacitive -touch screens. Note that it is *not* suitable for other devices based on the -focaltec ft5x06 devices, since they contain vendor-specific firmware. In -particular this driver is not suitable for the Nook tablet. - -It has been tested with the following devices: - * EP0350M06 - * EP0430M06 - * EP0570M06 - * EP0700M06 - -The driver allows configuration of the touch screen via a set of sysfs files: - -/sys/class/input/eventX/device/device/threshold: - allows setting the "click"-threshold in the range from 20 to 80. - -/sys/class/input/eventX/device/device/gain: - allows setting the sensitivity in the range from 0 to 31. Note that - lower values indicate higher sensitivity. - -/sys/class/input/eventX/device/device/offset: - allows setting the edge compensation in the range from 0 to 31. - -/sys/class/input/eventX/device/device/report_rate: - allows setting the report rate in the range from 3 to 14. - - -For debugging purposes the driver provides a few files in the debug -filesystem (if available in the kernel). In /sys/kernel/debug/edt_ft5x06 -you'll find the following files: - -num_x, num_y: - (readonly) contains the number of sensor fields in X- and - Y-direction. - -mode: - allows switching the sensor between "factory mode" and "operation - mode" by writing "1" or "0" to it. In factory mode (1) it is - possible to get the raw data from the sensor. Note that in factory - mode regular events don't get delivered and the options described - above are unavailable. - -raw_data: - contains num_x * num_y big endian 16 bit values describing the raw - values for each sensor field. Note that each read() call on this - files triggers a new readout. It is recommended to provide a buffer - big enough to contain num_x * num_y * 2 bytes. - -Note that reading raw_data gives a I/O error when the device is not in factory -mode. The same happens when reading/writing to the parameter files when the -device is not in regular operation mode. diff --git a/trunk/Documentation/ioctl/ioctl-number.txt b/trunk/Documentation/ioctl/ioctl-number.txt index 849b771c5e03..915f28c470e9 100644 --- a/trunk/Documentation/ioctl/ioctl-number.txt +++ b/trunk/Documentation/ioctl/ioctl-number.txt @@ -88,7 +88,6 @@ Code Seq#(hex) Include File Comments and kernel/power/user.c '8' all SNP8023 advanced NIC card -';' 64-7F linux/vfio.h '@' 00-0F linux/radeonfb.h conflict! '@' 00-0F drivers/video/aty/aty128fb.c conflict! 'A' 00-1F linux/apm_bios.h conflict! diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index ad7e2e5088c1..c2619ef44a72 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -526,7 +526,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. coherent_pool=nn[KMG] [ARM,KNL] Sets the size of memory pool for coherent, atomic dma - allocations, by default set to 256K. + allocations if Contiguous Memory Allocator (CMA) is used. code_bytes [X86] How many bytes of object code to print in an oops report. diff --git a/trunk/Documentation/laptops/laptop-mode.txt b/trunk/Documentation/laptops/laptop-mode.txt index 4ebbfc3f1c6e..0bf25eebce94 100644 --- a/trunk/Documentation/laptops/laptop-mode.txt +++ b/trunk/Documentation/laptops/laptop-mode.txt @@ -262,9 +262,9 @@ MINIMUM_BATTERY_MINUTES=10 # # Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been -# exceeded, the kernel will wake flusher threads which will then reduce the -# amount of dirty memory to dirty_background_ratio. Set this nice and low, -# so once some writeout has commenced, we do a lot of it. +# exceeded, the kernel will wake pdflush which will then reduce the amount +# of dirty memory to dirty_background_ratio. Set this nice and low, so once +# some writeout has commenced, we do a lot of it. # #DIRTY_BACKGROUND_RATIO=5 @@ -384,9 +384,9 @@ CPU_MAXFREQ=${CPU_MAXFREQ:-'slowest'} # # Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been -# exceeded, the kernel will wake flusher threads which will then reduce the -# amount of dirty memory to dirty_background_ratio. Set this nice and low, -# so once some writeout has commenced, we do a lot of it. +# exceeded, the kernel will wake pdflush which will then reduce the amount +# of dirty memory to dirty_background_ratio. Set this nice and low, so once +# some writeout has commenced, we do a lot of it. # DIRTY_BACKGROUND_RATIO=${DIRTY_BACKGROUND_RATIO:-'5'} diff --git a/trunk/Documentation/networking/ip-sysctl.txt b/trunk/Documentation/networking/ip-sysctl.txt index ca447b35b833..406a5226220d 100644 --- a/trunk/Documentation/networking/ip-sysctl.txt +++ b/trunk/Documentation/networking/ip-sysctl.txt @@ -48,6 +48,12 @@ min_adv_mss - INTEGER The advertised MSS depends on the first hop route MTU, but will never be lower than this setting. +rt_cache_rebuild_count - INTEGER + The per net-namespace route cache emergency rebuild threshold. + Any net-namespace having its route cache rebuilt due to + a hash bucket chain being too long more than this many times + will have its route caching disabled + IP Fragmentation: ipfrag_high_thresh - INTEGER diff --git a/trunk/Documentation/networking/netconsole.txt b/trunk/Documentation/networking/netconsole.txt index 2e9e0ae2cd45..8d022073e3ef 100644 --- a/trunk/Documentation/networking/netconsole.txt +++ b/trunk/Documentation/networking/netconsole.txt @@ -51,23 +51,8 @@ Built-in netconsole starts immediately after the TCP stack is initialized and attempts to bring up the supplied dev at the supplied address. -The remote host has several options to receive the kernel messages, -for example: - -1) syslogd - -2) netcat - - On distributions using a BSD-based netcat version (e.g. Fedora, - openSUSE and Ubuntu) the listening port must be specified without - the -p switch: - - 'nc -u -l -p ' / 'nc -u -l ' or - 'netcat -u -l -p ' / 'netcat -u -l ' - -3) socat - - 'socat udp-recv: -' +The remote host can run either 'netcat -u -l -p ', +'nc -l -u ' or syslogd. Dynamic reconfiguration: ======================== diff --git a/trunk/Documentation/pinctrl.txt b/trunk/Documentation/pinctrl.txt index 1479aca23744..e40f4b4e1977 100644 --- a/trunk/Documentation/pinctrl.txt +++ b/trunk/Documentation/pinctrl.txt @@ -840,9 +840,9 @@ static unsigned long i2c_pin_configs[] = { static struct pinctrl_map __initdata mapping[] = { PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"), - PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), - PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), - PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0sda", i2c_pin_configs), + PIN_MAP_MUX_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), + PIN_MAP_MUX_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), + PIN_MAP_MUX_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0sda", i2c_pin_configs), }; Finally, some devices expect the mapping table to contain certain specific diff --git a/trunk/Documentation/power/power_supply_class.txt b/trunk/Documentation/power/power_supply_class.txt index 2f0ddc15b5ac..211831d4095f 100644 --- a/trunk/Documentation/power/power_supply_class.txt +++ b/trunk/Documentation/power/power_supply_class.txt @@ -112,24 +112,14 @@ CHARGE_COUNTER - the current charge counter (in µAh). This could easily be negative; there is no empty or full value. It is only useful for relative, time-based measurements. -CONSTANT_CHARGE_CURRENT - constant charge current programmed by charger. - -CONSTANT_CHARGE_VOLTAGE - constant charge voltage programmed by charger. - ENERGY_FULL, ENERGY_EMPTY - same as above but for energy. CAPACITY - capacity in percents. -CAPACITY_ALERT_MIN - minimum capacity alert value in percents. -CAPACITY_ALERT_MAX - maximum capacity alert value in percents. CAPACITY_LEVEL - capacity level. This corresponds to POWER_SUPPLY_CAPACITY_LEVEL_*. TEMP - temperature of the power supply. -TEMP_ALERT_MIN - minimum battery temperature alert value in milli centigrade. -TEMP_ALERT_MAX - maximum battery temperature alert value in milli centigrade. TEMP_AMBIENT - ambient temperature. -TEMP_AMBIENT_ALERT_MIN - minimum ambient temperature alert value in milli centigrade. -TEMP_AMBIENT_ALERT_MAX - maximum ambient temperature alert value in milli centigrade. TIME_TO_EMPTY - seconds left for battery to be considered empty (i.e. while battery powers a load) diff --git a/trunk/Documentation/printk-formats.txt b/trunk/Documentation/printk-formats.txt index 7561d7ed8e11..5df176ed59b8 100644 --- a/trunk/Documentation/printk-formats.txt +++ b/trunk/Documentation/printk-formats.txt @@ -53,20 +53,9 @@ Struct Resources: For printing struct resources. The 'R' and 'r' specifiers result in a printed resource with ('R') or without ('r') a decoded flags member. -Raw buffer as a hex string: - %*ph 00 01 02 ... 3f - %*phC 00:01:02: ... :3f - %*phD 00-01-02- ... -3f - %*phN 000102 ... 3f - - For printing a small buffers (up to 64 bytes long) as a hex string with - certain separator. For the larger buffers consider to use - print_hex_dump(). - MAC/FDDI addresses: %pM 00:01:02:03:04:05 - %pMR 05:04:03:02:01:00 %pMF 00-01-02-03-04-05 %pm 000102030405 @@ -78,10 +67,6 @@ MAC/FDDI addresses: the 'M' specifier to use dash ('-') separators instead of the default separator. - For Bluetooth addresses the 'R' specifier shall be used after the 'M' - specifier to use reversed byte order suitable for visual interpretation - of Bluetooth addresses which are in the little endian order. - IPv4 addresses: %pI4 1.2.3.4 diff --git a/trunk/Documentation/pwm.txt b/trunk/Documentation/pwm.txt deleted file mode 100644 index 554290ebab94..000000000000 --- a/trunk/Documentation/pwm.txt +++ /dev/null @@ -1,76 +0,0 @@ -Pulse Width Modulation (PWM) interface - -This provides an overview about the Linux PWM interface - -PWMs are commonly used for controlling LEDs, fans or vibrators in -cell phones. PWMs with a fixed purpose have no need implementing -the Linux PWM API (although they could). However, PWMs are often -found as discrete devices on SoCs which have no fixed purpose. It's -up to the board designer to connect them to LEDs or fans. To provide -this kind of flexibility the generic PWM API exists. - -Identifying PWMs ----------------- - -Users of the legacy PWM API use unique IDs to refer to PWM devices. - -Instead of referring to a PWM device via its unique ID, board setup code -should instead register a static mapping that can be used to match PWM -consumers to providers, as given in the following example: - - static struct pwm_lookup board_pwm_lookup[] = { - PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL), - }; - - static void __init board_init(void) - { - ... - pwm_add_table(board_pwm_lookup, ARRAY_SIZE(board_pwm_lookup)); - ... - } - -Using PWMs ----------- - -Legacy users can request a PWM device using pwm_request() and free it -after usage with pwm_free(). - -New users should use the pwm_get() function and pass to it the consumer -device or a consumer name. pwm_put() is used to free the PWM device. - -After being requested a PWM has to be configured using: - -int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns); - -To start/stop toggling the PWM output use pwm_enable()/pwm_disable(). - -Implementing a PWM driver -------------------------- - -Currently there are two ways to implement pwm drivers. Traditionally -there only has been the barebone API meaning that each driver has -to implement the pwm_*() functions itself. This means that it's impossible -to have multiple PWM drivers in the system. For this reason it's mandatory -for new drivers to use the generic PWM framework. - -A new PWM controller/chip can be added using pwmchip_add() and removed -again with pwmchip_remove(). pwmchip_add() takes a filled in struct -pwm_chip as argument which provides a description of the PWM chip, the -number of PWM devices provider by the chip and the chip-specific -implementation of the supported PWM operations to the framework. - -Locking -------- - -The PWM core list manipulations are protected by a mutex, so pwm_request() -and pwm_free() may not be called from an atomic context. Currently the -PWM core does not enforce any locking to pwm_enable(), pwm_disable() and -pwm_config(), so the calling context is currently driver specific. This -is an issue derived from the former barebone API and should be fixed soon. - -Helpers -------- - -Currently a PWM can only be configured with period_ns and duty_ns. For several -use cases freq_hz and duty_percent might be better. Instead of calculating -this in your driver please consider adding appropriate helpers to the framework. diff --git a/trunk/Documentation/security/Yama.txt b/trunk/Documentation/security/Yama.txt index dd908cf64ecf..e369de2d48cd 100644 --- a/trunk/Documentation/security/Yama.txt +++ b/trunk/Documentation/security/Yama.txt @@ -46,13 +46,14 @@ restrictions, it can call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, ...) so that any otherwise allowed process (even those in external pid namespaces) may attach. -The sysctl settings (writable only with CAP_SYS_PTRACE) are: +These restrictions do not change how ptrace via PTRACE_TRACEME operates. + +The sysctl settings are: 0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other process running under the same uid, as long as it is dumpable (i.e. did not transition uids, start privileged, or have called - prctl(PR_SET_DUMPABLE...) already). Similarly, PTRACE_TRACEME is - unchanged. + prctl(PR_SET_DUMPABLE...) already). 1 - restricted ptrace: a process must have a predefined relationship with the inferior it wants to call PTRACE_ATTACH on. By default, @@ -60,13 +61,12 @@ The sysctl settings (writable only with CAP_SYS_PTRACE) are: classic criteria is also met. To change the relationship, an inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare an allowed debugger PID to call PTRACE_ATTACH on the inferior. - Using PTRACE_TRACEME is unchanged. 2 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace - with PTRACE_ATTACH, or through children calling PTRACE_TRACEME. + with PTRACE_ATTACH. -3 - no attach: no processes may use ptrace with PTRACE_ATTACH nor via - PTRACE_TRACEME. Once set, this sysctl value cannot be changed. +3 - no attach: no processes may use ptrace with PTRACE_ATTACH. Once set, + this sysctl cannot be changed to a lower value. The original children-only logic was based on the restrictions in grsecurity. diff --git a/trunk/Documentation/sound/alsa/HD-Audio-Models.txt b/trunk/Documentation/sound/alsa/HD-Audio-Models.txt index a92bba816843..7456360e161c 100644 --- a/trunk/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/trunk/Documentation/sound/alsa/HD-Audio-Models.txt @@ -53,7 +53,6 @@ ALC882/883/885/888/889 acer-aspire-8930g Acer Aspire 8330G/6935G acer-aspire Acer Aspire others inv-dmic Inverted internal mic workaround - no-primary-hp VAIO Z workaround (for fixed speaker DAC) ALC861/660 ========== @@ -274,10 +273,6 @@ STAC92HD83* dell-s14 Dell laptop dell-vostro-3500 Dell Vostro 3500 laptop hp-dv7-4000 HP dv-7 4000 - hp_cNB11_intquad HP CNB models with 4 speakers - hp-zephyr HP Zephyr - hp-led HP with broken BIOS for mute LED - hp-inv-led HP with broken BIOS for inverted mute LED auto BIOS setup (default) STAC9872 diff --git a/trunk/Documentation/sysctl/fs.txt b/trunk/Documentation/sysctl/fs.txt index 88152f214f48..13d6166d7a27 100644 --- a/trunk/Documentation/sysctl/fs.txt +++ b/trunk/Documentation/sysctl/fs.txt @@ -32,8 +32,6 @@ Currently, these files are in /proc/sys/fs: - nr_open - overflowuid - overflowgid -- protected_hardlinks -- protected_symlinks - suid_dumpable - super-max - super-nr @@ -159,68 +157,22 @@ The default is 65534. ============================================================== -protected_hardlinks: - -A long-standing class of security issues is the hardlink-based -time-of-check-time-of-use race, most commonly seen in world-writable -directories like /tmp. The common method of exploitation of this flaw -is to cross privilege boundaries when following a given hardlink (i.e. a -root process follows a hardlink created by another user). Additionally, -on systems without separated partitions, this stops unauthorized users -from "pinning" vulnerable setuid/setgid files against being upgraded by -the administrator, or linking to special files. - -When set to "0", hardlink creation behavior is unrestricted. - -When set to "1" hardlinks cannot be created by users if they do not -already own the source file, or do not have read/write access to it. - -This protection is based on the restrictions in Openwall and grsecurity. - -============================================================== - -protected_symlinks: - -A long-standing class of security issues is the symlink-based -time-of-check-time-of-use race, most commonly seen in world-writable -directories like /tmp. The common method of exploitation of this flaw -is to cross privilege boundaries when following a given symlink (i.e. a -root process follows a symlink belonging to another user). For a likely -incomplete list of hundreds of examples across the years, please see: -http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp - -When set to "0", symlink following behavior is unrestricted. - -When set to "1" symlinks are permitted to be followed only when outside -a sticky world-writable directory, or when the uid of the symlink and -follower match, or when the directory owner matches the symlink's owner. - -This protection is based on the restrictions in Openwall and grsecurity. - -============================================================== - suid_dumpable: This value can be used to query and set the core dump mode for setuid or otherwise protected/tainted binaries. The modes are 0 - (default) - traditional behaviour. Any process which has changed - privilege levels or is execute only will not be dumped. + privilege levels or is execute only will not be dumped 1 - (debug) - all processes dump core when possible. The core dump is owned by the current user and no security is applied. This is intended for system debugging situations only. Ptrace is unchecked. - This is insecure as it allows regular users to examine the memory - contents of privileged processes. 2 - (suidsafe) - any binary which normally would not be dumped is dumped - anyway, but only if the "core_pattern" kernel sysctl is set to - either a pipe handler or a fully qualified path. (For more details - on this limitation, see CVE-2006-2451.) This mode is appropriate - when administrators are attempting to debug problems in a normal - environment, and either have a core dump pipe handler that knows - to treat privileged core dumps with care, or specific directory - defined for catching core dumps. If a core dump happens without - a pipe handler or fully qualifid path, a message will be emitted - to syslog warning about the lack of a correct setting. + readable by root only. This allows the end user to remove + such a dump but not access it directly. For security reasons + core dumps in this mode will not overwrite one another or + other files. This mode is appropriate when administrators are + attempting to debug problems in a normal environment. ============================================================== diff --git a/trunk/Documentation/sysctl/vm.txt b/trunk/Documentation/sysctl/vm.txt index 078701fdbd4d..96f0ee825bed 100644 --- a/trunk/Documentation/sysctl/vm.txt +++ b/trunk/Documentation/sysctl/vm.txt @@ -42,6 +42,7 @@ Currently, these files are in /proc/sys/vm: - mmap_min_addr - nr_hugepages - nr_overcommit_hugepages +- nr_pdflush_threads - nr_trim_pages (only if CONFIG_MMU=n) - numa_zonelist_order - oom_dump_tasks @@ -76,8 +77,8 @@ huge pages although processes will also directly compact memory as required. dirty_background_bytes -Contains the amount of dirty memory at which the background kernel -flusher threads will start writeback. +Contains the amount of dirty memory at which the pdflush background writeback +daemon will start writeback. Note: dirty_background_bytes is the counterpart of dirty_background_ratio. Only one of them may be specified at a time. When one sysctl is written it is @@ -89,7 +90,7 @@ other appears as 0 when read. dirty_background_ratio Contains, as a percentage of total system memory, the number of pages at which -the background kernel flusher threads will start writing out dirty data. +the pdflush background writeback daemon will start writing out dirty data. ============================================================== @@ -112,9 +113,9 @@ retained. dirty_expire_centisecs This tunable is used to define when dirty data is old enough to be eligible -for writeout by the kernel flusher threads. It is expressed in 100'ths -of a second. Data which has been dirty in-memory for longer than this -interval will be written out next time a flusher thread wakes up. +for writeout by the pdflush daemons. It is expressed in 100'ths of a second. +Data which has been dirty in-memory for longer than this interval will be +written out next time a pdflush daemon wakes up. ============================================================== @@ -128,7 +129,7 @@ data. dirty_writeback_centisecs -The kernel flusher threads will periodically wake up and write `old' data +The pdflush writeback daemons will periodically wake up and write `old' data out to disk. This tunable expresses the interval between those wakeups, in 100'ths of a second. @@ -425,6 +426,16 @@ See Documentation/vm/hugetlbpage.txt ============================================================== +nr_pdflush_threads + +The current number of pdflush threads. This value is read-only. +The value changes according to the number of dirty pages in the system. + +When necessary, additional pdflush threads are created, one per second, up to +nr_pdflush_threads_max. + +============================================================== + nr_trim_pages This is available only on NOMMU kernels. @@ -491,10 +502,9 @@ oom_dump_tasks Enables a system-wide task dump (excluding kernel threads) to be produced when the kernel performs an OOM-killing and includes such -information as pid, uid, tgid, vm size, rss, nr_ptes, swapents, -oom_score_adj score, and name. This is helpful to determine why the -OOM killer was invoked, to identify the rogue task that caused it, -and to determine why the OOM killer chose the task it did to kill. +information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and +name. This is helpful to determine why the OOM killer was invoked +and to identify the rogue task that caused it. If this is set to zero, this information is suppressed. On very large systems with thousands of tasks it may not be feasible to dump @@ -564,24 +574,16 @@ of physical RAM. See above. page-cluster -page-cluster controls the number of pages up to which consecutive pages -are read in from swap in a single attempt. This is the swap counterpart -to page cache readahead. -The mentioned consecutivity is not in terms of virtual/physical addresses, -but consecutive on swap space - that means they were swapped out together. +page-cluster controls the number of pages which are written to swap in +a single attempt. The swap I/O size. It is a logarithmic value - setting it to zero means "1 page", setting it to 1 means "2 pages", setting it to 2 means "4 pages", etc. -Zero disables swap readahead completely. The default value is three (eight pages at a time). There may be some small benefits in tuning this to a different value if your workload is swap-intensive. -Lower values mean lower latencies for initial faults, but at the same time -extra faults and I/O delays for following faults if they would have been part of -that consecutive pages readahead would have brought in. - ============================================================= panic_on_oom diff --git a/trunk/Documentation/vfio.txt b/trunk/Documentation/vfio.txt deleted file mode 100644 index 0cb6685c8029..000000000000 --- a/trunk/Documentation/vfio.txt +++ /dev/null @@ -1,314 +0,0 @@ -VFIO - "Virtual Function I/O"[1] -------------------------------------------------------------------------------- -Many modern system now provide DMA and interrupt remapping facilities -to help ensure I/O devices behave within the boundaries they've been -allotted. This includes x86 hardware with AMD-Vi and Intel VT-d, -POWER systems with Partitionable Endpoints (PEs) and embedded PowerPC -systems such as Freescale PAMU. The VFIO driver is an IOMMU/device -agnostic framework for exposing direct device access to userspace, in -a secure, IOMMU protected environment. In other words, this allows -safe[2], non-privileged, userspace drivers. - -Why do we want that? Virtual machines often make use of direct device -access ("device assignment") when configured for the highest possible -I/O performance. From a device and host perspective, this simply -turns the VM into a userspace driver, with the benefits of -significantly reduced latency, higher bandwidth, and direct use of -bare-metal device drivers[3]. - -Some applications, particularly in the high performance computing -field, also benefit from low-overhead, direct device access from -userspace. Examples include network adapters (often non-TCP/IP based) -and compute accelerators. Prior to VFIO, these drivers had to either -go through the full development cycle to become proper upstream -driver, be maintained out of tree, or make use of the UIO framework, -which has no notion of IOMMU protection, limited interrupt support, -and requires root privileges to access things like PCI configuration -space. - -The VFIO driver framework intends to unify these, replacing both the -KVM PCI specific device assignment code as well as provide a more -secure, more featureful userspace driver environment than UIO. - -Groups, Devices, and IOMMUs -------------------------------------------------------------------------------- - -Devices are the main target of any I/O driver. Devices typically -create a programming interface made up of I/O access, interrupts, -and DMA. Without going into the details of each of these, DMA is -by far the most critical aspect for maintaining a secure environment -as allowing a device read-write access to system memory imposes the -greatest risk to the overall system integrity. - -To help mitigate this risk, many modern IOMMUs now incorporate -isolation properties into what was, in many cases, an interface only -meant for translation (ie. solving the addressing problems of devices -with limited address spaces). With this, devices can now be isolated -from each other and from arbitrary memory access, thus allowing -things like secure direct assignment of devices into virtual machines. - -This isolation is not always at the granularity of a single device -though. Even when an IOMMU is capable of this, properties of devices, -interconnects, and IOMMU topologies can each reduce this isolation. -For instance, an individual device may be part of a larger multi- -function enclosure. While the IOMMU may be able to distinguish -between devices within the enclosure, the enclosure may not require -transactions between devices to reach the IOMMU. Examples of this -could be anything from a multi-function PCI device with backdoors -between functions to a non-PCI-ACS (Access Control Services) capable -bridge allowing redirection without reaching the IOMMU. Topology -can also play a factor in terms of hiding devices. A PCIe-to-PCI -bridge masks the devices behind it, making transaction appear as if -from the bridge itself. Obviously IOMMU design plays a major factor -as well. - -Therefore, while for the most part an IOMMU may have device level -granularity, any system is susceptible to reduced granularity. The -IOMMU API therefore supports a notion of IOMMU groups. A group is -a set of devices which is isolatable from all other devices in the -system. Groups are therefore the unit of ownership used by VFIO. - -While the group is the minimum granularity that must be used to -ensure secure user access, it's not necessarily the preferred -granularity. In IOMMUs which make use of page tables, it may be -possible to share a set of page tables between different groups, -reducing the overhead both to the platform (reduced TLB thrashing, -reduced duplicate page tables), and to the user (programming only -a single set of translations). For this reason, VFIO makes use of -a container class, which may hold one or more groups. A container -is created by simply opening the /dev/vfio/vfio character device. - -On its own, the container provides little functionality, with all -but a couple version and extension query interfaces locked away. -The user needs to add a group into the container for the next level -of functionality. To do this, the user first needs to identify the -group associated with the desired device. This can be done using -the sysfs links described in the example below. By unbinding the -device from the host driver and binding it to a VFIO driver, a new -VFIO group will appear for the group as /dev/vfio/$GROUP, where -$GROUP is the IOMMU group number of which the device is a member. -If the IOMMU group contains multiple devices, each will need to -be bound to a VFIO driver before operations on the VFIO group -are allowed (it's also sufficient to only unbind the device from -host drivers if a VFIO driver is unavailable; this will make the -group available, but not that particular device). TBD - interface -for disabling driver probing/locking a device. - -Once the group is ready, it may be added to the container by opening -the VFIO group character device (/dev/vfio/$GROUP) and using the -VFIO_GROUP_SET_CONTAINER ioctl, passing the file descriptor of the -previously opened container file. If desired and if the IOMMU driver -supports sharing the IOMMU context between groups, multiple groups may -be set to the same container. If a group fails to set to a container -with existing groups, a new empty container will need to be used -instead. - -With a group (or groups) attached to a container, the remaining -ioctls become available, enabling access to the VFIO IOMMU interfaces. -Additionally, it now becomes possible to get file descriptors for each -device within a group using an ioctl on the VFIO group file descriptor. - -The VFIO device API includes ioctls for describing the device, the I/O -regions and their read/write/mmap offsets on the device descriptor, as -well as mechanisms for describing and registering interrupt -notifications. - -VFIO Usage Example -------------------------------------------------------------------------------- - -Assume user wants to access PCI device 0000:06:0d.0 - -$ readlink /sys/bus/pci/devices/0000:06:0d.0/iommu_group -../../../../kernel/iommu_groups/26 - -This device is therefore in IOMMU group 26. This device is on the -pci bus, therefore the user will make use of vfio-pci to manage the -group: - -# modprobe vfio-pci - -Binding this device to the vfio-pci driver creates the VFIO group -character devices for this group: - -$ lspci -n -s 0000:06:0d.0 -06:0d.0 0401: 1102:0002 (rev 08) -# echo 0000:06:0d.0 > /sys/bus/pci/devices/0000:06:0d.0/driver/unbind -# echo 1102 0002 > /sys/bus/pci/drivers/vfio/new_id - -Now we need to look at what other devices are in the group to free -it for use by VFIO: - -$ ls -l /sys/bus/pci/devices/0000:06:0d.0/iommu_group/devices -total 0 -lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:00:1e.0 -> - ../../../../devices/pci0000:00/0000:00:1e.0 -lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:06:0d.0 -> - ../../../../devices/pci0000:00/0000:00:1e.0/0000:06:0d.0 -lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:06:0d.1 -> - ../../../../devices/pci0000:00/0000:00:1e.0/0000:06:0d.1 - -This device is behind a PCIe-to-PCI bridge[4], therefore we also -need to add device 0000:06:0d.1 to the group following the same -procedure as above. Device 0000:00:1e.0 is a bridge that does -not currently have a host driver, therefore it's not required to -bind this device to the vfio-pci driver (vfio-pci does not currently -support PCI bridges). - -The final step is to provide the user with access to the group if -unprivileged operation is desired (note that /dev/vfio/vfio provides -no capabilities on its own and is therefore expected to be set to -mode 0666 by the system). - -# chown user:user /dev/vfio/26 - -The user now has full access to all the devices and the iommu for this -group and can access them as follows: - - int container, group, device, i; - struct vfio_group_status group_status = - { .argsz = sizeof(group_status) }; - struct vfio_iommu_x86_info iommu_info = { .argsz = sizeof(iommu_info) }; - struct vfio_iommu_x86_dma_map dma_map = { .argsz = sizeof(dma_map) }; - struct vfio_device_info device_info = { .argsz = sizeof(device_info) }; - - /* Create a new container */ - container = open("/dev/vfio/vfio, O_RDWR); - - if (ioctl(container, VFIO_GET_API_VERSION) != VFIO_API_VERSION) - /* Unknown API version */ - - if (!ioctl(container, VFIO_CHECK_EXTENSION, VFIO_X86_IOMMU)) - /* Doesn't support the IOMMU driver we want. */ - - /* Open the group */ - group = open("/dev/vfio/26", O_RDWR); - - /* Test the group is viable and available */ - ioctl(group, VFIO_GROUP_GET_STATUS, &group_status); - - if (!(group_status.flags & VFIO_GROUP_FLAGS_VIABLE)) - /* Group is not viable (ie, not all devices bound for vfio) */ - - /* Add the group to the container */ - ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); - - /* Enable the IOMMU model we want */ - ioctl(container, VFIO_SET_IOMMU, VFIO_X86_IOMMU) - - /* Get addition IOMMU info */ - ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info); - - /* Allocate some space and setup a DMA mapping */ - dma_map.vaddr = mmap(0, 1024 * 1024, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); - dma_map.size = 1024 * 1024; - dma_map.iova = 0; /* 1MB starting at 0x0 from device view */ - dma_map.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE; - - ioctl(container, VFIO_IOMMU_MAP_DMA, &dma_map); - - /* Get a file descriptor for the device */ - device = ioctl(group, VFIO_GROUP_GET_DEVICE_FD, "0000:06:0d.0"); - - /* Test and setup the device */ - ioctl(device, VFIO_DEVICE_GET_INFO, &device_info); - - for (i = 0; i < device_info.num_regions; i++) { - struct vfio_region_info reg = { .argsz = sizeof(reg) }; - - reg.index = i; - - ioctl(device, VFIO_DEVICE_GET_REGION_INFO, ®); - - /* Setup mappings... read/write offsets, mmaps - * For PCI devices, config space is a region */ - } - - for (i = 0; i < device_info.num_irqs; i++) { - struct vfio_irq_info irq = { .argsz = sizeof(irq) }; - - irq.index = i; - - ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, ®); - - /* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */ - } - - /* Gratuitous device reset and go... */ - ioctl(device, VFIO_DEVICE_RESET); - -VFIO User API -------------------------------------------------------------------------------- - -Please see include/linux/vfio.h for complete API documentation. - -VFIO bus driver API -------------------------------------------------------------------------------- - -VFIO bus drivers, such as vfio-pci make use of only a few interfaces -into VFIO core. When devices are bound and unbound to the driver, -the driver should call vfio_add_group_dev() and vfio_del_group_dev() -respectively: - -extern int vfio_add_group_dev(struct iommu_group *iommu_group, - struct device *dev, - const struct vfio_device_ops *ops, - void *device_data); - -extern void *vfio_del_group_dev(struct device *dev); - -vfio_add_group_dev() indicates to the core to begin tracking the -specified iommu_group and register the specified dev as owned by -a VFIO bus driver. The driver provides an ops structure for callbacks -similar to a file operations structure: - -struct vfio_device_ops { - int (*open)(void *device_data); - void (*release)(void *device_data); - ssize_t (*read)(void *device_data, char __user *buf, - size_t count, loff_t *ppos); - ssize_t (*write)(void *device_data, const char __user *buf, - size_t size, loff_t *ppos); - long (*ioctl)(void *device_data, unsigned int cmd, - unsigned long arg); - int (*mmap)(void *device_data, struct vm_area_struct *vma); -}; - -Each function is passed the device_data that was originally registered -in the vfio_add_group_dev() call above. This allows the bus driver -an easy place to store its opaque, private data. The open/release -callbacks are issued when a new file descriptor is created for a -device (via VFIO_GROUP_GET_DEVICE_FD). The ioctl interface provides -a direct pass through for VFIO_DEVICE_* ioctls. The read/write/mmap -interfaces implement the device region access defined by the device's -own VFIO_DEVICE_GET_REGION_INFO ioctl. - -------------------------------------------------------------------------------- - -[1] VFIO was originally an acronym for "Virtual Function I/O" in its -initial implementation by Tom Lyon while as Cisco. We've since -outgrown the acronym, but it's catchy. - -[2] "safe" also depends upon a device being "well behaved". It's -possible for multi-function devices to have backdoors between -functions and even for single function devices to have alternative -access to things like PCI config space through MMIO registers. To -guard against the former we can include additional precautions in the -IOMMU driver to group multi-function PCI devices together -(iommu=group_mf). The latter we can't prevent, but the IOMMU should -still provide isolation. For PCI, SR-IOV Virtual Functions are the -best indicator of "well behaved", as these are designed for -virtualization usage models. - -[3] As always there are trade-offs to virtual machine device -assignment that are beyond the scope of VFIO. It's expected that -future IOMMU technologies will reduce some, but maybe not all, of -these trade-offs. - -[4] In this case the device is below a PCI bridge, so transactions -from either function of the device are indistinguishable to the iommu: - --[0000:00]-+-1e.0-[06]--+-0d.0 - \-0d.1 - -00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90) diff --git a/trunk/Documentation/video4linux/CARDLIST.au0828 b/trunk/Documentation/video4linux/CARDLIST.au0828 index a8a65753e544..7b59e953c4bf 100644 --- a/trunk/Documentation/video4linux/CARDLIST.au0828 +++ b/trunk/Documentation/video4linux/CARDLIST.au0828 @@ -3,4 +3,4 @@ 2 -> Hauppauge HVR850 (au0828) [2040:7240] 3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620] 4 -> Hauppauge HVR950Q rev xxF8 (au0828) [2040:7201,2040:7211,2040:7281] - 5 -> Hauppauge Woodbury (au0828) [05e1:0480,2040:8200] + 5 -> Hauppauge Woodbury (au0828) [2040:8200] diff --git a/trunk/Documentation/video4linux/CARDLIST.bttv b/trunk/Documentation/video4linux/CARDLIST.bttv index 581f666a76cf..b753906c7183 100644 --- a/trunk/Documentation/video4linux/CARDLIST.bttv +++ b/trunk/Documentation/video4linux/CARDLIST.bttv @@ -159,4 +159,3 @@ 158 -> Geovision GV-800(S) (slave) [800b:763d,800c:763d,800d:763d] 159 -> ProVideo PV183 [1830:1540,1831:1540,1832:1540,1833:1540,1834:1540,1835:1540,1836:1540,1837:1540] 160 -> Tongwei Video Technology TD-3116 [f200:3116] -161 -> Aposonic W-DVR [0279:0228] diff --git a/trunk/Documentation/video4linux/CARDLIST.cx23885 b/trunk/Documentation/video4linux/CARDLIST.cx23885 index 652aecd13199..f316d1816fcd 100644 --- a/trunk/Documentation/video4linux/CARDLIST.cx23885 +++ b/trunk/Documentation/video4linux/CARDLIST.cx23885 @@ -18,7 +18,7 @@ 17 -> NetUP Dual DVB-S2 CI [1b55:2a2c] 18 -> Hauppauge WinTV-HVR1270 [0070:2211] 19 -> Hauppauge WinTV-HVR1275 [0070:2215,0070:221d,0070:22f2] - 20 -> Hauppauge WinTV-HVR1255 [0070:2251,0070:22f1] + 20 -> Hauppauge WinTV-HVR1255 [0070:2251,0070:2259,0070:22f1] 21 -> Hauppauge WinTV-HVR1210 [0070:2291,0070:2295,0070:2299,0070:229d,0070:22f0,0070:22f3,0070:22f4,0070:22f5] 22 -> Mygica X8506 DMB-TH [14f1:8651] 23 -> Magic-Pro ProHDTV Extreme 2 [14f1:8657] @@ -33,5 +33,3 @@ 32 -> MPX-885 33 -> Mygica X8507 [14f1:8502] 34 -> TerraTec Cinergy T PCIe Dual [153b:117e] - 35 -> TeVii S471 [d471:9022] - 36 -> Hauppauge WinTV-HVR1255 [0070:2259] diff --git a/trunk/Documentation/video4linux/CARDLIST.saa7134 b/trunk/Documentation/video4linux/CARDLIST.saa7134 index 94d9025aa82d..34f3b330e5f4 100644 --- a/trunk/Documentation/video4linux/CARDLIST.saa7134 +++ b/trunk/Documentation/video4linux/CARDLIST.saa7134 @@ -188,4 +188,3 @@ 187 -> Beholder BeholdTV 503 FM [5ace:5030] 188 -> Sensoray 811/911 [6000:0811,6000:0911] 189 -> Kworld PC150-U [17de:a134] -190 -> Asus My Cinema PS3-100 [1043:48cd] diff --git a/trunk/Documentation/video4linux/v4l2-framework.txt b/trunk/Documentation/video4linux/v4l2-framework.txt index 89318be6c1d2..1f5905270050 100644 --- a/trunk/Documentation/video4linux/v4l2-framework.txt +++ b/trunk/Documentation/video4linux/v4l2-framework.txt @@ -594,15 +594,6 @@ You should also set these fields: unlocked_ioctl file operation is called this lock will be taken by the core and released afterwards. See the next section for more details. -- queue: a pointer to the struct vb2_queue associated with this device node. - If queue is non-NULL, and queue->lock is non-NULL, then queue->lock is - used for the queuing ioctls (VIDIOC_REQBUFS, CREATE_BUFS, QBUF, DQBUF, - QUERYBUF, PREPARE_BUF, STREAMON and STREAMOFF) instead of the lock above. - That way the vb2 queuing framework does not have to wait for other ioctls. - This queue pointer is also used by the vb2 helper functions to check for - queuing ownership (i.e. is the filehandle calling it allowed to do the - operation). - - prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. If you want to have a separate priority state per (group of) device node(s), @@ -656,43 +647,47 @@ manually set the struct media_entity type and name fields. A reference to the entity will be automatically acquired/released when the video device is opened/closed. -ioctls and locking ------------------- +v4l2_file_operations and locking +-------------------------------- + +You can set a pointer to a mutex_lock in struct video_device. Usually this +will be either a top-level mutex or a mutex per device node. By default this +lock will be used for unlocked_ioctl, but you can disable locking for +selected ioctls by calling: -The V4L core provides optional locking services. The main service is the -lock field in struct video_device, which is a pointer to a mutex. If you set -this pointer, then that will be used by unlocked_ioctl to serialize all ioctls. + void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd); -If you are using the videobuf2 framework, then there is a second lock that you -can set: video_device->queue->lock. If set, then this lock will be used instead -of video_device->lock to serialize all queuing ioctls (see the previous section -for the full list of those ioctls). +E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF); -The advantage of using a different lock for the queuing ioctls is that for some -drivers (particularly USB drivers) certain commands such as setting controls -can take a long time, so you want to use a separate lock for the buffer queuing -ioctls. That way your VIDIOC_DQBUF doesn't stall because the driver is busy -changing the e.g. exposure of the webcam. +You have to call this before you register the video_device. -Of course, you can always do all the locking yourself by leaving both lock -pointers at NULL. +Particularly with USB drivers where certain commands such as setting controls +can take a long time you may want to do your own locking for the buffer queuing +ioctls. -If you use the old videobuf then you must pass the video_device lock to the -videobuf queue initialize function: if videobuf has to wait for a frame to -arrive, then it will temporarily unlock the lock and relock it afterwards. If -your driver also waits in the code, then you should do the same to allow other -processes to access the device node while the first process is waiting for -something. +If you want still finer-grained locking then you have to set mutex_lock to NULL +and do you own locking completely. + +It is up to the driver developer to decide which method to use. However, if +your driver has high-latency operations (for example, changing the exposure +of a USB webcam might take a long time), then you might be better off with +doing your own locking if you want to allow the user to do other things with +the device while waiting for the high-latency command to finish. + +If a lock is specified then all ioctl commands will be serialized on that +lock. If you use videobuf then you must pass the same lock to the videobuf +queue initialize function: if videobuf has to wait for a frame to arrive, then +it will temporarily unlock the lock and relock it afterwards. If your driver +also waits in the code, then you should do the same to allow other processes +to access the device node while the first process is waiting for something. In the case of videobuf2 you will need to implement the wait_prepare and -wait_finish callbacks to unlock/lock if applicable. If you use the queue->lock -pointer, then you can use the helper functions vb2_ops_wait_prepare/finish. - -The implementation of a hotplug disconnect should also take the lock from -video_device before calling v4l2_device_disconnect. If you are also using -video_device->queue->lock, then you have to first lock video_device->queue->lock -followed by video_device->lock. That way you can be sure no ioctl is running -when you call v4l2_device_disconnect. +wait_finish callbacks to unlock/lock if applicable. In particular, if you use +the lock in struct video_device then you must unlock/lock this mutex in +wait_prepare and wait_finish. + +The implementation of a hotplug disconnect should also take the lock before +calling v4l2_device_disconnect. video_device registration ------------------------- diff --git a/trunk/Documentation/vm/hugetlbpage.txt b/trunk/Documentation/vm/hugetlbpage.txt index 4ac359b7aa17..f8551b3879f8 100644 --- a/trunk/Documentation/vm/hugetlbpage.txt +++ b/trunk/Documentation/vm/hugetlbpage.txt @@ -299,17 +299,11 @@ map_hugetlb.c. ******************************************************************* /* - * map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c + * hugepage-shm: see Documentation/vm/hugepage-shm.c */ ******************************************************************* /* - * hugepage-shm: see tools/testing/selftests/vm/hugepage-shm.c - */ - -******************************************************************* - -/* - * hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c + * hugepage-mmap: see Documentation/vm/hugepage-mmap.c */ diff --git a/trunk/Documentation/w1/slaves/w1_therm b/trunk/Documentation/w1/slaves/w1_therm index 874a8ca93feb..0403aaaba878 100644 --- a/trunk/Documentation/w1/slaves/w1_therm +++ b/trunk/Documentation/w1/slaves/w1_therm @@ -3,7 +3,6 @@ Kernel driver w1_therm Supported chips: * Maxim ds18*20 based temperature sensors. - * Maxim ds1825 based temperature sensors. Author: Evgeniy Polyakov @@ -16,7 +15,6 @@ supported family codes: W1_THERM_DS18S20 0x10 W1_THERM_DS1822 0x22 W1_THERM_DS18B20 0x28 -W1_THERM_DS1825 0x3B Support is provided through the sysfs w1_slave file. Each open and read sequence will initiate a temperature conversion then provide two diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index fdc0119963e7..bd451649f13a 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -827,24 +827,24 @@ F: arch/arm/mach-pxa/colibri-pxa270-income.c ARM/INTEL IOP32X ARM ARCHITECTURE M: Lennert Buytenhek -M: Dan Williams +M: Dan Williams L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained ARM/INTEL IOP33X ARM ARCHITECTURE -M: Dan Williams +M: Dan Williams L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained ARM/INTEL IOP13XX ARM ARCHITECTURE M: Lennert Buytenhek -M: Dan Williams +M: Dan Williams L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained ARM/INTEL IQ81342EX MACHINE SUPPORT M: Lennert Buytenhek -M: Dan Williams +M: Dan Williams L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained @@ -869,7 +869,7 @@ F: drivers/pcmcia/pxa2xx_stargate2.c ARM/INTEL XSC3 (MANZANO) ARM CORE M: Lennert Buytenhek -M: Dan Williams +M: Dan Williams L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained @@ -925,14 +925,14 @@ S: Maintained ARM/NOMADIK ARCHITECTURE M: Alessandro Rubini -M: Linus Walleij +M: Linus Walleij M: STEricsson L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: arch/arm/mach-nomadik/ F: arch/arm/plat-nomadik/ F: drivers/i2c/busses/i2c-nomadik.c -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git +T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT M: Nelson Castillo @@ -1146,7 +1146,7 @@ F: drivers/usb/host/ehci-w90x900.c F: drivers/video/nuc900fb.c ARM/U300 MACHINE SUPPORT -M: Linus Walleij +M: Linus Walleij L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Supported F: arch/arm/mach-u300/ @@ -1161,20 +1161,15 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git ARM/Ux500 ARM ARCHITECTURE M: Srinidhi Kasagar -M: Linus Walleij +M: Linus Walleij L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: arch/arm/mach-ux500/ -F: drivers/clocksource/clksrc-dbx500-prcmu.c F: drivers/dma/ste_dma40* -F: drivers/hwspinlock/u8500_hsem.c F: drivers/mfd/abx500* F: drivers/mfd/ab8500* -F: drivers/mfd/dbx500* -F: drivers/mfd/db8500* -F: drivers/pinctrl/pinctrl-nomadik* +F: drivers/mfd/stmpe* F: drivers/rtc/rtc-ab8500.c -F: drivers/rtc/rtc-pl031.c T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git ARM/VFP SUPPORT @@ -1232,9 +1227,9 @@ S: Maintained F: drivers/hwmon/asb100.c ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API -M: Dan Williams +M: Dan Williams W: http://sourceforge.net/projects/xscaleiop -S: Maintained +S: Supported F: Documentation/crypto/async-tx-api.txt F: crypto/async_tx/ F: drivers/dma/ @@ -1794,16 +1789,15 @@ F: arch/powerpc/oprofile/*cell* F: arch/powerpc/platforms/cell/ CEPH DISTRIBUTED FILE SYSTEM CLIENT -M: Sage Weil +M: Sage Weil L: ceph-devel@vger.kernel.org -W: http://ceph.com/ +W: http://ceph.newdream.net/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git S: Supported F: Documentation/filesystems/ceph.txt F: fs/ceph F: net/ceph F: include/linux/ceph -F: include/linux/crush CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM: L: linux-usb@vger.kernel.org @@ -2217,7 +2211,7 @@ S: Maintained F: drivers/scsi/tmscsim.* DC395x SCSI driver -M: Oliver Neukum +M: Oliver Neukum M: Ali Akcaagac M: Jamie Lenehan W: http://twibble.org/dist/dc395x/ @@ -2364,7 +2358,7 @@ T: git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git DMA GENERIC OFFLOAD ENGINE SUBSYSTEM M: Vinod Koul -M: Dan Williams +M: Dan Williams S: Supported F: drivers/dma/ F: include/linux/dma* @@ -2756,7 +2750,6 @@ M: Jingoo Han L: linux-fbdev@vger.kernel.org S: Maintained F: drivers/video/exynos/exynos_dp* -F: include/video/exynos_dp* EXYNOS MIPI DISPLAY DRIVERS M: Inki Dae @@ -3099,7 +3092,7 @@ F: include/linux/gigaset_dev.h GPIO SUBSYSTEM M: Grant Likely -M: Linus Walleij +M: Linus Walleij S: Maintained T: git git://git.secretlab.ca/git/linux-2.6.git F: Documentation/gpio.txt @@ -3162,7 +3155,8 @@ S: Maintained F: drivers/media/video/gspca/t613.c GSPCA USB WEBCAM DRIVER -M: Hans de Goede +M: Jean-Francois Moine +W: http://moinejf.free.fr L: linux-media@vger.kernel.org T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git S: Maintained @@ -3552,6 +3546,7 @@ K: \b(ABS|SYN)_MT_ INTEL C600 SERIES SAS CONTROLLER DRIVER M: Intel SCU Linux support +M: Dan Williams M: Dave Jiang M: Ed Nadolski L: linux-scsi@vger.kernel.org @@ -3594,8 +3589,8 @@ F: arch/x86/kernel/microcode_core.c F: arch/x86/kernel/microcode_intel.c INTEL I/OAT DMA DRIVER -M: Dan Williams -S: Maintained +M: Dan Williams +S: Supported F: drivers/dma/ioat* INTEL IOMMU (VT-d) @@ -3607,8 +3602,8 @@ F: drivers/iommu/intel-iommu.c F: include/linux/intel-iommu.h INTEL IOP-ADMA DMA DRIVER -M: Dan Williams -S: Odd fixes +M: Dan Williams +S: Maintained F: drivers/dma/iop-adma.c INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT @@ -4537,7 +4532,7 @@ S: Supported F: arch/microblaze/ MICROTEK X6 SCANNER -M: Oliver Neukum +M: Oliver Neukum S: Maintained F: drivers/usb/image/microtek.* @@ -5333,15 +5328,14 @@ PIN CONTROL SUBSYSTEM M: Linus Walleij S: Maintained F: drivers/pinctrl/ -F: include/linux/pinctrl/ PIN CONTROLLER - ST SPEAR -M: Viresh Kumar +M: Viresh Kumar L: spear-devel@list.st.com L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) W: http://www.st.com/spear S: Maintained -F: drivers/pinctrl/spear/ +F: driver/pinctrl/spear/ PKTCDVD DRIVER M: Peter Osterlund @@ -5532,18 +5526,6 @@ S: Maintained F: Documentation/video4linux/README.pvrusb2 F: drivers/media/video/pvrusb2/ -PWM SUBSYSTEM -M: Thierry Reding -L: linux-kernel@vger.kernel.org -S: Maintained -W: http://gitorious.org/linux-pwm -T: git git://gitorious.org/linux-pwm/linux-pwm.git -F: Documentation/pwm.txt -F: Documentation/devicetree/bindings/pwm/ -F: include/linux/pwm.h -F: include/linux/of_pwm.h -F: drivers/pwm/ - PXA2xx/PXA3xx SUPPORT M: Eric Miao M: Russell King @@ -5645,12 +5627,10 @@ S: Supported F: arch/hexagon/ RADOS BLOCK DEVICE (RBD) -M: Yehuda Sadeh -M: Sage Weil -M: Alex Elder +F: include/linux/qnxtypes.h +M: Yehuda Sadeh +M: Sage Weil M: ceph-devel@vger.kernel.org -W: http://ceph.com/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git S: Supported F: drivers/block/rbd.c F: drivers/block/rbd_types.h @@ -5687,7 +5667,7 @@ F: Documentation/blockdev/ramdisk.txt F: drivers/block/brd.c RANDOM NUMBER DRIVER -M: Theodore Ts'o" +M: Matt Mackall S: Maintained F: drivers/char/random.c @@ -5920,16 +5900,6 @@ L: linux-fbdev@vger.kernel.org S: Maintained F: drivers/video/s3c-fb.c -SAMSUNG MULTIFUNCTION DEVICE DRIVERS -M: Sangbeom Kim -L: linux-kernel@vger.kernel.org -S: Supported -F: drivers/mfd/sec*.c -F: drivers/regulator/s2m*.c -F: drivers/regulator/s5m*.c -F: drivers/rtc/rtc-sec.c -F: include/linux/mfd/samsung/ - SERIAL DRIVERS M: Alan Cox L: linux-serial@vger.kernel.org @@ -7076,7 +7046,7 @@ F: include/linux/mtd/ubi.h F: include/mtd/ubi-user.h USB ACM DRIVER -M: Oliver Neukum +M: Oliver Neukum L: linux-usb@vger.kernel.org S: Maintained F: Documentation/usb/acm.txt @@ -7097,7 +7067,7 @@ S: Supported F: drivers/block/ub.c USB CDC ETHERNET DRIVER -M: Oliver Neukum +M: Oliver Neukum L: linux-usb@vger.kernel.org S: Maintained F: drivers/net/usb/cdc_*.c @@ -7170,7 +7140,7 @@ F: drivers/usb/host/isp116x* F: include/linux/usb/isp116x.h USB KAWASAKI LSI DRIVER -M: Oliver Neukum +M: Oliver Neukum L: linux-usb@vger.kernel.org S: Maintained F: drivers/usb/serial/kl5kusb105.* @@ -7288,12 +7258,6 @@ W: http://www.connecttech.com S: Supported F: drivers/usb/serial/whiteheat* -USB SMSC75XX ETHERNET DRIVER -M: Steve Glendinning -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/usb/smsc75xx.* - USB SMSC95XX ETHERNET DRIVER M: Steve Glendinning L: netdev@vger.kernel.org @@ -7393,7 +7357,6 @@ W: http://user-mode-linux.sourceforge.net S: Maintained F: Documentation/virtual/uml/ F: arch/um/ -F: arch/x86/um/ F: fs/hostfs/ F: fs/hppfs/ @@ -7426,14 +7389,6 @@ S: Maintained F: Documentation/filesystems/vfat.txt F: fs/fat/ -VFIO DRIVER -M: Alex Williamson -L: kvm@vger.kernel.org -S: Maintained -F: Documentation/vfio.txt -F: drivers/vfio/ -F: include/linux/vfio.h - VIDEOBUF2 FRAMEWORK M: Pawel Osciak M: Marek Szyprowski @@ -7676,28 +7631,23 @@ S: Supported F: Documentation/hwmon/wm83?? F: arch/arm/mach-s3c64xx/mach-crag6410* F: drivers/clk/clk-wm83*.c -F: drivers/extcon/extcon-arizona.c F: drivers/leds/leds-wm83*.c F: drivers/gpio/gpio-*wm*.c -F: drivers/gpio/gpio-arizona.c F: drivers/hwmon/wm83??-hwmon.c F: drivers/input/misc/wm831x-on.c F: drivers/input/touchscreen/wm831x-ts.c F: drivers/input/touchscreen/wm97*.c -F: drivers/mfd/arizona* -F: drivers/mfd/wm*.c +F: drivers/mfd/wm8*.c F: drivers/power/wm83*.c F: drivers/rtc/rtc-wm83*.c F: drivers/regulator/wm8*.c F: drivers/video/backlight/wm83*_bl.c F: drivers/watchdog/wm83*_wdt.c -F: include/linux/mfd/arizona/ F: include/linux/mfd/wm831x/ F: include/linux/mfd/wm8350/ F: include/linux/mfd/wm8400* F: include/linux/wm97xx.h F: include/sound/wm????.h -F: sound/soc/codecs/arizona.? F: sound/soc/codecs/wm* WORKQUEUE diff --git a/trunk/Makefile b/trunk/Makefile index 9cc77acfc881..4bb09e1b1230 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 3 -PATCHLEVEL = 6 +PATCHLEVEL = 5 SUBLEVEL = 0 -EXTRAVERSION = -rc2 +EXTRAVERSION = NAME = Saber-toothed Squirrel # *DOCUMENTATION* @@ -535,11 +535,11 @@ PHONY += include/config/auto.conf include/config/auto.conf: $(Q)test -e include/generated/autoconf.h -a -e $@ || ( \ - echo >&2; \ - echo >&2 " ERROR: Kernel configuration is invalid."; \ - echo >&2 " include/generated/autoconf.h or $@ are missing.";\ - echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ - echo >&2 ; \ + echo; \ + echo " ERROR: Kernel configuration is invalid."; \ + echo " include/generated/autoconf.h or $@ are missing.";\ + echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ + echo; \ /bin/false) endif # KBUILD_EXTMOD @@ -796,8 +796,8 @@ prepare3: include/config/kernel.release ifneq ($(KBUILD_SRC),) @$(kecho) ' Using $(srctree) as source for kernel' $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \ - echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ - echo >&2 " in the '$(srctree)' directory.";\ + echo " $(srctree) is not clean, please run 'make mrproper'"; \ + echo " in the '$(srctree)' directory.";\ /bin/false; \ fi; endif @@ -971,11 +971,11 @@ else # CONFIG_MODULES # --------------------------------------------------------------------------- modules modules_install: FORCE - @echo >&2 - @echo >&2 "The present kernel configuration has modules disabled." - @echo >&2 "Type 'make config' and enable loadable module support." - @echo >&2 "Then build a kernel with module support enabled." - @echo >&2 + @echo + @echo "The present kernel configuration has modules disabled." + @echo "Type 'make config' and enable loadable module support." + @echo "Then build a kernel with module support enabled." + @echo @exit 1 endif # CONFIG_MODULES diff --git a/trunk/arch/Kconfig b/trunk/arch/Kconfig index 72f2fa189cc5..8c3d957fa8e2 100644 --- a/trunk/arch/Kconfig +++ b/trunk/arch/Kconfig @@ -248,14 +248,7 @@ config HAVE_CMPXCHG_LOCAL config HAVE_CMPXCHG_DOUBLE bool -config ARCH_WANT_IPC_PARSE_VERSION - bool - -config ARCH_WANT_COMPAT_IPC_PARSE_VERSION - bool - config ARCH_WANT_OLD_COMPAT_IPC - select ARCH_WANT_COMPAT_IPC_PARSE_VERSION bool config HAVE_ARCH_SECCOMP_FILTER diff --git a/trunk/arch/alpha/Kconfig b/trunk/arch/alpha/Kconfig index 9944dedee5b1..3de74c9f9610 100644 --- a/trunk/arch/alpha/Kconfig +++ b/trunk/arch/alpha/Kconfig @@ -14,12 +14,9 @@ config ALPHA select AUTO_IRQ_AFFINITY if SMP select GENERIC_IRQ_SHOW select ARCH_WANT_OPTIONAL_GPIOLIB - select ARCH_WANT_IPC_PARSE_VERSION select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_SMP_IDLE_THREAD select GENERIC_CMOS_UPDATE - select GENERIC_STRNCPY_FROM_USER - select GENERIC_STRNLEN_USER help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory, diff --git a/trunk/arch/alpha/include/asm/atomic.h b/trunk/arch/alpha/include/asm/atomic.h index c2cbe4fc391c..3bb7ffeae3bc 100644 --- a/trunk/arch/alpha/include/asm/atomic.h +++ b/trunk/arch/alpha/include/asm/atomic.h @@ -14,8 +14,8 @@ */ -#define ATOMIC_INIT(i) { (i) } -#define ATOMIC64_INIT(i) { (i) } +#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) +#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) diff --git a/trunk/arch/alpha/include/asm/fpu.h b/trunk/arch/alpha/include/asm/fpu.h index e477bcd5b94a..db00f7885faa 100644 --- a/trunk/arch/alpha/include/asm/fpu.h +++ b/trunk/arch/alpha/include/asm/fpu.h @@ -1,9 +1,7 @@ #ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H -#ifdef __KERNEL__ #include -#endif /* * Alpha floating-point control register defines: diff --git a/trunk/arch/alpha/include/asm/ptrace.h b/trunk/arch/alpha/include/asm/ptrace.h index b87755a19554..fd698a174f26 100644 --- a/trunk/arch/alpha/include/asm/ptrace.h +++ b/trunk/arch/alpha/include/asm/ptrace.h @@ -76,10 +76,7 @@ struct switch_stack { #define task_pt_regs(task) \ ((struct pt_regs *) (task_stack_page(task) + 2*PAGE_SIZE) - 1) -#define current_pt_regs() \ - ((struct pt_regs *) ((char *)current_thread_info() + 2*PAGE_SIZE) - 1) - -#define force_successful_syscall_return() (current_pt_regs()->r0 = 0) +#define force_successful_syscall_return() (task_pt_regs(current)->r0 = 0) #endif diff --git a/trunk/arch/alpha/include/asm/socket.h b/trunk/arch/alpha/include/asm/socket.h index 7d2f75be932e..dcb221a4b5be 100644 --- a/trunk/arch/alpha/include/asm/socket.h +++ b/trunk/arch/alpha/include/asm/socket.h @@ -76,11 +76,9 @@ /* Instruct lower device to use last 4-bytes of skb data as FCS */ #define SO_NOFCS 43 -#ifdef __KERNEL__ /* O_NONBLOCK clashes with the bits used for socket types. Therefore we * have to define SOCK_NONBLOCK to a different value here. */ #define SOCK_NONBLOCK 0x40000000 -#endif /* __KERNEL__ */ #endif /* _ASM_SOCKET_H */ diff --git a/trunk/arch/alpha/include/asm/uaccess.h b/trunk/arch/alpha/include/asm/uaccess.h index 766fdfde2b7a..b49ec2f8d6e3 100644 --- a/trunk/arch/alpha/include/asm/uaccess.h +++ b/trunk/arch/alpha/include/asm/uaccess.h @@ -433,12 +433,36 @@ clear_user(void __user *to, long len) #undef __module_address #undef __module_call -#define user_addr_max() \ - (segment_eq(get_fs(), USER_DS) ? TASK_SIZE : ~0UL) +/* Returns: -EFAULT if exception before terminator, N if the entire + buffer filled, else strlen. */ -extern long strncpy_from_user(char *dest, const char __user *src, long count); -extern __must_check long strlen_user(const char __user *str); -extern __must_check long strnlen_user(const char __user *str, long n); +extern long __strncpy_from_user(char *__to, const char __user *__from, long __to_len); + +extern inline long +strncpy_from_user(char *to, const char __user *from, long n) +{ + long ret = -EFAULT; + if (__access_ok((unsigned long)from, 0, get_fs())) + ret = __strncpy_from_user(to, from, n); + return ret; +} + +/* Returns: 0 if bad, string length+1 (memory size) of string if ok */ +extern long __strlen_user(const char __user *); + +extern inline long strlen_user(const char __user *str) +{ + return access_ok(VERIFY_READ,str,0) ? __strlen_user(str) : 0; +} + +/* Returns: 0 if exception before NUL or reaching the supplied limit (N), + * a value greater than N if the limit would be exceeded, else strlen. */ +extern long __strnlen_user(const char __user *, long); + +extern inline long strnlen_user(const char __user *str, long n) +{ + return access_ok(VERIFY_READ,str,0) ? __strnlen_user(str, n) : 0; +} /* * About the exception table: diff --git a/trunk/arch/alpha/include/asm/unistd.h b/trunk/arch/alpha/include/asm/unistd.h index a31a78eac9b9..d1f23b722df4 100644 --- a/trunk/arch/alpha/include/asm/unistd.h +++ b/trunk/arch/alpha/include/asm/unistd.h @@ -465,13 +465,12 @@ #define __NR_setns 501 #define __NR_accept4 502 #define __NR_sendmmsg 503 -#define __NR_process_vm_readv 504 -#define __NR_process_vm_writev 505 #ifdef __KERNEL__ -#define NR_SYSCALLS 506 +#define NR_SYSCALLS 504 +#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_OLD_READDIR #define __ARCH_WANT_STAT64 #define __ARCH_WANT_SYS_GETHOSTNAME diff --git a/trunk/arch/alpha/include/asm/word-at-a-time.h b/trunk/arch/alpha/include/asm/word-at-a-time.h deleted file mode 100644 index 6b340d0f1521..000000000000 --- a/trunk/arch/alpha/include/asm/word-at-a-time.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef _ASM_WORD_AT_A_TIME_H -#define _ASM_WORD_AT_A_TIME_H - -#include - -/* - * word-at-a-time interface for Alpha. - */ - -/* - * We do not use the word_at_a_time struct on Alpha, but it needs to be - * implemented to humour the generic code. - */ -struct word_at_a_time { - const unsigned long unused; -}; - -#define WORD_AT_A_TIME_CONSTANTS { 0 } - -/* Return nonzero if val has a zero */ -static inline unsigned long has_zero(unsigned long val, unsigned long *bits, const struct word_at_a_time *c) -{ - unsigned long zero_locations = __kernel_cmpbge(0, val); - *bits = zero_locations; - return zero_locations; -} - -static inline unsigned long prep_zero_mask(unsigned long val, unsigned long bits, const struct word_at_a_time *c) -{ - return bits; -} - -#define create_zero_mask(bits) (bits) - -static inline unsigned long find_zero(unsigned long bits) -{ -#if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67) - /* Simple if have CIX instructions */ - return __kernel_cttz(bits); -#else - unsigned long t1, t2, t3; - /* Retain lowest set bit only */ - bits &= -bits; - /* Binary search for lowest set bit */ - t1 = bits & 0xf0; - t2 = bits & 0xcc; - t3 = bits & 0xaa; - if (t1) t1 = 4; - if (t2) t2 = 2; - if (t3) t3 = 1; - return t1 + t2 + t3; -#endif -} - -#endif /* _ASM_WORD_AT_A_TIME_H */ diff --git a/trunk/arch/alpha/kernel/alpha_ksyms.c b/trunk/arch/alpha/kernel/alpha_ksyms.c index 15fa821d09cd..d96e742d4dc2 100644 --- a/trunk/arch/alpha/kernel/alpha_ksyms.c +++ b/trunk/arch/alpha/kernel/alpha_ksyms.c @@ -52,6 +52,7 @@ EXPORT_SYMBOL(alpha_write_fp_reg_s); /* entry.S */ EXPORT_SYMBOL(kernel_thread); +EXPORT_SYMBOL(kernel_execve); /* Networking helper routines. */ EXPORT_SYMBOL(csum_tcpudp_magic); @@ -73,6 +74,8 @@ EXPORT_SYMBOL(alpha_fp_emul); */ EXPORT_SYMBOL(__copy_user); EXPORT_SYMBOL(__do_clear_user); +EXPORT_SYMBOL(__strncpy_from_user); +EXPORT_SYMBOL(__strnlen_user); /* * SMP-specific symbols. diff --git a/trunk/arch/alpha/kernel/entry.S b/trunk/arch/alpha/kernel/entry.S index ec0da0567ab5..6d159cee5f2f 100644 --- a/trunk/arch/alpha/kernel/entry.S +++ b/trunk/arch/alpha/kernel/entry.S @@ -663,6 +663,58 @@ kernel_thread: br ret_to_kernel .end kernel_thread +/* + * kernel_execve(path, argv, envp) + */ + .align 4 + .globl kernel_execve + .ent kernel_execve +kernel_execve: + /* We can be called from a module. */ + ldgp $gp, 0($27) + lda $sp, -(32+SIZEOF_PT_REGS+8)($sp) + .frame $sp, 32+SIZEOF_PT_REGS+8, $26, 0 + stq $26, 0($sp) + stq $16, 8($sp) + stq $17, 16($sp) + stq $18, 24($sp) + .prologue 1 + + lda $16, 32($sp) + lda $17, 0 + lda $18, SIZEOF_PT_REGS + bsr $26, memset !samegp + + /* Avoid the HAE being gratuitously wrong, which would cause us + to do the whole turn off interrupts thing and restore it. */ + ldq $2, alpha_mv+HAE_CACHE + stq $2, 152+32($sp) + + ldq $16, 8($sp) + ldq $17, 16($sp) + ldq $18, 24($sp) + lda $19, 32($sp) + bsr $26, do_execve !samegp + + ldq $26, 0($sp) + bne $0, 1f /* error! */ + + /* Move the temporary pt_regs struct from its current location + to the top of the kernel stack frame. See copy_thread for + details for a normal process. */ + lda $16, 0x4000 - SIZEOF_PT_REGS($8) + lda $17, 32($sp) + lda $18, SIZEOF_PT_REGS + bsr $26, memmove !samegp + + /* Take that over as our new stack frame and visit userland! */ + lda $sp, 0x4000 - SIZEOF_PT_REGS($8) + br $31, ret_from_sys_call + +1: lda $sp, 32+SIZEOF_PT_REGS+8($sp) + ret +.end kernel_execve + /* * Special system calls. Most of these are special in that they either @@ -744,6 +796,115 @@ sys_rt_sigreturn: br ret_from_sys_call .end sys_rt_sigreturn + .align 4 + .globl sys_sethae + .ent sys_sethae +sys_sethae: + .prologue 0 + stq $16, 152($sp) + ret +.end sys_sethae + + .align 4 + .globl osf_getpriority + .ent osf_getpriority +osf_getpriority: + lda $sp, -16($sp) + stq $26, 0($sp) + .prologue 0 + + jsr $26, sys_getpriority + + ldq $26, 0($sp) + blt $0, 1f + + /* Return value is the unbiased priority, i.e. 20 - prio. + This does result in negative return values, so signal + no error by writing into the R0 slot. */ + lda $1, 20 + stq $31, 16($sp) + subl $1, $0, $0 + unop + +1: lda $sp, 16($sp) + ret +.end osf_getpriority + + .align 4 + .globl sys_getxuid + .ent sys_getxuid +sys_getxuid: + .prologue 0 + ldq $2, TI_TASK($8) + ldq $3, TASK_CRED($2) + ldl $0, CRED_UID($3) + ldl $1, CRED_EUID($3) + stq $1, 80($sp) + ret +.end sys_getxuid + + .align 4 + .globl sys_getxgid + .ent sys_getxgid +sys_getxgid: + .prologue 0 + ldq $2, TI_TASK($8) + ldq $3, TASK_CRED($2) + ldl $0, CRED_GID($3) + ldl $1, CRED_EGID($3) + stq $1, 80($sp) + ret +.end sys_getxgid + + .align 4 + .globl sys_getxpid + .ent sys_getxpid +sys_getxpid: + .prologue 0 + ldq $2, TI_TASK($8) + + /* See linux/kernel/timer.c sys_getppid for discussion + about this loop. */ + ldq $3, TASK_GROUP_LEADER($2) + ldq $4, TASK_REAL_PARENT($3) + ldl $0, TASK_TGID($2) +1: ldl $1, TASK_TGID($4) +#ifdef CONFIG_SMP + mov $4, $5 + mb + ldq $3, TASK_GROUP_LEADER($2) + ldq $4, TASK_REAL_PARENT($3) + cmpeq $4, $5, $5 + beq $5, 1b +#endif + stq $1, 80($sp) + ret +.end sys_getxpid + + .align 4 + .globl sys_alpha_pipe + .ent sys_alpha_pipe +sys_alpha_pipe: + lda $sp, -16($sp) + stq $26, 0($sp) + .prologue 0 + + mov $31, $17 + lda $16, 8($sp) + jsr $26, do_pipe_flags + + ldq $26, 0($sp) + bne $0, 1f + + /* The return values are in $0 and $20. */ + ldl $1, 12($sp) + ldl $0, 8($sp) + + stq $1, 80+16($sp) +1: lda $sp, 16($sp) + ret +.end sys_alpha_pipe + .align 4 .globl sys_execve .ent sys_execve diff --git a/trunk/arch/alpha/kernel/osf_sys.c b/trunk/arch/alpha/kernel/osf_sys.c index bc1acdda7a5e..98a103621af6 100644 --- a/trunk/arch/alpha/kernel/osf_sys.c +++ b/trunk/arch/alpha/kernel/osf_sys.c @@ -1404,52 +1404,3 @@ SYSCALL_DEFINE3(osf_writev, unsigned long, fd, } #endif - -SYSCALL_DEFINE2(osf_getpriority, int, which, int, who) -{ - int prio = sys_getpriority(which, who); - if (prio >= 0) { - /* Return value is the unbiased priority, i.e. 20 - prio. - This does result in negative return values, so signal - no error */ - force_successful_syscall_return(); - prio = 20 - prio; - } - return prio; -} - -SYSCALL_DEFINE0(getxuid) -{ - current_pt_regs()->r20 = sys_geteuid(); - return sys_getuid(); -} - -SYSCALL_DEFINE0(getxgid) -{ - current_pt_regs()->r20 = sys_getegid(); - return sys_getgid(); -} - -SYSCALL_DEFINE0(getxpid) -{ - current_pt_regs()->r20 = sys_getppid(); - return sys_getpid(); -} - -SYSCALL_DEFINE0(alpha_pipe) -{ - int fd[2]; - int res = do_pipe_flags(fd, 0); - if (!res) { - /* The return values are in $0 and $20. */ - current_pt_regs()->r20 = fd[1]; - res = fd[0]; - } - return res; -} - -SYSCALL_DEFINE1(sethae, unsigned long, val) -{ - current_pt_regs()->hae = val; - return 0; -} diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index d6fde98b74b3..153d3fce3e8e 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -455,22 +455,3 @@ get_wchan(struct task_struct *p) } return pc; } - -int kernel_execve(const char *path, const char *const argv[], const char *const envp[]) -{ - /* Avoid the HAE being gratuitously wrong, which would cause us - to do the whole turn off interrupts thing and restore it. */ - struct pt_regs regs = {.hae = alpha_mv.hae_cache}; - int err = do_execve(path, argv, envp, ®s); - if (!err) { - struct pt_regs *p = current_pt_regs(); - /* copy regs to normal position and off to userland we go... */ - *p = regs; - __asm__ __volatile__ ( - "mov %0, $sp;" - "br $31, ret_from_sys_call" - : : "r"(p)); - } - return err; -} -EXPORT_SYMBOL(kernel_execve); diff --git a/trunk/arch/alpha/kernel/smc37c669.c b/trunk/arch/alpha/kernel/smc37c669.c index c803fc76ae4f..0435921d41c6 100644 --- a/trunk/arch/alpha/kernel/smc37c669.c +++ b/trunk/arch/alpha/kernel/smc37c669.c @@ -933,6 +933,18 @@ void SMC37c669_display_device_info( * *-- */ +#if 0 +/* $INCLUDE_OPTIONS$ */ +#include "cp$inc:platform_io.h" +/* $INCLUDE_OPTIONS_END$ */ +#include "cp$src:common.h" +#include "cp$inc:prototypes.h" +#include "cp$src:kernel_def.h" +#include "cp$src:msg_def.h" +#include "cp$src:smcc669_def.h" +/* Platform-specific includes */ +#include "cp$src:platform.h" +#endif #ifndef TRUE #define TRUE 1 diff --git a/trunk/arch/alpha/kernel/systbls.S b/trunk/arch/alpha/kernel/systbls.S index 2ac6b45c3e00..87835235f114 100644 --- a/trunk/arch/alpha/kernel/systbls.S +++ b/trunk/arch/alpha/kernel/systbls.S @@ -111,7 +111,7 @@ sys_call_table: .quad sys_socket .quad sys_connect .quad sys_accept - .quad sys_osf_getpriority /* 100 */ + .quad osf_getpriority /* 100 */ .quad sys_send .quad sys_recv .quad sys_sigreturn @@ -522,8 +522,6 @@ sys_call_table: .quad sys_setns .quad sys_accept4 .quad sys_sendmmsg - .quad sys_process_vm_readv - .quad sys_process_vm_writev /* 505 */ .size sys_call_table, . - sys_call_table .type sys_call_table, @object diff --git a/trunk/arch/alpha/lib/Makefile b/trunk/arch/alpha/lib/Makefile index 59660743237c..c0a83ab62b78 100644 --- a/trunk/arch/alpha/lib/Makefile +++ b/trunk/arch/alpha/lib/Makefile @@ -31,6 +31,8 @@ lib-y = __divqu.o __remqu.o __divlu.o __remlu.o \ $(ev6-y)memchr.o \ $(ev6-y)copy_user.o \ $(ev6-y)clear_user.o \ + $(ev6-y)strncpy_from_user.o \ + $(ev67-y)strlen_user.o \ $(ev6-y)csum_ipv6_magic.o \ $(ev6-y)clear_page.o \ $(ev6-y)copy_page.o \ diff --git a/trunk/arch/alpha/lib/ev6-strncpy_from_user.S b/trunk/arch/alpha/lib/ev6-strncpy_from_user.S new file mode 100644 index 000000000000..d2e28178cacc --- /dev/null +++ b/trunk/arch/alpha/lib/ev6-strncpy_from_user.S @@ -0,0 +1,424 @@ +/* + * arch/alpha/lib/ev6-strncpy_from_user.S + * 21264 version contributed by Rick Gorton + * + * Just like strncpy except in the return value: + * + * -EFAULT if an exception occurs before the terminator is copied. + * N if the buffer filled. + * + * Otherwise the length of the string is returned. + * + * Much of the information about 21264 scheduling/coding comes from: + * Compiler Writer's Guide for the Alpha 21264 + * abbreviated as 'CWG' in other comments here + * ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html + * Scheduling notation: + * E - either cluster + * U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1 + * L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1 + * A bunch of instructions got moved and temp registers were changed + * to aid in scheduling. Control flow was also re-arranged to eliminate + * branches, and to provide longer code sequences to enable better scheduling. + * A total rewrite (using byte load/stores for start & tail sequences) + * is desirable, but very difficult to do without a from-scratch rewrite. + * Save that for the future. + */ + + +#include +#include + + +/* Allow an exception for an insn; exit if we get one. */ +#define EX(x,y...) \ + 99: x,##y; \ + .section __ex_table,"a"; \ + .long 99b - .; \ + lda $31, $exception-99b($0); \ + .previous + + + .set noat + .set noreorder + .text + + .globl __strncpy_from_user + .ent __strncpy_from_user + .frame $30, 0, $26 + .prologue 0 + + .align 4 +__strncpy_from_user: + and a0, 7, t3 # E : find dest misalignment + beq a2, $zerolength # U : + + /* Are source and destination co-aligned? */ + mov a0, v0 # E : save the string start + xor a0, a1, t4 # E : + EX( ldq_u t1, 0(a1) ) # L : Latency=3 load first quadword + ldq_u t0, 0(a0) # L : load first (partial) aligned dest quadword + + addq a2, t3, a2 # E : bias count by dest misalignment + subq a2, 1, a3 # E : + addq zero, 1, t10 # E : + and t4, 7, t4 # E : misalignment between the two + + and a3, 7, t6 # E : number of tail bytes + sll t10, t6, t10 # E : t10 = bitmask of last count byte + bne t4, $unaligned # U : + lda t2, -1 # E : build a mask against false zero + + /* + * We are co-aligned; take care of a partial first word. + * On entry to this basic block: + * t0 == the first destination word for masking back in + * t1 == the first source word. + */ + + srl a3, 3, a2 # E : a2 = loop counter = (count - 1)/8 + addq a1, 8, a1 # E : + mskqh t2, a1, t2 # U : detection in the src word + nop + + /* Create the 1st output word and detect 0's in the 1st input word. */ + mskqh t1, a1, t3 # U : + mskql t0, a1, t0 # U : assemble the first output word + ornot t1, t2, t2 # E : + nop + + cmpbge zero, t2, t8 # E : bits set iff null found + or t0, t3, t0 # E : + beq a2, $a_eoc # U : + bne t8, $a_eos # U : 2nd branch in a quad. Bad. + + /* On entry to this basic block: + * t0 == a source quad not containing a null. + * a0 - current aligned destination address + * a1 - current aligned source address + * a2 - count of quadwords to move. + * NOTE: Loop improvement - unrolling this is going to be + * a huge win, since we're going to stall otherwise. + * Fix this later. For _really_ large copies, look + * at using wh64 on a look-ahead basis. See the code + * in clear_user.S and copy_user.S. + * Presumably, since (a0) and (a1) do not overlap (by C definition) + * Lots of nops here: + * - Separate loads from stores + * - Keep it to 1 branch/quadpack so the branch predictor + * can train. + */ +$a_loop: + stq_u t0, 0(a0) # L : + addq a0, 8, a0 # E : + nop + subq a2, 1, a2 # E : + + EX( ldq_u t0, 0(a1) ) # L : + addq a1, 8, a1 # E : + cmpbge zero, t0, t8 # E : Stall 2 cycles on t0 + beq a2, $a_eoc # U : + + beq t8, $a_loop # U : + nop + nop + nop + + /* Take care of the final (partial) word store. At this point + * the end-of-count bit is set in t8 iff it applies. + * + * On entry to this basic block we have: + * t0 == the source word containing the null + * t8 == the cmpbge mask that found it. + */ +$a_eos: + negq t8, t12 # E : find low bit set + and t8, t12, t12 # E : + + /* We're doing a partial word store and so need to combine + our source and original destination words. */ + ldq_u t1, 0(a0) # L : + subq t12, 1, t6 # E : + + or t12, t6, t8 # E : + zapnot t0, t8, t0 # U : clear src bytes > null + zap t1, t8, t1 # U : clear dst bytes <= null + or t0, t1, t0 # E : + + stq_u t0, 0(a0) # L : + br $finish_up # L0 : + nop + nop + + /* Add the end-of-count bit to the eos detection bitmask. */ + .align 4 +$a_eoc: + or t10, t8, t8 + br $a_eos + nop + nop + + +/* The source and destination are not co-aligned. Align the destination + and cope. We have to be very careful about not reading too much and + causing a SEGV. */ + + .align 4 +$u_head: + /* We know just enough now to be able to assemble the first + full source word. We can still find a zero at the end of it + that prevents us from outputting the whole thing. + + On entry to this basic block: + t0 == the first dest word, unmasked + t1 == the shifted low bits of the first source word + t6 == bytemask that is -1 in dest word bytes */ + + EX( ldq_u t2, 8(a1) ) # L : load second src word + addq a1, 8, a1 # E : + mskql t0, a0, t0 # U : mask trailing garbage in dst + extqh t2, a1, t4 # U : + + or t1, t4, t1 # E : first aligned src word complete + mskqh t1, a0, t1 # U : mask leading garbage in src + or t0, t1, t0 # E : first output word complete + or t0, t6, t6 # E : mask original data for zero test + + cmpbge zero, t6, t8 # E : + beq a2, $u_eocfin # U : + bne t8, $u_final # U : bad news - 2nd branch in a quad + lda t6, -1 # E : mask out the bits we have + + mskql t6, a1, t6 # U : already seen + stq_u t0, 0(a0) # L : store first output word + or t6, t2, t2 # E : + cmpbge zero, t2, t8 # E : find nulls in second partial + + addq a0, 8, a0 # E : + subq a2, 1, a2 # E : + bne t8, $u_late_head_exit # U : + nop + + /* Finally, we've got all the stupid leading edge cases taken care + of and we can set up to enter the main loop. */ + + extql t2, a1, t1 # U : position hi-bits of lo word + EX( ldq_u t2, 8(a1) ) # L : read next high-order source word + addq a1, 8, a1 # E : + cmpbge zero, t2, t8 # E : + + beq a2, $u_eoc # U : + bne t8, $u_eos # U : + nop + nop + + /* Unaligned copy main loop. In order to avoid reading too much, + the loop is structured to detect zeros in aligned source words. + This has, unfortunately, effectively pulled half of a loop + iteration out into the head and half into the tail, but it does + prevent nastiness from accumulating in the very thing we want + to run as fast as possible. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word + + We further know that t2 does not contain a null terminator. */ + + /* + * Extra nops here: + * separate load quads from store quads + * only one branch/quad to permit predictor training + */ + + .align 4 +$u_loop: + extqh t2, a1, t0 # U : extract high bits for current word + addq a1, 8, a1 # E : + extql t2, a1, t3 # U : extract low bits for next time + addq a0, 8, a0 # E : + + or t0, t1, t0 # E : current dst word now complete + EX( ldq_u t2, 0(a1) ) # L : load high word for next time + subq a2, 1, a2 # E : + nop + + stq_u t0, -8(a0) # L : save the current word + mov t3, t1 # E : + cmpbge zero, t2, t8 # E : test new word for eos + beq a2, $u_eoc # U : + + beq t8, $u_loop # U : + nop + nop + nop + + /* We've found a zero somewhere in the source word we just read. + If it resides in the lower half, we have one (probably partial) + word to write out, and if it resides in the upper half, we + have one full and one partial word left to write out. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word. */ + .align 4 +$u_eos: + extqh t2, a1, t0 # U : + or t0, t1, t0 # E : first (partial) source word complete + cmpbge zero, t0, t8 # E : is the null in this first bit? + nop + + bne t8, $u_final # U : + stq_u t0, 0(a0) # L : the null was in the high-order bits + addq a0, 8, a0 # E : + subq a2, 1, a2 # E : + + .align 4 +$u_late_head_exit: + extql t2, a1, t0 # U : + cmpbge zero, t0, t8 # E : + or t8, t10, t6 # E : + cmoveq a2, t6, t8 # E : + + /* Take care of a final (probably partial) result word. + On entry to this basic block: + t0 == assembled source word + t8 == cmpbge mask that found the null. */ + .align 4 +$u_final: + negq t8, t6 # E : isolate low bit set + and t6, t8, t12 # E : + ldq_u t1, 0(a0) # L : + subq t12, 1, t6 # E : + + or t6, t12, t8 # E : + zapnot t0, t8, t0 # U : kill source bytes > null + zap t1, t8, t1 # U : kill dest bytes <= null + or t0, t1, t0 # E : + + stq_u t0, 0(a0) # E : + br $finish_up # U : + nop + nop + + .align 4 +$u_eoc: # end-of-count + extqh t2, a1, t0 # U : + or t0, t1, t0 # E : + cmpbge zero, t0, t8 # E : + nop + + .align 4 +$u_eocfin: # end-of-count, final word + or t10, t8, t8 # E : + br $u_final # U : + nop + nop + + /* Unaligned copy entry point. */ + .align 4 +$unaligned: + + srl a3, 3, a2 # U : a2 = loop counter = (count - 1)/8 + and a0, 7, t4 # E : find dest misalignment + and a1, 7, t5 # E : find src misalignment + mov zero, t0 # E : + + /* Conditionally load the first destination word and a bytemask + with 0xff indicating that the destination byte is sacrosanct. */ + + mov zero, t6 # E : + beq t4, 1f # U : + ldq_u t0, 0(a0) # L : + lda t6, -1 # E : + + mskql t6, a0, t6 # E : + nop + nop + nop + + .align 4 +1: + subq a1, t4, a1 # E : sub dest misalignment from src addr + /* If source misalignment is larger than dest misalignment, we need + extra startup checks to avoid SEGV. */ + cmplt t4, t5, t12 # E : + extql t1, a1, t1 # U : shift src into place + lda t2, -1 # E : for creating masks later + + beq t12, $u_head # U : + mskqh t2, t5, t2 # U : begin src byte validity mask + cmpbge zero, t1, t8 # E : is there a zero? + nop + + extql t2, a1, t2 # U : + or t8, t10, t5 # E : test for end-of-count too + cmpbge zero, t2, t3 # E : + cmoveq a2, t5, t8 # E : Latency=2, extra map slot + + nop # E : goes with cmov + andnot t8, t3, t8 # E : + beq t8, $u_head # U : + nop + + /* At this point we've found a zero in the first partial word of + the source. We need to isolate the valid source data and mask + it into the original destination data. (Incidentally, we know + that we'll need at least one byte of that original dest word.) */ + + ldq_u t0, 0(a0) # L : + negq t8, t6 # E : build bitmask of bytes <= zero + mskqh t1, t4, t1 # U : + and t6, t8, t12 # E : + + subq t12, 1, t6 # E : + or t6, t12, t8 # E : + zapnot t2, t8, t2 # U : prepare source word; mirror changes + zapnot t1, t8, t1 # U : to source validity mask + + andnot t0, t2, t0 # E : zero place for source to reside + or t0, t1, t0 # E : and put it there + stq_u t0, 0(a0) # L : + nop + + .align 4 +$finish_up: + zapnot t0, t12, t4 # U : was last byte written null? + and t12, 0xf0, t3 # E : binary search for the address of the + cmovne t4, 1, t4 # E : Latency=2, extra map slot + nop # E : with cmovne + + and t12, 0xcc, t2 # E : last byte written + and t12, 0xaa, t1 # E : + cmovne t3, 4, t3 # E : Latency=2, extra map slot + nop # E : with cmovne + + bic a0, 7, t0 + cmovne t2, 2, t2 # E : Latency=2, extra map slot + nop # E : with cmovne + nop + + cmovne t1, 1, t1 # E : Latency=2, extra map slot + nop # E : with cmovne + addq t0, t3, t0 # E : + addq t1, t2, t1 # E : + + addq t0, t1, t0 # E : + addq t0, t4, t0 # add one if we filled the buffer + subq t0, v0, v0 # find string length + ret # L0 : + + .align 4 +$zerolength: + nop + nop + nop + clr v0 + +$exception: + nop + nop + nop + ret + + .end __strncpy_from_user diff --git a/trunk/arch/alpha/lib/ev67-strlen_user.S b/trunk/arch/alpha/lib/ev67-strlen_user.S new file mode 100644 index 000000000000..57e0d77b81a6 --- /dev/null +++ b/trunk/arch/alpha/lib/ev67-strlen_user.S @@ -0,0 +1,107 @@ +/* + * arch/alpha/lib/ev67-strlen_user.S + * 21264 version contributed by Rick Gorton + * + * Return the length of the string including the NULL terminator + * (strlen+1) or zero if an error occurred. + * + * In places where it is critical to limit the processing time, + * and the data is not trusted, strnlen_user() should be used. + * It will return a value greater than its second argument if + * that limit would be exceeded. This implementation is allowed + * to access memory beyond the limit, but will not cross a page + * boundary when doing so. + * + * Much of the information about 21264 scheduling/coding comes from: + * Compiler Writer's Guide for the Alpha 21264 + * abbreviated as 'CWG' in other comments here + * ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html + * Scheduling notation: + * E - either cluster + * U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1 + * L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1 + * Try not to change the actual algorithm if possible for consistency. + */ + +#include + + +/* Allow an exception for an insn; exit if we get one. */ +#define EX(x,y...) \ + 99: x,##y; \ + .section __ex_table,"a"; \ + .long 99b - .; \ + lda v0, $exception-99b(zero); \ + .previous + + + .set noreorder + .set noat + .text + + .globl __strlen_user + .ent __strlen_user + .frame sp, 0, ra + + .align 4 +__strlen_user: + ldah a1, 32767(zero) # do not use plain strlen_user() for strings + # that might be almost 2 GB long; you should + # be using strnlen_user() instead + nop + nop + nop + + .globl __strnlen_user + + .align 4 +__strnlen_user: + .prologue 0 + EX( ldq_u t0, 0(a0) ) # L : load first quadword (a0 may be misaligned) + lda t1, -1(zero) # E : + + insqh t1, a0, t1 # U : + andnot a0, 7, v0 # E : + or t1, t0, t0 # E : + subq a0, 1, a0 # E : get our +1 for the return + + cmpbge zero, t0, t1 # E : t1 <- bitmask: bit i == 1 <==> i-th byte == 0 + subq a1, 7, t2 # E : + subq a0, v0, t0 # E : + bne t1, $found # U : + + addq t2, t0, t2 # E : + addq a1, 1, a1 # E : + nop # E : + nop # E : + + .align 4 +$loop: ble t2, $limit # U : + EX( ldq t0, 8(v0) ) # L : + nop # E : + nop # E : + + cmpbge zero, t0, t1 # E : + subq t2, 8, t2 # E : + addq v0, 8, v0 # E : addr += 8 + beq t1, $loop # U : + +$found: cttz t1, t2 # U0 : + addq v0, t2, v0 # E : + subq v0, a0, v0 # E : + ret # L0 : + +$exception: + nop + nop + nop + ret + + .align 4 # currently redundant +$limit: + nop + nop + subq a1, t2, v0 + ret + + .end __strlen_user diff --git a/trunk/arch/alpha/lib/strlen_user.S b/trunk/arch/alpha/lib/strlen_user.S new file mode 100644 index 000000000000..508a18e96479 --- /dev/null +++ b/trunk/arch/alpha/lib/strlen_user.S @@ -0,0 +1,91 @@ +/* + * arch/alpha/lib/strlen_user.S + * + * Return the length of the string including the NUL terminator + * (strlen+1) or zero if an error occurred. + * + * In places where it is critical to limit the processing time, + * and the data is not trusted, strnlen_user() should be used. + * It will return a value greater than its second argument if + * that limit would be exceeded. This implementation is allowed + * to access memory beyond the limit, but will not cross a page + * boundary when doing so. + */ + +#include + + +/* Allow an exception for an insn; exit if we get one. */ +#define EX(x,y...) \ + 99: x,##y; \ + .section __ex_table,"a"; \ + .long 99b - .; \ + lda v0, $exception-99b(zero); \ + .previous + + + .set noreorder + .set noat + .text + + .globl __strlen_user + .ent __strlen_user + .frame sp, 0, ra + + .align 3 +__strlen_user: + ldah a1, 32767(zero) # do not use plain strlen_user() for strings + # that might be almost 2 GB long; you should + # be using strnlen_user() instead + + .globl __strnlen_user + + .align 3 +__strnlen_user: + .prologue 0 + + EX( ldq_u t0, 0(a0) ) # load first quadword (a0 may be misaligned) + lda t1, -1(zero) + insqh t1, a0, t1 + andnot a0, 7, v0 + or t1, t0, t0 + subq a0, 1, a0 # get our +1 for the return + cmpbge zero, t0, t1 # t1 <- bitmask: bit i == 1 <==> i-th byte == 0 + subq a1, 7, t2 + subq a0, v0, t0 + bne t1, $found + + addq t2, t0, t2 + addq a1, 1, a1 + + .align 3 +$loop: ble t2, $limit + EX( ldq t0, 8(v0) ) + subq t2, 8, t2 + addq v0, 8, v0 # addr += 8 + cmpbge zero, t0, t1 + beq t1, $loop + +$found: negq t1, t2 # clear all but least set bit + and t1, t2, t1 + + and t1, 0xf0, t2 # binary search for that set bit + and t1, 0xcc, t3 + and t1, 0xaa, t4 + cmovne t2, 4, t2 + cmovne t3, 2, t3 + cmovne t4, 1, t4 + addq t2, t3, t2 + addq v0, t4, v0 + addq v0, t2, v0 + nop # dual issue next two on ev4 and ev5 + subq v0, a0, v0 +$exception: + ret + + .align 3 # currently redundant +$limit: + subq a1, t2, v0 + ret + + .end __strlen_user diff --git a/trunk/arch/alpha/lib/strncpy_from_user.S b/trunk/arch/alpha/lib/strncpy_from_user.S new file mode 100644 index 000000000000..73ee21160ff7 --- /dev/null +++ b/trunk/arch/alpha/lib/strncpy_from_user.S @@ -0,0 +1,339 @@ +/* + * arch/alpha/lib/strncpy_from_user.S + * Contributed by Richard Henderson (rth@tamu.edu) + * + * Just like strncpy except in the return value: + * + * -EFAULT if an exception occurs before the terminator is copied. + * N if the buffer filled. + * + * Otherwise the length of the string is returned. + */ + + +#include +#include + + +/* Allow an exception for an insn; exit if we get one. */ +#define EX(x,y...) \ + 99: x,##y; \ + .section __ex_table,"a"; \ + .long 99b - .; \ + lda $31, $exception-99b($0); \ + .previous + + + .set noat + .set noreorder + .text + + .globl __strncpy_from_user + .ent __strncpy_from_user + .frame $30, 0, $26 + .prologue 0 + + .align 3 +$aligned: + /* On entry to this basic block: + t0 == the first destination word for masking back in + t1 == the first source word. */ + + /* Create the 1st output word and detect 0's in the 1st input word. */ + lda t2, -1 # e1 : build a mask against false zero + mskqh t2, a1, t2 # e0 : detection in the src word + mskqh t1, a1, t3 # e0 : + ornot t1, t2, t2 # .. e1 : + mskql t0, a1, t0 # e0 : assemble the first output word + cmpbge zero, t2, t8 # .. e1 : bits set iff null found + or t0, t3, t0 # e0 : + beq a2, $a_eoc # .. e1 : + bne t8, $a_eos # .. e1 : + + /* On entry to this basic block: + t0 == a source word not containing a null. */ + +$a_loop: + stq_u t0, 0(a0) # e0 : + addq a0, 8, a0 # .. e1 : + EX( ldq_u t0, 0(a1) ) # e0 : + addq a1, 8, a1 # .. e1 : + subq a2, 1, a2 # e0 : + cmpbge zero, t0, t8 # .. e1 (stall) + beq a2, $a_eoc # e1 : + beq t8, $a_loop # e1 : + + /* Take care of the final (partial) word store. At this point + the end-of-count bit is set in t8 iff it applies. + + On entry to this basic block we have: + t0 == the source word containing the null + t8 == the cmpbge mask that found it. */ + +$a_eos: + negq t8, t12 # e0 : find low bit set + and t8, t12, t12 # e1 (stall) + + /* For the sake of the cache, don't read a destination word + if we're not going to need it. */ + and t12, 0x80, t6 # e0 : + bne t6, 1f # .. e1 (zdb) + + /* We're doing a partial word store and so need to combine + our source and original destination words. */ + ldq_u t1, 0(a0) # e0 : + subq t12, 1, t6 # .. e1 : + or t12, t6, t8 # e0 : + unop # + zapnot t0, t8, t0 # e0 : clear src bytes > null + zap t1, t8, t1 # .. e1 : clear dst bytes <= null + or t0, t1, t0 # e1 : + +1: stq_u t0, 0(a0) + br $finish_up + + /* Add the end-of-count bit to the eos detection bitmask. */ +$a_eoc: + or t10, t8, t8 + br $a_eos + + /*** The Function Entry Point ***/ + .align 3 +__strncpy_from_user: + mov a0, v0 # save the string start + beq a2, $zerolength + + /* Are source and destination co-aligned? */ + xor a0, a1, t1 # e0 : + and a0, 7, t0 # .. e1 : find dest misalignment + and t1, 7, t1 # e0 : + addq a2, t0, a2 # .. e1 : bias count by dest misalignment + subq a2, 1, a2 # e0 : + and a2, 7, t2 # e1 : + srl a2, 3, a2 # e0 : a2 = loop counter = (count - 1)/8 + addq zero, 1, t10 # .. e1 : + sll t10, t2, t10 # e0 : t10 = bitmask of last count byte + bne t1, $unaligned # .. e1 : + + /* We are co-aligned; take care of a partial first word. */ + + EX( ldq_u t1, 0(a1) ) # e0 : load first src word + addq a1, 8, a1 # .. e1 : + + beq t0, $aligned # avoid loading dest word if not needed + ldq_u t0, 0(a0) # e0 : + br $aligned # .. e1 : + + +/* The source and destination are not co-aligned. Align the destination + and cope. We have to be very careful about not reading too much and + causing a SEGV. */ + + .align 3 +$u_head: + /* We know just enough now to be able to assemble the first + full source word. We can still find a zero at the end of it + that prevents us from outputting the whole thing. + + On entry to this basic block: + t0 == the first dest word, unmasked + t1 == the shifted low bits of the first source word + t6 == bytemask that is -1 in dest word bytes */ + + EX( ldq_u t2, 8(a1) ) # e0 : load second src word + addq a1, 8, a1 # .. e1 : + mskql t0, a0, t0 # e0 : mask trailing garbage in dst + extqh t2, a1, t4 # e0 : + or t1, t4, t1 # e1 : first aligned src word complete + mskqh t1, a0, t1 # e0 : mask leading garbage in src + or t0, t1, t0 # e0 : first output word complete + or t0, t6, t6 # e1 : mask original data for zero test + cmpbge zero, t6, t8 # e0 : + beq a2, $u_eocfin # .. e1 : + bne t8, $u_final # e1 : + + lda t6, -1 # e1 : mask out the bits we have + mskql t6, a1, t6 # e0 : already seen + stq_u t0, 0(a0) # e0 : store first output word + or t6, t2, t2 # .. e1 : + cmpbge zero, t2, t8 # e0 : find nulls in second partial + addq a0, 8, a0 # .. e1 : + subq a2, 1, a2 # e0 : + bne t8, $u_late_head_exit # .. e1 : + + /* Finally, we've got all the stupid leading edge cases taken care + of and we can set up to enter the main loop. */ + + extql t2, a1, t1 # e0 : position hi-bits of lo word + EX( ldq_u t2, 8(a1) ) # .. e1 : read next high-order source word + addq a1, 8, a1 # e0 : + cmpbge zero, t2, t8 # e1 (stall) + beq a2, $u_eoc # e1 : + bne t8, $u_eos # e1 : + + /* Unaligned copy main loop. In order to avoid reading too much, + the loop is structured to detect zeros in aligned source words. + This has, unfortunately, effectively pulled half of a loop + iteration out into the head and half into the tail, but it does + prevent nastiness from accumulating in the very thing we want + to run as fast as possible. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word + + We further know that t2 does not contain a null terminator. */ + + .align 3 +$u_loop: + extqh t2, a1, t0 # e0 : extract high bits for current word + addq a1, 8, a1 # .. e1 : + extql t2, a1, t3 # e0 : extract low bits for next time + addq a0, 8, a0 # .. e1 : + or t0, t1, t0 # e0 : current dst word now complete + EX( ldq_u t2, 0(a1) ) # .. e1 : load high word for next time + stq_u t0, -8(a0) # e0 : save the current word + mov t3, t1 # .. e1 : + subq a2, 1, a2 # e0 : + cmpbge zero, t2, t8 # .. e1 : test new word for eos + beq a2, $u_eoc # e1 : + beq t8, $u_loop # e1 : + + /* We've found a zero somewhere in the source word we just read. + If it resides in the lower half, we have one (probably partial) + word to write out, and if it resides in the upper half, we + have one full and one partial word left to write out. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word. */ +$u_eos: + extqh t2, a1, t0 # e0 : + or t0, t1, t0 # e1 : first (partial) source word complete + + cmpbge zero, t0, t8 # e0 : is the null in this first bit? + bne t8, $u_final # .. e1 (zdb) + + stq_u t0, 0(a0) # e0 : the null was in the high-order bits + addq a0, 8, a0 # .. e1 : + subq a2, 1, a2 # e1 : + +$u_late_head_exit: + extql t2, a1, t0 # .. e0 : + cmpbge zero, t0, t8 # e0 : + or t8, t10, t6 # e1 : + cmoveq a2, t6, t8 # e0 : + nop # .. e1 : + + /* Take care of a final (probably partial) result word. + On entry to this basic block: + t0 == assembled source word + t8 == cmpbge mask that found the null. */ +$u_final: + negq t8, t6 # e0 : isolate low bit set + and t6, t8, t12 # e1 : + + and t12, 0x80, t6 # e0 : avoid dest word load if we can + bne t6, 1f # .. e1 (zdb) + + ldq_u t1, 0(a0) # e0 : + subq t12, 1, t6 # .. e1 : + or t6, t12, t8 # e0 : + zapnot t0, t8, t0 # .. e1 : kill source bytes > null + zap t1, t8, t1 # e0 : kill dest bytes <= null + or t0, t1, t0 # e1 : + +1: stq_u t0, 0(a0) # e0 : + br $finish_up + +$u_eoc: # end-of-count + extqh t2, a1, t0 + or t0, t1, t0 + cmpbge zero, t0, t8 + +$u_eocfin: # end-of-count, final word + or t10, t8, t8 + br $u_final + + /* Unaligned copy entry point. */ + .align 3 +$unaligned: + + EX( ldq_u t1, 0(a1) ) # e0 : load first source word + + and a0, 7, t4 # .. e1 : find dest misalignment + and a1, 7, t5 # e0 : find src misalignment + + /* Conditionally load the first destination word and a bytemask + with 0xff indicating that the destination byte is sacrosanct. */ + + mov zero, t0 # .. e1 : + mov zero, t6 # e0 : + beq t4, 1f # .. e1 : + ldq_u t0, 0(a0) # e0 : + lda t6, -1 # .. e1 : + mskql t6, a0, t6 # e0 : +1: + subq a1, t4, a1 # .. e1 : sub dest misalignment from src addr + + /* If source misalignment is larger than dest misalignment, we need + extra startup checks to avoid SEGV. */ + + cmplt t4, t5, t12 # e1 : + extql t1, a1, t1 # .. e0 : shift src into place + lda t2, -1 # e0 : for creating masks later + beq t12, $u_head # e1 : + + mskqh t2, t5, t2 # e0 : begin src byte validity mask + cmpbge zero, t1, t8 # .. e1 : is there a zero? + extql t2, a1, t2 # e0 : + or t8, t10, t5 # .. e1 : test for end-of-count too + cmpbge zero, t2, t3 # e0 : + cmoveq a2, t5, t8 # .. e1 : + andnot t8, t3, t8 # e0 : + beq t8, $u_head # .. e1 (zdb) + + /* At this point we've found a zero in the first partial word of + the source. We need to isolate the valid source data and mask + it into the original destination data. (Incidentally, we know + that we'll need at least one byte of that original dest word.) */ + + ldq_u t0, 0(a0) # e0 : + negq t8, t6 # .. e1 : build bitmask of bytes <= zero + mskqh t1, t4, t1 # e0 : + and t6, t8, t12 # .. e1 : + subq t12, 1, t6 # e0 : + or t6, t12, t8 # e1 : + + zapnot t2, t8, t2 # e0 : prepare source word; mirror changes + zapnot t1, t8, t1 # .. e1 : to source validity mask + + andnot t0, t2, t0 # e0 : zero place for source to reside + or t0, t1, t0 # e1 : and put it there + stq_u t0, 0(a0) # e0 : + +$finish_up: + zapnot t0, t12, t4 # was last byte written null? + cmovne t4, 1, t4 + + and t12, 0xf0, t3 # binary search for the address of the + and t12, 0xcc, t2 # last byte written + and t12, 0xaa, t1 + bic a0, 7, t0 + cmovne t3, 4, t3 + cmovne t2, 2, t2 + cmovne t1, 1, t1 + addq t0, t3, t0 + addq t1, t2, t1 + addq t0, t1, t0 + addq t0, t4, t0 # add one if we filled the buffer + + subq t0, v0, v0 # find string length + ret + +$zerolength: + clr v0 +$exception: + ret + + .end __strncpy_from_user diff --git a/trunk/arch/alpha/mm/fault.c b/trunk/arch/alpha/mm/fault.c index 0c4132dd3507..5eecab1a84ef 100644 --- a/trunk/arch/alpha/mm/fault.c +++ b/trunk/arch/alpha/mm/fault.c @@ -89,8 +89,6 @@ do_page_fault(unsigned long address, unsigned long mmcsr, const struct exception_table_entry *fixup; int fault, si_code = SEGV_MAPERR; siginfo_t info; - unsigned int flags = (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | - (cause > 0 ? FAULT_FLAG_WRITE : 0)); /* As of EV6, a load into $31/$f31 is a prefetch, and never faults (or is suppressed by the PALcode). Support that for older CPUs @@ -116,7 +114,6 @@ do_page_fault(unsigned long address, unsigned long mmcsr, goto vmalloc_fault; #endif -retry: down_read(&mm->mmap_sem); vma = find_vma(mm, address); if (!vma) @@ -147,11 +144,8 @@ do_page_fault(unsigned long address, unsigned long mmcsr, /* If for any reason at all we couldn't handle the fault, make sure we exit gracefully rather than endlessly redo the fault. */ - fault = handle_mm_fault(mm, vma, address, flags); - - if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) - return; - + fault = handle_mm_fault(mm, vma, address, cause > 0 ? FAULT_FLAG_WRITE : 0); + up_read(&mm->mmap_sem); if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; @@ -159,26 +153,10 @@ do_page_fault(unsigned long address, unsigned long mmcsr, goto do_sigbus; BUG(); } - - if (flags & FAULT_FLAG_ALLOW_RETRY) { - if (fault & VM_FAULT_MAJOR) - current->maj_flt++; - else - current->min_flt++; - if (fault & VM_FAULT_RETRY) { - flags &= ~FAULT_FLAG_ALLOW_RETRY; - - /* No need to up_read(&mm->mmap_sem) as we would - * have already released it in __lock_page_or_retry - * in mm/filemap.c. - */ - - goto retry; - } - } - - up_read(&mm->mmap_sem); - + if (fault & VM_FAULT_MAJOR) + current->maj_flt++; + else + current->min_flt++; return; /* Something tried to access memory that isn't in our memory map. @@ -208,14 +186,12 @@ do_page_fault(unsigned long address, unsigned long mmcsr, /* We ran out of memory, or some other thing happened to us that made us unable to handle the page fault gracefully. */ out_of_memory: - up_read(&mm->mmap_sem); if (!user_mode(regs)) goto no_context; pagefault_out_of_memory(); return; do_sigbus: - up_read(&mm->mmap_sem); /* Send a sigbus, regardless of whether we were in kernel or user mode. */ info.si_signo = SIGBUS; diff --git a/trunk/arch/alpha/oprofile/common.c b/trunk/arch/alpha/oprofile/common.c index b8ce18f485d3..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/arm/Kconfig b/trunk/arch/arm/Kconfig index 6d6e18fee9fe..fbdd8533c05d 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -11,7 +11,6 @@ config ARM select RTC_LIB select SYS_SUPPORTS_APM_EMULATION select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI) - select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select HAVE_OPROFILE if (HAVE_PERF_EVENTS) select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL select HAVE_ARCH_KGDB @@ -38,7 +37,7 @@ config ARM select HARDIRQS_SW_RESEND select GENERIC_IRQ_PROBE select GENERIC_IRQ_SHOW - select ARCH_WANT_IPC_PARSE_VERSION + select GENERIC_IRQ_PROBE select HARDIRQS_SW_RESEND select CPU_PM if (SUSPEND || CPU_IDLE) select GENERIC_PCI_IOMAP @@ -125,6 +124,11 @@ config TRACE_IRQFLAGS_SUPPORT bool default y +config GENERIC_LOCKBREAK + bool + default y + depends on SMP && PREEMPT + config RWSEM_GENERIC_SPINLOCK bool default y @@ -1005,6 +1009,7 @@ config ARCH_VT8500 select ARCH_HAS_CPUFREQ select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB + select HAVE_PWM help Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip. @@ -1145,7 +1150,6 @@ config PLAT_ORION bool select CLKSRC_MMIO select GENERIC_IRQ_CHIP - select IRQ_DOMAIN select COMMON_CLK config PLAT_PXA diff --git a/trunk/arch/arm/boot/dts/armada-xp.dtsi b/trunk/arch/arm/boot/dts/armada-xp.dtsi index 71d6b5d0daf1..e1fa7e6edfe8 100644 --- a/trunk/arch/arm/boot/dts/armada-xp.dtsi +++ b/trunk/arch/arm/boot/dts/armada-xp.dtsi @@ -12,7 +12,7 @@ * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. * - * Contains definitions specific to the Armada XP SoC that are not + * Contains definitions specific to the Armada 370 SoC that are not * common to all Armada SoCs. */ diff --git a/trunk/arch/arm/boot/dts/highbank.dts b/trunk/arch/arm/boot/dts/highbank.dts index 9fecf1ae777b..2e1cfa00c25b 100644 --- a/trunk/arch/arm/boot/dts/highbank.dts +++ b/trunk/arch/arm/boot/dts/highbank.dts @@ -130,12 +130,6 @@ clocks = <&eclk>; }; - memory-controller@fff00000 { - compatible = "calxeda,hb-ddr-ctrl"; - reg = <0xfff00000 0x1000>; - interrupts = <0 91 4>; - }; - ipc@fff20000 { compatible = "arm,pl320", "arm,primecell"; reg = <0xfff20000 0x1000>; @@ -281,12 +275,6 @@ }; }; - sregs@fff3c200 { - compatible = "calxeda,hb-sregs-l2-ecc"; - reg = <0xfff3c200 0x100>; - interrupts = <0 71 4 0 72 4>; - }; - dma@fff3d000 { compatible = "arm,pl330", "arm,primecell"; reg = <0xfff3d000 0x1000>; diff --git a/trunk/arch/arm/boot/dts/imx23.dtsi b/trunk/arch/arm/boot/dts/imx23.dtsi index e6138310e5ce..a874dbfb5ae6 100644 --- a/trunk/arch/arm/boot/dts/imx23.dtsi +++ b/trunk/arch/arm/boot/dts/imx23.dtsi @@ -51,11 +51,11 @@ dma-apbh@80004000 { compatible = "fsl,imx23-dma-apbh"; - reg = <0x80004000 0x2000>; + reg = <0x80004000 2000>; }; ecc@80008000 { - reg = <0x80008000 0x2000>; + reg = <0x80008000 2000>; status = "disabled"; }; @@ -63,7 +63,7 @@ compatible = "fsl,imx23-gpmi-nand"; #address-cells = <1>; #size-cells = <1>; - reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>; + reg = <0x8000c000 2000>, <0x8000a000 2000>; reg-names = "gpmi-nand", "bch"; interrupts = <13>, <56>; interrupt-names = "gpmi-dma", "bch"; @@ -72,14 +72,14 @@ }; ssp0: ssp@80010000 { - reg = <0x80010000 0x2000>; + reg = <0x80010000 2000>; interrupts = <15 14>; fsl,ssp-dma-channel = <1>; status = "disabled"; }; etm@80014000 { - reg = <0x80014000 0x2000>; + reg = <0x80014000 2000>; status = "disabled"; }; @@ -87,7 +87,7 @@ #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx23-pinctrl", "simple-bus"; - reg = <0x80018000 0x2000>; + reg = <0x80018000 2000>; gpio0: gpio@0 { compatible = "fsl,imx23-gpio", "fsl,mxs-gpio"; @@ -273,32 +273,32 @@ }; emi@80020000 { - reg = <0x80020000 0x2000>; + reg = <0x80020000 2000>; status = "disabled"; }; dma-apbx@80024000 { compatible = "fsl,imx23-dma-apbx"; - reg = <0x80024000 0x2000>; + reg = <0x80024000 2000>; }; dcp@80028000 { - reg = <0x80028000 0x2000>; + reg = <0x80028000 2000>; status = "disabled"; }; pxp@8002a000 { - reg = <0x8002a000 0x2000>; + reg = <0x8002a000 2000>; status = "disabled"; }; ocotp@8002c000 { - reg = <0x8002c000 0x2000>; + reg = <0x8002c000 2000>; status = "disabled"; }; axi-ahb@8002e000 { - reg = <0x8002e000 0x2000>; + reg = <0x8002e000 2000>; status = "disabled"; }; @@ -310,14 +310,14 @@ }; ssp1: ssp@80034000 { - reg = <0x80034000 0x2000>; + reg = <0x80034000 2000>; interrupts = <2 20>; fsl,ssp-dma-channel = <2>; status = "disabled"; }; tvenc@80038000 { - reg = <0x80038000 0x2000>; + reg = <0x80038000 2000>; status = "disabled"; }; }; @@ -330,37 +330,37 @@ ranges; clkctl@80040000 { - reg = <0x80040000 0x2000>; + reg = <0x80040000 2000>; status = "disabled"; }; saif0: saif@80042000 { - reg = <0x80042000 0x2000>; + reg = <0x80042000 2000>; status = "disabled"; }; power@80044000 { - reg = <0x80044000 0x2000>; + reg = <0x80044000 2000>; status = "disabled"; }; saif1: saif@80046000 { - reg = <0x80046000 0x2000>; + reg = <0x80046000 2000>; status = "disabled"; }; audio-out@80048000 { - reg = <0x80048000 0x2000>; + reg = <0x80048000 2000>; status = "disabled"; }; audio-in@8004c000 { - reg = <0x8004c000 0x2000>; + reg = <0x8004c000 2000>; status = "disabled"; }; lradc@80050000 { - reg = <0x80050000 0x2000>; + reg = <0x80050000 2000>; status = "disabled"; }; @@ -370,26 +370,26 @@ }; i2c@80058000 { - reg = <0x80058000 0x2000>; + reg = <0x80058000 2000>; status = "disabled"; }; rtc@8005c000 { compatible = "fsl,imx23-rtc", "fsl,stmp3xxx-rtc"; - reg = <0x8005c000 0x2000>; + reg = <0x8005c000 2000>; interrupts = <22>; }; pwm: pwm@80064000 { compatible = "fsl,imx23-pwm"; - reg = <0x80064000 0x2000>; + reg = <0x80064000 2000>; #pwm-cells = <2>; fsl,pwm-number = <5>; status = "disabled"; }; timrot@80068000 { - reg = <0x80068000 0x2000>; + reg = <0x80068000 2000>; status = "disabled"; }; @@ -429,7 +429,7 @@ ranges; usbctrl@80080000 { - reg = <0x80080000 0x40000>; + reg = <0x80080000 0x10000>; status = "disabled"; }; }; diff --git a/trunk/arch/arm/boot/dts/imx27-3ds.dts b/trunk/arch/arm/boot/dts/imx27-3ds.dts index 0a8978a40ece..d3f8296e19e0 100644 --- a/trunk/arch/arm/boot/dts/imx27-3ds.dts +++ b/trunk/arch/arm/boot/dts/imx27-3ds.dts @@ -27,7 +27,7 @@ status = "okay"; }; - uart1: serial@1000a000 { + uart@1000a000 { fsl,uart-has-rtscts; status = "okay"; }; diff --git a/trunk/arch/arm/boot/dts/imx27.dtsi b/trunk/arch/arm/boot/dts/imx27.dtsi index 5303ab680a34..00bae3aad5ab 100644 --- a/trunk/arch/arm/boot/dts/imx27.dtsi +++ b/trunk/arch/arm/boot/dts/imx27.dtsi @@ -19,12 +19,6 @@ serial3 = &uart4; serial4 = &uart5; serial5 = &uart6; - gpio0 = &gpio1; - gpio1 = &gpio2; - gpio2 = &gpio3; - gpio3 = &gpio4; - gpio4 = &gpio5; - gpio5 = &gpio6; }; avic: avic-interrupt-controller@e0000000 { diff --git a/trunk/arch/arm/boot/dts/imx28.dtsi b/trunk/arch/arm/boot/dts/imx28.dtsi index 3fa6d190fab4..915db89e3644 100644 --- a/trunk/arch/arm/boot/dts/imx28.dtsi +++ b/trunk/arch/arm/boot/dts/imx28.dtsi @@ -57,18 +57,18 @@ }; hsadc@80002000 { - reg = <0x80002000 0x2000>; + reg = <0x80002000 2000>; interrupts = <13 87>; status = "disabled"; }; dma-apbh@80004000 { compatible = "fsl,imx28-dma-apbh"; - reg = <0x80004000 0x2000>; + reg = <0x80004000 2000>; }; perfmon@80006000 { - reg = <0x80006000 0x800>; + reg = <0x80006000 800>; interrupts = <27>; status = "disabled"; }; @@ -77,7 +77,7 @@ compatible = "fsl,imx28-gpmi-nand"; #address-cells = <1>; #size-cells = <1>; - reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>; + reg = <0x8000c000 2000>, <0x8000a000 2000>; reg-names = "gpmi-nand", "bch"; interrupts = <88>, <41>; interrupt-names = "gpmi-dma", "bch"; @@ -86,28 +86,28 @@ }; ssp0: ssp@80010000 { - reg = <0x80010000 0x2000>; + reg = <0x80010000 2000>; interrupts = <96 82>; fsl,ssp-dma-channel = <0>; status = "disabled"; }; ssp1: ssp@80012000 { - reg = <0x80012000 0x2000>; + reg = <0x80012000 2000>; interrupts = <97 83>; fsl,ssp-dma-channel = <1>; status = "disabled"; }; ssp2: ssp@80014000 { - reg = <0x80014000 0x2000>; + reg = <0x80014000 2000>; interrupts = <98 84>; fsl,ssp-dma-channel = <2>; status = "disabled"; }; ssp3: ssp@80016000 { - reg = <0x80016000 0x2000>; + reg = <0x80016000 2000>; interrupts = <99 85>; fsl,ssp-dma-channel = <3>; status = "disabled"; @@ -117,7 +117,7 @@ #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx28-pinctrl", "simple-bus"; - reg = <0x80018000 0x2000>; + reg = <0x80018000 2000>; gpio0: gpio@0 { compatible = "fsl,imx28-gpio", "fsl,mxs-gpio"; @@ -510,96 +510,96 @@ }; digctl@8001c000 { - reg = <0x8001c000 0x2000>; + reg = <0x8001c000 2000>; interrupts = <89>; status = "disabled"; }; etm@80022000 { - reg = <0x80022000 0x2000>; + reg = <0x80022000 2000>; status = "disabled"; }; dma-apbx@80024000 { compatible = "fsl,imx28-dma-apbx"; - reg = <0x80024000 0x2000>; + reg = <0x80024000 2000>; }; dcp@80028000 { - reg = <0x80028000 0x2000>; + reg = <0x80028000 2000>; interrupts = <52 53 54>; status = "disabled"; }; pxp@8002a000 { - reg = <0x8002a000 0x2000>; + reg = <0x8002a000 2000>; interrupts = <39>; status = "disabled"; }; ocotp@8002c000 { - reg = <0x8002c000 0x2000>; + reg = <0x8002c000 2000>; status = "disabled"; }; axi-ahb@8002e000 { - reg = <0x8002e000 0x2000>; + reg = <0x8002e000 2000>; status = "disabled"; }; lcdif@80030000 { compatible = "fsl,imx28-lcdif"; - reg = <0x80030000 0x2000>; + reg = <0x80030000 2000>; interrupts = <38 86>; status = "disabled"; }; can0: can@80032000 { compatible = "fsl,imx28-flexcan", "fsl,p1010-flexcan"; - reg = <0x80032000 0x2000>; + reg = <0x80032000 2000>; interrupts = <8>; status = "disabled"; }; can1: can@80034000 { compatible = "fsl,imx28-flexcan", "fsl,p1010-flexcan"; - reg = <0x80034000 0x2000>; + reg = <0x80034000 2000>; interrupts = <9>; status = "disabled"; }; simdbg@8003c000 { - reg = <0x8003c000 0x200>; + reg = <0x8003c000 200>; status = "disabled"; }; simgpmisel@8003c200 { - reg = <0x8003c200 0x100>; + reg = <0x8003c200 100>; status = "disabled"; }; simsspsel@8003c300 { - reg = <0x8003c300 0x100>; + reg = <0x8003c300 100>; status = "disabled"; }; simmemsel@8003c400 { - reg = <0x8003c400 0x100>; + reg = <0x8003c400 100>; status = "disabled"; }; gpiomon@8003c500 { - reg = <0x8003c500 0x100>; + reg = <0x8003c500 100>; status = "disabled"; }; simenet@8003c700 { - reg = <0x8003c700 0x100>; + reg = <0x8003c700 100>; status = "disabled"; }; armjtag@8003c800 { - reg = <0x8003c800 0x100>; + reg = <0x8003c800 100>; status = "disabled"; }; }; @@ -612,45 +612,45 @@ ranges; clkctl@80040000 { - reg = <0x80040000 0x2000>; + reg = <0x80040000 2000>; status = "disabled"; }; saif0: saif@80042000 { compatible = "fsl,imx28-saif"; - reg = <0x80042000 0x2000>; + reg = <0x80042000 2000>; interrupts = <59 80>; fsl,saif-dma-channel = <4>; status = "disabled"; }; power@80044000 { - reg = <0x80044000 0x2000>; + reg = <0x80044000 2000>; status = "disabled"; }; saif1: saif@80046000 { compatible = "fsl,imx28-saif"; - reg = <0x80046000 0x2000>; + reg = <0x80046000 2000>; interrupts = <58 81>; fsl,saif-dma-channel = <5>; status = "disabled"; }; lradc@80050000 { - reg = <0x80050000 0x2000>; + reg = <0x80050000 2000>; status = "disabled"; }; spdif@80054000 { - reg = <0x80054000 0x2000>; + reg = <0x80054000 2000>; interrupts = <45 66>; status = "disabled"; }; rtc@80056000 { compatible = "fsl,imx28-rtc", "fsl,stmp3xxx-rtc"; - reg = <0x80056000 0x2000>; + reg = <0x80056000 2000>; interrupts = <29>; }; @@ -658,9 +658,8 @@ #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx28-i2c"; - reg = <0x80058000 0x2000>; + reg = <0x80058000 2000>; interrupts = <111 68>; - clock-frequency = <100000>; status = "disabled"; }; @@ -668,22 +667,21 @@ #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx28-i2c"; - reg = <0x8005a000 0x2000>; + reg = <0x8005a000 2000>; interrupts = <110 69>; - clock-frequency = <100000>; status = "disabled"; }; pwm: pwm@80064000 { compatible = "fsl,imx28-pwm", "fsl,imx23-pwm"; - reg = <0x80064000 0x2000>; + reg = <0x80064000 2000>; #pwm-cells = <2>; fsl,pwm-number = <8>; status = "disabled"; }; timrot@80068000 { - reg = <0x80068000 0x2000>; + reg = <0x80068000 2000>; status = "disabled"; }; diff --git a/trunk/arch/arm/boot/dts/imx51-babbage.dts b/trunk/arch/arm/boot/dts/imx51-babbage.dts index cd86177a3ea2..de065b5976e6 100644 --- a/trunk/arch/arm/boot/dts/imx51-babbage.dts +++ b/trunk/arch/arm/boot/dts/imx51-babbage.dts @@ -53,7 +53,7 @@ spi-max-frequency = <6000000>; reg = <0>; interrupt-parent = <&gpio1>; - interrupts = <8 0x4>; + interrupts = <8>; regulators { sw1_reg: sw1 { diff --git a/trunk/arch/arm/boot/dts/imx51.dtsi b/trunk/arch/arm/boot/dts/imx51.dtsi index aba28dc87fc8..53cbaa3d4f90 100644 --- a/trunk/arch/arm/boot/dts/imx51.dtsi +++ b/trunk/arch/arm/boot/dts/imx51.dtsi @@ -17,10 +17,6 @@ serial0 = &uart1; serial1 = &uart2; serial2 = &uart3; - gpio0 = &gpio1; - gpio1 = &gpio2; - gpio2 = &gpio3; - gpio3 = &gpio4; }; tzic: tz-interrupt-controller@e0000000 { diff --git a/trunk/arch/arm/boot/dts/imx53-ard.dts b/trunk/arch/arm/boot/dts/imx53-ard.dts index da895e93a999..5b8eafcdbeec 100644 --- a/trunk/arch/arm/boot/dts/imx53-ard.dts +++ b/trunk/arch/arm/boot/dts/imx53-ard.dts @@ -64,32 +64,12 @@ reg = <0xf4000000 0x2000000>; phy-mode = "mii"; interrupt-parent = <&gpio2>; - interrupts = <31 0x8>; + interrupts = <31>; reg-io-width = <4>; - /* - * VDD33A and VDDVARIO of LAN9220 are supplied by - * SW4_3V3 of LTC3589. Before the regulator driver - * for this PMIC is available, we use a fixed dummy - * 3V3 regulator to get LAN9220 driver probing work. - */ - vdd33a-supply = <®_3p3v>; - vddvario-supply = <®_3p3v>; smsc,irq-push-pull; }; }; - regulators { - compatible = "simple-bus"; - - reg_3p3v: 3p3v { - compatible = "regulator-fixed"; - regulator-name = "3P3V"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - }; - }; - gpio-keys { compatible = "gpio-keys"; diff --git a/trunk/arch/arm/boot/dts/imx53.dtsi b/trunk/arch/arm/boot/dts/imx53.dtsi index cd37165edce5..fc79cdc4b4e6 100644 --- a/trunk/arch/arm/boot/dts/imx53.dtsi +++ b/trunk/arch/arm/boot/dts/imx53.dtsi @@ -19,13 +19,6 @@ serial2 = &uart3; serial3 = &uart4; serial4 = &uart5; - gpio0 = &gpio1; - gpio1 = &gpio2; - gpio2 = &gpio3; - gpio3 = &gpio4; - gpio4 = &gpio5; - gpio5 = &gpio6; - gpio6 = &gpio7; }; tzic: tz-interrupt-controller@0fffc000 { diff --git a/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts index 72f30f3e6171..d42e851ceb97 100644 --- a/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -53,7 +53,6 @@ fsl,pins = < 144 0x80000000 /* MX6Q_PAD_EIM_D22__GPIO_3_22 */ 121 0x80000000 /* MX6Q_PAD_EIM_D19__GPIO_3_19 */ - 953 0x80000000 /* MX6Q_PAD_GPIO_0__CCM_CLKO */ >; }; }; diff --git a/trunk/arch/arm/boot/dts/imx6q.dtsi b/trunk/arch/arm/boot/dts/imx6q.dtsi index fd57079f71a9..3d3c64b014e6 100644 --- a/trunk/arch/arm/boot/dts/imx6q.dtsi +++ b/trunk/arch/arm/boot/dts/imx6q.dtsi @@ -19,13 +19,6 @@ serial2 = &uart3; serial3 = &uart4; serial4 = &uart5; - gpio0 = &gpio1; - gpio1 = &gpio2; - gpio2 = &gpio3; - gpio3 = &gpio4; - gpio4 = &gpio5; - gpio5 = &gpio6; - gpio6 = &gpio7; }; cpus { diff --git a/trunk/arch/arm/boot/dts/kirkwood-dns320.dts b/trunk/arch/arm/boot/dts/kirkwood-dns320.dts index 5bb0bf39d3b8..9a33077130e8 100644 --- a/trunk/arch/arm/boot/dts/kirkwood-dns320.dts +++ b/trunk/arch/arm/boot/dts/kirkwood-dns320.dts @@ -1,6 +1,6 @@ /dts-v1/; -/include/ "kirkwood-dnskw.dtsi" +/include/ "kirkwood.dtsi" / { model = "D-Link DNS-320 NAS (Rev A1)"; @@ -15,31 +15,6 @@ bootargs = "console=ttyS0,115200n8 earlyprintk"; }; - gpio-leds { - compatible = "gpio-leds"; - blue-power { - label = "dns320:blue:power"; - gpios = <&gpio0 26 1>; /* GPIO 26 Active Low */ - linux,default-trigger = "default-on"; - }; - blue-usb { - label = "dns320:blue:usb"; - gpios = <&gpio1 11 1>; /* GPIO 43 Active Low */ - }; - orange-l_hdd { - label = "dns320:orange:l_hdd"; - gpios = <&gpio0 28 1>; /* GPIO 28 Active Low */ - }; - orange-r_hdd { - label = "dns320:orange:r_hdd"; - gpios = <&gpio0 27 1>; /* GPIO 27 Active Low */ - }; - orange-usb { - label = "dns320:orange:usb"; - gpios = <&gpio1 3 1>; /* GPIO 35 Active Low */ - }; - }; - ocp@f1000000 { serial@12000 { clock-frequency = <166666667>; @@ -50,5 +25,40 @@ clock-frequency = <166666667>; status = "okay"; }; + + nand@3000000 { + status = "okay"; + + partition@0 { + label = "u-boot"; + reg = <0x0000000 0x100000>; + read-only; + }; + + partition@100000 { + label = "uImage"; + reg = <0x0100000 0x500000>; + }; + + partition@600000 { + label = "ramdisk"; + reg = <0x0600000 0x500000>; + }; + + partition@b00000 { + label = "image"; + reg = <0x0b00000 0x6600000>; + }; + + partition@7100000 { + label = "mini firmware"; + reg = <0x7100000 0xa00000>; + }; + + partition@7b00000 { + label = "config"; + reg = <0x7b00000 0x500000>; + }; + }; }; }; diff --git a/trunk/arch/arm/boot/dts/kirkwood-dns325.dts b/trunk/arch/arm/boot/dts/kirkwood-dns325.dts index d430713ea9b9..16734c1b5dfe 100644 --- a/trunk/arch/arm/boot/dts/kirkwood-dns325.dts +++ b/trunk/arch/arm/boot/dts/kirkwood-dns325.dts @@ -1,6 +1,6 @@ /dts-v1/; -/include/ "kirkwood-dnskw.dtsi" +/include/ "kirkwood.dtsi" / { model = "D-Link DNS-325 NAS (Rev A1)"; @@ -15,43 +15,45 @@ bootargs = "console=ttyS0,115200n8 earlyprintk"; }; - gpio-leds { - compatible = "gpio-leds"; - white-power { - label = "dns325:white:power"; - gpios = <&gpio0 26 1>; /* GPIO 26 Active Low */ - linux,default-trigger = "default-on"; - }; - white-usb { - label = "dns325:white:usb"; - gpios = <&gpio1 11 1>; /* GPIO 43 Active Low */ - }; - red-l_hdd { - label = "dns325:red:l_hdd"; - gpios = <&gpio0 28 1>; /* GPIO 28 Active Low */ - }; - red-r_hdd { - label = "dns325:red:r_hdd"; - gpios = <&gpio0 27 1>; /* GPIO 27 Active Low */ - }; - red-usb { - label = "dns325:red:usb"; - gpios = <&gpio0 29 1>; /* GPIO 29 Active Low */ + ocp@f1000000 { + serial@12000 { + clock-frequency = <200000000>; + status = "okay"; }; - }; - ocp@f1000000 { - i2c@11000 { + nand@3000000 { status = "okay"; - lm75: lm75@48 { - compatible = "national,lm75"; - reg = <0x48>; + partition@0 { + label = "u-boot"; + reg = <0x0000000 0x100000>; + read-only; + }; + + partition@100000 { + label = "uImage"; + reg = <0x0100000 0x500000>; + }; + + partition@600000 { + label = "ramdisk"; + reg = <0x0600000 0x500000>; + }; + + partition@b00000 { + label = "image"; + reg = <0x0b00000 0x6600000>; + }; + + partition@7100000 { + label = "mini firmware"; + reg = <0x7100000 0xa00000>; + }; + + partition@7b00000 { + label = "config"; + reg = <0x7b00000 0x500000>; }; - }; - serial@12000 { - clock-frequency = <200000000>; - status = "okay"; }; }; }; diff --git a/trunk/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/trunk/arch/arm/boot/dts/kirkwood-dnskw.dtsi deleted file mode 100644 index 7408655f91b5..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-dnskw.dtsi +++ /dev/null @@ -1,69 +0,0 @@ -/include/ "kirkwood.dtsi" - -/ { - model = "D-Link DNS NASes (kirkwood-based)"; - compatible = "dlink,dns-kirkwood", "marvell,kirkwood-88f6281", "marvell,kirkwood"; - - gpio_keys { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - button@1 { - label = "Power button"; - linux,code = <116>; - gpios = <&gpio1 2 1>; - }; - button@2 { - label = "USB unmount button"; - linux,code = <161>; - gpios = <&gpio1 15 1>; - }; - button@3 { - label = "Reset button"; - linux,code = <0x198>; - gpios = <&gpio1 16 1>; - }; - }; - - ocp@f1000000 { - sata@80000 { - status = "okay"; - nr-ports = <2>; - }; - - nand@3000000 { - status = "okay"; - - partition@0 { - label = "u-boot"; - reg = <0x0000000 0x100000>; - read-only; - }; - - partition@100000 { - label = "uImage"; - reg = <0x0100000 0x500000>; - }; - - partition@600000 { - label = "ramdisk"; - reg = <0x0600000 0x500000>; - }; - - partition@b00000 { - label = "image"; - reg = <0x0b00000 0x6600000>; - }; - - partition@7100000 { - label = "mini firmware"; - reg = <0x7100000 0xa00000>; - }; - - partition@7b00000 { - label = "config"; - reg = <0x7b00000 0x500000>; - }; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts b/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts index 26e281fbf6bc..78b0f06a09a2 100644 --- a/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts +++ b/trunk/arch/arm/boot/dts/kirkwood-dreamplug.dts @@ -20,55 +20,5 @@ clock-frequency = <200000000>; status = "ok"; }; - - spi@10600 { - status = "okay"; - - m25p40@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "mx25l1606e"; - reg = <0>; - spi-max-frequency = <50000000>; - mode = <0>; - - partition@0 { - reg = <0x0 0x80000>; - label = "u-boot"; - }; - - partition@100000 { - reg = <0x100000 0x10000>; - label = "u-boot env"; - }; - - partition@180000 { - reg = <0x180000 0x10000>; - label = "dtb"; - }; - }; - }; - - sata@80000 { - status = "okay"; - nr-ports = <1>; - }; - }; - - gpio-leds { - compatible = "gpio-leds"; - - bluetooth { - label = "dreamplug:blue:bluetooth"; - gpios = <&gpio1 15 1>; - }; - wifi { - label = "dreamplug:green:wifi"; - gpios = <&gpio1 16 1>; - }; - wifi-ap { - label = "dreamplug:green:wifi_ap"; - gpios = <&gpio1 17 1>; - }; }; }; diff --git a/trunk/arch/arm/boot/dts/kirkwood-goflexnet.dts b/trunk/arch/arm/boot/dts/kirkwood-goflexnet.dts deleted file mode 100644 index 7c8238fbb6f9..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-goflexnet.dts +++ /dev/null @@ -1,99 +0,0 @@ -/dts-v1/; - -/include/ "kirkwood.dtsi" - -/ { - model = "Seagate GoFlex Net"; - compatible = "seagate,goflexnet", "marvell,kirkwood-88f6281", "marvell,kirkwood"; - - memory { - device_type = "memory"; - reg = <0x00000000 0x8000000>; - }; - - chosen { - bootargs = "console=ttyS0,115200n8 earlyprintk root=/dev/sda1 rootdelay=10"; - }; - - ocp@f1000000 { - serial@12000 { - clock-frequency = <200000000>; - status = "ok"; - }; - - nand@3000000 { - status = "okay"; - - partition@0 { - label = "u-boot"; - reg = <0x0000000 0x100000>; - read-only; - }; - - partition@100000 { - label = "uImage"; - reg = <0x0100000 0x400000>; - }; - - partition@500000 { - label = "pogoplug"; - reg = <0x0500000 0x2000000>; - }; - - partition@2500000 { - label = "root"; - reg = <0x02500000 0xd800000>; - }; - }; - sata@80000 { - status = "okay"; - nr-ports = <2>; - }; - - }; - gpio-leds { - compatible = "gpio-leds"; - - health { - label = "status:green:health"; - gpios = <&gpio1 14 1>; - linux,default-trigger = "default-on"; - }; - fault { - label = "status:orange:fault"; - gpios = <&gpio1 15 1>; - }; - left0 { - label = "status:white:left0"; - gpios = <&gpio1 10 0>; - }; - left1 { - label = "status:white:left1"; - gpios = <&gpio1 11 0>; - }; - left2 { - label = "status:white:left2"; - gpios = <&gpio1 12 0>; - }; - left3 { - label = "status:white:left3"; - gpios = <&gpio1 13 0>; - }; - right0 { - label = "status:white:right0"; - gpios = <&gpio1 6 0>; - }; - right1 { - label = "status:white:right1"; - gpios = <&gpio1 7 0>; - }; - right2 { - label = "status:white:right2"; - gpios = <&gpio1 8 0>; - }; - right3 { - label = "status:white:right3"; - gpios = <&gpio1 9 0>; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood-ib62x0.dts b/trunk/arch/arm/boot/dts/kirkwood-ib62x0.dts index 66794ed75ff1..f59dcf6dc45f 100644 --- a/trunk/arch/arm/boot/dts/kirkwood-ib62x0.dts +++ b/trunk/arch/arm/boot/dts/kirkwood-ib62x0.dts @@ -21,11 +21,6 @@ status = "okay"; }; - sata@80000 { - status = "okay"; - nr-ports = <2>; - }; - nand@3000000 { status = "okay"; @@ -46,37 +41,4 @@ }; }; - - gpio_keys { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - button@1 { - label = "USB Copy"; - linux,code = <133>; - gpios = <&gpio0 29 1>; - }; - button@2 { - label = "Reset"; - linux,code = <0x198>; - gpios = <&gpio0 28 1>; - }; - }; - gpio-leds { - compatible = "gpio-leds"; - - green-os { - label = "ib62x0:green:os"; - gpios = <&gpio0 25 0>; - linux,default-trigger = "default-on"; - }; - red-os { - label = "ib62x0:red:os"; - gpios = <&gpio0 22 0>; - }; - usb-copy { - label = "ib62x0:red:usb_copy"; - gpios = <&gpio0 27 0>; - }; - }; }; diff --git a/trunk/arch/arm/boot/dts/kirkwood-iconnect.dts b/trunk/arch/arm/boot/dts/kirkwood-iconnect.dts index 52d947045106..026a1f82d813 100644 --- a/trunk/arch/arm/boot/dts/kirkwood-iconnect.dts +++ b/trunk/arch/arm/boot/dts/kirkwood-iconnect.dts @@ -18,51 +18,9 @@ }; ocp@f1000000 { - i2c@11000 { - status = "okay"; - - lm63: lm63@4c { - compatible = "national,lm63"; - reg = <0x4c>; - }; - }; serial@12000 { clock-frequency = <200000000>; status = "ok"; }; }; - gpio-leds { - compatible = "gpio-leds"; - - led-level { - label = "led_level"; - gpios = <&gpio1 9 0>; - linux,default-trigger = "default-on"; - }; - power-blue { - label = "power:blue"; - gpios = <&gpio1 11 0>; - linux,default-trigger = "timer"; - }; - usb1 { - label = "usb1:blue"; - gpios = <&gpio1 12 0>; - }; - usb2 { - label = "usb2:blue"; - gpios = <&gpio1 13 0>; - }; - usb3 { - label = "usb3:blue"; - gpios = <&gpio1 14 0>; - }; - usb4 { - label = "usb4:blue"; - gpios = <&gpio1 15 0>; - }; - otb { - label = "otb:blue"; - gpios = <&gpio1 16 0>; - }; - }; }; diff --git a/trunk/arch/arm/boot/dts/kirkwood-lschlv2.dts b/trunk/arch/arm/boot/dts/kirkwood-lschlv2.dts deleted file mode 100644 index 9510c9ea666c..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-lschlv2.dts +++ /dev/null @@ -1,20 +0,0 @@ -/dts-v1/; - -/include/ "kirkwood-lsxl.dtsi" - -/ { - model = "Buffalo Linkstation LS-CHLv2"; - compatible = "buffalo,lschlv2", "buffalo,lsxl", "marvell,kirkwood-88f6281", "marvell,kirkwood"; - - memory { - device_type = "memory"; - reg = <0x00000000 0x4000000>; - }; - - ocp@f1000000 { - serial@12000 { - clock-frequency = <166666667>; - status = "okay"; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood-lsxhl.dts b/trunk/arch/arm/boot/dts/kirkwood-lsxhl.dts deleted file mode 100644 index 739019c4cba9..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-lsxhl.dts +++ /dev/null @@ -1,20 +0,0 @@ -/dts-v1/; - -/include/ "kirkwood-lsxl.dtsi" - -/ { - model = "Buffalo Linkstation LS-XHL"; - compatible = "buffalo,lsxhl", "buffalo,lsxl", "marvell,kirkwood-88f6281", "marvell,kirkwood"; - - memory { - device_type = "memory"; - reg = <0x00000000 0x10000000>; - }; - - ocp@f1000000 { - serial@12000 { - clock-frequency = <200000000>; - status = "okay"; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/trunk/arch/arm/boot/dts/kirkwood-lsxl.dtsi deleted file mode 100644 index 8ac51c08269d..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-lsxl.dtsi +++ /dev/null @@ -1,95 +0,0 @@ -/include/ "kirkwood.dtsi" - -/ { - chosen { - bootargs = "console=ttyS0,115200n8 earlyprintk"; - }; - - ocp@f1000000 { - sata@80000 { - status = "okay"; - nr-ports = <1>; - }; - - spi@10600 { - status = "okay"; - - m25p40@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "m25p40"; - reg = <0>; - spi-max-frequency = <25000000>; - mode = <0>; - - partition@0 { - reg = <0x0 0x60000>; - label = "uboot"; - read-only; - }; - - partition@60000 { - reg = <0x60000 0x10000>; - label = "dtb"; - read-only; - }; - - partition@70000 { - reg = <0x70000 0x10000>; - label = "uboot_env"; - }; - }; - }; - }; - - gpio_keys { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - button@1 { - label = "Function Button"; - linux,code = <132>; - gpios = <&gpio1 9 1>; - }; - button@2 { - label = "Power-on Switch"; - linux,code = <116>; - gpios = <&gpio1 10 1>; - }; - button@3 { - label = "Power-auto Switch"; - linux,code = <142>; - gpios = <&gpio1 11 1>; - }; - }; - - gpio_leds { - compatible = "gpio-leds"; - - led@1 { - label = "lschlv2:blue:func"; - gpios = <&gpio1 4 1>; - }; - - led@2 { - label = "lschlv2:red:alarm"; - gpios = <&gpio1 5 1>; - }; - - led@3 { - label = "lschlv2:amber:info"; - gpios = <&gpio1 6 1>; - }; - - led@4 { - label = "lschlv2:blue:power"; - gpios = <&gpio1 7 1>; - linux,default-trigger = "default-on"; - }; - - led@5 { - label = "lschlv2:red:func"; - gpios = <&gpio1 16 1>; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/trunk/arch/arm/boot/dts/kirkwood-ts219-6281.dts deleted file mode 100644 index ccbf32757800..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-ts219-6281.dts +++ /dev/null @@ -1,21 +0,0 @@ -/dts-v1/; - -/include/ "kirkwood-ts219.dtsi" - -/ { - gpio_keys { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - button@1 { - label = "USB Copy"; - linux,code = <133>; - gpios = <&gpio0 15 1>; - }; - button@2 { - label = "Reset"; - linux,code = <0x198>; - gpios = <&gpio0 16 1>; - }; - }; -}; \ No newline at end of file diff --git a/trunk/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/trunk/arch/arm/boot/dts/kirkwood-ts219-6282.dts deleted file mode 100644 index fbe9932161a1..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-ts219-6282.dts +++ /dev/null @@ -1,21 +0,0 @@ -/dts-v1/; - -/include/ "kirkwood-ts219.dtsi" - -/ { - gpio_keys { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - button@1 { - label = "USB Copy"; - linux,code = <133>; - gpios = <&gpio1 11 1>; - }; - button@2 { - label = "Reset"; - linux,code = <0x198>; - gpios = <&gpio1 5 1>; - }; - }; -}; \ No newline at end of file diff --git a/trunk/arch/arm/boot/dts/kirkwood-ts219.dtsi b/trunk/arch/arm/boot/dts/kirkwood-ts219.dtsi deleted file mode 100644 index 64ea27cb3298..000000000000 --- a/trunk/arch/arm/boot/dts/kirkwood-ts219.dtsi +++ /dev/null @@ -1,78 +0,0 @@ -/include/ "kirkwood.dtsi" - -/ { - model = "QNAP TS219 family"; - compatible = "qnap,ts219", "marvell,kirkwood"; - - memory { - device_type = "memory"; - reg = <0x00000000 0x20000000>; - }; - - chosen { - bootargs = "console=ttyS0,115200n8"; - }; - - ocp@f1000000 { - i2c@11000 { - status = "okay"; - clock-frequency = <400000>; - - s35390a: s35390a@30 { - compatible = "s35390a"; - reg = <0x30>; - }; - }; - serial@12000 { - clock-frequency = <200000000>; - status = "okay"; - }; - serial@12100 { - clock-frequency = <200000000>; - status = "okay"; - }; - spi@10600 { - status = "okay"; - - m25p128@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "m25p128"; - reg = <0>; - spi-max-frequency = <20000000>; - mode = <0>; - - partition@0000000 { - reg = <0x00000000 0x00080000>; - label = "U-Boot"; - }; - - partition@00200000 { - reg = <0x00200000 0x00200000>; - label = "Kernel"; - }; - - partition@00400000 { - reg = <0x00400000 0x00900000>; - label = "RootFS1"; - }; - partition@00d00000 { - reg = <0x00d00000 0x00300000>; - label = "RootFS2"; - }; - partition@00040000 { - reg = <0x00080000 0x00040000>; - label = "U-Boot Config"; - }; - partition@000c0000 { - reg = <0x000c0000 0x00140000>; - label = "NAS Config"; - }; - }; - }; - sata@80000 { - status = "okay"; - nr-ports = <2>; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/kirkwood.dtsi b/trunk/arch/arm/boot/dts/kirkwood.dtsi index cef9616f330a..f95dbc190ab6 100644 --- a/trunk/arch/arm/boot/dts/kirkwood.dtsi +++ b/trunk/arch/arm/boot/dts/kirkwood.dtsi @@ -2,15 +2,6 @@ / { compatible = "marvell,kirkwood"; - interrupt-parent = <&intc>; - - intc: interrupt-controller { - compatible = "marvell,orion-intc", "marvell,intc"; - interrupt-controller; - #interrupt-cells = <1>; - reg = <0xf1020204 0x04>, - <0xf1020214 0x04>; - }; ocp@f1000000 { compatible = "simple-bus"; @@ -18,24 +9,6 @@ #address-cells = <1>; #size-cells = <1>; - gpio0: gpio@10100 { - compatible = "marvell,orion-gpio"; - #gpio-cells = <2>; - gpio-controller; - reg = <0x10100 0x40>; - ngpio = <32>; - interrupts = <35>, <36>, <37>, <38>; - }; - - gpio1: gpio@10140 { - compatible = "marvell,orion-gpio"; - #gpio-cells = <2>; - gpio-controller; - reg = <0x10140 0x40>; - ngpio = <18>; - interrupts = <39>, <40>, <41>; - }; - serial@12000 { compatible = "ns16550a"; reg = <0x12000 0x100>; @@ -60,29 +33,6 @@ interrupts = <53>; }; - spi@10600 { - compatible = "marvell,orion-spi"; - #address-cells = <1>; - #size-cells = <0>; - cell-index = <0>; - interrupts = <23>; - reg = <0x10600 0x28>; - status = "disabled"; - }; - - wdt@20300 { - compatible = "marvell,orion-wdt"; - reg = <0x20300 0x28>; - status = "okay"; - }; - - sata@80000 { - compatible = "marvell,orion-sata"; - reg = <0x80000 0x5000>; - interrupts = <21>; - status = "disabled"; - }; - nand@3000000 { #address-cells = <1>; #size-cells = <1>; @@ -95,15 +45,5 @@ /* set partition map and/or chip-delay in board dts */ status = "disabled"; }; - - i2c@11000 { - compatible = "marvell,mv64xxx-i2c"; - reg = <0x11000 0x20>; - #address-cells = <1>; - #size-cells = <0>; - interrupts = <29>; - clock-frequency = <100000>; - status = "disabled"; - }; }; }; diff --git a/trunk/arch/arm/boot/dts/r8a7740.dtsi b/trunk/arch/arm/boot/dts/r8a7740.dtsi deleted file mode 100644 index 798fa35c0005..000000000000 --- a/trunk/arch/arm/boot/dts/r8a7740.dtsi +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Device Tree Source for the r8a7740 SoC - * - * Copyright (C) 2012 Renesas Solutions Corp. - * - * This file is licensed under the terms of the GNU General Public License - * version 2. This program is licensed "as is" without any warranty of any - * kind, whether express or implied. - */ - -/include/ "skeleton.dtsi" - -/ { - compatible = "renesas,r8a7740"; - - cpus { - cpu@0 { - compatible = "arm,cortex-a9"; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/sh7377.dtsi b/trunk/arch/arm/boot/dts/sh7377.dtsi deleted file mode 100644 index 767ee0796daa..000000000000 --- a/trunk/arch/arm/boot/dts/sh7377.dtsi +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Device Tree Source for the sh7377 SoC - * - * Copyright (C) 2012 Renesas Solutions Corp. - * - * This file is licensed under the terms of the GNU General Public License - * version 2. This program is licensed "as is" without any warranty of any - * kind, whether express or implied. - */ - -/include/ "skeleton.dtsi" - -/ { - compatible = "renesas,sh7377"; - - cpus { - cpu@0 { - compatible = "arm,cortex-a8"; - }; - }; -}; diff --git a/trunk/arch/arm/boot/dts/tegra20.dtsi b/trunk/arch/arm/boot/dts/tegra20.dtsi index 405d1673904e..9f1921634eb7 100644 --- a/trunk/arch/arm/boot/dts/tegra20.dtsi +++ b/trunk/arch/arm/boot/dts/tegra20.dtsi @@ -123,12 +123,6 @@ status = "disabled"; }; - pwm { - compatible = "nvidia,tegra20-pwm"; - reg = <0x7000a000 0x100>; - #pwm-cells = <2>; - }; - i2c@7000c000 { compatible = "nvidia,tegra20-i2c"; reg = <0x7000c000 0x100>; diff --git a/trunk/arch/arm/boot/dts/tegra30.dtsi b/trunk/arch/arm/boot/dts/tegra30.dtsi index 3e4334d14efb..da740191771f 100644 --- a/trunk/arch/arm/boot/dts/tegra30.dtsi +++ b/trunk/arch/arm/boot/dts/tegra30.dtsi @@ -117,12 +117,6 @@ status = "disabled"; }; - pwm { - compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm"; - reg = <0x7000a000 0x100>; - #pwm-cells = <2>; - }; - i2c@7000c000 { compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; reg = <0x7000c000 0x100>; diff --git a/trunk/arch/arm/common/dmabounce.c b/trunk/arch/arm/common/dmabounce.c index 1143c4d5c567..aa07f5938f05 100644 --- a/trunk/arch/arm/common/dmabounce.c +++ b/trunk/arch/arm/common/dmabounce.c @@ -452,7 +452,6 @@ static struct dma_map_ops dmabounce_ops = { .alloc = arm_dma_alloc, .free = arm_dma_free, .mmap = arm_dma_mmap, - .get_sgtable = arm_dma_get_sgtable, .map_page = dmabounce_map_page, .unmap_page = dmabounce_unmap_page, .sync_single_for_cpu = dmabounce_sync_for_cpu, diff --git a/trunk/arch/arm/configs/armadillo800eva_defconfig b/trunk/arch/arm/configs/armadillo800eva_defconfig index 7d8718468e0d..ddc9fe6a78ac 100644 --- a/trunk/arch/arm/configs/armadillo800eva_defconfig +++ b/trunk/arch/arm/configs/armadillo800eva_defconfig @@ -5,7 +5,10 @@ CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=16 # CONFIG_UTS_NS is not set # CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set # CONFIG_PID_NS is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SLAB=y CONFIG_MODULES=y @@ -18,7 +21,7 @@ CONFIG_ARCH_SHMOBILE=y CONFIG_ARCH_R8A7740=y CONFIG_MACH_ARMADILLO800EVA=y # CONFIG_SH_TIMER_TMU is not set -CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMB is not set CONFIG_CPU_BPREDICT_DISABLE=y # CONFIG_CACHE_L2X0 is not set CONFIG_ARM_ERRATA_430973=y @@ -36,7 +39,6 @@ CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096" CONFIG_CMDLINE_FORCE=y CONFIG_KEXEC=y -CONFIG_VFP=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_SUSPEND is not set CONFIG_NET=y @@ -87,32 +89,26 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y CONFIG_I2C=y CONFIG_I2C_SH_MOBILE=y # CONFIG_HWMON is not set -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set -# CONFIG_V4L_USB_DRIVERS is not set -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_SOC_CAMERA=y -CONFIG_SOC_CAMERA_MT9T112=y -CONFIG_VIDEO_SH_MOBILE_CEU=y -# CONFIG_RADIO_ADAPTERS is not set CONFIG_FB=y +CONFIG_FB_MODE_HELPERS=y CONFIG_FB_SH_MOBILE_LCDC=y -CONFIG_FB_SH_MOBILE_HDMI=y CONFIG_LCD_CLASS_DEVICE=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_SUPPORT_OLD_API is not set # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_DRIVERS is not set # CONFIG_SND_ARM is not set +CONFIG_SND_SOC=y CONFIG_SND_SOC_SH4_FSI=y # CONFIG_HID_SUPPORT is not set CONFIG_USB=y +# CONFIG_USB_DEVICE_CLASS is not set CONFIG_USB_RENESAS_USBHS=y CONFIG_USB_GADGET=y CONFIG_USB_RENESAS_USBHS_UDC=y @@ -120,8 +116,6 @@ CONFIG_USB_ETH=m CONFIG_MMC=y CONFIG_MMC_SDHI=y CONFIG_MMC_SH_MMCIF=y -CONFIG_DMADEVICES=y -CONFIG_SH_DMAE=y CONFIG_UIO=y CONFIG_UIO_PDRV_GENIRQ=y # CONFIG_DNOTIFY is not set @@ -130,6 +124,7 @@ CONFIG_VFAT_FS=y CONFIG_TMPFS=y # CONFIG_MISC_FILESYSTEMS is not set CONFIG_NFS_FS=y +CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFS_V4_1=y diff --git a/trunk/arch/arm/configs/imx_v6_v7_defconfig b/trunk/arch/arm/configs/imx_v6_v7_defconfig index 3c9f32f9b6b4..f725b9637b33 100644 --- a/trunk/arch/arm/configs/imx_v6_v7_defconfig +++ b/trunk/arch/arm/configs/imx_v6_v7_defconfig @@ -192,7 +192,6 @@ CONFIG_RTC_DRV_MC13XXX=y CONFIG_RTC_DRV_MXC=y CONFIG_DMADEVICES=y CONFIG_IMX_SDMA=y -CONFIG_MXS_DMA=y CONFIG_COMMON_CLK_DEBUG=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_EXT2_FS=y diff --git a/trunk/arch/arm/configs/kzm9d_defconfig b/trunk/arch/arm/configs/kzm9d_defconfig deleted file mode 100644 index 26146ffea1a5..000000000000 --- a/trunk/arch/arm/configs/kzm9d_defconfig +++ /dev/null @@ -1,89 +0,0 @@ -# CONFIG_ARM_PATCH_PHYS_VIRT is not set -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_NO_HZ=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=16 -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_EMBEDDED=y -CONFIG_SLAB=y -# CONFIG_BLK_DEV_BSG is not set -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set -CONFIG_ARCH_SHMOBILE=y -CONFIG_ARCH_EMEV2=y -CONFIG_MACH_KZM9D=y -CONFIG_MEMORY_START=0x40000000 -CONFIG_MEMORY_SIZE=0x10000000 -# CONFIG_SH_TIMER_TMU is not set -# CONFIG_SWP_EMULATE is not set -# CONFIG_CACHE_L2X0 is not set -CONFIG_SMP=y -CONFIG_NR_CPUS=2 -CONFIG_HOTPLUG_CPU=y -# CONFIG_LOCAL_TIMERS is not set -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -# CONFIG_CROSS_MEMORY_ATTACH is not set -CONFIG_FORCE_MAX_ZONEORDER=13 -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_ARM_APPENDED_DTB=y -CONFIG_CMDLINE="console=tty0 console=ttyS1,115200n81 earlyprintk=serial8250-em.1,115200n81 mem=128M@0x40000000 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096" -CONFIG_CMDLINE_FORCE=y -CONFIG_VFP=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_SUSPEND is not set -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=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_BLK_DEV is not set -CONFIG_NETDEVICES=y -# CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_CHELSIO is not set -# CONFIG_NET_VENDOR_CIRRUS is not set -# CONFIG_NET_VENDOR_FARADAY is not set -# CONFIG_NET_VENDOR_INTEL is not set -# CONFIG_NET_VENDOR_MARVELL is not set -# CONFIG_NET_VENDOR_MICREL is not set -# CONFIG_NET_VENDOR_NATSEMI is not set -# CONFIG_NET_VENDOR_SEEQ is not set -CONFIG_SMSC911X=y -# CONFIG_NET_VENDOR_STMICRO is not set -# CONFIG_NET_VENDOR_WIZNET is not set -# CONFIG_WLAN is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -# CONFIG_LEGACY_PTYS is not set -# CONFIG_DEVKMEM is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_EM=y -# CONFIG_HW_RANDOM is not set -CONFIG_GPIOLIB=y -CONFIG_GPIO_EM=y -# CONFIG_HWMON is not set -# CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set -# CONFIG_IOMMU_SUPPORT is not set -# CONFIG_DNOTIFY is not set -CONFIG_TMPFS=y -# CONFIG_MISC_FILESYSTEMS is not set -CONFIG_NFS_FS=y -CONFIG_ROOT_NFS=y -# CONFIG_FTRACE is not set diff --git a/trunk/arch/arm/configs/kzm9g_defconfig b/trunk/arch/arm/configs/kzm9g_defconfig index 2388c8610627..e3ebc20ed0a7 100644 --- a/trunk/arch/arm/configs/kzm9g_defconfig +++ b/trunk/arch/arm/configs/kzm9g_defconfig @@ -100,12 +100,7 @@ CONFIG_SND_SOC_SH4_FSI=y CONFIG_USB=y CONFIG_USB_DEVICEFS=y CONFIG_USB_R8A66597_HCD=y -CONFIG_USB_RENESAS_USBHS=y CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_RENESAS_USBHS_UDC=y -CONFIG_USB_ETH=m -CONFIG_USB_MASS_STORAGE=m CONFIG_MMC=y # CONFIG_MMC_BLOCK_BOUNCE is not set CONFIG_MMC_SDHI=y @@ -113,13 +108,12 @@ CONFIG_MMC_SH_MMCIF=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_RS5C372=y CONFIG_DMADEVICES=y CONFIG_SH_DMAE=y CONFIG_ASYNC_TX_DMA=y CONFIG_STAGING=y # CONFIG_DNOTIFY is not set -CONFIG_INOTIFY_USER=y +# CONFIG_INOTIFY_USER is not set CONFIG_VFAT_FS=y CONFIG_TMPFS=y # CONFIG_MISC_FILESYSTEMS is not set diff --git a/trunk/arch/arm/configs/mxs_defconfig b/trunk/arch/arm/configs/mxs_defconfig index 4edcfb4e4dee..ccdb6357fb74 100644 --- a/trunk/arch/arm/configs/mxs_defconfig +++ b/trunk/arch/arm/configs/mxs_defconfig @@ -34,6 +34,7 @@ CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT_VOLUNTARY=y CONFIG_AEABI=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 CONFIG_AUTO_ZRELADDR=y CONFIG_FPE_NWFPE=y CONFIG_NET=y diff --git a/trunk/arch/arm/configs/omap2plus_defconfig b/trunk/arch/arm/configs/omap2plus_defconfig index e58edc36b406..b152de79fd95 100644 --- a/trunk/arch/arm/configs/omap2plus_defconfig +++ b/trunk/arch/arm/configs/omap2plus_defconfig @@ -193,8 +193,6 @@ CONFIG_MMC_OMAP_HS=y CONFIG_RTC_CLASS=y CONFIG_RTC_DRV_TWL92330=y CONFIG_RTC_DRV_TWL4030=y -CONFIG_DMADEVICES=y -CONFIG_DMA_OMAP=y CONFIG_EXT2_FS=y CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set diff --git a/trunk/arch/arm/configs/tct_hammer_defconfig b/trunk/arch/arm/configs/tct_hammer_defconfig index 71277a1591ba..1d24f8458bef 100644 --- a/trunk/arch/arm/configs/tct_hammer_defconfig +++ b/trunk/arch/arm/configs/tct_hammer_defconfig @@ -7,7 +7,7 @@ CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_BLK_DEV_INITRD=y CONFIG_EXPERT=y # CONFIG_KALLSYMS is not set -# CONFIG_BUGVERBOSE is not set +# CONFIG_BUG is not set # CONFIG_ELF_CORE is not set # CONFIG_SHMEM is not set CONFIG_SLOB=y diff --git a/trunk/arch/arm/configs/tegra_defconfig b/trunk/arch/arm/configs/tegra_defconfig index db2245353f0f..4be9c1e80ee6 100644 --- a/trunk/arch/arm/configs/tegra_defconfig +++ b/trunk/arch/arm/configs/tegra_defconfig @@ -106,7 +106,6 @@ CONFIG_I2C_TEGRA=y CONFIG_SPI=y CONFIG_SPI_TEGRA=y CONFIG_GPIO_TPS65910=y -CONFIG_GPIO_TPS6586X=y CONFIG_POWER_SUPPLY=y CONFIG_BATTERY_SBS=y CONFIG_SENSORS_LM90=y diff --git a/trunk/arch/arm/include/asm/cacheflush.h b/trunk/arch/arm/include/asm/cacheflush.h index e4448e16046d..004c1bc95d2b 100644 --- a/trunk/arch/arm/include/asm/cacheflush.h +++ b/trunk/arch/arm/include/asm/cacheflush.h @@ -215,9 +215,7 @@ static inline void vivt_flush_cache_mm(struct mm_struct *mm) static inline void vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - struct mm_struct *mm = vma->vm_mm; - - if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) + if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), vma->vm_flags); } @@ -225,9 +223,7 @@ vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned static inline void vivt_flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { - struct mm_struct *mm = vma->vm_mm; - - if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { + if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { unsigned long addr = user_addr & PAGE_MASK; __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); } diff --git a/trunk/arch/arm/include/asm/dma-mapping.h b/trunk/arch/arm/include/asm/dma-mapping.h index 2ae842df4551..bbef15d04890 100644 --- a/trunk/arch/arm/include/asm/dma-mapping.h +++ b/trunk/arch/arm/include/asm/dma-mapping.h @@ -186,6 +186,17 @@ extern int arm_dma_mmap(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs); +#define dma_mmap_coherent(d, v, c, h, s) dma_mmap_attrs(d, v, c, h, s, NULL) + +static inline int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t dma_addr, + size_t size, struct dma_attrs *attrs) +{ + struct dma_map_ops *ops = get_dma_ops(dev); + BUG_ON(!ops); + return ops->mmap(dev, vma, cpu_addr, dma_addr, size, attrs); +} + static inline void *dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag) { @@ -202,12 +213,20 @@ static inline void dma_free_writecombine(struct device *dev, size_t size, return dma_free_attrs(dev, size, cpu_addr, dma_handle, &attrs); } +static inline int dma_mmap_writecombine(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t dma_addr, size_t size) +{ + DEFINE_DMA_ATTRS(attrs); + dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); + return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs); +} + /* * This can be called during boot to increase the size of the consistent * DMA region above it's default value of 2MB. It must be called before the * memory allocator is initialised, i.e. before any core_initcall. */ -static inline void init_consistent_dma_size(unsigned long size) { } +extern void __init init_consistent_dma_size(unsigned long size); /* * For SA-1111, IXP425, and ADI systems the dma-mapping functions are "magic" @@ -261,9 +280,6 @@ extern void arm_dma_sync_sg_for_cpu(struct device *, struct scatterlist *, int, enum dma_data_direction); extern void arm_dma_sync_sg_for_device(struct device *, struct scatterlist *, int, enum dma_data_direction); -extern int arm_dma_get_sgtable(struct device *dev, struct sg_table *sgt, - void *cpu_addr, dma_addr_t dma_addr, size_t size, - struct dma_attrs *attrs); #endif /* __KERNEL__ */ #endif diff --git a/trunk/arch/arm/include/asm/mutex.h b/trunk/arch/arm/include/asm/mutex.h index b1479fd04a95..93226cf23ae0 100644 --- a/trunk/arch/arm/include/asm/mutex.h +++ b/trunk/arch/arm/include/asm/mutex.h @@ -7,10 +7,121 @@ */ #ifndef _ASM_MUTEX_H #define _ASM_MUTEX_H + +#if __LINUX_ARM_ARCH__ < 6 +/* On pre-ARMv6 hardware the swp based implementation is the most efficient. */ +# include +#else + /* - * On pre-ARMv6 hardware this results in a swp-based implementation, - * which is the most efficient. For ARMv6+, we emit a pair of exclusive - * accesses instead. + * Attempting to lock a mutex on ARMv6+ can be done with a bastardized + * atomic decrement (it is not a reliable atomic decrement but it satisfies + * the defined semantics for our purpose, while being smaller and faster + * than a real atomic decrement or atomic swap. The idea is to attempt + * decrementing the lock value only once. If once decremented it isn't zero, + * or if its store-back fails due to a dispute on the exclusive store, we + * simply bail out immediately through the slow path where the lock will be + * reattempted until it succeeds. */ -#include +static inline void +__mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) +{ + int __ex_flag, __res; + + __asm__ ( + + "ldrex %0, [%2] \n\t" + "sub %0, %0, #1 \n\t" + "strex %1, %0, [%2] " + + : "=&r" (__res), "=&r" (__ex_flag) + : "r" (&(count)->counter) + : "cc","memory" ); + + __res |= __ex_flag; + if (unlikely(__res != 0)) + fail_fn(count); +} + +static inline int +__mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) +{ + int __ex_flag, __res; + + __asm__ ( + + "ldrex %0, [%2] \n\t" + "sub %0, %0, #1 \n\t" + "strex %1, %0, [%2] " + + : "=&r" (__res), "=&r" (__ex_flag) + : "r" (&(count)->counter) + : "cc","memory" ); + + __res |= __ex_flag; + if (unlikely(__res != 0)) + __res = fail_fn(count); + return __res; +} + +/* + * Same trick is used for the unlock fast path. However the original value, + * rather than the result, is used to test for success in order to have + * better generated assembly. + */ +static inline void +__mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *)) +{ + int __ex_flag, __res, __orig; + + __asm__ ( + + "ldrex %0, [%3] \n\t" + "add %1, %0, #1 \n\t" + "strex %2, %1, [%3] " + + : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) + : "r" (&(count)->counter) + : "cc","memory" ); + + __orig |= __ex_flag; + if (unlikely(__orig != 0)) + fail_fn(count); +} + +/* + * If the unlock was done on a contended lock, or if the unlock simply fails + * then the mutex remains locked. + */ +#define __mutex_slowpath_needs_to_unlock() 1 + +/* + * For __mutex_fastpath_trylock we use another construct which could be + * described as a "single value cmpxchg". + * + * This provides the needed trylock semantics like cmpxchg would, but it is + * lighter and less generic than a true cmpxchg implementation. + */ +static inline int +__mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) +{ + int __ex_flag, __res, __orig; + + __asm__ ( + + "1: ldrex %0, [%3] \n\t" + "subs %1, %0, #1 \n\t" + "strexeq %2, %1, [%3] \n\t" + "movlt %0, #0 \n\t" + "cmpeq %2, #0 \n\t" + "bgt 1b " + + : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) + : "r" (&count->counter) + : "cc", "memory" ); + + return __orig; +} + +#endif #endif diff --git a/trunk/arch/arm/include/asm/pgtable.h b/trunk/arch/arm/include/asm/pgtable.h index 41dc31f834c3..f66626d71e7d 100644 --- a/trunk/arch/arm/include/asm/pgtable.h +++ b/trunk/arch/arm/include/asm/pgtable.h @@ -195,18 +195,6 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) -#define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) -#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) -#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) -#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) -#define pte_special(pte) (0) - -#define pte_present_user(pte) \ - ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ - (L_PTE_PRESENT | L_PTE_USER)) - #if __LINUX_ARM_ARCH__ < 6 static inline void __sync_icache_dcache(pte_t pteval) { @@ -218,16 +206,26 @@ extern void __sync_icache_dcache(pte_t pteval); static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval) { - unsigned long ext = 0; - - if (addr < TASK_SIZE && pte_present_user(pteval)) { + if (addr >= TASK_SIZE) + set_pte_ext(ptep, pteval, 0); + else { __sync_icache_dcache(pteval); - ext |= PTE_EXT_NG; + set_pte_ext(ptep, pteval, PTE_EXT_NG); } - - set_pte_ext(ptep, pteval, ext); } +#define pte_none(pte) (!pte_val(pte)) +#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) +#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) +#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) +#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) +#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) +#define pte_special(pte) (0) + +#define pte_present_user(pte) \ + ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ + (L_PTE_PRESENT | L_PTE_USER)) + #define PTE_BIT_FUNC(fn,op) \ static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } @@ -253,13 +251,13 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - * <--------------- offset ----------------------> < type -> 0 0 0 + * <--------------- offset --------------------> <- type --> 0 0 0 * - * This gives us up to 31 swap files and 64GB per swap file. Note that + * This gives us up to 63 swap files and 32GB per swap file. Note that * the offset field is always non-zero. */ #define __SWP_TYPE_SHIFT 3 -#define __SWP_TYPE_BITS 5 +#define __SWP_TYPE_BITS 6 #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) diff --git a/trunk/arch/arm/include/asm/sched_clock.h b/trunk/arch/arm/include/asm/sched_clock.h index 05b8e82ec9f5..e3f757263438 100644 --- a/trunk/arch/arm/include/asm/sched_clock.h +++ b/trunk/arch/arm/include/asm/sched_clock.h @@ -10,7 +10,5 @@ extern void sched_clock_postinit(void); extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); -extern void setup_sched_clock_needs_suspend(u32 (*read)(void), int bits, - unsigned long rate); #endif diff --git a/trunk/arch/arm/include/asm/setup.h b/trunk/arch/arm/include/asm/setup.h index 24d284a1bfc7..23ebc0c82a39 100644 --- a/trunk/arch/arm/include/asm/setup.h +++ b/trunk/arch/arm/include/asm/setup.h @@ -196,7 +196,7 @@ static const struct tagtable __tagtable_##fn __tag = { tag, fn } struct membank { phys_addr_t start; - phys_addr_t size; + unsigned long size; unsigned int highmem; }; @@ -217,7 +217,7 @@ extern struct meminfo meminfo; #define bank_phys_end(bank) ((bank)->start + (bank)->size) #define bank_phys_size(bank) (bank)->size -extern int arm_add_memory(phys_addr_t start, phys_addr_t size); +extern int arm_add_memory(phys_addr_t start, unsigned long size); extern void early_print(const char *str, ...); extern void dump_machine_table(void); diff --git a/trunk/arch/arm/include/asm/unistd.h b/trunk/arch/arm/include/asm/unistd.h index 0cab47d4a83f..512cd1473454 100644 --- a/trunk/arch/arm/include/asm/unistd.h +++ b/trunk/arch/arm/include/asm/unistd.h @@ -446,6 +446,7 @@ #ifdef __KERNEL__ +#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_STAT64 #define __ARCH_WANT_SYS_GETHOSTNAME #define __ARCH_WANT_SYS_PAUSE diff --git a/trunk/arch/arm/kernel/entry-armv.S b/trunk/arch/arm/kernel/entry-armv.S index 0f82098c9bfe..0d1851ca6eb9 100644 --- a/trunk/arch/arm/kernel/entry-armv.S +++ b/trunk/arch/arm/kernel/entry-armv.S @@ -244,19 +244,6 @@ svc_preempt: b 1b #endif -__und_fault: - @ Correct the PC such that it is pointing at the instruction - @ which caused the fault. If the faulting instruction was ARM - @ the PC will be pointing at the next instruction, and have to - @ subtract 4. Otherwise, it is Thumb, and the PC will be - @ pointing at the second half of the Thumb instruction. We - @ have to subtract 2. - ldr r2, [r0, #S_PC] - sub r2, r2, r1 - str r2, [r0, #S_PC] - b do_undefinstr -ENDPROC(__und_fault) - .align 5 __und_svc: #ifdef CONFIG_KPROBES @@ -274,32 +261,25 @@ __und_svc: @ @ r0 - instruction @ -#ifndef CONFIG_THUMB2_KERNEL +#ifndef CONFIG_THUMB2_KERNEL ldr r0, [r4, #-4] #else - mov r1, #2 ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2 cmp r0, #0xe800 @ 32-bit instruction if xx >= 0 - blo __und_svc_fault - ldrh r9, [r4] @ bottom 16 bits - add r4, r4, #2 - str r4, [sp, #S_PC] - orr r0, r9, r0, lsl #16 + ldrhhs r9, [r4] @ bottom 16 bits + orrhs r0, r9, r0, lsl #16 #endif - adr r9, BSYM(__und_svc_finish) + adr r9, BSYM(1f) mov r2, r4 bl call_fpe - mov r1, #4 @ PC correction to apply -__und_svc_fault: mov r0, sp @ struct pt_regs *regs - bl __und_fault + bl do_undefinstr @ @ IRQs off again before pulling preserved data off the stack @ -__und_svc_finish: - disable_irq_notrace +1: disable_irq_notrace @ @ restore SPSR and restart the instruction @@ -443,33 +423,25 @@ __und_usr: mov r2, r4 mov r3, r5 - @ r2 = regs->ARM_pc, which is either 2 or 4 bytes ahead of the - @ faulting instruction depending on Thumb mode. - @ r3 = regs->ARM_cpsr @ - @ The emulation code returns using r9 if it has emulated the - @ instruction, or the more conventional lr if we are to treat - @ this as a real undefined instruction + @ fall through to the emulation code, which returns using r9 if + @ it has emulated the instruction, or the more conventional lr + @ if we are to treat this as a real undefined instruction + @ + @ r0 - instruction @ adr r9, BSYM(ret_from_exception) - + adr lr, BSYM(__und_usr_unknown) tst r3, #PSR_T_BIT @ Thumb mode? - bne __und_usr_thumb - sub r4, r2, #4 @ ARM instr at LR - 4 -1: ldrt r0, [r4] + itet eq @ explicit IT needed for the 1f label + subeq r4, r2, #4 @ ARM instr at LR - 4 + subne r4, r2, #2 @ Thumb instr at LR - 2 +1: ldreqt r0, [r4] #ifdef CONFIG_CPU_ENDIAN_BE8 - rev r0, r0 @ little endian instruction + reveq r0, r0 @ little endian instruction #endif - @ r0 = 32-bit ARM instruction which caused the exception - @ r2 = PC value for the following instruction (:= regs->ARM_pc) - @ r4 = PC value for the faulting instruction - @ lr = 32-bit undefined instruction function - adr lr, BSYM(__und_usr_fault_32) - b call_fpe - -__und_usr_thumb: + beq call_fpe @ Thumb instruction - sub r4, r2, #2 @ First half of thumb instr at LR - 2 #if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7 /* * Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms @@ -483,7 +455,7 @@ __und_usr_thumb: ldr r5, .LCcpu_architecture ldr r5, [r5] cmp r5, #CPU_ARCH_ARMv7 - blo __und_usr_fault_16 @ 16bit undefined instruction + blo __und_usr_unknown /* * The following code won't get run unless the running CPU really is v7, so * coding round the lack of ldrht on older arches is pointless. Temporarily @@ -491,18 +463,15 @@ __und_usr_thumb: */ .arch armv6t2 #endif -2: ldrht r5, [r4] +2: + ARM( ldrht r5, [r4], #2 ) + THUMB( ldrht r5, [r4] ) + THUMB( add r4, r4, #2 ) cmp r5, #0xe800 @ 32bit instruction if xx != 0 - blo __und_usr_fault_16 @ 16bit undefined instruction -3: ldrht r0, [r2] + blo __und_usr_unknown +3: ldrht r0, [r4] add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 - str r2, [sp, #S_PC] @ it's a 2x16bit instr, update orr r0, r0, r5, lsl #16 - adr lr, BSYM(__und_usr_fault_32) - @ r0 = the two 16-bit Thumb instructions which caused the exception - @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc) - @ r4 = PC value for the first 16-bit Thumb instruction - @ lr = 32bit undefined instruction function #if __LINUX_ARM_ARCH__ < 7 /* If the target arch was overridden, change it back: */ @@ -513,13 +482,17 @@ __und_usr_thumb: #endif #endif /* __LINUX_ARM_ARCH__ < 7 */ #else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */ - b __und_usr_fault_16 + b __und_usr_unknown #endif - UNWIND(.fnend) + UNWIND(.fnend ) ENDPROC(__und_usr) + @ + @ fallthrough to call_fpe + @ + /* - * The out of line fixup for the ldrt instructions above. + * The out of line fixup for the ldrt above. */ .pushsection .fixup, "ax" .align 2 @@ -551,12 +524,11 @@ ENDPROC(__und_usr) * NEON handler code. * * Emulators may wish to make use of the following registers: - * r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) - * r2 = PC value to resume execution after successful emulation + * r0 = instruction opcode. + * r2 = PC+4 * r9 = normal "successful" return address - * r10 = this threads thread_info structure + * r10 = this threads thread_info structure. * lr = unrecognised instruction return address - * IRQs disabled, FIQs enabled. */ @ @ Fall-through from Thumb-2 __und_usr @@ -687,17 +659,12 @@ ENTRY(no_fp) mov pc, lr ENDPROC(no_fp) -__und_usr_fault_32: - mov r1, #4 - b 1f -__und_usr_fault_16: - mov r1, #2 -1: enable_irq +__und_usr_unknown: + enable_irq mov r0, sp adr lr, BSYM(ret_from_exception) - b __und_fault -ENDPROC(__und_usr_fault_32) -ENDPROC(__und_usr_fault_16) + b do_undefinstr +ENDPROC(__und_usr_unknown) .align 5 __pabt_usr: diff --git a/trunk/arch/arm/kernel/entry-common.S b/trunk/arch/arm/kernel/entry-common.S index 978eac57e04a..49d9f9305247 100644 --- a/trunk/arch/arm/kernel/entry-common.S +++ b/trunk/arch/arm/kernel/entry-common.S @@ -51,15 +51,23 @@ ret_fast_syscall: fast_work_pending: str r0, [sp, #S_R0+S_OFF]! @ returned r0 work_pending: + tst r1, #_TIF_NEED_RESCHED + bne work_resched + /* + * TIF_SIGPENDING or TIF_NOTIFY_RESUME must've been set if we got here + */ + ldr r2, [sp, #S_PSR] mov r0, sp @ 'regs' + tst r2, #15 @ are we returning to user mode? + bne no_work_pending @ no? just leave, then... mov r2, why @ 'syscall' - bl do_work_pending - cmp r0, #0 - beq no_work_pending - movlt scno, #(__NR_restart_syscall - __NR_SYSCALL_BASE) - ldmia sp, {r0 - r6} @ have to reload r0 - r6 - b local_restart @ ... and off we go + tst r1, #_TIF_SIGPENDING @ delivering a signal? + movne why, #0 @ prevent further restarts + bl do_notify_resume + b ret_slow_syscall @ Check work again +work_resched: + bl schedule /* * "slow" syscall return path. "why" tells us if this was a real syscall. */ @@ -401,7 +409,6 @@ ENTRY(vector_swi) eor scno, scno, #__NR_SYSCALL_BASE @ check OS number #endif -local_restart: ldr r10, [tsk, #TI_FLAGS] @ check for syscall tracing stmdb sp!, {r4, r5} @ push fifth and sixth args @@ -443,8 +450,7 @@ __sys_trace: mov scno, r0 @ syscall number (possibly new) add r1, sp, #S_R0 + S_OFF @ pointer to regs cmp scno, #NR_syscalls @ check upper syscall limit - ldmccia r1, {r0 - r6} @ have to reload r0 - r6 - stmccia sp, {r4, r5} @ and update the stack args + ldmccia r1, {r0 - r3} @ have to reload r0 - r3 ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine b 2b diff --git a/trunk/arch/arm/kernel/ftrace.c b/trunk/arch/arm/kernel/ftrace.c index 34e56647dcee..df0bf0c8cb79 100644 --- a/trunk/arch/arm/kernel/ftrace.c +++ b/trunk/arch/arm/kernel/ftrace.c @@ -179,21 +179,20 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, old = *parent; *parent = return_hooker; - trace.func = self_addr; - trace.depth = current->curr_ret_stack + 1; - - /* Only trace if the calling function expects to */ - if (!ftrace_graph_entry(&trace)) { - *parent = old; - return; - } - err = ftrace_push_return_trace(old, self_addr, &trace.depth, frame_pointer); if (err == -EBUSY) { *parent = old; return; } + + trace.func = self_addr; + + /* Only trace if the calling function expects to */ + if (!ftrace_graph_entry(&trace)) { + current->curr_ret_stack--; + *parent = old; + } } #ifdef CONFIG_DYNAMIC_FTRACE diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index 693b744fd572..19c95ea65b2f 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -247,7 +247,6 @@ void machine_shutdown(void) void machine_halt(void) { machine_shutdown(); - local_irq_disable(); while (1); } @@ -269,7 +268,6 @@ void machine_restart(char *cmd) /* Whoops - the platform was unable to reboot. Tell the user! */ printk("Reboot failed -- System halted\n"); - local_irq_disable(); while (1); } diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index 3e0fc5f7ed4b..dab711e6e1ca 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/trunk/arch/arm/kernel/sched_clock.c b/trunk/arch/arm/kernel/sched_clock.c index f4515393248d..27d186abbc06 100644 --- a/trunk/arch/arm/kernel/sched_clock.c +++ b/trunk/arch/arm/kernel/sched_clock.c @@ -21,8 +21,6 @@ struct clock_data { u32 epoch_cyc_copy; u32 mult; u32 shift; - bool suspended; - bool needs_suspend; }; static void sched_clock_poll(unsigned long wrap_ticks); @@ -51,9 +49,6 @@ static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask) u64 epoch_ns; u32 epoch_cyc; - if (cd.suspended) - return cd.epoch_ns; - /* * Load the epoch_cyc and epoch_ns atomically. We do this by * ensuring that we always write epoch_cyc, epoch_ns and @@ -103,13 +98,6 @@ static void sched_clock_poll(unsigned long wrap_ticks) update_sched_clock(); } -void __init setup_sched_clock_needs_suspend(u32 (*read)(void), int bits, - unsigned long rate) -{ - setup_sched_clock(read, bits, rate); - cd.needs_suspend = true; -} - void __init setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate) { unsigned long r, w; @@ -181,23 +169,11 @@ void __init sched_clock_postinit(void) static int sched_clock_suspend(void) { sched_clock_poll(sched_clock_timer.data); - if (cd.needs_suspend) - cd.suspended = true; return 0; } -static void sched_clock_resume(void) -{ - if (cd.needs_suspend) { - cd.epoch_cyc = read_sched_clock(); - cd.epoch_cyc_copy = cd.epoch_cyc; - cd.suspended = false; - } -} - static struct syscore_ops sched_clock_ops = { .suspend = sched_clock_suspend, - .resume = sched_clock_resume, }; static int __init sched_clock_syscore_init(void) diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index a81dcecc7343..e15d83bb4ea3 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -508,7 +508,7 @@ void __init dump_machine_table(void) /* can't use cpu_relax() here as it may require MMU setup */; } -int __init arm_add_memory(phys_addr_t start, phys_addr_t size) +int __init arm_add_memory(phys_addr_t start, unsigned long size) { struct membank *bank = &meminfo.bank[meminfo.nr_banks]; @@ -538,7 +538,7 @@ int __init arm_add_memory(phys_addr_t start, phys_addr_t size) } #endif - bank->size = size & ~(phys_addr_t)(PAGE_SIZE - 1); + bank->size = size & PAGE_MASK; /* * Check whether this memory region has non-zero size or @@ -558,7 +558,7 @@ int __init arm_add_memory(phys_addr_t start, phys_addr_t size) static int __init early_mem(char *p) { static int usermem __initdata = 0; - phys_addr_t size; + unsigned long size; phys_addr_t start; char *endp; diff --git a/trunk/arch/arm/kernel/signal.c b/trunk/arch/arm/kernel/signal.c index f27789e4e38a..536c5d6b340b 100644 --- a/trunk/arch/arm/kernel/signal.c +++ b/trunk/arch/arm/kernel/signal.c @@ -27,6 +27,7 @@ */ #define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE)) #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE)) +#define SWI_SYS_RESTART (0xef000000|__NR_restart_syscall|__NR_OABI_SYSCALL_BASE) /* * With EABI, the syscall number has to be loaded into r7. @@ -46,6 +47,18 @@ const unsigned long sigreturn_codes[7] = { MOV_R7_NR_RT_SIGRETURN, SWI_SYS_RT_SIGRETURN, SWI_THUMB_RT_SIGRETURN, }; +/* + * Either we support OABI only, or we have EABI with the OABI + * compat layer enabled. In the later case we don't know if + * user space is EABI or not, and if not we must not clobber r7. + * Always using the OABI syscall solves that issue and works for + * all those cases. + */ +const unsigned long syscall_restart_code[2] = { + SWI_SYS_RESTART, /* swi __NR_restart_syscall */ + 0xe49df004, /* ldr pc, [sp], #4 */ +}; + /* * atomically swap in the new signal mask, and wait for a signal. */ @@ -569,13 +582,12 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, * the kernel can handle, and then we build all the user-level signal handling * stack-frames in one go after that. */ -static int do_signal(struct pt_regs *regs, int syscall) +static void do_signal(struct pt_regs *regs, int syscall) { unsigned int retval = 0, continue_addr = 0, restart_addr = 0; struct k_sigaction ka; siginfo_t info; int signr; - int restart = 0; /* * If we were from a system call, check for system call restarting... @@ -590,15 +602,15 @@ static int do_signal(struct pt_regs *regs, int syscall) * debugger will see the already changed PSW. */ switch (retval) { - case -ERESTART_RESTARTBLOCK: - restart -= 2; case -ERESTARTNOHAND: case -ERESTARTSYS: case -ERESTARTNOINTR: - restart++; regs->ARM_r0 = regs->ARM_ORIG_r0; regs->ARM_pc = restart_addr; break; + case -ERESTART_RESTARTBLOCK: + regs->ARM_r0 = -EINTR; + break; } } @@ -607,17 +619,14 @@ static int do_signal(struct pt_regs *regs, int syscall) * point the debugger may change all our registers ... */ signr = get_signal_to_deliver(&info, &ka, regs, NULL); - /* - * Depending on the signal settings we may need to revert the - * decision to restart the system call. But skip this if a - * debugger has chosen to restart at a different PC. - */ - if (regs->ARM_pc != restart_addr) - restart = 0; if (signr > 0) { - if (unlikely(restart)) { - if (retval == -ERESTARTNOHAND || - retval == -ERESTART_RESTARTBLOCK + /* + * Depending on the signal settings we may need to revert the + * decision to restart the system call. But skip this if a + * debugger has chosen to restart at a different PC. + */ + if (regs->ARM_pc == restart_addr) { + if (retval == -ERESTARTNOHAND || (retval == -ERESTARTSYS && !(ka.sa.sa_flags & SA_RESTART))) { regs->ARM_r0 = -EINTR; @@ -626,43 +635,52 @@ static int do_signal(struct pt_regs *regs, int syscall) } handle_signal(signr, &ka, &info, regs); - return 0; + return; + } + + if (syscall) { + /* + * Handle restarting a different system call. As above, + * if a debugger has chosen to restart at a different PC, + * ignore the restart. + */ + if (retval == -ERESTART_RESTARTBLOCK + && regs->ARM_pc == continue_addr) { + if (thumb_mode(regs)) { + regs->ARM_r7 = __NR_restart_syscall - __NR_SYSCALL_BASE; + regs->ARM_pc -= 2; + } else { +#if defined(CONFIG_AEABI) && !defined(CONFIG_OABI_COMPAT) + regs->ARM_r7 = __NR_restart_syscall; + regs->ARM_pc -= 4; +#else + u32 __user *usp; + + regs->ARM_sp -= 4; + usp = (u32 __user *)regs->ARM_sp; + + if (put_user(regs->ARM_pc, usp) == 0) { + regs->ARM_pc = KERN_RESTART_CODE; + } else { + regs->ARM_sp += 4; + force_sigsegv(0, current); + } +#endif + } + } } restore_saved_sigmask(); - if (unlikely(restart)) - regs->ARM_pc = continue_addr; - return restart; } -asmlinkage int -do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) +asmlinkage void +do_notify_resume(struct pt_regs *regs, unsigned int thread_flags, int syscall) { - do { - if (likely(thread_flags & _TIF_NEED_RESCHED)) { - schedule(); - } else { - if (unlikely(!user_mode(regs))) - return 0; - local_irq_enable(); - if (thread_flags & _TIF_SIGPENDING) { - int restart = do_signal(regs, syscall); - if (unlikely(restart)) { - /* - * Restart without handlers. - * Deal with it without leaving - * the kernel space. - */ - return restart; - } - syscall = 0; - } else { - clear_thread_flag(TIF_NOTIFY_RESUME); - tracehook_notify_resume(regs); - } - } - local_irq_disable(); - thread_flags = current_thread_info()->flags; - } while (thread_flags & _TIF_WORK_MASK); - return 0; + if (thread_flags & _TIF_SIGPENDING) + do_signal(regs, syscall); + + if (thread_flags & _TIF_NOTIFY_RESUME) { + clear_thread_flag(TIF_NOTIFY_RESUME); + tracehook_notify_resume(regs); + } } diff --git a/trunk/arch/arm/kernel/signal.h b/trunk/arch/arm/kernel/signal.h index 5ff067b7c752..6fcfe8398aa4 100644 --- a/trunk/arch/arm/kernel/signal.h +++ b/trunk/arch/arm/kernel/signal.h @@ -8,5 +8,7 @@ * published by the Free Software Foundation. */ #define KERN_SIGRETURN_CODE (CONFIG_VECTORS_BASE + 0x00000500) +#define KERN_RESTART_CODE (KERN_SIGRETURN_CODE + sizeof(sigreturn_codes)) extern const unsigned long sigreturn_codes[7]; +extern const unsigned long syscall_restart_code[2]; diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index ebd8ad274d76..aea74f5bc34a 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -563,8 +563,7 @@ void smp_send_stop(void) cpumask_copy(&mask, cpu_online_mask); cpumask_clear_cpu(smp_processor_id(), &mask); - if (!cpumask_empty(&mask)) - smp_cross_call(&mask, IPI_CPU_STOP); + smp_cross_call(&mask, IPI_CPU_STOP); /* Wait up to one second for other CPUs to stop */ timeout = USEC_PER_SEC; diff --git a/trunk/arch/arm/kernel/topology.c b/trunk/arch/arm/kernel/topology.c index 26c12c6440fc..198b08456e90 100644 --- a/trunk/arch/arm/kernel/topology.c +++ b/trunk/arch/arm/kernel/topology.c @@ -321,7 +321,7 @@ void store_cpu_topology(unsigned int cpuid) * init_cpu_topology is called at boot when only one cpu is running * which prevent simultaneous write access to cpu_topology array */ -void __init init_cpu_topology(void) +void init_cpu_topology(void) { unsigned int cpu; diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index f7945218b8c6..8b97d739b17b 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -402,10 +402,18 @@ static int call_undef_hook(struct pt_regs *regs, unsigned int instr) asmlinkage void __exception do_undefinstr(struct pt_regs *regs) { + unsigned int correction = thumb_mode(regs) ? 2 : 4; unsigned int instr; siginfo_t info; void __user *pc; + /* + * According to the ARM ARM, PC is 2 or 4 bytes ahead, + * depending whether we're in Thumb mode or not. + * Correct this offset. + */ + regs->ARM_pc -= correction; + pc = (void __user *)instruction_pointer(regs); if (processor_mode(regs) == SVC_MODE) { @@ -844,6 +852,8 @@ void __init early_trap_init(void *vectors_base) */ memcpy((void *)(vectors + KERN_SIGRETURN_CODE - CONFIG_VECTORS_BASE), sigreturn_codes, sizeof(sigreturn_codes)); + memcpy((void *)(vectors + KERN_RESTART_CODE - CONFIG_VECTORS_BASE), + syscall_restart_code, sizeof(syscall_restart_code)); flush_icache_range(vectors, vectors + PAGE_SIZE); modify_domain(DOMAIN_USER, DOMAIN_CLIENT); diff --git a/trunk/arch/arm/lib/Makefile b/trunk/arch/arm/lib/Makefile index af72969820b4..2473fd1fd51c 100644 --- a/trunk/arch/arm/lib/Makefile +++ b/trunk/arch/arm/lib/Makefile @@ -16,30 +16,13 @@ lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \ call_with_stack.o mmu-y := clear_user.o copy_page.o getuser.o putuser.o - -# the code in uaccess.S is not preemption safe and -# probably faster on ARMv3 only -ifeq ($(CONFIG_PREEMPT),y) - mmu-y += copy_from_user.o copy_to_user.o -else -ifneq ($(CONFIG_CPU_32v3),y) - mmu-y += copy_from_user.o copy_to_user.o -else - mmu-y += uaccess.o -endif -endif +mmu-y += copy_from_user.o copy_to_user.o # using lib_ here won't override already available weak symbols obj-$(CONFIG_UACCESS_WITH_MEMCPY) += uaccess_with_memcpy.o -lib-$(CONFIG_MMU) += $(mmu-y) - -ifeq ($(CONFIG_CPU_32v3),y) - lib-y += io-readsw-armv3.o io-writesw-armv3.o -else - lib-y += io-readsw-armv4.o io-writesw-armv4.o -endif - +lib-$(CONFIG_MMU) += $(mmu-y) +lib-y += io-readsw-armv4.o io-writesw-armv4.o lib-$(CONFIG_ARCH_RPC) += ecard.o io-acorn.o floppydma.o lib-$(CONFIG_ARCH_SHARK) += io-shark.o diff --git a/trunk/arch/arm/lib/io-acorn.S b/trunk/arch/arm/lib/io-acorn.S index 69719bad674d..1b197ea7aab3 100644 --- a/trunk/arch/arm/lib/io-acorn.S +++ b/trunk/arch/arm/lib/io-acorn.S @@ -11,14 +11,13 @@ * */ #include -#include #include .text .align .Liosl_warning: - .ascii KERN_WARNING "insl/outsl not implemented, called from %08lX\0" + .ascii "<4>insl/outsl not implemented, called from %08lX\0" .align /* diff --git a/trunk/arch/arm/lib/io-readsw-armv3.S b/trunk/arch/arm/lib/io-readsw-armv3.S deleted file mode 100644 index 88487c8c4f23..000000000000 --- a/trunk/arch/arm/lib/io-readsw-armv3.S +++ /dev/null @@ -1,106 +0,0 @@ -/* - * linux/arch/arm/lib/io-readsw-armv3.S - * - * Copyright (C) 1995-2000 Russell King - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include -#include - -.Linsw_bad_alignment: - adr r0, .Linsw_bad_align_msg - mov r2, lr - b panic -.Linsw_bad_align_msg: - .asciz "insw: bad buffer alignment (0x%p, lr=0x%08lX)\n" - .align - -.Linsw_align: tst r1, #1 - bne .Linsw_bad_alignment - - ldr r3, [r0] - strb r3, [r1], #1 - mov r3, r3, lsr #8 - strb r3, [r1], #1 - - subs r2, r2, #1 - moveq pc, lr - -ENTRY(__raw_readsw) - teq r2, #0 @ do we have to check for the zero len? - moveq pc, lr - tst r1, #3 - bne .Linsw_align - -.Linsw_aligned: mov ip, #0xff - orr ip, ip, ip, lsl #8 - stmfd sp!, {r4, r5, r6, lr} - - subs r2, r2, #8 - bmi .Lno_insw_8 - -.Linsw_8_lp: ldr r3, [r0] - and r3, r3, ip - ldr r4, [r0] - orr r3, r3, r4, lsl #16 - - ldr r4, [r0] - and r4, r4, ip - ldr r5, [r0] - orr r4, r4, r5, lsl #16 - - ldr r5, [r0] - and r5, r5, ip - ldr r6, [r0] - orr r5, r5, r6, lsl #16 - - ldr r6, [r0] - and r6, r6, ip - ldr lr, [r0] - orr r6, r6, lr, lsl #16 - - stmia r1!, {r3 - r6} - - subs r2, r2, #8 - bpl .Linsw_8_lp - - tst r2, #7 - ldmeqfd sp!, {r4, r5, r6, pc} - -.Lno_insw_8: tst r2, #4 - beq .Lno_insw_4 - - ldr r3, [r0] - and r3, r3, ip - ldr r4, [r0] - orr r3, r3, r4, lsl #16 - - ldr r4, [r0] - and r4, r4, ip - ldr r5, [r0] - orr r4, r4, r5, lsl #16 - - stmia r1!, {r3, r4} - -.Lno_insw_4: tst r2, #2 - beq .Lno_insw_2 - - ldr r3, [r0] - and r3, r3, ip - ldr r4, [r0] - orr r3, r3, r4, lsl #16 - - str r3, [r1], #4 - -.Lno_insw_2: tst r2, #1 - ldrne r3, [r0] - strneb r3, [r1], #1 - movne r3, r3, lsr #8 - strneb r3, [r1] - - ldmfd sp!, {r4, r5, r6, pc} - - diff --git a/trunk/arch/arm/lib/io-writesw-armv3.S b/trunk/arch/arm/lib/io-writesw-armv3.S deleted file mode 100644 index 49b800419e32..000000000000 --- a/trunk/arch/arm/lib/io-writesw-armv3.S +++ /dev/null @@ -1,126 +0,0 @@ -/* - * linux/arch/arm/lib/io-writesw-armv3.S - * - * Copyright (C) 1995-2000 Russell King - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include -#include - -.Loutsw_bad_alignment: - adr r0, .Loutsw_bad_align_msg - mov r2, lr - b panic -.Loutsw_bad_align_msg: - .asciz "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n" - .align - -.Loutsw_align: tst r1, #1 - bne .Loutsw_bad_alignment - - add r1, r1, #2 - - ldr r3, [r1, #-4] - mov r3, r3, lsr #16 - orr r3, r3, r3, lsl #16 - str r3, [r0] - subs r2, r2, #1 - moveq pc, lr - -ENTRY(__raw_writesw) - teq r2, #0 @ do we have to check for the zero len? - moveq pc, lr - tst r1, #3 - bne .Loutsw_align - - stmfd sp!, {r4, r5, r6, lr} - - subs r2, r2, #8 - bmi .Lno_outsw_8 - -.Loutsw_8_lp: ldmia r1!, {r3, r4, r5, r6} - - mov ip, r3, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r3, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - - mov ip, r4, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r4, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - - mov ip, r5, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r5, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - - mov ip, r6, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r6, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - - subs r2, r2, #8 - bpl .Loutsw_8_lp - - tst r2, #7 - ldmeqfd sp!, {r4, r5, r6, pc} - -.Lno_outsw_8: tst r2, #4 - beq .Lno_outsw_4 - - ldmia r1!, {r3, r4} - - mov ip, r3, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r3, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - - mov ip, r4, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r4, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - -.Lno_outsw_4: tst r2, #2 - beq .Lno_outsw_2 - - ldr r3, [r1], #4 - - mov ip, r3, lsl #16 - orr ip, ip, ip, lsr #16 - str ip, [r0] - - mov ip, r3, lsr #16 - orr ip, ip, ip, lsl #16 - str ip, [r0] - -.Lno_outsw_2: tst r2, #1 - - ldrne r3, [r1] - - movne ip, r3, lsl #16 - orrne ip, ip, ip, lsr #16 - strne ip, [r0] - - ldmfd sp!, {r4, r5, r6, pc} diff --git a/trunk/arch/arm/lib/uaccess.S b/trunk/arch/arm/lib/uaccess.S deleted file mode 100644 index 5c908b1cb8ed..000000000000 --- a/trunk/arch/arm/lib/uaccess.S +++ /dev/null @@ -1,564 +0,0 @@ -/* - * linux/arch/arm/lib/uaccess.S - * - * Copyright (C) 1995, 1996,1997,1998 Russell King - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Routines to block copy data to/from user memory - * These are highly optimised both for the 4k page size - * and for various alignments. - */ -#include -#include -#include -#include - - .text - -#define PAGE_SHIFT 12 - -/* Prototype: int __copy_to_user(void *to, const char *from, size_t n) - * Purpose : copy a block to user memory from kernel memory - * Params : to - user memory - * : from - kernel memory - * : n - number of bytes to copy - * Returns : Number of bytes NOT copied. - */ - -.Lc2u_dest_not_aligned: - rsb ip, ip, #4 - cmp ip, #2 - ldrb r3, [r1], #1 -USER( TUSER( strb) r3, [r0], #1) @ May fault - ldrgeb r3, [r1], #1 -USER( TUSER( strgeb) r3, [r0], #1) @ May fault - ldrgtb r3, [r1], #1 -USER( TUSER( strgtb) r3, [r0], #1) @ May fault - sub r2, r2, ip - b .Lc2u_dest_aligned - -ENTRY(__copy_to_user) - stmfd sp!, {r2, r4 - r7, lr} - cmp r2, #4 - blt .Lc2u_not_enough - ands ip, r0, #3 - bne .Lc2u_dest_not_aligned -.Lc2u_dest_aligned: - - ands ip, r1, #3 - bne .Lc2u_src_not_aligned -/* - * Seeing as there has to be at least 8 bytes to copy, we can - * copy one word, and force a user-mode page fault... - */ - -.Lc2u_0fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lc2u_0nowords - ldr r3, [r1], #4 -USER( TUSER( str) r3, [r0], #4) @ May fault - mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lc2u_0fupi -/* - * ip = max no. of bytes to copy before needing another "strt" insn - */ - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #32 - blt .Lc2u_0rem8lp - -.Lc2u_0cpy8lp: ldmia r1!, {r3 - r6} - stmia r0!, {r3 - r6} @ Shouldnt fault - ldmia r1!, {r3 - r6} - subs ip, ip, #32 - stmia r0!, {r3 - r6} @ Shouldnt fault - bpl .Lc2u_0cpy8lp - -.Lc2u_0rem8lp: cmn ip, #16 - ldmgeia r1!, {r3 - r6} - stmgeia r0!, {r3 - r6} @ Shouldnt fault - tst ip, #8 - ldmneia r1!, {r3 - r4} - stmneia r0!, {r3 - r4} @ Shouldnt fault - tst ip, #4 - ldrne r3, [r1], #4 - TUSER( strne) r3, [r0], #4 @ Shouldnt fault - ands ip, ip, #3 - beq .Lc2u_0fupi -.Lc2u_0nowords: teq ip, #0 - beq .Lc2u_finished -.Lc2u_nowords: cmp ip, #2 - ldrb r3, [r1], #1 -USER( TUSER( strb) r3, [r0], #1) @ May fault - ldrgeb r3, [r1], #1 -USER( TUSER( strgeb) r3, [r0], #1) @ May fault - ldrgtb r3, [r1], #1 -USER( TUSER( strgtb) r3, [r0], #1) @ May fault - b .Lc2u_finished - -.Lc2u_not_enough: - movs ip, r2 - bne .Lc2u_nowords -.Lc2u_finished: mov r0, #0 - ldmfd sp!, {r2, r4 - r7, pc} - -.Lc2u_src_not_aligned: - bic r1, r1, #3 - ldr r7, [r1], #4 - cmp ip, #2 - bgt .Lc2u_3fupi - beq .Lc2u_2fupi -.Lc2u_1fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lc2u_1nowords - mov r3, r7, pull #8 - ldr r7, [r1], #4 - orr r3, r3, r7, push #24 -USER( TUSER( str) r3, [r0], #4) @ May fault - mov ip, r0, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lc2u_1fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lc2u_1rem8lp - -.Lc2u_1cpy8lp: mov r3, r7, pull #8 - ldmia r1!, {r4 - r7} - subs ip, ip, #16 - orr r3, r3, r4, push #24 - mov r4, r4, pull #8 - orr r4, r4, r5, push #24 - mov r5, r5, pull #8 - orr r5, r5, r6, push #24 - mov r6, r6, pull #8 - orr r6, r6, r7, push #24 - stmia r0!, {r3 - r6} @ Shouldnt fault - bpl .Lc2u_1cpy8lp - -.Lc2u_1rem8lp: tst ip, #8 - movne r3, r7, pull #8 - ldmneia r1!, {r4, r7} - orrne r3, r3, r4, push #24 - movne r4, r4, pull #8 - orrne r4, r4, r7, push #24 - stmneia r0!, {r3 - r4} @ Shouldnt fault - tst ip, #4 - movne r3, r7, pull #8 - ldrne r7, [r1], #4 - orrne r3, r3, r7, push #24 - TUSER( strne) r3, [r0], #4 @ Shouldnt fault - ands ip, ip, #3 - beq .Lc2u_1fupi -.Lc2u_1nowords: mov r3, r7, get_byte_1 - teq ip, #0 - beq .Lc2u_finished - cmp ip, #2 -USER( TUSER( strb) r3, [r0], #1) @ May fault - movge r3, r7, get_byte_2 -USER( TUSER( strgeb) r3, [r0], #1) @ May fault - movgt r3, r7, get_byte_3 -USER( TUSER( strgtb) r3, [r0], #1) @ May fault - b .Lc2u_finished - -.Lc2u_2fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lc2u_2nowords - mov r3, r7, pull #16 - ldr r7, [r1], #4 - orr r3, r3, r7, push #16 -USER( TUSER( str) r3, [r0], #4) @ May fault - mov ip, r0, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lc2u_2fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lc2u_2rem8lp - -.Lc2u_2cpy8lp: mov r3, r7, pull #16 - ldmia r1!, {r4 - r7} - subs ip, ip, #16 - orr r3, r3, r4, push #16 - mov r4, r4, pull #16 - orr r4, r4, r5, push #16 - mov r5, r5, pull #16 - orr r5, r5, r6, push #16 - mov r6, r6, pull #16 - orr r6, r6, r7, push #16 - stmia r0!, {r3 - r6} @ Shouldnt fault - bpl .Lc2u_2cpy8lp - -.Lc2u_2rem8lp: tst ip, #8 - movne r3, r7, pull #16 - ldmneia r1!, {r4, r7} - orrne r3, r3, r4, push #16 - movne r4, r4, pull #16 - orrne r4, r4, r7, push #16 - stmneia r0!, {r3 - r4} @ Shouldnt fault - tst ip, #4 - movne r3, r7, pull #16 - ldrne r7, [r1], #4 - orrne r3, r3, r7, push #16 - TUSER( strne) r3, [r0], #4 @ Shouldnt fault - ands ip, ip, #3 - beq .Lc2u_2fupi -.Lc2u_2nowords: mov r3, r7, get_byte_2 - teq ip, #0 - beq .Lc2u_finished - cmp ip, #2 -USER( TUSER( strb) r3, [r0], #1) @ May fault - movge r3, r7, get_byte_3 -USER( TUSER( strgeb) r3, [r0], #1) @ May fault - ldrgtb r3, [r1], #0 -USER( TUSER( strgtb) r3, [r0], #1) @ May fault - b .Lc2u_finished - -.Lc2u_3fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lc2u_3nowords - mov r3, r7, pull #24 - ldr r7, [r1], #4 - orr r3, r3, r7, push #8 -USER( TUSER( str) r3, [r0], #4) @ May fault - mov ip, r0, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lc2u_3fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lc2u_3rem8lp - -.Lc2u_3cpy8lp: mov r3, r7, pull #24 - ldmia r1!, {r4 - r7} - subs ip, ip, #16 - orr r3, r3, r4, push #8 - mov r4, r4, pull #24 - orr r4, r4, r5, push #8 - mov r5, r5, pull #24 - orr r5, r5, r6, push #8 - mov r6, r6, pull #24 - orr r6, r6, r7, push #8 - stmia r0!, {r3 - r6} @ Shouldnt fault - bpl .Lc2u_3cpy8lp - -.Lc2u_3rem8lp: tst ip, #8 - movne r3, r7, pull #24 - ldmneia r1!, {r4, r7} - orrne r3, r3, r4, push #8 - movne r4, r4, pull #24 - orrne r4, r4, r7, push #8 - stmneia r0!, {r3 - r4} @ Shouldnt fault - tst ip, #4 - movne r3, r7, pull #24 - ldrne r7, [r1], #4 - orrne r3, r3, r7, push #8 - TUSER( strne) r3, [r0], #4 @ Shouldnt fault - ands ip, ip, #3 - beq .Lc2u_3fupi -.Lc2u_3nowords: mov r3, r7, get_byte_3 - teq ip, #0 - beq .Lc2u_finished - cmp ip, #2 -USER( TUSER( strb) r3, [r0], #1) @ May fault - ldrgeb r3, [r1], #1 -USER( TUSER( strgeb) r3, [r0], #1) @ May fault - ldrgtb r3, [r1], #0 -USER( TUSER( strgtb) r3, [r0], #1) @ May fault - b .Lc2u_finished -ENDPROC(__copy_to_user) - - .pushsection .fixup,"ax" - .align 0 -9001: ldmfd sp!, {r0, r4 - r7, pc} - .popsection - -/* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n); - * Purpose : copy a block from user memory to kernel memory - * Params : to - kernel memory - * : from - user memory - * : n - number of bytes to copy - * Returns : Number of bytes NOT copied. - */ -.Lcfu_dest_not_aligned: - rsb ip, ip, #4 - cmp ip, #2 -USER( TUSER( ldrb) r3, [r1], #1) @ May fault - strb r3, [r0], #1 -USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault - strgeb r3, [r0], #1 -USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault - strgtb r3, [r0], #1 - sub r2, r2, ip - b .Lcfu_dest_aligned - -ENTRY(__copy_from_user) - stmfd sp!, {r0, r2, r4 - r7, lr} - cmp r2, #4 - blt .Lcfu_not_enough - ands ip, r0, #3 - bne .Lcfu_dest_not_aligned -.Lcfu_dest_aligned: - ands ip, r1, #3 - bne .Lcfu_src_not_aligned - -/* - * Seeing as there has to be at least 8 bytes to copy, we can - * copy one word, and force a user-mode page fault... - */ - -.Lcfu_0fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lcfu_0nowords -USER( TUSER( ldr) r3, [r1], #4) - str r3, [r0], #4 - mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lcfu_0fupi -/* - * ip = max no. of bytes to copy before needing another "strt" insn - */ - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #32 - blt .Lcfu_0rem8lp - -.Lcfu_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault - stmia r0!, {r3 - r6} - ldmia r1!, {r3 - r6} @ Shouldnt fault - subs ip, ip, #32 - stmia r0!, {r3 - r6} - bpl .Lcfu_0cpy8lp - -.Lcfu_0rem8lp: cmn ip, #16 - ldmgeia r1!, {r3 - r6} @ Shouldnt fault - stmgeia r0!, {r3 - r6} - tst ip, #8 - ldmneia r1!, {r3 - r4} @ Shouldnt fault - stmneia r0!, {r3 - r4} - tst ip, #4 - TUSER( ldrne) r3, [r1], #4 @ Shouldnt fault - strne r3, [r0], #4 - ands ip, ip, #3 - beq .Lcfu_0fupi -.Lcfu_0nowords: teq ip, #0 - beq .Lcfu_finished -.Lcfu_nowords: cmp ip, #2 -USER( TUSER( ldrb) r3, [r1], #1) @ May fault - strb r3, [r0], #1 -USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault - strgeb r3, [r0], #1 -USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault - strgtb r3, [r0], #1 - b .Lcfu_finished - -.Lcfu_not_enough: - movs ip, r2 - bne .Lcfu_nowords -.Lcfu_finished: mov r0, #0 - add sp, sp, #8 - ldmfd sp!, {r4 - r7, pc} - -.Lcfu_src_not_aligned: - bic r1, r1, #3 -USER( TUSER( ldr) r7, [r1], #4) @ May fault - cmp ip, #2 - bgt .Lcfu_3fupi - beq .Lcfu_2fupi -.Lcfu_1fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lcfu_1nowords - mov r3, r7, pull #8 -USER( TUSER( ldr) r7, [r1], #4) @ May fault - orr r3, r3, r7, push #24 - str r3, [r0], #4 - mov ip, r1, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lcfu_1fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lcfu_1rem8lp - -.Lcfu_1cpy8lp: mov r3, r7, pull #8 - ldmia r1!, {r4 - r7} @ Shouldnt fault - subs ip, ip, #16 - orr r3, r3, r4, push #24 - mov r4, r4, pull #8 - orr r4, r4, r5, push #24 - mov r5, r5, pull #8 - orr r5, r5, r6, push #24 - mov r6, r6, pull #8 - orr r6, r6, r7, push #24 - stmia r0!, {r3 - r6} - bpl .Lcfu_1cpy8lp - -.Lcfu_1rem8lp: tst ip, #8 - movne r3, r7, pull #8 - ldmneia r1!, {r4, r7} @ Shouldnt fault - orrne r3, r3, r4, push #24 - movne r4, r4, pull #8 - orrne r4, r4, r7, push #24 - stmneia r0!, {r3 - r4} - tst ip, #4 - movne r3, r7, pull #8 -USER( TUSER( ldrne) r7, [r1], #4) @ May fault - orrne r3, r3, r7, push #24 - strne r3, [r0], #4 - ands ip, ip, #3 - beq .Lcfu_1fupi -.Lcfu_1nowords: mov r3, r7, get_byte_1 - teq ip, #0 - beq .Lcfu_finished - cmp ip, #2 - strb r3, [r0], #1 - movge r3, r7, get_byte_2 - strgeb r3, [r0], #1 - movgt r3, r7, get_byte_3 - strgtb r3, [r0], #1 - b .Lcfu_finished - -.Lcfu_2fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lcfu_2nowords - mov r3, r7, pull #16 -USER( TUSER( ldr) r7, [r1], #4) @ May fault - orr r3, r3, r7, push #16 - str r3, [r0], #4 - mov ip, r1, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lcfu_2fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lcfu_2rem8lp - - -.Lcfu_2cpy8lp: mov r3, r7, pull #16 - ldmia r1!, {r4 - r7} @ Shouldnt fault - subs ip, ip, #16 - orr r3, r3, r4, push #16 - mov r4, r4, pull #16 - orr r4, r4, r5, push #16 - mov r5, r5, pull #16 - orr r5, r5, r6, push #16 - mov r6, r6, pull #16 - orr r6, r6, r7, push #16 - stmia r0!, {r3 - r6} - bpl .Lcfu_2cpy8lp - -.Lcfu_2rem8lp: tst ip, #8 - movne r3, r7, pull #16 - ldmneia r1!, {r4, r7} @ Shouldnt fault - orrne r3, r3, r4, push #16 - movne r4, r4, pull #16 - orrne r4, r4, r7, push #16 - stmneia r0!, {r3 - r4} - tst ip, #4 - movne r3, r7, pull #16 -USER( TUSER( ldrne) r7, [r1], #4) @ May fault - orrne r3, r3, r7, push #16 - strne r3, [r0], #4 - ands ip, ip, #3 - beq .Lcfu_2fupi -.Lcfu_2nowords: mov r3, r7, get_byte_2 - teq ip, #0 - beq .Lcfu_finished - cmp ip, #2 - strb r3, [r0], #1 - movge r3, r7, get_byte_3 - strgeb r3, [r0], #1 -USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault - strgtb r3, [r0], #1 - b .Lcfu_finished - -.Lcfu_3fupi: subs r2, r2, #4 - addmi ip, r2, #4 - bmi .Lcfu_3nowords - mov r3, r7, pull #24 -USER( TUSER( ldr) r7, [r1], #4) @ May fault - orr r3, r3, r7, push #8 - str r3, [r0], #4 - mov ip, r1, lsl #32 - PAGE_SHIFT - rsb ip, ip, #0 - movs ip, ip, lsr #32 - PAGE_SHIFT - beq .Lcfu_3fupi - cmp r2, ip - movlt ip, r2 - sub r2, r2, ip - subs ip, ip, #16 - blt .Lcfu_3rem8lp - -.Lcfu_3cpy8lp: mov r3, r7, pull #24 - ldmia r1!, {r4 - r7} @ Shouldnt fault - orr r3, r3, r4, push #8 - mov r4, r4, pull #24 - orr r4, r4, r5, push #8 - mov r5, r5, pull #24 - orr r5, r5, r6, push #8 - mov r6, r6, pull #24 - orr r6, r6, r7, push #8 - stmia r0!, {r3 - r6} - subs ip, ip, #16 - bpl .Lcfu_3cpy8lp - -.Lcfu_3rem8lp: tst ip, #8 - movne r3, r7, pull #24 - ldmneia r1!, {r4, r7} @ Shouldnt fault - orrne r3, r3, r4, push #8 - movne r4, r4, pull #24 - orrne r4, r4, r7, push #8 - stmneia r0!, {r3 - r4} - tst ip, #4 - movne r3, r7, pull #24 -USER( TUSER( ldrne) r7, [r1], #4) @ May fault - orrne r3, r3, r7, push #8 - strne r3, [r0], #4 - ands ip, ip, #3 - beq .Lcfu_3fupi -.Lcfu_3nowords: mov r3, r7, get_byte_3 - teq ip, #0 - beq .Lcfu_finished - cmp ip, #2 - strb r3, [r0], #1 -USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault - strgeb r3, [r0], #1 -USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault - strgtb r3, [r0], #1 - b .Lcfu_finished -ENDPROC(__copy_from_user) - - .pushsection .fixup,"ax" - .align 0 - /* - * We took an exception. r0 contains a pointer to - * the byte not copied. - */ -9001: ldr r2, [sp], #4 @ void *to - sub r2, r0, r2 @ bytes copied - ldr r1, [sp], #4 @ unsigned long count - subs r4, r1, r2 @ bytes left to copy - movne r1, r4 - blne __memzero - mov r0, r4 - ldmfd sp!, {r4 - r7, pc} - .popsection - diff --git a/trunk/arch/arm/mach-davinci/board-neuros-osd2.c b/trunk/arch/arm/mach-davinci/board-neuros-osd2.c index f6b9fc70161b..5de69f2fcca9 100644 --- a/trunk/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/trunk/arch/arm/mach-davinci/board-neuros-osd2.c @@ -162,6 +162,38 @@ static void __init davinci_ntosd2_map_io(void) dm644x_init(); } +/* + I2C initialization +*/ +static struct davinci_i2c_platform_data ntosd2_i2c_pdata = { + .bus_freq = 20 /* kHz */, + .bus_delay = 100 /* usec */, +}; + +static struct i2c_board_info __initdata ntosd2_i2c_info[] = { +}; + +static int ntosd2_init_i2c(void) +{ + int status; + + davinci_init_i2c(&ntosd2_i2c_pdata); + status = gpio_request(NTOSD2_MSP430_IRQ, ntosd2_i2c_info[0].type); + if (status == 0) { + status = gpio_direction_input(NTOSD2_MSP430_IRQ); + if (status == 0) { + status = gpio_to_irq(NTOSD2_MSP430_IRQ); + if (status > 0) { + ntosd2_i2c_info[0].irq = status; + i2c_register_board_info(1, + ntosd2_i2c_info, + ARRAY_SIZE(ntosd2_i2c_info)); + } + } + } + return status; +} + static struct davinci_mmc_config davinci_ntosd2_mmc_config = { .wires = 4, .version = MMC_CTLR_VERSION_1 @@ -186,6 +218,7 @@ static __init void davinci_ntosd2_init(void) { struct clk *aemif_clk; struct davinci_soc_info *soc_info = &davinci_soc_info; + int status; aemif_clk = clk_get(NULL, "aemif"); clk_enable(aemif_clk); @@ -209,6 +242,12 @@ static __init void davinci_ntosd2_init(void) platform_add_devices(davinci_ntosd2_devices, ARRAY_SIZE(davinci_ntosd2_devices)); + /* Initialize I2C interface specific for this board */ + status = ntosd2_init_i2c(); + if (status < 0) + pr_warning("davinci_ntosd2_init: msp430 irq setup failed:" + " %d\n", status); + davinci_serial_init(&uart_config); dm644x_init_asp(&dm644x_ntosd2_snd_data); diff --git a/trunk/arch/arm/mach-davinci/devices-da8xx.c b/trunk/arch/arm/mach-davinci/devices-da8xx.c index 783eab6845c4..d1624a315c9a 100644 --- a/trunk/arch/arm/mach-davinci/devices-da8xx.c +++ b/trunk/arch/arm/mach-davinci/devices-da8xx.c @@ -546,7 +546,6 @@ static struct lcd_ctrl_config lcd_cfg = { .sync_edge = 0, .sync_ctrl = 1, .raster_order = 0, - .fifo_th = 6, }; struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata = { diff --git a/trunk/arch/arm/mach-dove/irq.c b/trunk/arch/arm/mach-dove/irq.c index 9bc97a5baaa8..f07fd16e0c9b 100644 --- a/trunk/arch/arm/mach-dove/irq.c +++ b/trunk/arch/arm/mach-dove/irq.c @@ -20,6 +20,22 @@ #include #include "common.h" +static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) +{ + int irqoff; + BUG_ON(irq < IRQ_DOVE_GPIO_0_7 || irq > IRQ_DOVE_HIGH_GPIO); + + irqoff = irq <= IRQ_DOVE_GPIO_16_23 ? irq - IRQ_DOVE_GPIO_0_7 : + 3 + irq - IRQ_DOVE_GPIO_24_31; + + orion_gpio_irq_handler(irqoff << 3); + if (irq == IRQ_DOVE_HIGH_GPIO) { + orion_gpio_irq_handler(40); + orion_gpio_irq_handler(48); + orion_gpio_irq_handler(56); + } +} + static void pmu_irq_mask(struct irq_data *d) { int pin = irq_to_pmu(d->irq); @@ -74,27 +90,6 @@ static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc) } } -static int __initdata gpio0_irqs[4] = { - IRQ_DOVE_GPIO_0_7, - IRQ_DOVE_GPIO_8_15, - IRQ_DOVE_GPIO_16_23, - IRQ_DOVE_GPIO_24_31, -}; - -static int __initdata gpio1_irqs[4] = { - IRQ_DOVE_HIGH_GPIO, - 0, - 0, - 0, -}; - -static int __initdata gpio2_irqs[4] = { - 0, - 0, - 0, - 0, -}; - void __init dove_init_irq(void) { int i; @@ -105,14 +100,19 @@ void __init dove_init_irq(void) /* * Initialize gpiolib for GPIOs 0-71. */ - orion_gpio_init(NULL, 0, 32, (void __iomem *)DOVE_GPIO_LO_VIRT_BASE, 0, - IRQ_DOVE_GPIO_START, gpio0_irqs); - - orion_gpio_init(NULL, 32, 32, (void __iomem *)DOVE_GPIO_HI_VIRT_BASE, 0, - IRQ_DOVE_GPIO_START + 32, gpio1_irqs); - - orion_gpio_init(NULL, 64, 8, (void __iomem *)DOVE_GPIO2_VIRT_BASE, 0, - IRQ_DOVE_GPIO_START + 64, gpio2_irqs); + orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0, + IRQ_DOVE_GPIO_START); + irq_set_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler); + irq_set_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler); + irq_set_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler); + irq_set_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler); + + orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0, + IRQ_DOVE_GPIO_START + 32); + irq_set_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler); + + orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0, + IRQ_DOVE_GPIO_START + 64); /* * Mask and clear PMU interrupts diff --git a/trunk/arch/arm/mach-exynos/clock-exynos4.c b/trunk/arch/arm/mach-exynos/clock-exynos4.c index 2f51293c1875..26fe9de35ecb 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos4.c +++ b/trunk/arch/arm/mach-exynos/clock-exynos4.c @@ -619,6 +619,10 @@ static struct clk exynos4_init_clocks_off[] = { .devname = "samsung-ac97", .enable = exynos4_clk_ip_peril_ctrl, .ctrlbit = (1 << 27), + }, { + .name = "fimg2d", + .enable = exynos4_clk_ip_image_ctrl, + .ctrlbit = (1 << 0), }, { .name = "mfc", .devname = "s5p-mfc", @@ -815,21 +819,47 @@ static struct clk *exynos4_clkset_mout_g2d0_list[] = { [1] = &exynos4_clk_sclk_apll.clk, }; -struct clksrc_sources exynos4_clkset_mout_g2d0 = { +static struct clksrc_sources exynos4_clkset_mout_g2d0 = { .sources = exynos4_clkset_mout_g2d0_list, .nr_sources = ARRAY_SIZE(exynos4_clkset_mout_g2d0_list), }; +static struct clksrc_clk exynos4_clk_mout_g2d0 = { + .clk = { + .name = "mout_g2d0", + }, + .sources = &exynos4_clkset_mout_g2d0, + .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 0, .size = 1 }, +}; + static struct clk *exynos4_clkset_mout_g2d1_list[] = { [0] = &exynos4_clk_mout_epll.clk, [1] = &exynos4_clk_sclk_vpll.clk, }; -struct clksrc_sources exynos4_clkset_mout_g2d1 = { +static struct clksrc_sources exynos4_clkset_mout_g2d1 = { .sources = exynos4_clkset_mout_g2d1_list, .nr_sources = ARRAY_SIZE(exynos4_clkset_mout_g2d1_list), }; +static struct clksrc_clk exynos4_clk_mout_g2d1 = { + .clk = { + .name = "mout_g2d1", + }, + .sources = &exynos4_clkset_mout_g2d1, + .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 4, .size = 1 }, +}; + +static struct clk *exynos4_clkset_mout_g2d_list[] = { + [0] = &exynos4_clk_mout_g2d0.clk, + [1] = &exynos4_clk_mout_g2d1.clk, +}; + +static struct clksrc_sources exynos4_clkset_mout_g2d = { + .sources = exynos4_clkset_mout_g2d_list, + .nr_sources = ARRAY_SIZE(exynos4_clkset_mout_g2d_list), +}; + static struct clk *exynos4_clkset_mout_mfc0_list[] = { [0] = &exynos4_clk_mout_mpll.clk, [1] = &exynos4_clk_sclk_apll.clk, @@ -1094,6 +1124,13 @@ static struct clksrc_clk exynos4_clksrcs[] = { .sources = &exynos4_clkset_group, .reg_src = { .reg = EXYNOS4_CLKSRC_LCD0, .shift = 0, .size = 4 }, .reg_div = { .reg = EXYNOS4_CLKDIV_LCD0, .shift = 0, .size = 4 }, + }, { + .clk = { + .name = "sclk_fimg2d", + }, + .sources = &exynos4_clkset_mout_g2d, + .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 8, .size = 1 }, + .reg_div = { .reg = EXYNOS4_CLKDIV_IMAGE, .shift = 0, .size = 4 }, }, { .clk = { .name = "sclk_mfc", diff --git a/trunk/arch/arm/mach-exynos/clock-exynos4.h b/trunk/arch/arm/mach-exynos/clock-exynos4.h index bd12d5f8b63d..28a119701182 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos4.h +++ b/trunk/arch/arm/mach-exynos/clock-exynos4.h @@ -23,9 +23,6 @@ extern struct clksrc_sources exynos4_clkset_group; extern struct clk *exynos4_clkset_aclk_top_list[]; extern struct clk *exynos4_clkset_group_list[]; -extern struct clksrc_sources exynos4_clkset_mout_g2d0; -extern struct clksrc_sources exynos4_clkset_mout_g2d1; - extern int exynos4_clksrc_mask_fsys_ctrl(struct clk *clk, int enable); extern int exynos4_clk_ip_fsys_ctrl(struct clk *clk, int enable); extern int exynos4_clk_ip_lcd1_ctrl(struct clk *clk, int enable); diff --git a/trunk/arch/arm/mach-exynos/clock-exynos4210.c b/trunk/arch/arm/mach-exynos/clock-exynos4210.c index fed4c26e9dad..b8689ff60baf 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos4210.c +++ b/trunk/arch/arm/mach-exynos/clock-exynos4210.c @@ -48,32 +48,6 @@ static struct clksrc_clk *sysclks[] = { /* nothing here yet */ }; -static struct clksrc_clk exynos4210_clk_mout_g2d0 = { - .clk = { - .name = "mout_g2d0", - }, - .sources = &exynos4_clkset_mout_g2d0, - .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 0, .size = 1 }, -}; - -static struct clksrc_clk exynos4210_clk_mout_g2d1 = { - .clk = { - .name = "mout_g2d1", - }, - .sources = &exynos4_clkset_mout_g2d1, - .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 4, .size = 1 }, -}; - -static struct clk *exynos4210_clkset_mout_g2d_list[] = { - [0] = &exynos4210_clk_mout_g2d0.clk, - [1] = &exynos4210_clk_mout_g2d1.clk, -}; - -static struct clksrc_sources exynos4210_clkset_mout_g2d = { - .sources = exynos4210_clkset_mout_g2d_list, - .nr_sources = ARRAY_SIZE(exynos4210_clkset_mout_g2d_list), -}; - static int exynos4_clksrc_mask_lcd1_ctrl(struct clk *clk, int enable) { return s5p_gatectrl(EXYNOS4210_CLKSRC_MASK_LCD1, clk, enable); @@ -100,13 +74,6 @@ static struct clksrc_clk clksrcs[] = { .sources = &exynos4_clkset_group, .reg_src = { .reg = EXYNOS4210_CLKSRC_LCD1, .shift = 0, .size = 4 }, .reg_div = { .reg = EXYNOS4210_CLKDIV_LCD1, .shift = 0, .size = 4 }, - }, { - .clk = { - .name = "sclk_fimg2d", - }, - .sources = &exynos4210_clkset_mout_g2d, - .reg_src = { .reg = EXYNOS4_CLKSRC_IMAGE, .shift = 8, .size = 1 }, - .reg_div = { .reg = EXYNOS4_CLKDIV_IMAGE, .shift = 0, .size = 4 }, }, }; @@ -138,10 +105,6 @@ static struct clk init_clocks_off[] = { .devname = SYSMMU_CLOCK_DEVNAME(fimd1, 11), .enable = exynos4_clk_ip_lcd1_ctrl, .ctrlbit = (1 << 4), - }, { - .name = "fimg2d", - .enable = exynos4_clk_ip_image_ctrl, - .ctrlbit = (1 << 0), }, }; diff --git a/trunk/arch/arm/mach-exynos/clock-exynos4212.c b/trunk/arch/arm/mach-exynos/clock-exynos4212.c index 8fba0b5fb8ab..da397d21bbcf 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos4212.c +++ b/trunk/arch/arm/mach-exynos/clock-exynos4212.c @@ -68,45 +68,12 @@ static struct clksrc_clk clk_mout_mpll_user = { .reg_src = { .reg = EXYNOS4_CLKSRC_CPU, .shift = 24, .size = 1 }, }; -static struct clksrc_clk exynos4x12_clk_mout_g2d0 = { - .clk = { - .name = "mout_g2d0", - }, - .sources = &exynos4_clkset_mout_g2d0, - .reg_src = { .reg = EXYNOS4_CLKSRC_DMC, .shift = 20, .size = 1 }, -}; - -static struct clksrc_clk exynos4x12_clk_mout_g2d1 = { - .clk = { - .name = "mout_g2d1", - }, - .sources = &exynos4_clkset_mout_g2d1, - .reg_src = { .reg = EXYNOS4_CLKSRC_DMC, .shift = 24, .size = 1 }, -}; - -static struct clk *exynos4x12_clkset_mout_g2d_list[] = { - [0] = &exynos4x12_clk_mout_g2d0.clk, - [1] = &exynos4x12_clk_mout_g2d1.clk, -}; - -static struct clksrc_sources exynos4x12_clkset_mout_g2d = { - .sources = exynos4x12_clkset_mout_g2d_list, - .nr_sources = ARRAY_SIZE(exynos4x12_clkset_mout_g2d_list), -}; - static struct clksrc_clk *sysclks[] = { &clk_mout_mpll_user, }; static struct clksrc_clk clksrcs[] = { - { - .clk = { - .name = "sclk_fimg2d", - }, - .sources = &exynos4x12_clkset_mout_g2d, - .reg_src = { .reg = EXYNOS4_CLKSRC_DMC, .shift = 28, .size = 1 }, - .reg_div = { .reg = EXYNOS4_CLKDIV_DMC1, .shift = 0, .size = 4 }, - }, + /* nothing here yet */ }; static struct clk init_clocks_off[] = { @@ -135,11 +102,7 @@ static struct clk init_clocks_off[] = { .devname = "exynos-fimc-lite.1", .enable = exynos4212_clk_ip_isp0_ctrl, .ctrlbit = (1 << 3), - }, { - .name = "fimg2d", - .enable = exynos4_clk_ip_dmc_ctrl, - .ctrlbit = (1 << 23), - }, + } }; #ifdef CONFIG_PM_SLEEP diff --git a/trunk/arch/arm/mach-exynos/mach-nuri.c b/trunk/arch/arm/mach-exynos/mach-nuri.c index ea785fcaf6c3..f98a83a81ce7 100644 --- a/trunk/arch/arm/mach-exynos/mach-nuri.c +++ b/trunk/arch/arm/mach-exynos/mach-nuri.c @@ -1066,8 +1066,12 @@ static struct platform_device nuri_max8903_device = { static void __init nuri_power_init(void) { int gpio; + int irq_base = IRQ_GPIO_END + 1; int ta_en = 0; + nuri_max8997_pdata.irq_base = irq_base; + irq_base += MAX8997_IRQ_NR; + gpio = EXYNOS4_GPX0(7); gpio_request(gpio, "AP_PMIC_IRQ"); s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf)); diff --git a/trunk/arch/arm/mach-exynos/mach-origen.c b/trunk/arch/arm/mach-exynos/mach-origen.c index 5ca80307d6d7..5a12dc26f496 100644 --- a/trunk/arch/arm/mach-exynos/mach-origen.c +++ b/trunk/arch/arm/mach-exynos/mach-origen.c @@ -426,6 +426,7 @@ static struct max8997_platform_data __initdata origen_max8997_pdata = { .buck1_gpiodvs = false, .buck2_gpiodvs = false, .buck5_gpiodvs = false, + .irq_base = IRQ_GPIO_END + 1, .ignore_gpiodvs_side_effect = true, .buck125_default_idx = 0x0, diff --git a/trunk/arch/arm/mach-exynos/pm_domains.c b/trunk/arch/arm/mach-exynos/pm_domains.c index c0bc83a7663e..373c3c00d24c 100644 --- a/trunk/arch/arm/mach-exynos/pm_domains.c +++ b/trunk/arch/arm/mach-exynos/pm_domains.c @@ -115,7 +115,7 @@ static __init int exynos_pm_dt_parse_domains(void) } #endif /* CONFIG_OF */ -static __init __maybe_unused void exynos_pm_add_dev_to_genpd(struct platform_device *pdev, +static __init void exynos_pm_add_dev_to_genpd(struct platform_device *pdev, struct exynos_pm_domain *pd) { if (pdev->dev.bus) { diff --git a/trunk/arch/arm/mach-imx/clk-imx27.c b/trunk/arch/arm/mach-imx/clk-imx27.c index f69ca4680049..7aa6313fb167 100644 --- a/trunk/arch/arm/mach-imx/clk-imx27.c +++ b/trunk/arch/arm/mach-imx/clk-imx27.c @@ -223,7 +223,7 @@ int __init mx27_clocks_init(unsigned long fref) clk_register_clkdev(clk[per3_gate], "per", "imx-fb.0"); clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx-fb.0"); clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx-fb.0"); - clk_register_clkdev(clk[csi_ahb_gate], "ahb", "mx2-camera.0"); + clk_register_clkdev(clk[csi_ahb_gate], NULL, "mx2-camera.0"); clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); clk_register_clkdev(clk[usb_ipg_gate], "ipg", "fsl-usb2-udc"); clk_register_clkdev(clk[usb_ahb_gate], "ahb", "fsl-usb2-udc"); @@ -250,10 +250,8 @@ int __init mx27_clocks_init(unsigned long fref) clk_register_clkdev(clk[i2c2_ipg_gate], NULL, "imx-i2c.1"); clk_register_clkdev(clk[owire_ipg_gate], NULL, "mxc_w1.0"); clk_register_clkdev(clk[kpp_ipg_gate], NULL, "imx-keypad"); - clk_register_clkdev(clk[emma_ahb_gate], "emma-ahb", "mx2-camera.0"); - clk_register_clkdev(clk[emma_ipg_gate], "emma-ipg", "mx2-camera.0"); - clk_register_clkdev(clk[emma_ahb_gate], "ahb", "m2m-emmaprp.0"); - clk_register_clkdev(clk[emma_ipg_gate], "ipg", "m2m-emmaprp.0"); + clk_register_clkdev(clk[emma_ahb_gate], "ahb", "imx-emma"); + clk_register_clkdev(clk[emma_ipg_gate], "ipg", "imx-emma"); clk_register_clkdev(clk[iim_ipg_gate], "iim", NULL); clk_register_clkdev(clk[gpio_ipg_gate], "gpio", NULL); clk_register_clkdev(clk[brom_ahb_gate], "brom", NULL); diff --git a/trunk/arch/arm/mach-imx/clk-imx31.c b/trunk/arch/arm/mach-imx/clk-imx31.c index 1253af2d9971..8e19e70f90f9 100644 --- a/trunk/arch/arm/mach-imx/clk-imx31.c +++ b/trunk/arch/arm/mach-imx/clk-imx31.c @@ -130,7 +130,7 @@ int __init mx31_clocks_init(unsigned long fref) clk_register_clkdev(clk[nfc], NULL, "mxc_nand.0"); clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); - clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); + clk_register_clkdev(clk[kpp_gate], "kpp", NULL); clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.0"); clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.0"); clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); diff --git a/trunk/arch/arm/mach-imx/clk-imx51-imx53.c b/trunk/arch/arm/mach-imx/clk-imx51-imx53.c index 4bdcaa97bd98..f6086693ebd2 100644 --- a/trunk/arch/arm/mach-imx/clk-imx51-imx53.c +++ b/trunk/arch/arm/mach-imx/clk-imx51-imx53.c @@ -303,7 +303,6 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, clk_prepare_enable(clk[aips_tz2]); /* fec */ clk_prepare_enable(clk[spba]); clk_prepare_enable(clk[emi_fast_gate]); /* fec */ - clk_prepare_enable(clk[emi_slow_gate]); /* eim */ clk_prepare_enable(clk[tmax1]); clk_prepare_enable(clk[tmax2]); /* esdhc2, fec */ clk_prepare_enable(clk[tmax3]); /* esdhc1, esdhc4 */ diff --git a/trunk/arch/arm/mach-integrator/core.c b/trunk/arch/arm/mach-integrator/core.c index 3fa6c51390da..ebf680bebdf2 100644 --- a/trunk/arch/arm/mach-integrator/core.c +++ b/trunk/arch/arm/mach-integrator/core.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/integrator_ap.c b/trunk/arch/arm/mach-integrator/integrator_ap.c index 3b2267529f5e..7b1055c8e0b9 100644 --- a/trunk/arch/arm/mach-integrator/integrator_ap.c +++ b/trunk/arch/arm/mach-integrator/integrator_ap.c @@ -456,7 +456,7 @@ static void __init ap_init_timer(void) clk = clk_get_sys("ap_timer", NULL); BUG_ON(IS_ERR(clk)); - clk_prepare_enable(clk); + clk_enable(clk); rate = clk_get_rate(clk); writel(0, TIMER0_VA_BASE + TIMER_CTRL); diff --git a/trunk/arch/arm/mach-kirkwood/Kconfig b/trunk/arch/arm/mach-kirkwood/Kconfig index ca5c15a4e626..199764fe0fb0 100644 --- a/trunk/arch/arm/mach-kirkwood/Kconfig +++ b/trunk/arch/arm/mach-kirkwood/Kconfig @@ -80,35 +80,6 @@ config MACH_IB62X0_DT RaidSonic IB-NAS6210 & IB-NAS6220 devices, using Flattened Device Tree. -config MACH_TS219_DT - bool "Device Tree for QNAP TS-11X, TS-21X NAS" - select ARCH_KIRKWOOD_DT - select ARM_APPENDED_DTB - select ARM_ATAG_DTB_COMPAT - help - Say 'Y' here if you want your kernel to support the QNAP - TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and - TS-219P+ Turbo NAS devices using Fattened Device Tree. - There are two different Device Tree descriptions, depending - on if the device is based on an if the board uses the MV6281 - or MV6282. If you have the wrong one, the buttons will not - work. - -config MACH_GOFLEXNET_DT - bool "Seagate GoFlex Net (Flattened Device Tree)" - select ARCH_KIRKWOOD_DT - help - Say 'Y' here if you want your kernel to support the - Seagate GoFlex Net (Flattened Device Tree). - -config MACH_LSXL_DT - bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)" - select ARCH_KIRKWOOD_DT - help - Say 'Y' here if you want your kernel to support the - Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using - Flattened Device Tree. - config MACH_TS219 bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" help diff --git a/trunk/arch/arm/mach-kirkwood/Makefile b/trunk/arch/arm/mach-kirkwood/Makefile index 055c85a1cc46..d2b05907b10e 100644 --- a/trunk/arch/arm/mach-kirkwood/Makefile +++ b/trunk/arch/arm/mach-kirkwood/Makefile @@ -25,6 +25,3 @@ obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o -obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o -obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o -obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o diff --git a/trunk/arch/arm/mach-kirkwood/Makefile.boot b/trunk/arch/arm/mach-kirkwood/Makefile.boot index a5717558ee89..02edbdf5b065 100644 --- a/trunk/arch/arm/mach-kirkwood/Makefile.boot +++ b/trunk/arch/arm/mach-kirkwood/Makefile.boot @@ -7,7 +7,3 @@ dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns320.dtb dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns325.dtb dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb dtb-$(CONFIG_MACH_IB62X0_DT) += kirkwood-ib62x0.dtb -dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-qnap-ts219.dtb -dtb-$(CONFIG_MACH_GOFLEXNET_DT) += kirkwood-goflexnet.dtb -dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lschlv2.dtb -dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lsxhl.dtb diff --git a/trunk/arch/arm/mach-kirkwood/board-dnskw.c b/trunk/arch/arm/mach-kirkwood/board-dnskw.c index 4ab35065a144..58c2d68f9443 100644 --- a/trunk/arch/arm/mach-kirkwood/board-dnskw.c +++ b/trunk/arch/arm/mach-kirkwood/board-dnskw.c @@ -14,11 +14,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -33,6 +35,10 @@ static struct mv643xx_eth_platform_data dnskw_ge00_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(8), }; +static struct mv_sata_platform_data dnskw_sata_data = { + .n_ports = 2, +}; + static unsigned int dnskw_mpp_config[] __initdata = { MPP13_UART1_TXD, /* Custom ... */ MPP14_UART1_RXD, /* ... Controller (DNS-320 only) */ @@ -67,6 +73,132 @@ static unsigned int dnskw_mpp_config[] __initdata = { 0 }; +static struct gpio_led dns325_led_pins[] = { + { + .name = "dns325:white:power", + .gpio = 26, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "dns325:white:usb", + .gpio = 43, + .active_low = 1, + }, + { + .name = "dns325:red:l_hdd", + .gpio = 28, + .active_low = 1, + }, + { + .name = "dns325:red:r_hdd", + .gpio = 27, + .active_low = 1, + }, + { + .name = "dns325:red:usb", + .gpio = 29, + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data dns325_led_data = { + .num_leds = ARRAY_SIZE(dns325_led_pins), + .leds = dns325_led_pins, +}; + +static struct platform_device dns325_led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &dns325_led_data, + }, +}; + +static struct gpio_led dns320_led_pins[] = { + { + .name = "dns320:blue:power", + .gpio = 26, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "dns320:blue:usb", + .gpio = 43, + .active_low = 1, + }, + { + .name = "dns320:orange:l_hdd", + .gpio = 28, + .active_low = 1, + }, + { + .name = "dns320:orange:r_hdd", + .gpio = 27, + .active_low = 1, + }, + { + .name = "dns320:orange:usb", + .gpio = 35, + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data dns320_led_data = { + .num_leds = ARRAY_SIZE(dns320_led_pins), + .leds = dns320_led_pins, +}; + +static struct platform_device dns320_led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &dns320_led_data, + }, +}; + +static struct i2c_board_info dns325_i2c_board_info[] __initdata = { + { + I2C_BOARD_INFO("lm75", 0x48), + }, + /* Something at 0x0c also */ +}; + +static struct gpio_keys_button dnskw_button_pins[] = { + { + .code = KEY_POWER, + .gpio = 34, + .desc = "Power button", + .active_low = 1, + }, + { + .code = KEY_EJECTCD, + .gpio = 47, + .desc = "USB unmount button", + .active_low = 1, + }, + { + .code = KEY_RESTART, + .gpio = 48, + .desc = "Reset button", + .active_low = 1, + }, +}; + +static struct gpio_keys_platform_data dnskw_button_data = { + .buttons = dnskw_button_pins, + .nbuttons = ARRAY_SIZE(dnskw_button_pins), +}; + +static struct platform_device dnskw_button_device = { + .name = "gpio-keys", + .id = -1, + .num_resources = 0, + .dev = { + .platform_data = &dnskw_button_data, + } +}; + /* Fan: ADDA AD045HB-G73 40mm 6000rpm@5v */ static struct gpio_fan_speed dnskw_fan_speed[] = { { 0, 0 }, @@ -113,9 +245,20 @@ void __init dnskw_init(void) kirkwood_ehci_init(); kirkwood_ge00_init(&dnskw_ge00_data); + kirkwood_sata_init(&dnskw_sata_data); + kirkwood_i2c_init(); + platform_device_register(&dnskw_button_device); platform_device_register(&dnskw_fan_device); + if (of_machine_is_compatible("dlink,dns-325")) { + i2c_register_board_info(0, dns325_i2c_board_info, + ARRAY_SIZE(dns325_i2c_board_info)); + platform_device_register(&dns325_led_device); + + } else if (of_machine_is_compatible("dlink,dns-320")) + platform_device_register(&dns320_led_device); + /* Register power-off GPIO. */ if (gpio_request(36, "dnskw:power:off") == 0 && gpio_direction_output(36, 0) == 0) diff --git a/trunk/arch/arm/mach-kirkwood/board-dreamplug.c b/trunk/arch/arm/mach-kirkwood/board-dreamplug.c index aeb234d0d0e3..55e357ab2923 100644 --- a/trunk/arch/arm/mach-kirkwood/board-dreamplug.c +++ b/trunk/arch/arm/mach-kirkwood/board-dreamplug.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +36,42 @@ #include "common.h" #include "mpp.h" +struct mtd_partition dreamplug_partitions[] = { + { + .name = "u-boot", + .size = SZ_512K, + .offset = 0, + }, + { + .name = "u-boot env", + .size = SZ_64K, + .offset = SZ_512K + SZ_512K, + }, + { + .name = "dtb", + .size = SZ_64K, + .offset = SZ_512K + SZ_512K + SZ_512K, + }, +}; + +static const struct flash_platform_data dreamplug_spi_slave_data = { + .type = "mx25l1606e", + .name = "spi_flash", + .parts = dreamplug_partitions, + .nr_parts = ARRAY_SIZE(dreamplug_partitions), +}; + +static struct spi_board_info __initdata dreamplug_spi_slave_info[] = { + { + .modalias = "m25p80", + .platform_data = &dreamplug_spi_slave_data, + .irq = -1, + .max_speed_hz = 50000000, + .bus_num = 0, + .chip_select = 0, + }, +}; + static struct mv643xx_eth_platform_data dreamplug_ge00_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(0), }; @@ -42,10 +80,45 @@ static struct mv643xx_eth_platform_data dreamplug_ge01_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(1), }; +static struct mv_sata_platform_data dreamplug_sata_data = { + .n_ports = 1, +}; + static struct mvsdio_platform_data dreamplug_mvsdio_data = { /* unfortunately the CD signal has not been connected */ }; +static struct gpio_led dreamplug_led_pins[] = { + { + .name = "dreamplug:blue:bluetooth", + .gpio = 47, + .active_low = 1, + }, + { + .name = "dreamplug:green:wifi", + .gpio = 48, + .active_low = 1, + }, + { + .name = "dreamplug:green:wifi_ap", + .gpio = 49, + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data dreamplug_led_data = { + .leds = dreamplug_led_pins, + .num_leds = ARRAY_SIZE(dreamplug_led_pins), +}; + +static struct platform_device dreamplug_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &dreamplug_led_data, + } +}; + static unsigned int dreamplug_mpp_config[] __initdata = { MPP0_SPI_SCn, MPP1_SPI_MOSI, @@ -64,8 +137,15 @@ void __init dreamplug_init(void) */ kirkwood_mpp_conf(dreamplug_mpp_config); + spi_register_board_info(dreamplug_spi_slave_info, + ARRAY_SIZE(dreamplug_spi_slave_info)); + kirkwood_spi_init(); + kirkwood_ehci_init(); kirkwood_ge00_init(&dreamplug_ge00_data); kirkwood_ge01_init(&dreamplug_ge01_data); + kirkwood_sata_init(&dreamplug_sata_data); kirkwood_sdio_init(&dreamplug_mvsdio_data); + + platform_device_register(&dreamplug_leds); } diff --git a/trunk/arch/arm/mach-kirkwood/board-dt.c b/trunk/arch/arm/mach-kirkwood/board-dt.c index e4eb450de301..edc3f8a9d45e 100644 --- a/trunk/arch/arm/mach-kirkwood/board-dt.c +++ b/trunk/arch/arm/mach-kirkwood/board-dt.c @@ -18,7 +18,6 @@ #include #include #include -#include #include "common.h" static struct of_device_id kirkwood_dt_match_table[] __initdata = { @@ -26,16 +25,6 @@ static struct of_device_id kirkwood_dt_match_table[] __initdata = { { } }; -struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = { - OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), - OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", - NULL), - OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), - OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), - OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL), - {}, -}; - static void __init kirkwood_dt_init(void) { pr_info("Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), kirkwood_tclk); @@ -58,6 +47,7 @@ static void __init kirkwood_dt_init(void) kirkwood_clk_init(); /* internal devices that every board has */ + kirkwood_wdt_init(); kirkwood_xor0_init(); kirkwood_xor1_init(); kirkwood_crypto_init(); @@ -78,17 +68,7 @@ static void __init kirkwood_dt_init(void) if (of_machine_is_compatible("raidsonic,ib-nas62x0")) ib62x0_init(); - if (of_machine_is_compatible("qnap,ts219")) - qnap_dt_ts219_init(); - - if (of_machine_is_compatible("seagate,goflexnet")) - goflexnet_init(); - - if (of_machine_is_compatible("buffalo,lsxl")) - lsxl_init(); - - of_platform_populate(NULL, kirkwood_dt_match_table, - kirkwood_auxdata_lookup, NULL); + of_platform_populate(NULL, kirkwood_dt_match_table, NULL, NULL); } static const char *kirkwood_dt_board_compat[] = { @@ -97,9 +77,6 @@ static const char *kirkwood_dt_board_compat[] = { "dlink,dns-325", "iom,iconnect", "raidsonic,ib-nas62x0", - "qnap,ts219", - "seagate,goflexnet", - "buffalo,lsxl", NULL }; @@ -107,7 +84,7 @@ DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") /* Maintainer: Jason Cooper */ .map_io = kirkwood_map_io, .init_early = kirkwood_init_early, - .init_irq = orion_dt_init_irq, + .init_irq = kirkwood_init_irq, .timer = &kirkwood_timer, .init_machine = kirkwood_dt_init, .restart = kirkwood_restart, diff --git a/trunk/arch/arm/mach-kirkwood/board-goflexnet.c b/trunk/arch/arm/mach-kirkwood/board-goflexnet.c deleted file mode 100644 index 413e2c8ef5fe..000000000000 --- a/trunk/arch/arm/mach-kirkwood/board-goflexnet.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2012 (C), Jason Cooper - * - * arch/arm/mach-kirkwood/board-goflexnet.c - * - * Seagate GoFlext Net Board Init for drivers not converted to - * flattened device tree yet. - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - * - * Copied and modified for Seagate GoFlex Net support by - * Joshua Coombs based on ArchLinux ARM's - * GoFlex kernel patches. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -static struct mv643xx_eth_platform_data goflexnet_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(0), -}; - -static unsigned int goflexnet_mpp_config[] __initdata = { - MPP29_GPIO, /* USB Power Enable */ - MPP47_GPIO, /* LED Orange */ - MPP46_GPIO, /* LED Green */ - MPP45_GPIO, /* LED Left Capacity 3 */ - MPP44_GPIO, /* LED Left Capacity 2 */ - MPP43_GPIO, /* LED Left Capacity 1 */ - MPP42_GPIO, /* LED Left Capacity 0 */ - MPP41_GPIO, /* LED Right Capacity 3 */ - MPP40_GPIO, /* LED Right Capacity 2 */ - MPP39_GPIO, /* LED Right Capacity 1 */ - MPP38_GPIO, /* LED Right Capacity 0 */ - 0 -}; - -void __init goflexnet_init(void) -{ - /* - * Basic setup. Needs to be called early. - */ - kirkwood_mpp_conf(goflexnet_mpp_config); - - if (gpio_request(29, "USB Power Enable") != 0 || - gpio_direction_output(29, 1) != 0) - pr_err("can't setup GPIO 29 (USB Power Enable)\n"); - kirkwood_ehci_init(); - - kirkwood_ge00_init(&goflexnet_ge00_data); -} diff --git a/trunk/arch/arm/mach-kirkwood/board-ib62x0.c b/trunk/arch/arm/mach-kirkwood/board-ib62x0.c index cfc47f80e734..eddf1df8891f 100644 --- a/trunk/arch/arm/mach-kirkwood/board-ib62x0.c +++ b/trunk/arch/arm/mach-kirkwood/board-ib62x0.c @@ -18,7 +18,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -31,6 +33,10 @@ static struct mv643xx_eth_platform_data ib62x0_ge00_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(8), }; +static struct mv_sata_platform_data ib62x0_sata_data = { + .n_ports = 2, +}; + static unsigned int ib62x0_mpp_config[] __initdata = { MPP0_NF_IO2, MPP1_NF_IO3, @@ -49,6 +55,69 @@ static unsigned int ib62x0_mpp_config[] __initdata = { 0 }; +static struct gpio_led ib62x0_led_pins[] = { + { + .name = "ib62x0:green:os", + .default_trigger = "default-on", + .gpio = 25, + .active_low = 0, + }, + { + .name = "ib62x0:red:os", + .default_trigger = "none", + .gpio = 22, + .active_low = 0, + }, + { + .name = "ib62x0:red:usb_copy", + .default_trigger = "none", + .gpio = 27, + .active_low = 0, + }, +}; + +static struct gpio_led_platform_data ib62x0_led_data = { + .leds = ib62x0_led_pins, + .num_leds = ARRAY_SIZE(ib62x0_led_pins), +}; + +static struct platform_device ib62x0_led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &ib62x0_led_data, + } +}; + +static struct gpio_keys_button ib62x0_button_pins[] = { + { + .code = KEY_COPY, + .gpio = 29, + .desc = "USB Copy", + .active_low = 1, + }, + { + .code = KEY_RESTART, + .gpio = 28, + .desc = "Reset", + .active_low = 1, + }, +}; + +static struct gpio_keys_platform_data ib62x0_button_data = { + .buttons = ib62x0_button_pins, + .nbuttons = ARRAY_SIZE(ib62x0_button_pins), +}; + +static struct platform_device ib62x0_button_device = { + .name = "gpio-keys", + .id = -1, + .num_resources = 0, + .dev = { + .platform_data = &ib62x0_button_data, + } +}; + static void ib62x0_power_off(void) { gpio_set_value(IB62X0_GPIO_POWER_OFF, 1); @@ -63,6 +132,9 @@ void __init ib62x0_init(void) kirkwood_ehci_init(); kirkwood_ge00_init(&ib62x0_ge00_data); + kirkwood_sata_init(&ib62x0_sata_data); + platform_device_register(&ib62x0_led_device); + platform_device_register(&ib62x0_button_device); if (gpio_request(IB62X0_GPIO_POWER_OFF, "ib62x0:power:off") == 0 && gpio_direction_output(IB62X0_GPIO_POWER_OFF, 0) == 0) pm_power_off = ib62x0_power_off; diff --git a/trunk/arch/arm/mach-kirkwood/board-iconnect.c b/trunk/arch/arm/mach-kirkwood/board-iconnect.c index d7a9198ed300..b0d3cc49269d 100644 --- a/trunk/arch/arm/mach-kirkwood/board-iconnect.c +++ b/trunk/arch/arm/mach-kirkwood/board-iconnect.c @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include @@ -30,6 +32,50 @@ static struct mv643xx_eth_platform_data iconnect_ge00_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(11), }; +static struct gpio_led iconnect_led_pins[] = { + { + .name = "led_level", + .gpio = 41, + .default_trigger = "default-on", + }, { + .name = "power:blue", + .gpio = 42, + .default_trigger = "timer", + }, { + .name = "power:red", + .gpio = 43, + }, { + .name = "usb1:blue", + .gpio = 44, + }, { + .name = "usb2:blue", + .gpio = 45, + }, { + .name = "usb3:blue", + .gpio = 46, + }, { + .name = "usb4:blue", + .gpio = 47, + }, { + .name = "otb:blue", + .gpio = 48, + }, +}; + +static struct gpio_led_platform_data iconnect_led_data = { + .leds = iconnect_led_pins, + .num_leds = ARRAY_SIZE(iconnect_led_pins), + .gpio_blink_set = orion_gpio_led_blink_set, +}; + +static struct platform_device iconnect_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &iconnect_led_data, + } +}; + static unsigned int iconnect_mpp_config[] __initdata = { MPP12_GPIO, MPP35_GPIO, @@ -44,6 +90,12 @@ static unsigned int iconnect_mpp_config[] __initdata = { 0 }; +static struct i2c_board_info __initdata iconnect_board_info[] = { + { + I2C_BOARD_INFO("lm63", 0x4c), + }, +}; + static struct mtd_partition iconnect_nand_parts[] = { { .name = "flash", @@ -90,11 +142,15 @@ void __init iconnect_init(void) { kirkwood_mpp_conf(iconnect_mpp_config); kirkwood_nand_init(ARRAY_AND_SIZE(iconnect_nand_parts), 25); + kirkwood_i2c_init(); + i2c_register_board_info(0, iconnect_board_info, + ARRAY_SIZE(iconnect_board_info)); kirkwood_ehci_init(); kirkwood_ge00_init(&iconnect_ge00_data); platform_device_register(&iconnect_button_device); + platform_device_register(&iconnect_leds); } static int __init iconnect_pci_init(void) diff --git a/trunk/arch/arm/mach-kirkwood/board-lsxl.c b/trunk/arch/arm/mach-kirkwood/board-lsxl.c deleted file mode 100644 index 83d8975592f8..000000000000 --- a/trunk/arch/arm/mach-kirkwood/board-lsxl.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2012 (C), Michael Walle - * - * arch/arm/mach-kirkwood/board-lsxl.c - * - * Buffalo Linkstation LS-XHL and LS-CHLv2 init for drivers not - * converted to flattened device tree yet. - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -static struct mv643xx_eth_platform_data lsxl_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(0), -}; - -static struct mv643xx_eth_platform_data lsxl_ge01_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(8), -}; - -static unsigned int lsxl_mpp_config[] __initdata = { - MPP10_GPO, /* HDD Power Enable */ - MPP11_GPIO, /* USB Vbus Enable */ - MPP18_GPO, /* FAN High Enable# */ - MPP19_GPO, /* FAN Low Enable# */ - MPP36_GPIO, /* Function Blue LED */ - MPP37_GPIO, /* Alarm LED */ - MPP38_GPIO, /* Info LED */ - MPP39_GPIO, /* Power LED */ - MPP40_GPIO, /* Fan Lock */ - MPP41_GPIO, /* Function Button */ - MPP42_GPIO, /* Power Switch */ - MPP43_GPIO, /* Power Auto Switch */ - MPP48_GPIO, /* Function Red LED */ - 0 -}; - -#define LSXL_GPIO_FAN_HIGH 18 -#define LSXL_GPIO_FAN_LOW 19 -#define LSXL_GPIO_FAN_LOCK 40 - -static struct gpio_fan_alarm lsxl_alarm = { - .gpio = LSXL_GPIO_FAN_LOCK, -}; - -static struct gpio_fan_speed lsxl_speeds[] = { - { - .rpm = 0, - .ctrl_val = 3, - }, { - .rpm = 1500, - .ctrl_val = 1, - }, { - .rpm = 3250, - .ctrl_val = 2, - }, { - .rpm = 5000, - .ctrl_val = 0, - } -}; - -static int lsxl_gpio_list[] = { - LSXL_GPIO_FAN_HIGH, LSXL_GPIO_FAN_LOW, -}; - -static struct gpio_fan_platform_data lsxl_fan_data = { - .num_ctrl = ARRAY_SIZE(lsxl_gpio_list), - .ctrl = lsxl_gpio_list, - .alarm = &lsxl_alarm, - .num_speed = ARRAY_SIZE(lsxl_speeds), - .speed = lsxl_speeds, -}; - -static struct platform_device lsxl_fan_device = { - .name = "gpio-fan", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &lsxl_fan_data, - }, -}; - -/* - * On the LS-XHL/LS-CHLv2, the shutdown process is following: - * - Userland monitors key events until the power switch goes to off position - * - The board reboots - * - U-boot starts and goes into an idle mode waiting for the user - * to move the switch to ON position - * - */ -static void lsxl_power_off(void) -{ - kirkwood_restart('h', NULL); -} - -#define LSXL_GPIO_HDD_POWER 10 -#define LSXL_GPIO_USB_POWER 11 - -void __init lsxl_init(void) -{ - /* - * Basic setup. Needs to be called early. - */ - kirkwood_mpp_conf(lsxl_mpp_config); - - /* usb and sata power on */ - gpio_set_value(LSXL_GPIO_USB_POWER, 1); - gpio_set_value(LSXL_GPIO_HDD_POWER, 1); - - kirkwood_ehci_init(); - kirkwood_ge00_init(&lsxl_ge00_data); - kirkwood_ge01_init(&lsxl_ge01_data); - platform_device_register(&lsxl_fan_device); - - /* register power-off method */ - pm_power_off = lsxl_power_off; -} diff --git a/trunk/arch/arm/mach-kirkwood/board-ts219.c b/trunk/arch/arm/mach-kirkwood/board-ts219.c deleted file mode 100644 index 1750e68506c1..000000000000 --- a/trunk/arch/arm/mach-kirkwood/board-ts219.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * QNAP TS-11x/TS-21x Turbo NAS Board Setup via DT - * - * Copyright (C) 2012 Andrew Lunn - * - * Based on the board file ts219-setup.c: - * - * Copyright (C) 2009 Martin Michlmayr - * Copyright (C) 2008 Byron Bradley - * - * 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 -#include -#include "common.h" -#include "mpp.h" -#include "tsx1x-common.h" - -static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(8), -}; - -static unsigned int qnap_ts219_mpp_config[] __initdata = { - MPP0_SPI_SCn, - MPP1_SPI_MOSI, - MPP2_SPI_SCK, - MPP3_SPI_MISO, - MPP4_SATA1_ACTn, - MPP5_SATA0_ACTn, - MPP8_TW0_SDA, - MPP9_TW0_SCK, - MPP10_UART0_TXD, - MPP11_UART0_RXD, - MPP13_UART1_TXD, /* PIC controller */ - MPP14_UART1_RXD, /* PIC controller */ - MPP15_GPIO, /* USB Copy button (on devices with 88F6281) */ - MPP16_GPIO, /* Reset button (on devices with 88F6281) */ - MPP36_GPIO, /* RAM: 0: 256 MB, 1: 512 MB */ - MPP37_GPIO, /* Reset button (on devices with 88F6282) */ - MPP43_GPIO, /* USB Copy button (on devices with 88F6282) */ - MPP44_GPIO, /* Board ID: 0: TS-11x, 1: TS-21x */ - 0 -}; - -void __init qnap_dt_ts219_init(void) -{ - u32 dev, rev; - - kirkwood_mpp_conf(qnap_ts219_mpp_config); - - kirkwood_pcie_id(&dev, &rev); - if (dev == MV88F6282_DEV_ID) - qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); - - kirkwood_ge00_init(&qnap_ts219_ge00_data); - kirkwood_ehci_init(); - - pm_power_off = qnap_tsx1x_power_off; -} - -/* FIXME: Will not work with DT. Maybe use MPP40_GPIO? */ -static int __init ts219_pci_init(void) -{ - if (machine_is_ts219()) - kirkwood_pcie_init(KW_PCIE0); - - return 0; -} -subsys_initcall(ts219_pci_init); diff --git a/trunk/arch/arm/mach-kirkwood/common.c b/trunk/arch/arm/mach-kirkwood/common.c index c4b64adcbfce..c9201539ffbd 100644 --- a/trunk/arch/arm/mach-kirkwood/common.c +++ b/trunk/arch/arm/mach-kirkwood/common.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -277,7 +276,6 @@ void __init kirkwood_clk_init(void) orion_clkdev_add("0", "pcie", pex0); orion_clkdev_add("1", "pcie", pex1); orion_clkdev_add(NULL, "kirkwood-i2s", audio); - orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", runit); /* Marvell says runit is used by SPI, UART, NAND, TWSI, ..., * so should never be gated. diff --git a/trunk/arch/arm/mach-kirkwood/common.h b/trunk/arch/arm/mach-kirkwood/common.h index 304dd1abfdca..9248fa2c165b 100644 --- a/trunk/arch/arm/mach-kirkwood/common.h +++ b/trunk/arch/arm/mach-kirkwood/common.h @@ -58,11 +58,6 @@ void dreamplug_init(void); #else static inline void dreamplug_init(void) {}; #endif -#ifdef CONFIG_MACH_TS219_DT -void qnap_dt_ts219_init(void); -#else -static inline void qnap_dt_ts219_init(void) {}; -#endif #ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT void dnskw_init(void); @@ -82,18 +77,6 @@ void ib62x0_init(void); static inline void ib62x0_init(void) {}; #endif -#ifdef CONFIG_MACH_GOFLEXNET_DT -void goflexnet_init(void); -#else -static inline void goflexnet_init(void) {}; -#endif - -#ifdef CONFIG_MACH_LSXL_DT -void lsxl_init(void); -#else -static inline void lsxl_init(void) {}; -#endif - /* early init functions not converted to fdt yet */ char *kirkwood_id(void); void kirkwood_l2_init(void); diff --git a/trunk/arch/arm/mach-kirkwood/irq.c b/trunk/arch/arm/mach-kirkwood/irq.c index 720063ffa19d..c4c68e5b94f1 100644 --- a/trunk/arch/arm/mach-kirkwood/irq.c +++ b/trunk/arch/arm/mach-kirkwood/irq.c @@ -9,23 +9,20 @@ */ #include #include +#include #include +#include #include #include +#include "common.h" -static int __initdata gpio0_irqs[4] = { - IRQ_KIRKWOOD_GPIO_LOW_0_7, - IRQ_KIRKWOOD_GPIO_LOW_8_15, - IRQ_KIRKWOOD_GPIO_LOW_16_23, - IRQ_KIRKWOOD_GPIO_LOW_24_31, -}; +static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) +{ + BUG_ON(irq < IRQ_KIRKWOOD_GPIO_LOW_0_7); + BUG_ON(irq > IRQ_KIRKWOOD_GPIO_HIGH_16_23); -static int __initdata gpio1_irqs[4] = { - IRQ_KIRKWOOD_GPIO_HIGH_0_7, - IRQ_KIRKWOOD_GPIO_HIGH_8_15, - IRQ_KIRKWOOD_GPIO_HIGH_16_23, - 0, -}; + orion_gpio_irq_handler((irq - IRQ_KIRKWOOD_GPIO_LOW_0_7) << 3); +} void __init kirkwood_init_irq(void) { @@ -35,8 +32,17 @@ void __init kirkwood_init_irq(void) /* * Initialize gpiolib for GPIOs 0-49. */ - orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_LOW_VIRT_BASE, 0, - IRQ_KIRKWOOD_GPIO_START, gpio0_irqs); - orion_gpio_init(NULL, 32, 18, (void __iomem *)GPIO_HIGH_VIRT_BASE, 0, - IRQ_KIRKWOOD_GPIO_START + 32, gpio1_irqs); + orion_gpio_init(0, 32, GPIO_LOW_VIRT_BASE, 0, + IRQ_KIRKWOOD_GPIO_START); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_0_7, gpio_irq_handler); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_8_15, gpio_irq_handler); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_16_23, gpio_irq_handler); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_24_31, gpio_irq_handler); + + orion_gpio_init(32, 18, GPIO_HIGH_VIRT_BASE, 0, + IRQ_KIRKWOOD_GPIO_START + 32); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_0_7, gpio_irq_handler); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_8_15, gpio_irq_handler); + irq_set_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_16_23, + gpio_irq_handler); } diff --git a/trunk/arch/arm/mach-mmp/gplugd.c b/trunk/arch/arm/mach-mmp/gplugd.c index 5c3d61ee729a..f516e74ce0d5 100644 --- a/trunk/arch/arm/mach-mmp/gplugd.c +++ b/trunk/arch/arm/mach-mmp/gplugd.c @@ -14,7 +14,6 @@ #include #include -#include #include #include diff --git a/trunk/arch/arm/mach-mv78xx0/irq.c b/trunk/arch/arm/mach-mv78xx0/irq.c index eff9a750bbe2..e421b701663b 100644 --- a/trunk/arch/arm/mach-mv78xx0/irq.c +++ b/trunk/arch/arm/mach-mv78xx0/irq.c @@ -9,17 +9,19 @@ */ #include #include +#include +#include #include #include #include #include "common.h" -static int __initdata gpio0_irqs[4] = { - IRQ_MV78XX0_GPIO_0_7, - IRQ_MV78XX0_GPIO_8_15, - IRQ_MV78XX0_GPIO_16_23, - IRQ_MV78XX0_GPIO_24_31, -}; +static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) +{ + BUG_ON(irq < IRQ_MV78XX0_GPIO_0_7 || irq > IRQ_MV78XX0_GPIO_24_31); + + orion_gpio_irq_handler((irq - IRQ_MV78XX0_GPIO_0_7) << 3); +} void __init mv78xx0_init_irq(void) { @@ -32,7 +34,11 @@ void __init mv78xx0_init_irq(void) * registers for core #1 are at an offset of 0x18 from those of * core #0.) */ - orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_VIRT_BASE, + orion_gpio_init(0, 32, GPIO_VIRT_BASE, mv78xx0_core_index() ? 0x18 : 0, - IRQ_MV78XX0_GPIO_START, gpio0_irqs); + IRQ_MV78XX0_GPIO_START); + irq_set_chained_handler(IRQ_MV78XX0_GPIO_0_7, gpio_irq_handler); + irq_set_chained_handler(IRQ_MV78XX0_GPIO_8_15, gpio_irq_handler); + irq_set_chained_handler(IRQ_MV78XX0_GPIO_16_23, gpio_irq_handler); + irq_set_chained_handler(IRQ_MV78XX0_GPIO_24_31, gpio_irq_handler); } diff --git a/trunk/arch/arm/mach-mxs/Kconfig b/trunk/arch/arm/mach-mxs/Kconfig index 9a8bbda195b2..ccdf83b17cf1 100644 --- a/trunk/arch/arm/mach-mxs/Kconfig +++ b/trunk/arch/arm/mach-mxs/Kconfig @@ -2,6 +2,9 @@ if ARCH_MXS source "arch/arm/mach-mxs/devices/Kconfig" +config MXS_OCOTP + bool + config SOC_IMX23 bool select ARM_AMBA @@ -63,6 +66,7 @@ config MACH_MX28EVK select MXS_HAVE_PLATFORM_MXS_SAIF select MXS_HAVE_PLATFORM_MXS_I2C select MXS_HAVE_PLATFORM_RTC_STMP3XXX + select MXS_OCOTP help Include support for MX28EVK platform. This includes specific configurations for the board and its peripherals. @@ -90,6 +94,7 @@ config MODULE_M28 select MXS_HAVE_PLATFORM_MXS_I2C select MXS_HAVE_PLATFORM_MXS_MMC select MXS_HAVE_PLATFORM_MXSFB + select MXS_OCOTP config MODULE_APX4 bool @@ -101,6 +106,7 @@ config MODULE_APX4 select MXS_HAVE_PLATFORM_MXS_I2C select MXS_HAVE_PLATFORM_MXS_MMC select MXS_HAVE_PLATFORM_MXS_SAIF + select MXS_OCOTP config MACH_TX28 bool "Ka-Ro TX28 module" diff --git a/trunk/arch/arm/mach-mxs/Makefile b/trunk/arch/arm/mach-mxs/Makefile index fed3695a1339..e41590ccb437 100644 --- a/trunk/arch/arm/mach-mxs/Makefile +++ b/trunk/arch/arm/mach-mxs/Makefile @@ -1,6 +1,7 @@ # Common support -obj-y := devices.o icoll.o iomux.o ocotp.o system.o timer.o mm.o +obj-y := devices.o icoll.o iomux.o system.o timer.o mm.o +obj-$(CONFIG_MXS_OCOTP) += ocotp.o obj-$(CONFIG_PM) += pm.o obj-$(CONFIG_MACH_MXS_DT) += mach-mxs.o diff --git a/trunk/arch/arm/mach-netx/fb.c b/trunk/arch/arm/mach-netx/fb.c index d122ee6ab991..2cdf6ef69bee 100644 --- a/trunk/arch/arm/mach-netx/fb.c +++ b/trunk/arch/arm/mach-netx/fb.c @@ -69,6 +69,29 @@ void netx_clcd_remove(struct clcd_fb *fb) fb->fb.screen_base, fb->fb.fix.smem_start); } +void clk_disable(struct clk *clk) +{ +} + +int clk_set_rate(struct clk *clk, unsigned long rate) +{ + return 0; +} + +int clk_enable(struct clk *clk) +{ + return 0; +} + +struct clk *clk_get(struct device *dev, const char *id) +{ + return dev && strcmp(dev_name(dev), "fb") == 0 ? NULL : ERR_PTR(-ENOENT); +} + +void clk_put(struct clk *clk) +{ +} + static AMBA_AHB_DEVICE(fb, "fb", 0, 0x00104000, { NETX_IRQ_LCD }, NULL); int netx_fb_init(struct clcd_board *board, struct clcd_panel *panel) diff --git a/trunk/arch/arm/mach-omap1/board-h2-mmc.c b/trunk/arch/arm/mach-omap1/board-h2-mmc.c index e1362ce48497..da0e37d40823 100644 --- a/trunk/arch/arm/mach-omap1/board-h2-mmc.c +++ b/trunk/arch/arm/mach-omap1/board-h2-mmc.c @@ -54,6 +54,7 @@ static struct omap_mmc_platform_data mmc1_data = { .nr_slots = 1, .init = mmc_late_init, .cleanup = mmc_cleanup, + .dma_mask = 0xffffffff, .slots[0] = { .set_power = mmc_set_power, .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, diff --git a/trunk/arch/arm/mach-omap1/board-h3-mmc.c b/trunk/arch/arm/mach-omap1/board-h3-mmc.c index c74daace8cd6..f8242aa9b763 100644 --- a/trunk/arch/arm/mach-omap1/board-h3-mmc.c +++ b/trunk/arch/arm/mach-omap1/board-h3-mmc.c @@ -36,6 +36,7 @@ static int mmc_set_power(struct device *dev, int slot, int power_on, */ static struct omap_mmc_platform_data mmc1_data = { .nr_slots = 1, + .dma_mask = 0xffffffff, .slots[0] = { .set_power = mmc_set_power, .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, diff --git a/trunk/arch/arm/mach-omap1/board-nokia770.c b/trunk/arch/arm/mach-omap1/board-nokia770.c index 2c0ca8fc3380..4007a372481b 100644 --- a/trunk/arch/arm/mach-omap1/board-nokia770.c +++ b/trunk/arch/arm/mach-omap1/board-nokia770.c @@ -185,6 +185,7 @@ static int nokia770_mmc_get_cover_state(struct device *dev, int slot) static struct omap_mmc_platform_data nokia770_mmc2_data = { .nr_slots = 1, + .dma_mask = 0xffffffff, .max_freq = 12000000, .slots[0] = { .set_power = nokia770_mmc_set_power, diff --git a/trunk/arch/arm/mach-omap1/board-palmz71.c b/trunk/arch/arm/mach-omap1/board-palmz71.c index 355980321c2d..cc71a26723ef 100644 --- a/trunk/arch/arm/mach-omap1/board-palmz71.c +++ b/trunk/arch/arm/mach-omap1/board-palmz71.c @@ -288,7 +288,8 @@ palmz71_gpio_setup(int early) } gpio_direction_input(PALMZ71_USBDETECT_GPIO); if (request_irq(gpio_to_irq(PALMZ71_USBDETECT_GPIO), - palmz71_powercable, 0, "palmz71-cable", NULL)) + palmz71_powercable, IRQF_SAMPLE_RANDOM, + "palmz71-cable", NULL)) printk(KERN_ERR "IRQ request for power cable failed!\n"); palmz71_powercable(gpio_to_irq(PALMZ71_USBDETECT_GPIO), NULL); diff --git a/trunk/arch/arm/mach-omap2/Kconfig b/trunk/arch/arm/mach-omap2/Kconfig index dd2db025f778..dd0fbf76ac79 100644 --- a/trunk/arch/arm/mach-omap2/Kconfig +++ b/trunk/arch/arm/mach-omap2/Kconfig @@ -62,7 +62,6 @@ config ARCH_OMAP4 select PM_OPP if PM select USB_ARCH_HAS_EHCI if USB_SUPPORT select ARM_CPU_SUSPEND if PM - select ARCH_NEEDS_CPU_IDLE_COUPLED config SOC_OMAP5 bool "TI OMAP5" diff --git a/trunk/arch/arm/mach-omap2/board-n8x0.c b/trunk/arch/arm/mach-omap2/board-n8x0.c index 677357ff61ac..2c5d0ed75285 100644 --- a/trunk/arch/arm/mach-omap2/board-n8x0.c +++ b/trunk/arch/arm/mach-omap2/board-n8x0.c @@ -468,6 +468,7 @@ static struct omap_mmc_platform_data mmc1_data = { .cleanup = n8x0_mmc_cleanup, .shutdown = n8x0_mmc_shutdown, .max_freq = 24000000, + .dma_mask = 0xffffffff, .slots[0] = { .wires = 4, .set_power = n8x0_mmc_set_power, diff --git a/trunk/arch/arm/mach-omap2/cpuidle44xx.c b/trunk/arch/arm/mach-omap2/cpuidle44xx.c index ee05e193fc61..02d15bbd4e35 100644 --- a/trunk/arch/arm/mach-omap2/cpuidle44xx.c +++ b/trunk/arch/arm/mach-omap2/cpuidle44xx.c @@ -21,7 +21,6 @@ #include "common.h" #include "pm.h" #include "prm.h" -#include "clockdomain.h" /* Machine specific information */ struct omap4_idle_statedata { @@ -48,14 +47,10 @@ static struct omap4_idle_statedata omap4_idle_data[] = { }, }; -static struct powerdomain *mpu_pd, *cpu_pd[NR_CPUS]; -static struct clockdomain *cpu_clkdm[NR_CPUS]; - -static atomic_t abort_barrier; -static bool cpu_done[NR_CPUS]; +static struct powerdomain *mpu_pd, *cpu0_pd, *cpu1_pd; /** - * omap4_enter_idle_coupled_[simple/coupled] - OMAP4 cpuidle entry functions + * omap4_enter_idle - Programs OMAP4 to enter the specified state * @dev: cpuidle device * @drv: cpuidle driver * @index: the index of state to be entered @@ -64,84 +59,60 @@ static bool cpu_done[NR_CPUS]; * specified low power state selected by the governor. * Returns the amount of time spent in the low power state. */ -static int omap4_enter_idle_simple(struct cpuidle_device *dev, - struct cpuidle_driver *drv, - int index) -{ - local_fiq_disable(); - omap_do_wfi(); - local_fiq_enable(); - - return index; -} - -static int omap4_enter_idle_coupled(struct cpuidle_device *dev, +static int omap4_enter_idle(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { struct omap4_idle_statedata *cx = &omap4_idle_data[index]; + u32 cpu1_state; int cpu_id = smp_processor_id(); local_fiq_disable(); /* - * CPU0 has to wait and stay ON until CPU1 is OFF state. + * CPU0 has to stay ON (i.e in C1) until CPU1 is OFF state. * This is necessary to honour hardware recommondation * of triggeing all the possible low power modes once CPU1 is * out of coherency and in OFF mode. + * Update dev->last_state so that governor stats reflects right + * data. */ - if (dev->cpu == 0 && cpumask_test_cpu(1, cpu_online_mask)) { - while (pwrdm_read_pwrst(cpu_pd[1]) != PWRDM_POWER_OFF) { - cpu_relax(); - - /* - * CPU1 could have already entered & exited idle - * without hitting off because of a wakeup - * or a failed attempt to hit off mode. Check for - * that here, otherwise we could spin forever - * waiting for CPU1 off. - */ - if (cpu_done[1]) - goto fail; - - } + cpu1_state = pwrdm_read_pwrst(cpu1_pd); + if (cpu1_state != PWRDM_POWER_OFF) { + index = drv->safe_state_index; + cx = &omap4_idle_data[index]; } - clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id); + if (index > 0) + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id); /* * Call idle CPU PM enter notifier chain so that * VFP and per CPU interrupt context is saved. */ - cpu_pm_enter(); - - if (dev->cpu == 0) { - pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state); - omap_set_pwrdm_state(mpu_pd, cx->mpu_state); - - /* - * Call idle CPU cluster PM enter notifier chain - * to save GIC and wakeupgen context. - */ - if ((cx->mpu_state == PWRDM_POWER_RET) && - (cx->mpu_logic_state == PWRDM_POWER_OFF)) - cpu_cluster_pm_enter(); - } + if (cx->cpu_state == PWRDM_POWER_OFF) + cpu_pm_enter(); - omap4_enter_lowpower(dev->cpu, cx->cpu_state); - cpu_done[dev->cpu] = true; + pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state); + omap_set_pwrdm_state(mpu_pd, cx->mpu_state); - /* Wakeup CPU1 only if it is not offlined */ - if (dev->cpu == 0 && cpumask_test_cpu(1, cpu_online_mask)) { - clkdm_wakeup(cpu_clkdm[1]); - clkdm_allow_idle(cpu_clkdm[1]); - } + /* + * Call idle CPU cluster PM enter notifier chain + * to save GIC and wakeupgen context. + */ + if ((cx->mpu_state == PWRDM_POWER_RET) && + (cx->mpu_logic_state == PWRDM_POWER_OFF)) + cpu_cluster_pm_enter(); + + omap4_enter_lowpower(dev->cpu, cx->cpu_state); /* * Call idle CPU PM exit notifier chain to restore - * VFP and per CPU IRQ context. + * VFP and per CPU IRQ context. Only CPU0 state is + * considered since CPU1 is managed by CPU hotplug. */ - cpu_pm_exit(); + if (pwrdm_read_prev_pwrst(cpu0_pd) == PWRDM_POWER_OFF) + cpu_pm_exit(); /* * Call idle CPU cluster PM exit notifier chain @@ -150,11 +121,8 @@ static int omap4_enter_idle_coupled(struct cpuidle_device *dev, if (omap4_mpuss_read_prev_context_state()) cpu_cluster_pm_exit(); - clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id); - -fail: - cpuidle_coupled_parallel_barrier(dev, &abort_barrier); - cpu_done[dev->cpu] = false; + if (index > 0) + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id); local_fiq_enable(); @@ -173,7 +141,7 @@ struct cpuidle_driver omap4_idle_driver = { .exit_latency = 2 + 2, .target_residency = 5, .flags = CPUIDLE_FLAG_TIME_VALID, - .enter = omap4_enter_idle_simple, + .enter = omap4_enter_idle, .name = "C1", .desc = "MPUSS ON" }, @@ -181,8 +149,8 @@ struct cpuidle_driver omap4_idle_driver = { /* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */ .exit_latency = 328 + 440, .target_residency = 960, - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED, - .enter = omap4_enter_idle_coupled, + .flags = CPUIDLE_FLAG_TIME_VALID, + .enter = omap4_enter_idle, .name = "C2", .desc = "MPUSS CSWR", }, @@ -190,8 +158,8 @@ struct cpuidle_driver omap4_idle_driver = { /* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */ .exit_latency = 460 + 518, .target_residency = 1100, - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED, - .enter = omap4_enter_idle_coupled, + .flags = CPUIDLE_FLAG_TIME_VALID, + .enter = omap4_enter_idle, .name = "C3", .desc = "MPUSS OSWR", }, @@ -200,16 +168,6 @@ struct cpuidle_driver omap4_idle_driver = { .safe_state_index = 0, }; -/* - * For each cpu, setup the broadcast timer because local timers - * stops for the states above C1. - */ -static void omap_setup_broadcast_timer(void *arg) -{ - int cpu = smp_processor_id(); - clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ON, &cpu); -} - /** * omap4_idle_init - Init routine for OMAP4 idle * @@ -222,30 +180,19 @@ int __init omap4_idle_init(void) unsigned int cpu_id = 0; mpu_pd = pwrdm_lookup("mpu_pwrdm"); - cpu_pd[0] = pwrdm_lookup("cpu0_pwrdm"); - cpu_pd[1] = pwrdm_lookup("cpu1_pwrdm"); - if ((!mpu_pd) || (!cpu_pd[0]) || (!cpu_pd[1])) + cpu0_pd = pwrdm_lookup("cpu0_pwrdm"); + cpu1_pd = pwrdm_lookup("cpu1_pwrdm"); + if ((!mpu_pd) || (!cpu0_pd) || (!cpu1_pd)) return -ENODEV; - cpu_clkdm[0] = clkdm_lookup("mpu0_clkdm"); - cpu_clkdm[1] = clkdm_lookup("mpu1_clkdm"); - if (!cpu_clkdm[0] || !cpu_clkdm[1]) - return -ENODEV; - - /* Configure the broadcast timer on each cpu */ - on_each_cpu(omap_setup_broadcast_timer, NULL, 1); - - for_each_cpu(cpu_id, cpu_online_mask) { - dev = &per_cpu(omap4_idle_dev, cpu_id); - dev->cpu = cpu_id; - dev->coupled_cpus = *cpu_online_mask; + dev = &per_cpu(omap4_idle_dev, cpu_id); + dev->cpu = cpu_id; - cpuidle_register_driver(&omap4_idle_driver); + cpuidle_register_driver(&omap4_idle_driver); - if (cpuidle_register_device(dev)) { - pr_err("%s: CPUidle register failed\n", __func__); - return -EIO; - } + if (cpuidle_register_device(dev)) { + pr_err("%s: CPUidle register device failed\n", __func__); + return -EIO; } return 0; diff --git a/trunk/arch/arm/mach-omap2/display.c b/trunk/arch/arm/mach-omap2/display.c index af1ed7d24a1f..5fb47a14f4ba 100644 --- a/trunk/arch/arm/mach-omap2/display.c +++ b/trunk/arch/arm/mach-omap2/display.c @@ -37,7 +37,6 @@ #define DISPC_CONTROL 0x0040 #define DISPC_CONTROL2 0x0238 -#define DISPC_CONTROL3 0x0848 #define DISPC_IRQSTATUS 0x0018 #define DSS_SYSCONFIG 0x10 @@ -53,7 +52,6 @@ #define EVSYNC_EVEN_IRQ_SHIFT 2 #define EVSYNC_ODD_IRQ_SHIFT 3 #define FRAMEDONE2_IRQ_SHIFT 22 -#define FRAMEDONE3_IRQ_SHIFT 30 #define FRAMEDONETV_IRQ_SHIFT 24 /* @@ -378,7 +376,7 @@ int __init omap_display_init(struct omap_dss_board_info *board_data) static void dispc_disable_outputs(void) { u32 v, irq_mask = 0; - bool lcd_en, digit_en, lcd2_en = false, lcd3_en = false; + bool lcd_en, digit_en, lcd2_en = false; int i; struct omap_dss_dispc_dev_attr *da; struct omap_hwmod *oh; @@ -407,13 +405,7 @@ static void dispc_disable_outputs(void) lcd2_en = v & LCD_EN_MASK; } - /* store value of LCDENABLE for LCD3 */ - if (da->manager_count > 3) { - v = omap_hwmod_read(oh, DISPC_CONTROL3); - lcd3_en = v & LCD_EN_MASK; - } - - if (!(lcd_en | digit_en | lcd2_en | lcd3_en)) + if (!(lcd_en | digit_en | lcd2_en)) return; /* no managers currently enabled */ /* @@ -434,12 +426,10 @@ static void dispc_disable_outputs(void) if (lcd2_en) irq_mask |= 1 << FRAMEDONE2_IRQ_SHIFT; - if (lcd3_en) - irq_mask |= 1 << FRAMEDONE3_IRQ_SHIFT; /* * clear any previous FRAMEDONE, FRAMEDONETV, - * EVSYNC_EVEN/ODD, FRAMEDONE2 or FRAMEDONE3 interrupts + * EVSYNC_EVEN/ODD or FRAMEDONE2 interrupts */ omap_hwmod_write(irq_mask, oh, DISPC_IRQSTATUS); @@ -455,19 +445,12 @@ static void dispc_disable_outputs(void) omap_hwmod_write(v, oh, DISPC_CONTROL2); } - /* disable LCD3 manager */ - if (da->manager_count > 3) { - v = omap_hwmod_read(oh, DISPC_CONTROL3); - v &= ~LCD_EN_MASK; - omap_hwmod_write(v, oh, DISPC_CONTROL3); - } - i = 0; while ((omap_hwmod_read(oh, DISPC_IRQSTATUS) & irq_mask) != irq_mask) { i++; if (i > FRAMEDONE_IRQ_TIMEOUT) { - pr_err("didn't get FRAMEDONE1/2/3 or TV interrupt\n"); + pr_err("didn't get FRAMEDONE1/2 or TV interrupt\n"); break; } mdelay(1); diff --git a/trunk/arch/arm/mach-omap2/hsmmc.c b/trunk/arch/arm/mach-omap2/hsmmc.c index a9675d8d1822..be697d4e0843 100644 --- a/trunk/arch/arm/mach-omap2/hsmmc.c +++ b/trunk/arch/arm/mach-omap2/hsmmc.c @@ -315,6 +315,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, mmc->slots[0].caps = c->caps; mmc->slots[0].pm_caps = c->pm_caps; mmc->slots[0].internal_clock = !c->ext_clock; + mmc->dma_mask = 0xffffffff; mmc->max_freq = c->max_freq; if (cpu_is_omap44xx()) mmc->reg_offset = OMAP4_MMC_REG_OFFSET; diff --git a/trunk/arch/arm/mach-omap2/timer.c b/trunk/arch/arm/mach-omap2/timer.c index 2ff6d41ec6c6..13d20c8a283d 100644 --- a/trunk/arch/arm/mach-omap2/timer.c +++ b/trunk/arch/arm/mach-omap2/timer.c @@ -130,7 +130,6 @@ static struct clock_event_device clockevent_gpt = { .name = "gp_timer", .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .shift = 32, - .rating = 300, .set_next_event = omap2_gp_timer_set_next_event, .set_mode = omap2_gp_timer_set_mode, }; @@ -224,8 +223,7 @@ static void __init omap2_gp_clockevent_init(int gptimer_id, clockevent_delta2ns(3, &clockevent_gpt); /* Timer internal resynch latency. */ - clockevent_gpt.cpumask = cpu_possible_mask; - clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev); + clockevent_gpt.cpumask = cpumask_of(0); clockevents_register_device(&clockevent_gpt); pr_info("OMAP clockevent source: GPTIMER%d at %lu Hz\n", diff --git a/trunk/arch/arm/mach-orion5x/irq.c b/trunk/arch/arm/mach-orion5x/irq.c index 17da7091d310..b1b45fff776e 100644 --- a/trunk/arch/arm/mach-orion5x/irq.c +++ b/trunk/arch/arm/mach-orion5x/irq.c @@ -11,16 +11,19 @@ */ #include #include +#include #include +#include #include #include +#include "common.h" -static int __initdata gpio0_irqs[4] = { - IRQ_ORION5X_GPIO_0_7, - IRQ_ORION5X_GPIO_8_15, - IRQ_ORION5X_GPIO_16_23, - IRQ_ORION5X_GPIO_24_31, -}; +static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) +{ + BUG_ON(irq < IRQ_ORION5X_GPIO_0_7 || irq > IRQ_ORION5X_GPIO_24_31); + + orion_gpio_irq_handler((irq - IRQ_ORION5X_GPIO_0_7) << 3); +} void __init orion5x_init_irq(void) { @@ -29,6 +32,9 @@ void __init orion5x_init_irq(void) /* * Initialize gpiolib for GPIOs 0-31. */ - orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_VIRT_BASE, 0, - IRQ_ORION5X_GPIO_START, gpio0_irqs); + orion_gpio_init(0, 32, GPIO_VIRT_BASE, 0, IRQ_ORION5X_GPIO_START); + irq_set_chained_handler(IRQ_ORION5X_GPIO_0_7, gpio_irq_handler); + irq_set_chained_handler(IRQ_ORION5X_GPIO_8_15, gpio_irq_handler); + irq_set_chained_handler(IRQ_ORION5X_GPIO_16_23, gpio_irq_handler); + irq_set_chained_handler(IRQ_ORION5X_GPIO_24_31, gpio_irq_handler); } diff --git a/trunk/arch/arm/mach-prima2/timer.c b/trunk/arch/arm/mach-prima2/timer.c index f224107de7bc..0d024b1e916d 100644 --- a/trunk/arch/arm/mach-prima2/timer.c +++ b/trunk/arch/arm/mach-prima2/timer.c @@ -132,11 +132,11 @@ static void sirfsoc_clocksource_resume(struct clocksource *cs) { int i; - for (i = 0; i < SIRFSOC_TIMER_REG_CNT - 2; i++) + for (i = 0; i < SIRFSOC_TIMER_REG_CNT; i++) writel_relaxed(sirfsoc_timer_reg_val[i], sirfsoc_timer_base + sirfsoc_timer_reg_list[i]); - writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 2], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); - writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 1], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); + writel_relaxed(sirfsoc_timer_reg_val[i - 2], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); + writel_relaxed(sirfsoc_timer_reg_val[i - 1], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); } static struct clock_event_device sirfsoc_clockevent = { diff --git a/trunk/arch/arm/mach-pxa/eseries.h b/trunk/arch/arm/mach-pxa/eseries.h new file mode 100644 index 000000000000..b96949dd5adb --- /dev/null +++ b/trunk/arch/arm/mach-pxa/eseries.h @@ -0,0 +1,14 @@ +void __init eseries_fixup(struct tag *tags, char **cmdline, struct meminfo *mi); + +extern struct pxa2xx_udc_mach_info e7xx_udc_mach_info; +extern struct pxaficp_platform_data e7xx_ficp_platform_data; +extern int e7xx_irda_init(void); + +extern int eseries_tmio_enable(struct platform_device *dev); +extern int eseries_tmio_disable(struct platform_device *dev); +extern int eseries_tmio_suspend(struct platform_device *dev); +extern int eseries_tmio_resume(struct platform_device *dev); +extern void eseries_get_tmio_gpios(void); +extern struct resource eseries_tmio_resources[]; +extern struct platform_device e300_tc6387xb_device; + diff --git a/trunk/arch/arm/mach-pxa/hx4700.c b/trunk/arch/arm/mach-pxa/hx4700.c index e6311988add2..d3de84b0dcbe 100644 --- a/trunk/arch/arm/mach-pxa/hx4700.c +++ b/trunk/arch/arm/mach-pxa/hx4700.c @@ -296,11 +296,27 @@ static struct asic3_led asic3_leds[ASIC3_NUM_LEDS] = { static struct resource asic3_resources[] = { /* GPIO part */ - [0] = DEFINE_RES_MEM(ASIC3_PHYS, ASIC3_MAP_SIZE_16BIT), - [1] = DEFINE_RES_IRQ(PXA_GPIO_TO_IRQ(GPIO12_HX4700_ASIC3_IRQ)), + [0] = { + .start = ASIC3_PHYS, + .end = ASIC3_PHYS + ASIC3_MAP_SIZE_16BIT - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = PXA_GPIO_TO_IRQ(GPIO12_HX4700_ASIC3_IRQ), + .end = PXA_GPIO_TO_IRQ(GPIO12_HX4700_ASIC3_IRQ), + .flags = IORESOURCE_IRQ, + }, /* SD part */ - [2] = DEFINE_RES_MEM(ASIC3_SD_PHYS, ASIC3_MAP_SIZE_16BIT), - [3] = DEFINE_RES_IRQ(PXA_GPIO_TO_IRQ(GPIO66_HX4700_ASIC3_nSDIO_IRQ)), + [2] = { + .start = ASIC3_SD_PHYS, + .end = ASIC3_SD_PHYS + ASIC3_MAP_SIZE_16BIT - 1, + .flags = IORESOURCE_MEM, + }, + [3] = { + .start = PXA_GPIO_TO_IRQ(GPIO66_HX4700_ASIC3_nSDIO_IRQ), + .end = PXA_GPIO_TO_IRQ(GPIO66_HX4700_ASIC3_nSDIO_IRQ), + .flags = IORESOURCE_IRQ, + }, }; static struct asic3_platform_data asic3_platform_data = { @@ -327,7 +343,11 @@ static struct platform_device asic3 = { */ static struct resource egpio_resources[] = { - [0] = DEFINE_RES_MEM(PXA_CS5_PHYS, 0x4), + [0] = { + .start = PXA_CS5_PHYS, + .end = PXA_CS5_PHYS + 0x4 - 1, + .flags = IORESOURCE_MEM, + }, }; static struct htc_egpio_chip egpio_chips[] = { @@ -517,7 +537,11 @@ static struct w100fb_mach_info w3220_info = { }; static struct resource w3220_resources[] = { - [0] = DEFINE_RES_MEM(ATI_W3220_PHYS, SZ_16M), + [0] = { + .start = ATI_W3220_PHYS, + .end = ATI_W3220_PHYS + 0x00ffffff, + .flags = IORESOURCE_MEM, + }, }; static struct platform_device w3220 = { @@ -659,12 +683,20 @@ static struct pda_power_pdata power_supply_info = { }; static struct resource power_supply_resources[] = { - [0] = DEFINE_RES_NAMED(PXA_GPIO_TO_IRQ(GPIOD9_nAC_IN), 1, "ac", - IORESOURCE_IRQ | - IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE), - [1] = DEFINE_RES_NAMED(PXA_GPIO_TO_IRQ(GPIOD14_nUSBC_DETECT), 1, "usb", - IORESOURCE_IRQ | - IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE), + [0] = { + .name = "ac", + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | + IORESOURCE_IRQ_LOWEDGE, + .start = PXA_GPIO_TO_IRQ(GPIOD9_nAC_IN), + .end = PXA_GPIO_TO_IRQ(GPIOD9_nAC_IN), + }, + [1] = { + .name = "usb", + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | + IORESOURCE_IRQ_LOWEDGE, + .start = PXA_GPIO_TO_IRQ(GPIOD14_nUSBC_DETECT), + .end = PXA_GPIO_TO_IRQ(GPIOD14_nUSBC_DETECT), + }, }; static struct platform_device power_supply = { diff --git a/trunk/arch/arm/mach-pxa/lubbock.c b/trunk/arch/arm/mach-pxa/lubbock.c index 0ca0db787903..6bb3f47b1f14 100644 --- a/trunk/arch/arm/mach-pxa/lubbock.c +++ b/trunk/arch/arm/mach-pxa/lubbock.c @@ -456,7 +456,7 @@ static int lubbock_mci_init(struct device *dev, init_timer(&mmc_timer); mmc_timer.data = (unsigned long) data; return request_irq(LUBBOCK_SD_IRQ, lubbock_detect_int, - 0, "lubbock-sd-detect", data); + IRQF_SAMPLE_RANDOM, "lubbock-sd-detect", data); } static int lubbock_mci_get_ro(struct device *dev) diff --git a/trunk/arch/arm/mach-pxa/magician.c b/trunk/arch/arm/mach-pxa/magician.c index 39561dcf65f2..2db697cd2b4e 100644 --- a/trunk/arch/arm/mach-pxa/magician.c +++ b/trunk/arch/arm/mach-pxa/magician.c @@ -633,8 +633,9 @@ static struct platform_device bq24022 = { static int magician_mci_init(struct device *dev, irq_handler_t detect_irq, void *data) { - return request_irq(IRQ_MAGICIAN_SD, detect_irq, IRQF_DISABLED, - "mmc card detect", data); + return request_irq(IRQ_MAGICIAN_SD, detect_irq, + IRQF_DISABLED | IRQF_SAMPLE_RANDOM, + "mmc card detect", data); } static void magician_mci_exit(struct device *dev, void *data) diff --git a/trunk/arch/arm/mach-pxa/raumfeld.c b/trunk/arch/arm/mach-pxa/raumfeld.c index d89d87ae144c..5905ed130e94 100644 --- a/trunk/arch/arm/mach-pxa/raumfeld.c +++ b/trunk/arch/arm/mach-pxa/raumfeld.c @@ -953,12 +953,12 @@ static struct i2c_board_info raumfeld_connector_i2c_board_info __initdata = { static struct eeti_ts_platform_data eeti_ts_pdata = { .irq_active_high = 1, - .irq_gpio = GPIO_TOUCH_IRQ, }; static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = { .type = "eeti_ts", .addr = 0x0a, + .irq = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ), .platform_data = &eeti_ts_pdata, }; diff --git a/trunk/arch/arm/mach-pxa/trizeps4.c b/trunk/arch/arm/mach-pxa/trizeps4.c index 166dd32cc1d3..2b6ac00b2cd9 100644 --- a/trunk/arch/arm/mach-pxa/trizeps4.c +++ b/trunk/arch/arm/mach-pxa/trizeps4.c @@ -332,8 +332,8 @@ static int trizeps4_mci_init(struct device *dev, irq_handler_t mci_detect_int, int err; err = request_irq(TRIZEPS4_MMC_IRQ, mci_detect_int, - IRQF_DISABLED | IRQF_TRIGGER_RISING, - "MMC card detect", data); + IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SAMPLE_RANDOM, + "MMC card detect", data); if (err) { printk(KERN_ERR "trizeps4_mci_init: MMC/SD: can't request" "MMC card detect IRQ\n"); diff --git a/trunk/arch/arm/mach-s3c24xx/Kconfig b/trunk/arch/arm/mach-s3c24xx/Kconfig index d56b0f7f2b20..e24961109b70 100644 --- a/trunk/arch/arm/mach-s3c24xx/Kconfig +++ b/trunk/arch/arm/mach-s3c24xx/Kconfig @@ -483,7 +483,7 @@ config MACH_NEO1973_GTA02 select I2C select POWER_SUPPLY select MACH_NEO1973 - select S3C24XX_PWM + select S3C2410_PWM select S3C_DEV_USB_HOST help Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone @@ -493,7 +493,7 @@ config MACH_RX1950 select S3C24XX_DCLK select PM_H1940 if PM select I2C - select S3C24XX_PWM + select S3C2410_PWM select S3C_DEV_NAND select S3C2410_IOTIMING if S3C2440_CPUFREQ select S3C2440_XTAL_16934400 diff --git a/trunk/arch/arm/mach-s3c64xx/include/mach/pm-core.h b/trunk/arch/arm/mach-s3c64xx/include/mach/pm-core.h index c0537f40a3d8..fcf3dcabb694 100644 --- a/trunk/arch/arm/mach-s3c64xx/include/mach/pm-core.h +++ b/trunk/arch/arm/mach-s3c64xx/include/mach/pm-core.h @@ -12,9 +12,6 @@ * published by the Free Software Foundation. */ -#ifndef __MACH_S3C64XX_PM_CORE_H -#define __MACH_S3C64XX_PM_CORE_H __FILE__ - #include static inline void s3c_pm_debug_init_uart(void) @@ -116,4 +113,3 @@ static inline void samsung_pm_saved_gpios(void) __raw_writel(S3C64XX_SLPEN_USE_xSLP, S3C64XX_SLPEN); } -#endif /* __MACH_S3C64XX_PM_CORE_H */ diff --git a/trunk/arch/arm/mach-sa1100/leds-hackkit.c b/trunk/arch/arm/mach-sa1100/leds-hackkit.c index f8e47235babe..6a2352436e62 100644 --- a/trunk/arch/arm/mach-sa1100/leds-hackkit.c +++ b/trunk/arch/arm/mach-sa1100/leds-hackkit.c @@ -10,7 +10,6 @@ * as cpu led, the green one is used as timer led. */ #include -#include #include #include diff --git a/trunk/arch/arm/mach-shmobile/Kconfig b/trunk/arch/arm/mach-shmobile/Kconfig index 4cacc2d22fbe..df33909205e2 100644 --- a/trunk/arch/arm/mach-shmobile/Kconfig +++ b/trunk/arch/arm/mach-shmobile/Kconfig @@ -19,7 +19,6 @@ config ARCH_SH7372 select CPU_V7 select SH_CLK_CPG select ARCH_WANT_OPTIONAL_GPIOLIB - select ARM_CPU_SUSPEND if PM || CPU_IDLE config ARCH_SH73A0 bool "SH-Mobile AG5 (R8A73A00)" @@ -59,7 +58,6 @@ config MACH_G4EVM bool "G4EVM board" depends on ARCH_SH7377 select ARCH_REQUIRE_GPIOLIB - select REGULATOR_FIXED_VOLTAGE if REGULATOR config MACH_AP4EVB bool "AP4EVB board" @@ -67,7 +65,6 @@ config MACH_AP4EVB select ARCH_REQUIRE_GPIOLIB select SH_LCD_MIPI_DSI select SND_SOC_AK4642 if SND_SIMPLE_CARD - select REGULATOR_FIXED_VOLTAGE if REGULATOR choice prompt "AP4EVB LCD panel selection" @@ -86,7 +83,6 @@ config MACH_AG5EVM bool "AG5EVM board" select ARCH_REQUIRE_GPIOLIB select SH_LCD_MIPI_DSI - select REGULATOR_FIXED_VOLTAGE if REGULATOR depends on ARCH_SH73A0 config MACH_MACKEREL @@ -94,18 +90,15 @@ config MACH_MACKEREL depends on ARCH_SH7372 select ARCH_REQUIRE_GPIOLIB select SND_SOC_AK4642 if SND_SIMPLE_CARD - select REGULATOR_FIXED_VOLTAGE if REGULATOR config MACH_KOTA2 bool "KOTA2 board" select ARCH_REQUIRE_GPIOLIB - select REGULATOR_FIXED_VOLTAGE if REGULATOR depends on ARCH_SH73A0 config MACH_BONITO bool "bonito board" select ARCH_REQUIRE_GPIOLIB - select REGULATOR_FIXED_VOLTAGE if REGULATOR depends on ARCH_R8A7740 config MACH_ARMADILLO800EVA @@ -113,28 +106,22 @@ config MACH_ARMADILLO800EVA depends on ARCH_R8A7740 select ARCH_REQUIRE_GPIOLIB select USE_OF - select REGULATOR_FIXED_VOLTAGE if REGULATOR - select SND_SOC_WM8978 if SND_SIMPLE_CARD config MACH_MARZEN bool "MARZEN board" depends on ARCH_R8A7779 select ARCH_REQUIRE_GPIOLIB - select REGULATOR_FIXED_VOLTAGE if REGULATOR config MACH_KZM9D bool "KZM9D board" depends on ARCH_EMEV2 select USE_OF - select REGULATOR_FIXED_VOLTAGE if REGULATOR config MACH_KZM9G bool "KZM-A9-GT board" depends on ARCH_SH73A0 select ARCH_REQUIRE_GPIOLIB select USE_OF - select SND_SOC_AK4642 if SND_SIMPLE_CARD - select REGULATOR_FIXED_VOLTAGE if REGULATOR comment "SH-Mobile System Configuration" diff --git a/trunk/arch/arm/mach-shmobile/Makefile b/trunk/arch/arm/mach-shmobile/Makefile index 0df5ae6740c6..8aa1962c22a2 100644 --- a/trunk/arch/arm/mach-shmobile/Makefile +++ b/trunk/arch/arm/mach-shmobile/Makefile @@ -39,9 +39,7 @@ obj-$(CONFIG_ARCH_R8A7740) += entry-intc.o # PM objects obj-$(CONFIG_SUSPEND) += suspend.o obj-$(CONFIG_CPU_IDLE) += cpuidle.o -obj-$(CONFIG_ARCH_SHMOBILE) += pm-rmobile.o obj-$(CONFIG_ARCH_SH7372) += pm-sh7372.o sleep-sh7372.o -obj-$(CONFIG_ARCH_R8A7740) += pm-r8a7740.o obj-$(CONFIG_ARCH_R8A7779) += pm-r8a7779.o # Board objects diff --git a/trunk/arch/arm/mach-shmobile/board-ag5evm.c b/trunk/arch/arm/mach-shmobile/board-ag5evm.c index d82c010fdfc6..5a6f22f05e99 100644 --- a/trunk/arch/arm/mach-shmobile/board-ag5evm.c +++ b/trunk/arch/arm/mach-shmobile/board-ag5evm.c @@ -27,8 +27,6 @@ #include #include #include -#include -#include #include #include #include @@ -54,12 +52,6 @@ #include #include -/* Dummy supplies, where voltage doesn't matter */ -static struct regulator_consumer_supply dummy_supplies[] = { - REGULATOR_SUPPLY("vddvario", "smsc911x"), - REGULATOR_SUPPLY("vdd33a", "smsc911x"), -}; - static struct resource smsc9220_resources[] = { [0] = { .start = 0x14000000, @@ -150,13 +142,6 @@ static struct platform_device fsi_device = { .resource = fsi_resources, }; -/* Fixed 1.8V regulator to be used by MMCIF */ -static struct regulator_consumer_supply fixed1v8_power_consumers[] = -{ - REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), - REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"), -}; - static struct resource sh_mmcif_resources[] = { [0] = { .name = "MMCIF", @@ -379,13 +364,6 @@ static struct platform_device mipidsi0_device = { }, }; -/* Fixed 2.8V regulators to be used by SDHI0 */ -static struct regulator_consumer_supply fixed2v8_power_consumers[] = -{ - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), -}; - /* SDHI0 */ static struct sh_mobile_sdhi_info sdhi0_info = { .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, @@ -430,57 +408,8 @@ static struct platform_device sdhi0_device = { }, }; -/* Fixed 3.3V regulator to be used by SDHI1 */ -static struct regulator_consumer_supply cn4_power_consumers[] = +void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state) { - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.1"), -}; - -static struct regulator_init_data cn4_power_init_data = { - .constraints = { - .valid_ops_mask = REGULATOR_CHANGE_STATUS, - }, - .num_consumer_supplies = ARRAY_SIZE(cn4_power_consumers), - .consumer_supplies = cn4_power_consumers, -}; - -static struct fixed_voltage_config cn4_power_info = { - .supply_name = "CN4 SD/MMC Vdd", - .microvolts = 3300000, - .gpio = GPIO_PORT114, - .enable_high = 1, - .init_data = &cn4_power_init_data, -}; - -static struct platform_device cn4_power = { - .name = "reg-fixed-voltage", - .id = 2, - .dev = { - .platform_data = &cn4_power_info, - }, -}; - -static void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state) -{ - static int power_gpio = -EINVAL; - - if (power_gpio < 0) { - int ret = gpio_request(GPIO_PORT114, "sdhi1_power"); - if (!ret) { - power_gpio = GPIO_PORT114; - gpio_direction_output(power_gpio, 0); - } - } - - /* - * If requesting the GPIO above failed, it means, that the regulator got - * probed and grabbed the GPIO, but we don't know, whether the sdhi - * driver already uses the regulator. If it doesn't, we have to toggle - * the GPIO ourselves, even though it is now owned by the fixed - * regulator driver. We have to live with the race in case the driver - * gets unloaded and the GPIO freed between these two steps. - */ gpio_set_value(GPIO_PORT114, state); } @@ -526,7 +455,6 @@ static struct platform_device sdhi1_device = { }; static struct platform_device *ag5evm_devices[] __initdata = { - &cn4_power, ð_device, &keysc_device, &fsi_device, @@ -540,12 +468,6 @@ static struct platform_device *ag5evm_devices[] __initdata = { static void __init ag5evm_init(void) { - regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers, - ARRAY_SIZE(fixed1v8_power_consumers), 1800000); - regulator_register_always_on(1, "fixed-2.8V", fixed2v8_power_consumers, - ARRAY_SIZE(fixed2v8_power_consumers), 3300000); - regulator_register_fixed(3, dummy_supplies, ARRAY_SIZE(dummy_supplies)); - sh73a0_pinmux_init(); /* enable SCIFA2 */ @@ -640,6 +562,8 @@ static void __init ag5evm_init(void) gpio_request(GPIO_FN_SDHID1_2_PU, NULL); gpio_request(GPIO_FN_SDHID1_1_PU, NULL); gpio_request(GPIO_FN_SDHID1_0_PU, NULL); + gpio_request(GPIO_PORT114, "sdhi1_power"); + gpio_direction_output(GPIO_PORT114, 0); #ifdef CONFIG_CACHE_L2X0 /* Shared attribute override enable, 64K*8way */ diff --git a/trunk/arch/arm/mach-shmobile/board-ap4evb.c b/trunk/arch/arm/mach-shmobile/board-ap4evb.c index f172ca85905c..ace60246a5df 100644 --- a/trunk/arch/arm/mach-shmobile/board-ap4evb.c +++ b/trunk/arch/arm/mach-shmobile/board-ap4evb.c @@ -34,8 +34,6 @@ #include #include #include -#include -#include #include #include #include @@ -161,27 +159,6 @@ * CN12: 3.3v */ -/* Dummy supplies, where voltage doesn't matter */ -static struct regulator_consumer_supply fixed1v8_power_consumers[] = -{ - /* J22 default position: 1.8V */ - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.1"), - REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), - REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"), -}; - -static struct regulator_consumer_supply fixed3v3_power_consumers[] = -{ - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), -}; - -static struct regulator_consumer_supply dummy_supplies[] = { - REGULATOR_SUPPLY("vddvario", "smsc911x"), - REGULATOR_SUPPLY("vdd33a", "smsc911x"), -}; - /* MTD */ static struct mtd_partition nor_flash_partitions[] = { { @@ -1161,6 +1138,21 @@ static void __init fsi_init_pm_clock(void) clk_put(fsia_ick); } +/* + * FIXME !! + * + * gpio_no_direction + * are quick_hack. + * + * current gpio frame work doesn't have + * the method to control only pull up/down/free. + * this function should be replaced by correct gpio function + */ +static void __init gpio_no_direction(u32 addr) +{ + __raw_writeb(0x00, addr); +} + /* TouchScreen */ #ifdef CONFIG_AP4EVB_QHD # define GPIO_TSC_IRQ GPIO_FN_IRQ28_123 @@ -1232,12 +1224,6 @@ static void __init ap4evb_init(void) u32 srcr4; struct clk *clk; - regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers, - ARRAY_SIZE(fixed1v8_power_consumers), 1800000); - regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers, - ARRAY_SIZE(fixed3v3_power_consumers), 3300000); - regulator_register_fixed(2, dummy_supplies, ARRAY_SIZE(dummy_supplies)); - /* External clock source */ clk_set_rate(&sh7372_dv_clki_clk, 27000000); @@ -1316,8 +1302,8 @@ static void __init ap4evb_init(void) gpio_request(GPIO_PORT9, NULL); gpio_request(GPIO_PORT10, NULL); - gpio_direction_none(GPIO_PORT9CR); /* FSIAOBT needs no direction */ - gpio_direction_none(GPIO_PORT10CR); /* FSIAOLR needs no direction */ + gpio_no_direction(GPIO_PORT9CR); /* FSIAOBT needs no direction */ + gpio_no_direction(GPIO_PORT10CR); /* FSIAOLR needs no direction */ /* card detect pin for MMC slot (CN7) */ gpio_request(GPIO_PORT41, NULL); @@ -1461,14 +1447,14 @@ static void __init ap4evb_init(void) platform_add_devices(ap4evb_devices, ARRAY_SIZE(ap4evb_devices)); - rmobile_add_device_to_domain(&sh7372_pd_a4lc, &lcdc1_device); - rmobile_add_device_to_domain(&sh7372_pd_a4lc, &lcdc_device); - rmobile_add_device_to_domain(&sh7372_pd_a4mp, &fsi_device); + sh7372_add_device_to_domain(&sh7372_a4lc, &lcdc1_device); + sh7372_add_device_to_domain(&sh7372_a4lc, &lcdc_device); + sh7372_add_device_to_domain(&sh7372_a4mp, &fsi_device); - rmobile_add_device_to_domain(&sh7372_pd_a3sp, &sh_mmcif_device); - rmobile_add_device_to_domain(&sh7372_pd_a3sp, &sdhi0_device); - rmobile_add_device_to_domain(&sh7372_pd_a3sp, &sdhi1_device); - rmobile_add_device_to_domain(&sh7372_pd_a4r, &ceu_device); + sh7372_add_device_to_domain(&sh7372_a3sp, &sh_mmcif_device); + sh7372_add_device_to_domain(&sh7372_a3sp, &sdhi0_device); + sh7372_add_device_to_domain(&sh7372_a3sp, &sdhi1_device); + sh7372_add_device_to_domain(&sh7372_a4r, &ceu_device); hdmi_init_pm_clock(); fsi_init_pm_clock(); diff --git a/trunk/arch/arm/mach-shmobile/board-armadillo800eva.c b/trunk/arch/arm/mach-shmobile/board-armadillo800eva.c index cf10f92856dc..9bd135531d76 100644 --- a/trunk/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/trunk/arch/arm/mach-shmobile/board-armadillo800eva.c @@ -28,8 +28,6 @@ #include #include #include -#include -#include #include #include #include @@ -39,20 +37,14 @@ #include #include #include -#include -#include -#include -#include #include #include #include #include #include #include +#include #include